0
|
1 .. highlight:: bash
|
|
2 .. _anonymization:
|
|
3
|
|
4 Anonymization and modification
|
|
5 ==============================
|
|
6
|
|
7 .. contents::
|
|
8 :depth: 2
|
|
9
|
|
10 Orthanc 0.5.0 introduces the anonymization of DICOM resources
|
|
11 (i.e. patients, studies, series or instances). This page summarizes
|
|
12 how to use this feature.
|
|
13
|
|
14
|
|
15 Anonymization of a Single Instance
|
|
16 ----------------------------------
|
|
17
|
|
18 Orthanc allows to anonymize a single DICOM instance and to download
|
|
19 the resulting anonymized DICOM file. Anonymization consists in erasing
|
|
20 all the tags that are specified in Table E.1-1 from PS 3.15 of the
|
111
|
21 DICOM standard 2008 or 2017c (default). Example::
|
0
|
22
|
|
23 $ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/anonymize -X POST -d '{}' > Anonymized.dcm
|
|
24
|
|
25 It is possible to control how anonymization is achieved by specifying
|
|
26 a JSON body::
|
|
27
|
111
|
28 $ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/anonymize -X POST -d '{"Replace":{"PatientName":"hello","0010-0020":"world"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": null, "DicomVersion" : "2017c"}' > Anonymized.dcm
|
0
|
29
|
|
30 Explanations:
|
|
31
|
|
32 * New UUIDs are automatically generated for the study, the series and
|
|
33 the instance.
|
|
34 * The DICOM tags can be specified either by their name (``PatientName``)
|
|
35 or by their hexadecimal identifier (``0010-0020`` corresponds to
|
|
36 ``PatientID``).
|
|
37 * ``Replace`` is an associative array that associates a DICOM tag with its
|
|
38 new string value. The value is dynamically cast to the proper DICOM
|
|
39 data type (an HTTP error will occur if the cast fails). Replacements
|
|
40 are applied after all the tags to anonymize have been removed.
|
|
41 * ``Keep`` specifies a list of tags that should be preserved from full
|
|
42 anonymization.
|
|
43 * If ``KeepPrivateTags`` is absent from the JSON request, private tags
|
|
44 (i.e. manufacturer-specific tags) are also removed. This is the
|
|
45 default behavior, as such tags can contain patient-specific
|
|
46 information.
|
111
|
47 * ``DicomVersion`` specifies which version of the DICOM standard shall be used
|
|
48 for anonymization. Allowed values are ``2008`` and ``2017c`` (default value
|
|
49 if the parameter is absent). This parameter has been introduced in Orthanc
|
|
50 1.3.0. In earlier version, the ``2008`` standard was used.
|
0
|
51
|
|
52
|
|
53 Modification of a Single Instance
|
|
54 ---------------------------------
|
|
55
|
|
56 Orthanc allows to modify a set of specified tags in a single DICOM
|
|
57 instance and to download the resulting anonymized DICOM
|
|
58 file. Example::
|
|
59
|
|
60 $ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/modify -X POST -d '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": null}' > Modified.dcm
|
|
61
|
|
62 Remarks:
|
|
63
|
|
64 * The ``Remove`` array specifies the list of the tags to remove.
|
|
65 * The ``Replace`` associative array specifies the substitions to be applied (cf. anonymization).
|
|
66 * If ``RemovePrivateTags`` is present, the private tags (i.e. manufacturer-specific tags) are removed.
|
|
67
|
|
68
|
|
69 Modification of Studies or Series
|
|
70 ---------------------------------
|
|
71
|
|
72 .. highlight:: bash
|
|
73
|
|
74 It is possible to modify all the instances from a study or from a
|
|
75 series in a single request. In this case, the modified instances are
|
|
76 stored back into the Orthanc store. Here is how to modify a series::
|
|
77
|
|
78 $ curl http://localhost:8042/series/95a6e2bf-9296e2cc-bf614e2f-22b391ee-16e010e0/modify -X POST -d '{"Replace":{"InstitutionName":"My own clinic"}}'
|
|
79
|
|
80
|
|
81 .. highlight:: json
|
|
82
|
|
83 The parameters are identical to those used to modify a single
|
|
84 instance. Orthanc will answer a JSON message that tells where the
|
|
85 modified series has been stored::
|
|
86
|
|
87 {
|
|
88 "ID" : "3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce",
|
|
89 "Path" : "/series/3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce"
|
|
90 }
|
|
91
|
|
92
|
|
93 .. highlight:: bash
|
|
94
|
|
95 Similarly, here is an interaction to modify a study::
|
|
96
|
|
97 $ curl http://localhost:8042/studies/ef2ce55f-9342856a-aee23907-2667e859-9f3b734d/modify -X POST -d '{"Replace":{"InstitutionName":"My own clinic"}}'
|
|
98
|
|
99 .. highlight:: json
|
|
100
|
|
101 ::
|
|
102
|
|
103 {
|
|
104 "ID" : "1c3f7bf4-85b4aa20-236e6315-5d450dcc-3c1bcf28",
|
|
105 "Path" : "/studies/1c3f7bf4-85b4aa20-236e6315-5d450dcc-3c1bcf28"
|
|
106 }
|
|
107
|
|
108
|
|
109 Modification of Patients
|
|
110 ------------------------
|
|
111
|
|
112 .. highlight:: bash
|
|
113
|
|
114 Starting with Orthanc 0.7.5, Orthanc can also modify all the instances
|
|
115 of a patient with a single REST call. Here is a sample::
|
|
116
|
|
117 $ curl http://localhost:8042/patients/6fb47ef5-072f4557-3215aa29-f99515c1-6fa22bf0/modify -X POST -d '{"Replace":{"PatientID":"Hello","PatientName":"Sample patient name"}}'
|
|
118
|
|
119 .. highlight:: json
|
|
120
|
|
121 ::
|
|
122
|
|
123 {
|
|
124 "ID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0",
|
|
125 "Path" : "/patients/f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0",
|
|
126 "PatientID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0",
|
|
127 "Type" : "Patient"
|
|
128 }
|
|
129
|
|
130 Please note that, in this case, you have to set the value of the
|
|
131 ``PatientID (0010,0020)`` tag for Orthanc to accept this modification:
|
|
132 This is a security to prevent the merging of patient data before and
|
|
133 after anonymization, if the user does not explicitly tell Orthanc to
|
|
134 do so.
|
|
135
|
|
136
|
|
137 Anonymization of Patients, Studies or Series
|
|
138 --------------------------------------------
|
|
139
|
|
140 .. highlight:: bash
|
|
141
|
|
142 Study and series can be anonymized the same way as they are modified::
|
|
143
|
|
144 $ curl http://localhost:8042/patients/6fb47ef5-072f4557-3215aa29-f99515c1-6fa22bf0/anonymize -X POST -d '{}'
|
|
145 $ curl http://localhost:8042/studies/ef2ce55f-9342856a-aee23907-2667e859-9f3b734d/anonymize -X POST -d '{}'
|
|
146 $ curl http://localhost:8042/series/95a6e2bf-9296e2cc-bf614e2f-22b391ee-16e010e0/anonymize -X POST -d '{}'
|
|
147
|
|
148 As written above, the anonymization process can be fine-tuned by using
|
|
149 a JSON body.
|