annotate Sphinx/source/users/anonymization.rst @ 300:22d567933381

tutorials about plugins by Marco Barnig
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 23 Jan 2020 15:17:52 +0100
parents 829ce317d215
children 48673b8abae3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 .. _anonymization:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 Anonymization and modification
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 ==============================
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 .. contents::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 :depth: 2
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 Orthanc 0.5.0 introduces the anonymization of DICOM resources
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 (i.e. patients, studies, series or instances). This page summarizes
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 how to use this feature.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 Anonymization of a Single Instance
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 ----------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 Orthanc allows to anonymize a single DICOM instance and to download
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 the resulting anonymized DICOM file. Anonymization consists in erasing
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 all the tags that are specified in Table E.1-1 from PS 3.15 of the
111
eaec5029ef01 DicomVersion
amazy
parents: 0
diff changeset
21 DICOM standard 2008 or 2017c (default). Example::
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 $ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/anonymize -X POST -d '{}' > Anonymized.dcm
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 It is possible to control how anonymization is achieved by specifying
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 a JSON body::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27
112
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
28 $ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/anonymize -X POST -d '{"Replace":{"PatientName":"Hello","0010-1001":"World"},"Keep":["StudyDescription", "SeriesDescription"],"KeepPrivateTags": true, "DicomVersion" : "2017c"}' > Anonymized.dcm
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 Explanations:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 * New UUIDs are automatically generated for the study, the series and
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33 the instance.
112
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
34 * The DICOM tags can be specified either by their name
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
35 (``PatientName``) or by their hexadecimal identifier (in the example
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
36 above, ``0010-1001`` corresponds to ``Other Patient Names``).
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 * ``Replace`` is an associative array that associates a DICOM tag with its
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 new string value. The value is dynamically cast to the proper DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 data type (an HTTP error will occur if the cast fails). Replacements
291
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
40 are applied after all the tags to anonymize have been removed.
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
41 You may also use the ``Replace`` field to add new tags to the file.
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 * ``Keep`` specifies a list of tags that should be preserved from full
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43 anonymization.
112
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
44 * If ``KeepPrivateTags`` is set to ``true`` in the JSON request,
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
45 private tags (i.e. manufacturer-specific tags) are not removed by
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
46 the anonymization process. The default behavior consists in removing
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
47 the private tags, as such tags can contain patient-specific
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48 information.
111
eaec5029ef01 DicomVersion
amazy
parents: 0
diff changeset
49 * ``DicomVersion`` specifies which version of the DICOM standard shall be used
eaec5029ef01 DicomVersion
amazy
parents: 0
diff changeset
50 for anonymization. Allowed values are ``2008`` and ``2017c`` (default value
eaec5029ef01 DicomVersion
amazy
parents: 0
diff changeset
51 if the parameter is absent). This parameter has been introduced in Orthanc
eaec5029ef01 DicomVersion
amazy
parents: 0
diff changeset
52 1.3.0. In earlier version, the ``2008`` standard was used.
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 Modification of a Single Instance
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 ---------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 Orthanc allows to modify a set of specified tags in a single DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 instance and to download the resulting anonymized DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 file. Example::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61
112
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
62 $ curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/modify -X POST -d '{"Replace":{"PatientName":"hello","PatientID":"world"},"Remove":["InstitutionName"],"RemovePrivateTags": true, "Force": true}' > Modified.dcm
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 Remarks:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 * The ``Remove`` array specifies the list of the tags to remove.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 * The ``Replace`` associative array specifies the substitions to be applied (cf. anonymization).
112
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
68 * If ``RemovePrivateTags`` is set to ``true``, the private tags
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
69 (i.e. manufacturer-specific tags) are removed.
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
70 * The ``Force`` option must be set to ``true``, in order to allow the
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
71 modification of the ``PatientID``, as such a modification of the
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
72 :ref:`DICOM identifiers <dicom-identifiers>` might lead to breaking
113
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
73 the DICOM model of the real-world. In general, any explicit
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
74 modification to one of the ``PatientID``, ``StudyInstanceUID``,
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
75 ``SeriesInstanceUID``, and ``SOPInstanceUID`` requires ``Force`` to
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 112
diff changeset
76 be set to ``true``, in order to prevent any unwanted side effect.
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77
291
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
78 .. highlight:: json
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79
291
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
80 * To replace a sequence of tags, you may use this syntax::
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
81
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
82
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
83 {
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
84 "Replace" : {
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
85 "ProcedureCodeSequence" : [
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
86 {
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
87 "CodeValue" : "2",
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
88 "CodingSchemeDesignator" : "1",
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
89 "CodeMeaning": "1"
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
90 }
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
91 ]
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
92 }
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
93 }
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
94
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
95 * To replace a binary tag, you should encode it in base64 and use::
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
96
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
97 {
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
98 "Replace" : {
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
99 "EncryptedAttributesSequence" : [
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
100 {
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
101 "EncryptedContentTransferSyntaxUID" : "1.2.840.10008.1.2",
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
102 "EncryptedContent" : "data:application/octet-stream;base64,SSB3YXMgaGVyZSBpbiAyMDE5LiAgTWFydHkgTWNGbHku"
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
103 }
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
104 ]
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
105 }
829ce317d215 added sample for /modify for sequences and binary fields
Alain Mazy <alain@mazy.be>
parents: 224
diff changeset
106 }
300
22d567933381 tutorials about plugins by Marco Barnig
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 291
diff changeset
107
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108 Modification of Studies or Series
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109 ---------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
112
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
113 It is possible to modify all the instances from a study or from a
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
114 series in a single request. In this case, the modified instances are
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
115 stored back into the Orthanc store. Here is how to modify a series::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
116
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
117 $ curl http://localhost:8042/series/95a6e2bf-9296e2cc-bf614e2f-22b391ee-16e010e0/modify -X POST -d '{"Replace":{"InstitutionName":"My own clinic"}}'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
118
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
119
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
120 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
121
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
122 The parameters are identical to those used to modify a single
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
123 instance. Orthanc will answer a JSON message that tells where the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
124 modified series has been stored::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
125
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
126 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
127 "ID" : "3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
128 "Path" : "/series/3bd3d343-82879d86-da77321c-1d23fd6b-faa07bce"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
129 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
130
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
131
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
132 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134 Similarly, here is an interaction to modify a study::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 $ curl http://localhost:8042/studies/ef2ce55f-9342856a-aee23907-2667e859-9f3b734d/modify -X POST -d '{"Replace":{"InstitutionName":"My own clinic"}}'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 ::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143 "ID" : "1c3f7bf4-85b4aa20-236e6315-5d450dcc-3c1bcf28",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144 "Path" : "/studies/1c3f7bf4-85b4aa20-236e6315-5d450dcc-3c1bcf28"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
146
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
147
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
148 Modification of Patients
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149 ------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
150
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
151 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 Starting with Orthanc 0.7.5, Orthanc can also modify all the instances
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154 of a patient with a single REST call. Here is a sample::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155
112
6d357adfd892 updates for the new 1.3.0 API
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 111
diff changeset
156 $ curl http://localhost:8042/patients/6fb47ef5-072f4557-3215aa29-f99515c1-6fa22bf0/modify -X POST -d '{"Replace":{"PatientID":"Hello","PatientName":"Sample patient name"},"Force":true}'
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 ::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 "ID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 "Path" : "/patients/f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 "PatientID" : "f7ff9e8b-7bb2e09b-70935a5d-785e0cc5-d9d0abf0",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 "Type" : "Patient"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 Please note that, in this case, you have to set the value of the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170 ``PatientID (0010,0020)`` tag for Orthanc to accept this modification:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 This is a security to prevent the merging of patient data before and
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 after anonymization, if the user does not explicitly tell Orthanc to
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 do so.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
176 Anonymization of Patients, Studies or Series
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
177 --------------------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
180
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
181 Study and series can be anonymized the same way as they are modified::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
182
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
183 $ curl http://localhost:8042/patients/6fb47ef5-072f4557-3215aa29-f99515c1-6fa22bf0/anonymize -X POST -d '{}'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
184 $ curl http://localhost:8042/studies/ef2ce55f-9342856a-aee23907-2667e859-9f3b734d/anonymize -X POST -d '{}'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
185 $ curl http://localhost:8042/series/95a6e2bf-9296e2cc-bf614e2f-22b391ee-16e010e0/anonymize -X POST -d '{}'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
186
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
187 As written above, the anonymization process can be fine-tuned by using
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 a JSON body.
167
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
189
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
190
224
02399e86f046 starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 178
diff changeset
191 .. _split-merge:
02399e86f046 starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 178
diff changeset
192
167
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
193 Split/merge of DICOM studies
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
194 ----------------------------
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
195
178
981e5a996b11 Orthanc 1.5.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 167
diff changeset
196 Starting with Orthanc 1.5.0, Orthanc supports splitting and merging
167
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
197 DICOM studies through its REST API.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
198
224
02399e86f046 starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 178
diff changeset
199 .. _split:
02399e86f046 starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 178
diff changeset
200
167
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
201 Splitting
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
202 ^^^^^^^^^
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
203
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
204 Here is the syntax to **split** a DICOM study::
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
205
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
206 $ curl http://localhost:8042/studies/6e2c0ec2-5d99c8ca-c1c21cee-79a09605-68391d12/split -d \
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
207 '{"Series":["6ca4c9f3-5e895cb3-4d82c6da-09e060fe-9c59f228"],"Replace":{"PatientName":"HELLO"},"Remove":["AccessionNumber"]}'
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
208
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
209 By issuing this command, the series whose :ref:`Orthanc identifier
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
210 <dicom-identifiers>` is
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
211 ``6ca4c9f3-5e895cb3-4d82c6da-09e060fe-9c59f228``, and that is part of
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
212 the source study with identifier
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
213 ``6e2c0ec2-5d99c8ca-c1c21cee-79a09605-68391d12``, will be removed from
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
214 the source study, and will be moved to a brand new study.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
215
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
216 This is done by generating a new value for all the following DICOM
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
217 tags in the DICOM instances of the series of interest:
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
218 ``StudyInstanceUID (0x0020, 0x000d)``, ``SeriesInstanceUID (0x0020,
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
219 0x000e)``, and ``SOPInstanceUID (0x0008, 0x0018)``. Here are the
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
220 arguments of this ``/studies/{study}/split`` URI:
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
221
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
222 * ``Series`` gives the list of series to be separated from the parent
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
223 study (mandatory option). These series must all be children of the
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
224 same source study, that is specified in the URI.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
225 * ``Replace`` allows to overwrite the DICOM tags that are part of the
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
226 "Patient Module Attributes" and the "General Study Module
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
227 Attributes", as specified by the DICOM 2011 standard in Tables C.7-1
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
228 and C.7-3.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
229 * ``Remove`` allows to remove DICOM tags from the same modules as in
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
230 the ``Replace`` options.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
231 * ``KeepSource`` (Boolean value), if set to ``true``, instructs
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
232 Orthanc to keep a copy of the original series in the source study.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
233 By default, the original series are deleted from Orthanc.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
234
224
02399e86f046 starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 178
diff changeset
235 .. _merge:
167
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
236
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
237 Merging
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
238 ^^^^^^^
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
239
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
240 Here is the syntax to **merge** DICOM series, into another DICOM study::
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
241
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
242 $ curl http://localhost:8042/studies/6e2c0ec2-5d99c8ca-c1c21cee-79a09605-68391d12/merge -d \
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
243 '{"Resources":["ef2ce55f-9342856a-aee23907-2667e859-9f3b734d"]}'
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
244
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
245 By issuing this command, the DICOM series whose :ref:`Orthanc
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
246 identifier <dicom-identifiers>` is
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
247 ``ef2ce55f-9342856a-aee23907-2667e859-9f3b734d``, will be merged into
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
248 target study with identifier
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
249 ``6e2c0ec2-5d99c8ca-c1c21cee-79a09605-68391d12``.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
250
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
251 As in the case of splitting, this is done by updating the following
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
252 DICOM tags: ``StudyInstanceUID (0x0020, 0x000d)``, ``SeriesInstanceUID
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
253 (0x0020, 0x000e)``, and ``SOPInstanceUID (0x0008,
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
254 0x0018)``. Furthermore, all the DICOM tags that are part of the
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
255 "Patient Module Attributes" and the "General Study Module Attributes"
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
256 (as specified by the DICOM 2011 standard in Tables C.7-1 and C.7-3),
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
257 are modified to match the target study. Here are the
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
258 arguments of this ``/studies/{study}/merge`` URI:
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
259
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
260 * ``Resources`` gives the list of source studies or source series
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
261 that are to be merged into the target study.
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
262 * ``KeepSource`` (Boolean value), if set to ``true``, instructs
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
263 Orthanc to keep the source studies and series. By default, the
7ba16d90ed93 split/merge
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 113
diff changeset
264 original resources are deleted from Orthanc.