Mercurial > hg > orthanc-book
annotate Sphinx/source/users/rest.rst @ 933:a5e7e7001316 Orthanc-1.12.0
Orthanc 1.12.0
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 15 Apr 2023 10:44:42 +0200 |
parents | 6474e299918b |
children | 5491953f7492 |
rev | line source |
---|---|
0 | 1 .. _rest: |
2 | |
3 REST API of Orthanc | |
4 =================== | |
5 | |
6 .. contents:: | |
7 :depth: 3 | |
8 | |
9 One of the major strengths of Orthanc lies in its built-in `RESTful | |
10 API | |
11 <https://en.wikipedia.org/wiki/Representational_state_transfer>`__, | |
12 that can be used to drive Orthanc from external applications, | |
13 independently of the programming language that is used to develop | |
14 these applications. The REST API of Orthanc gives a full programmatic | |
15 access to all the core features of Orthanc. | |
16 | |
17 Importantly, Orthanc Explorer (the embedded administrative interface | |
18 of Orthanc) entirely resorts to this REST API for all its features. | |
19 This implies that anything that can be done through Orthanc Explorer, | |
20 can also be done through REST queries. | |
21 | |
22 *Note:* All the examples are illustrated with the `cURL command-line | |
25 | 23 tool <https://curl.haxx.se/>`__, but equivalent calls can be readily |
0 | 24 transposed to any programming language that supports both HTTP and |
25 JSON. | |
26 | |
27 | |
674
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
28 .. _curl-windows: |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
29 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
30 Warning about using cURL from the Windows prompt |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
31 ------------------------------------------------ |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
32 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
33 The examples on this page assume that the user is running a bash shell |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
34 on some GNU/Linux distribution. Such a shell has the major advantage |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
35 of having the possibility to use either single-quote or double-quotes |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
36 characters in order to group a set of characters (including spaces) as |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
37 a whole string. |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
38 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
39 .. highlight:: bash |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
40 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
41 Unfortunately, the default command-line prompt of Microsoft Windows |
675 | 42 **doesn't support single-quote characters**. If you copy/paste a cURL |
674
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
43 command-line from this page that mixes single-quote and double-quotes, |
676 | 44 it won't work as such, and you'll have to replace single-quotes by |
45 double-quotes, and prefix the double-quotes by a backslash | |
46 character. For instance, consider the following command line that | |
47 works fine on GNU/Linux:: | |
674
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
48 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
49 $ curl -v -X PUT http://localhost:8042/modalities/sample \ |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
50 -d '{"AET" : "ORTHANCC", "Host": "127.0.0.1", "Port": 2002}' |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
51 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
52 This call will **not** work on the Microsoft Windows prompt as it |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
53 contains single-quotes. You should adapt this command line as follows |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
54 to run it on Windows:: |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
55 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
56 $ curl -v -X PUT http://localhost:8042/modalities/sample \ |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
57 -d "{\"AET\" : \"ORTHANCC\", \"Host\": \"127.0.0.1\", \"Port\": 2002}" |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
58 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
59 As an alternative, consider using a different Windows shell, for |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
60 instance `Windows PowerShell |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
61 <https://fr.wikipedia.org/wiki/Windows_PowerShell>`__ (some examples |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
62 of PowerShell can be found below on this page). |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
63 |
5ec581c7e610
Warning about using cURL from the Windows prompt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
671
diff
changeset
|
64 |
114 | 65 .. _sending-dicom-images: |
66 | |
0 | 67 Sending DICOM images |
68 -------------------- | |
69 | |
70 .. highlight:: bash | |
71 | |
72 The upload of DICOM files is possible by querying the REST API using | |
73 the following syntax:: | |
74 | |
75 $ curl -X POST http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm | |
868 | 76 $ curl -X POST http://localhost:8042/instances --data-binary @multiple-files.zip |
0 | 77 |
78 .. highlight:: json | |
79 | |
80 Orthanc will respond with a JSON file that contain information about | |
81 the location of the stored instance, such as:: | |
82 | |
83 { | |
868 | 84 "ID" : "5d4a3991-8a265cb2-da669bea-d8c761af-4a77113a", |
85 "ParentPatient" : "69a957ab-57545037-ce9a492a-d0bd89c1-d7e2220d", | |
86 "ParentSeries" : "87c81b2c-e9f92adf-2dc11d37-399b5214-37275cdb", | |
87 "ParentStudy" : "1b1cc0c9-c0377071-78e8cd3a-2e382948-a243db42", | |
88 "Path" : "/instances/5d4a3991-8a265cb2-da669bea-d8c761af-4a77113a", | |
0 | 89 "Status" : "Success" |
90 } | |
91 | |
92 .. highlight:: bash | |
93 | |
94 Note that in the case of curl, setting the ``Expect`` HTTP Header will | |
95 significantly `reduce the execution time of POST requests | |
358
011b01ccf52d
fixing external hyperlinks
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
331
diff
changeset
|
96 <https://stackoverflow.com/questions/463144/php-http-post-fails-when-curl-data-1024/463277#463277>`__:: |
0 | 97 |
98 $ curl -X POST -H "Expect:" http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm | |
99 | |
100 The code distribution of Orthanc contains a `sample Python script | |
933 | 101 <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.12.0/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__ |
0 | 102 that recursively upload the content of some folder into Orthanc using |
103 the REST API:: | |
104 | |
105 $ python ImportDicomFiles.py localhost 8042 ~/DICOM/ | |
106 | |
680
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
107 Starting with Orthanc 1.8.1, the source distribution of Orthanc |
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
108 includes another Python script named ``OrthancImport.py`` that |
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
109 provides more features than ``ImportDicomFiles.py``. It can notably |
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
110 import the content of ``.zip``, ``.tar.gz`` or ``.tar.bz2`` archives |
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
111 without having to uncompress them first. It also provides more |
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
112 comprehensive command-line options. `Check this script out |
933 | 113 <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.12.0/OrthancServer/Resources/Samples/ImportDicomFiles/OrthancImport.py>`__. |
680
ca814560dcb8
link to OrthancImport.py
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
676
diff
changeset
|
114 |
0 | 115 |
297
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
116 .. highlight:: perl |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
117 |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
118 If you are using Powershell (>= 3.0), you can use the following to send a single |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
119 Dicom instance to Orthanc:: |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
120 |
376 | 121 # disabling the progress bar makes the Invoke-RestMethod call MUCH faster |
297
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
122 $ProgressPreference = 'SilentlyContinue' |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
123 |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
124 # upload it to Orthanc |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
125 $reply = Invoke-RestMethod http://localhost:8042/instances -Method POST -InFile CT.X.1.2.276.0.7230010.dcm |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
126 |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
127 # display the result |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
128 Write-Host "The instance can be retrieved at http://localhost:8042$($reply.Path)" |
64d1ddab8246
Improved PDF creation Pwsh snippet + added Dicom instance upload example with
Benjamin Golinvaux <bgo@osimis.io>
parents:
294
diff
changeset
|
129 |
0 | 130 .. _rest-access: |
131 | |
132 Accessing the content of Orthanc | |
133 -------------------------------- | |
134 | |
135 Orthanc structures the stored DICOM resources using the "Patient, | |
136 Study, Series, Instance" model of the DICOM standard. Each DICOM | |
137 resource is associated with an :ref:`unique identifier <orthanc-ids>`. | |
138 | |
139 List all the DICOM resources | |
140 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
141 | |
142 Here is how you would list all the DICOM resources that are stored in | |
143 your local Orthanc instance:: | |
144 | |
145 $ curl http://localhost:8042/patients | |
146 $ curl http://localhost:8042/studies | |
147 $ curl http://localhost:8042/series | |
148 $ curl http://localhost:8042/instances | |
149 | |
150 Note that the result of this command is a `JSON file | |
25 | 151 <https://en.wikipedia.org/wiki/Json>`__ that contains an array of |
0 | 152 resource identifiers. The JSON file format is lightweight and can be |
153 parsed from almost any computer language. | |
154 | |
155 Accessing a patient | |
156 ^^^^^^^^^^^^^^^^^^^ | |
157 | |
158 .. highlight:: bash | |
159 | |
160 To access a single resource, add its identifier to the `URI | |
25 | 161 <https://en.wikipedia.org/wiki/Uniform_resource_identifier>`__. You |
0 | 162 would for instance retrieve the main information about one patient as |
163 follows:: | |
164 | |
165 $ curl http://localhost:8042/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94 | |
166 | |
167 .. highlight:: json | |
168 | |
169 Here is a possible answer from Orthanc:: | |
170 | |
171 { | |
172 "ID" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea", | |
173 "MainDicomTags" : { | |
174 "OtherPatientIDs" : "(null)", | |
175 "PatientBirthDate" : "0", | |
176 "PatientID" : "000000185", | |
177 "PatientName" : "Anonymous^Unknown", | |
178 "PatientSex" : "O" | |
179 }, | |
180 "Studies" : [ "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15" ], | |
181 "Type" : "Patient" | |
182 } | |
183 | |
184 This is once again a JSON file. Note how Orthanc gives you a summary | |
185 of the main DICOM tags that correspond to the patient level. | |
186 | |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
187 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
188 .. _browsing-hierarchy: |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
189 |
0 | 190 Browsing from the patient down to the instance |
191 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
192 | |
193 .. highlight:: bash | |
194 | |
195 The field ``Studies`` list all the DICOM studies that are associated | |
196 with the patient. So, considering the patient above, we would go down | |
197 in her DICOM hierarchy as follows:: | |
198 | |
199 $ curl http://localhost:8042/studies/9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15 | |
200 | |
201 .. highlight:: json | |
202 | |
203 And Orthanc could answer:: | |
204 | |
205 { | |
206 "ID" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15", | |
207 "MainDicomTags" : { | |
208 "AccessionNumber" : "(null)", | |
209 "StudyDate" : "20120716", | |
210 "StudyDescription" : "TestSUVce-TF", | |
211 "StudyID" : "23848", | |
212 "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40", | |
213 "StudyTime" : "170728" | |
214 }, | |
215 "ParentPatient" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea", | |
216 "Series" : [ | |
217 "6821d761-31fb55a9-031ebecb-ba7f9aae-ffe4ddc0", | |
218 "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", | |
219 "7384c47e-6398f2a8-901846ef-da1e2e0b-6c50d598" | |
220 ], | |
221 "Type" : "Study" | |
222 } | |
223 | |
224 .. highlight:: bash | |
225 | |
226 The main DICOM tags are now those that are related to the study | |
227 level. It is possible to retrieve the identifier of the patient in the | |
228 ``ParentPatient`` field, which can be used to go upward the DICOM | |
229 hierarchy. But let us rather go down to the series level by using the | |
230 ``Series`` array. The next command would return information about one | |
231 of the three series that have just been reported:: | |
232 | |
233 $ curl http://localhost:8042/series/2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35 | |
234 | |
235 .. highlight:: json | |
236 | |
237 Here is a possible answer:: | |
238 | |
239 { | |
240 "ExpectedNumberOfInstances" : 45, | |
241 "ID" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", | |
242 "Instances" : [ | |
243 "41bc3f74-360f9d10-6ae9ffa4-01ea2045-cbd457dd", | |
244 "1d3de868-6c4f0494-709fd140-7ccc4c94-a6daa3a8", | |
245 <...> | |
246 "1010f80b-161b71c0-897ec01b-c85cd206-e669a3ea", | |
247 "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4" | |
248 ], | |
249 "MainDicomTags" : { | |
250 "Manufacturer" : "Philips Medical Systems", | |
251 "Modality" : "PT", | |
252 "NumberOfSlices" : "45", | |
253 "ProtocolName" : "CHU/Body_PET/CT___50", | |
254 "SeriesDate" : "20120716", | |
255 "SeriesDescription" : "[WB_CTAC] Body", | |
256 "SeriesInstanceUID" : "1.3.46.670589.28.2.12.30.26407.37145.2.2516.0.1342458737", | |
257 "SeriesNumber" : "587370", | |
258 "SeriesTime" : "171121", | |
259 "StationName" : "r054-svr" | |
260 }, | |
261 "ParentStudy" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15", | |
262 "Status" : "Complete", | |
263 "Type" : "Series" | |
264 } | |
265 | |
266 It can be seen that this series comes from a PET modality. Orthanc has | |
267 computed that this series should contain 45 instances. | |
268 | |
269 .. highlight:: bash | |
270 | |
271 So far, we have navigated from the patient level, to the study level, | |
272 and finally to the series level. There only remains the instance | |
273 level. Let us dump the content of one of the instances:: | |
274 | |
275 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 | |
276 | |
277 .. highlight:: json | |
278 | |
279 The instance contains the following information:: | |
280 | |
281 { | |
282 "FileSize" : 70356, | |
283 "FileUuid" : "3fd265f0-c2b6-41a2-ace8-ae332db63e06", | |
284 "ID" : "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4", | |
285 "IndexInSeries" : 6, | |
286 "MainDicomTags" : { | |
287 "ImageIndex" : "6", | |
288 "InstanceCreationDate" : "20120716", | |
289 "InstanceCreationTime" : "171344", | |
290 "InstanceNumber" : "6", | |
291 "SOPInstanceUID" : "1.3.46.670589.28.2.15.30.26407.37145.3.2116.39.1342458737" | |
292 }, | |
293 "ParentSeries" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", | |
294 "Type" : "Instance" | |
295 } | |
296 | |
297 .. highlight:: bash | |
298 | |
299 The instance has the index 6 in the parent series. The instance is | |
300 stored as a raw DICOM file of 70356 bytes. You would download this | |
301 DICOM file using the following command:: | |
302 | |
303 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/file > Instance.dcm | |
304 | |
305 | |
306 Accessing the DICOM fields of an instance as a JSON file | |
307 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
308 | |
309 .. highlight:: bash | |
310 | |
311 When one gets to the instance level, you can retrieve the hierarchy of | |
312 all the DICOM tags of this instance as a JSON file:: | |
313 | |
314 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/simplified-tags | |
315 | |
316 .. highlight:: json | |
317 | |
318 Here is a excerpt of the Orthanc answer:: | |
319 | |
320 { | |
321 "ACR_NEMA_2C_VariablePixelDataGroupLength" : "57130", | |
322 "AccessionNumber" : null, | |
323 "AcquisitionDate" : "20120716", | |
324 "AcquisitionDateTime" : "20120716171219", | |
325 "AcquisitionTime" : "171219", | |
326 "ActualFrameDuration" : "3597793", | |
327 "AttenuationCorrectionMethod" : "CTAC-SG", | |
328 <...> | |
329 "PatientID" : "000000185", | |
330 "PatientName" : "Anonymous^Unknown", | |
331 "PatientOrientationCodeSequence" : [ | |
332 { | |
333 "CodeMeaning" : "recumbent", | |
334 "CodeValue" : "F-10450", | |
335 "CodingSchemeDesignator" : "99SDM", | |
336 "PatientOrientationModifierCodeSequence" : [ | |
337 { | |
338 "CodeMeaning" : "supine", | |
339 "CodeValue" : "F-10340", | |
340 "CodingSchemeDesignator" : "99SDM" | |
341 } | |
342 ] | |
343 } | |
344 ], | |
345 <...> | |
346 "StudyDescription" : "TestSUVce-TF", | |
347 "StudyID" : "23848", | |
348 "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40", | |
349 "StudyTime" : "171117", | |
350 "TypeOfDetectorMotion" : "NONE", | |
351 "Units" : "BQML", | |
352 "Unknown" : null, | |
353 "WindowCenter" : "1.496995e+04", | |
354 "WindowWidth" : "2.993990e+04" | |
355 } | |
356 | |
357 .. highlight:: bash | |
358 | |
359 If you need more detailed information about the type of the variables | |
360 or if you wish to use the hexadecimal indexes of DICOM tags, you are | |
361 free to use the following URL:: | |
362 | |
363 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/tags | |
364 | |
365 Accessing the raw DICOM fields of an instance | |
366 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
367 | |
368 .. highlight:: bash | |
369 | |
370 You also have the opportunity to access the raw value of the DICOM | |
371 tags of an instance, without going through a JSON file. Here is how | |
372 you would find the Patient Name of the instance:: | |
373 | |
374 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/content/0010-0010 | |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
375 Anonymous^Unknown |
0 | 376 |
377 The list of all the available tags for this instance can also be retrieved easily:: | |
378 | |
379 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/content | |
380 | |
381 It is also possible to recursively explore the sequences of tags:: | |
382 | |
383 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/content/0008-1250/0/0040-a170/0/0008-0104 | |
384 For Attenuation Correction | |
385 | |
386 The command above has opened the "0008-1250" tag that is a DICOM | |
387 sequence, taken its first child, opened its "0040-a170" tag that is | |
388 also a sequence, taken the first child of this child, and returned the | |
389 "0008-0104" DICOM tag. | |
390 | |
391 Downloading images | |
392 ^^^^^^^^^^^^^^^^^^ | |
393 | |
394 .. highlight:: bash | |
395 | |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
396 As :ref:`explained above <browsing-hierarchy>`, the raw DICOM file |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
397 corresponding to a single instance can be retrieved as follows:: |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
398 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
399 $ curl http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/file > Instance.dcm |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
400 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
401 It is also possible to download a preview PNG image that corresponds |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
402 to some DICOM instance:: |
0 | 403 |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
404 $ curl http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/preview > Preview.png |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
405 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
406 The resulting image will be a standard graylevel PNG image (with 8 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
407 bits per pixel) that can be opened by any painting software. The |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
408 dynamic range of the pixel data is stretched to the [0..255] range. |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
409 An equivalent JPEG image can be downloaded by setting the `HTTP header |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
410 <https://en.wikipedia.org/wiki/List_of_HTTP_header_fields>`__ |
910 | 411 ``Accept`` to ``image/jpeg``. By default, the jpeg quality is set to |
412 90% but this can be specified in the url:: | |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
413 |
169 | 414 $ curl -H 'Accept: image/jpeg' http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/preview > Preview.jpg |
910 | 415 $ curl -H 'Accept: image/jpeg' http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/preview?quality=80 > Preview80.jpg |
0 | 416 |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
417 If you don't want to stretch the dynamic range, and create a 8bpp or |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
418 16bpp PNG image, you can use the following URIs:: |
0 | 419 |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
420 $ curl http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/image-uint8 > full-8.png |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
421 $ curl http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/image-uint16 > full-16.png |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
422 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
423 In these images, the values are cropped to the maximal value that can |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
424 be encoded by the target image format. The |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
425 ``/instances/{...}/image-int16`` is available as well to download |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
426 signed DICOM pixel data. |
0 | 427 |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
428 Since Orthanc 1.4.2, it is also possible to download such images in |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
429 the generic `PAM format |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
430 <https://en.wikipedia.org/wiki/Netpbm#PAM_graphics_format>`__:: |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
431 |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
432 $ curl -H 'Accept: image/x-portable-arbitrarymap' http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/image-uint16 > full-16.pam |
0 | 433 |
168
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
434 Users of Matlab or Octave can find related information :ref:`in the |
86e92d0cc53e
information about images
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
155
diff
changeset
|
435 dedicated section <matlab>`. |
0 | 436 |
820
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
437 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
438 .. _download_numpy: |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
439 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
440 Downloading decoded images from Python |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
441 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
442 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
443 .. highlight:: python |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
444 |
839 | 445 Starting with Orthanc 1.11.0, it is possible to immediately download |
820
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
446 DICOM instances and DICOM series as numpy arrays (even if they use a |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
447 compressed transfer syntax). This is especially useful for the |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
448 integration within AI (artificial intelligence) pipelines. Here is a |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
449 sample call:: |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
450 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
451 import io |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
452 import numpy |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
453 import requests |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
454 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
455 r = requests.get('https://demo.orthanc-server.com/instances/6582b1c0-292ad5ab-ba0f088f-f7a1766f-9a29a54f/numpy') |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
456 r.raise_for_status() |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
457 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
458 image = numpy.load(io.BytesIO(r.content)) |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
459 print(image.shape) # (1, 358, 512, 1) |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
460 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
461 The downloaded numpy array for one single DICOM instance contains |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
462 floating-point values, and has a shape of ``(1, height, width, 1)`` if |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
463 the corresponding instance is grayscale, or ``(1, height, width, 3)`` |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
464 if the instance has colors (e.g. in ultrasound images). If applicable, |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
465 the ``Rescale Slope (0028,1053)`` and ``Rescale Intercept |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
466 (0028,1052)`` DICOM tags are applied to the floating-point values. |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
467 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
468 Similarly, this feature is available at the series level:: |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
469 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
470 import io |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
471 import numpy |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
472 import requests |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
473 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
474 r = requests.get('https://demo.orthanc-server.com/series/dc0216d2-a406a5ad-31ef7a78-113ae9d9-29939f9e/numpy') |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
475 r.raise_for_status() |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
476 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
477 image = numpy.load(io.BytesIO(r.content)) |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
478 print(image.shape) # (100, 256, 256, 1) |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
479 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
480 As can be seen, in the case of a DICOM series, the first dimension of |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
481 the resulting numpy array corresponds to the depth of the series |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
482 (i.e. to its number of 2D slices). |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
483 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
484 Some options are available for these ``/instances/.../numpy`` and |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
485 ``/series/.../numpy`` routes: |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
486 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
487 * ``?compress=1`` will return a ``.npz`` compressed numpy archive |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
488 instead of a plain ``.npy`` numpy array. This can be used to reduce |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
489 the network bandwidth. In such a case, the array of interest is |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
490 named ``arr_0`` in the ``.npz`` archive, e.g.:: |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
491 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
492 print(image['arr_0'].shape) |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
493 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
494 * ``?rescale=0`` will skip the conversion to floating-point values, |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
495 and will not apply the rescale slope/intercept. This can be useful |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
496 to reduce the network bandwidth or to receive the original integer |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
497 values of the voxels. |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
498 |
fa6d9c7237b4
Downloading decoded images from Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
817
diff
changeset
|
499 |
380 | 500 Downloading studies |
411 | 501 ^^^^^^^^^^^^^^^^^^^ |
380 | 502 |
503 .. highlight:: bash | |
504 | |
505 All instances of a study can be retrieved as a zip file as follows:: | |
506 | |
507 $ curl http://localhost:8042/studies/6b9e19d9-62094390-5f9ddb01-4a191ae7-9766b715/archive > Study.zip | |
508 | |
509 It is also possible to download a zipped DICOMDIR through:: | |
510 | |
381 | 511 $ curl http://localhost:8042/studies/6b9e19d9-62094390-5f9ddb01-4a191ae7-9766b715/media > Study.zip |
380 | 512 |
218 | 513 |
732
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
514 .. _download-pdf-videos: |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
515 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
516 Downloading PDF or videos |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
517 ^^^^^^^^^^^^^^^^^^^^^^^^^ |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
518 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
519 .. highlight:: bash |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
520 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
521 Given a DICOM instance that embeds a PDF file (typically, one instance |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
522 whose SOP Class UID is ``1.2.840.10008.5.1.4.1.1.104.1`` - |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
523 Encapsulated PDF Storage), the PDF content can be downloaded as |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
524 follows:: |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
525 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
526 $ curl http://localhost:8042/instances/1915e0cc-c2c1a0fc-12cdd7f5-3ba32114-a97c2c9b/content/0042,0011 > sample.pdf |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
527 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
528 This corresponds to downloading the raw DICOM tag "Encapsulated |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
529 Document" (0042,0011). Beware that the last byte of the downloaded |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
530 file might correspond to one padding byte, if the source PDF had an |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
531 odd number of bytes. |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
532 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
533 Similarly, if you know that a DICOM instance :ref:`embeds a video |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
534 <videos>` (which can be tested by checking the :ref:`value of the |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
535 metadata <metadata-core>` corresponding to its transfer syntax UID), |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
536 the raw video can be downloaded as follows:: |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
537 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
538 $ curl http://localhost:8042/instances/e465dd27-83c96343-96848735-7035a133-1facf1a0/frames/0/raw > sample.mp4 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
539 |
bfc31c51809f
download pdf and videos
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
719
diff
changeset
|
540 |
218 | 541 .. _peering: |
542 | |
216 | 543 Sending resources to remote Orthanc over HTTP/HTTPS (through Orthanc peering) |
224
02399e86f046
starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
544 ----------------------------------------------------------------------------- |
216 | 545 |
428
943515b68158
documented transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
546 Orthanc can send its DICOM instances to remote Orthanc servers over |
943515b68158
documented transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
547 HTTP/HTTPS. Such servers are referred to as :ref:`Orthanc peers |
943515b68158
documented transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
548 <peers>`. This process can be triggered by the REST API, which is |
943515b68158
documented transcoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
411
diff
changeset
|
549 described in this section. |
216 | 550 |
551 Configuration | |
552 ^^^^^^^^^^^^^ | |
553 | |
554 .. highlight:: json | |
555 | |
314
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
556 You first have to declare the Url of the remote orthanc inside the |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
557 :ref:`configuration file <configuration>`. For instance, here is how |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
558 to declare a remote orthanc peer:: |
216 | 559 |
560 ... | |
494 | 561 "OrthancPeers" : { |
216 | 562 "sample" : [ "http://localhost:8043" ], // short version |
563 "sample2" : { // long version | |
564 "Url" : "http://localhost:8044", | |
565 "Username" : "alice", // optional | |
566 "Password" : "alicePassword", // optional | |
567 "HttpHeaders" : { "Token" : "Hello world" }, // optional | |
568 "CertificateFile" : "client.crt", // optional (only if using client certificate authentication) | |
569 "CertificateKeyFile" : "client.key", // optional (only if using client certificate authentication) | |
570 "CertificateKeyPassword" : "certpass" // optional (only if using client certificate authentication) | |
571 }, | |
572 ... | |
573 | |
574 .. highlight:: bash | |
575 | |
576 Such a configuration would enable Orthanc to connect to two other | |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
577 Orthanc instances that listens on the localhost on the ports 8043 |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
578 and 8044. The peers that are known to Orthanc can be queried:: |
216 | 579 |
580 $ curl http://localhost:8042/peers?expand | |
581 | |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
582 Instead of using the configuration file, peers can be created or |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
583 updated through the REST API using the ``PUT`` method of HTTP:: |
216 | 584 |
585 $ curl -v -X PUT http://localhost:8042/peers/sample -d '{"Url" : "http://127.0.0.1:8043"}' | |
586 | |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
587 One peer can also be removed using the ``DELETE`` method as follows:: |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
588 |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
589 $ curl -v -X DELETE http://localhost:8042/peers/sample |
216 | 590 |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
591 Note that, by default, peers are read from the Orthanc configuration |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
592 files and are updated in Orthanc memory only. If you want your |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
593 modifications to be persistent, you should configure Orthanc to store |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
594 its peers in the database. This is done through this configuration:: |
0 | 595 |
216 | 596 ... |
597 "OrthancPeersInDatabase" : true, | |
598 ... | |
599 | |
600 Sending One Resource | |
601 ^^^^^^^^^^^^^^^^^^^^ | |
602 | |
603 .. highlight:: bash | |
604 | |
605 Once you have identified the Orthanc identifier of the DICOM resource | |
606 that would like to send :ref:`as explained above <rest-access>`, you | |
607 would use the following command to send it:: | |
608 | |
609 $ curl -X POST http://localhost:8042/peers/sample/store -d c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f | |
610 | |
611 The ``/sample/`` component of the URI corresponds to the identifier of | |
612 the remote modality, as specified above in the configuration file. | |
613 | |
614 Note that you can send isolated DICOM instances with this command, but | |
615 also entire patients, studies or series. It is possible to send multiple instances with a single POST | |
616 request:: | |
617 | |
618 $ curl -X POST http://localhost:8042/peers/sample/store -d '["d4b46c8e-74b16992-b0f5ca11-f04a60fa-8eb13a88","d5604121-7d613ce6-c315a5-a77b3cf3-9c253b23","cb855110-5f4da420-ec9dc9cb-2af6a9bb-dcbd180e"]' | |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
619 |
216 | 620 Note that the list of resources to be sent can include the |
621 :ref:`Orthanc identifiers <orthanc-ids>` of entire patients, | |
622 studies or series as well. | |
623 | |
633
06bea33cb7d0
metadata and attachments are not transferred between peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
609
diff
changeset
|
624 **Important remark:** Neither the :ref:`metadata <metadata>`, nor the |
06bea33cb7d0
metadata and attachments are not transferred between peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
609
diff
changeset
|
625 :ref:`attachments <attachments>` are transferred between the Orthanc |
06bea33cb7d0
metadata and attachments are not transferred between peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
609
diff
changeset
|
626 peers. This is because metadata and attachments are considered as |
06bea33cb7d0
metadata and attachments are not transferred between peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
609
diff
changeset
|
627 local to one Orthanc server. |
06bea33cb7d0
metadata and attachments are not transferred between peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
609
diff
changeset
|
628 |
06bea33cb7d0
metadata and attachments are not transferred between peers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
609
diff
changeset
|
629 |
294 | 630 Testing connectivity with a remote peer |
631 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
632 | |
633 .. highlight:: bash | |
634 | |
635 In version 1.5.9+, we have introduced a route to retrieve the ``/system`` info from | |
636 a remote peer. This route can also be used to test the connectivity with that peer | |
637 without actually sending a DICOM resource.:: | |
638 | |
639 $ curl http://localhost:8042/peers/sample/system | |
640 | |
641 | |
216 | 642 Using HTTPS |
643 ^^^^^^^^^^^ | |
644 | |
609
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
645 If you're transfering medical data over internet, it is mandatory to |
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
646 use HTTPS. |
216 | 647 |
609
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
648 On the server side, we recommend to put Orthanc behind an :ref:`HTTPS |
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
649 server that will take care of the TLS <https>`. |
216 | 650 |
609
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
651 On the client side, in order for the client Orthanc to recognize the |
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
652 server certificate, you'll have to provide a path to the CA |
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
653 (certification authority) certificates. This is done in the |
0dde82745e0d
documentation of DICOM TLS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
577
diff
changeset
|
654 configuration file through this configurationg:: |
216 | 655 |
656 ... | |
657 "HttpsCACertificates" : "/etc/ssl/certs/ca-certificates.crt, | |
658 ... | |
659 | |
223 | 660 If you want your server to accept incoming connections for known hosts only, you can either: |
216 | 661 |
662 - configure a firewall to accept incoming connections from known IP addresses | |
663 - configure your client Orthanc to use a client certificate to authenticate at the Server. This is done through the ``CertificateFile``, ``CertificateKeyFile`` and ``CertificateKeyPassword`` entries in the configuration file. | |
664 | |
665 | |
666 | |
667 | |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
668 Sending resources to remote modalities (through DICOM C-Store) |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
669 -------------------------------------------------------------- |
0 | 670 |
671 Orthanc can send its DICOM instances to remote DICOM modalities (C-Store SCU). This process | |
672 can be triggered by the REST API. | |
673 | |
674 Configuration | |
675 ^^^^^^^^^^^^^ | |
676 | |
677 .. highlight:: json | |
678 | |
679 You first have to declare the AET, the IP address and the port number | |
680 of the remote modality inside the :ref:`configuration file | |
681 <configuration>`. For instance, here is how to declare a remote | |
682 modality:: | |
683 | |
684 ... | |
685 "DicomModalities" : { | |
212 | 686 "sample" : [ "ORTHANCA", "127.0.0.1", 2000 ], // short version |
687 "sample2" : { // long version | |
688 "AET" : "ORTHANCB", | |
689 "Port" : 2001, | |
690 "Host" : "127.0.0.1", | |
691 "Manufacturer" : "Generic", | |
692 "AllowEcho" : true, | |
693 "AllowFind" : true, | |
694 "AllowMove" : true, | |
695 "AllowStore" : true | |
696 } | |
0 | 697 }, |
698 ... | |
699 | |
700 .. highlight:: bash | |
701 | |
212 | 702 Such a configuration would enable Orthanc to connect to two DICOM |
703 stores (for instance, other Orthanc instances) that listens on the | |
704 localhost on the port 2000 & 2001. The modalities that are known to Orthanc | |
0 | 705 can be queried:: |
706 | |
212 | 707 $ curl http://localhost:8042/modalities?expand |
708 | |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
709 Instead of using the configuration file, modalities can be created or |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
710 updated through the REST API using the ``PUT`` method of HTTP:: |
212 | 711 |
712 $ curl -v -X PUT http://localhost:8042/modalities/sample -d '{"AET" : "ORTHANCC", "Host": "127.0.0.1", "Port": 2002}' | |
713 | |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
714 One modality can also be removed using the ``DELETE`` method as follows:: |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
715 |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
716 $ curl -v -X DELETE http://localhost:8042/modalities/sample |
0 | 717 |
667
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
718 Note that, by default, modalities are read from the Orthanc |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
719 configuration files and are updated in Orthanc memory only. If you |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
720 want your modifications to be persistent, you should configure Orthanc |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
721 to store the modalities in the database. This is done through this |
be71b56c90ab
example to delete peer/modality using rest
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
662
diff
changeset
|
722 configuration:: |
212 | 723 |
724 ... | |
725 "DicomModalitiesInDatabase" : true, | |
726 ... | |
0 | 727 |
331
48673b8abae3
documentation of storage commitment scu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
728 |
48673b8abae3
documentation of storage commitment scu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
729 .. _rest-store-scu: |
48673b8abae3
documentation of storage commitment scu
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
314
diff
changeset
|
730 |
0 | 731 Sending One Resource |
732 ^^^^^^^^^^^^^^^^^^^^ | |
733 | |
734 .. highlight:: bash | |
735 | |
736 Once you have identified the Orthanc identifier of the DICOM resource | |
737 that would like to send :ref:`as explained above <rest-access>`, you | |
738 would use the following command to send it:: | |
739 | |
740 $ curl -X POST http://localhost:8042/modalities/sample/store -d c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f | |
741 | |
742 The ``/sample/`` component of the URI corresponds to the identifier of | |
743 the remote modality, as specified above in the configuration file. | |
744 | |
173
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
745 Note that you can send isolated DICOM instances with this command, but |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
746 also entire patients, studies or series. |
0 | 747 |
407 | 748 Various optional fields are also available. i.e, if you need to |
749 monitor the state of a transfer, you can start the transfer in :ref:`asynchronous mode | |
750 <jobs>`, which will provide you with the identifier of the Orthanc job:: | |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
751 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
752 $ curl -X POST http://localhost:8042/modalities/sample/store \ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
753 --data '{ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
754 "Resources" : ["d4b46c8e-74b16992-b0f5ca11-f04a60fa-8eb13a88"], |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
755 "Synchronous" : false, |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
756 "LocalAet" : "ORTHANC", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
757 "MoveOriginatorAet": "ORTHANC", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
758 "MoveOriginatorID": 1234, |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
759 "Timeout": 10, |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
760 "StorageCommitment": false |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
761 }' |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
762 |
403 | 763 |
0 | 764 Bulk Store SCU |
765 ^^^^^^^^^^^^^^ | |
766 | |
767 .. highlight:: bash | |
768 | |
769 Each time a POST request is made to ``/modalities/.../store``, a new | |
173
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
770 DICOM association is possibly established. This may lead to a large |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
771 communication overhead if sending multiple isolated instances by |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
772 making one REST call for each of these instances. |
0 | 773 |
774 To circumvent this problem, you have 2 possibilities: | |
775 | |
776 1. Set the ``DicomAssociationCloseDelay`` option in the | |
777 :ref:`configuration file <configuration>` to a non-zero value. This | |
778 will keep the DICOM connection open for a certain amount of time, | |
173
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
779 waiting for new instances to be routed. This is useful if |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
780 autorouting images :ref:`using Lua <lua-auto-routing>`. |
0 | 781 |
173
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
782 2. It is possible to send multiple instances with a single POST |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
783 request (so-called "Bulk Store SCU", available from Orthanc |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
784 0.5.2):: |
0 | 785 |
786 $ curl -X POST http://localhost:8042/modalities/sample/store -d '["d4b46c8e-74b16992-b0f5ca11-f04a60fa-8eb13a88","d5604121-7d613ce6-c315a5-a77b3cf3-9c253b23","cb855110-5f4da420-ec9dc9cb-2af6a9bb-dcbd180e"]' | |
787 | |
788 The list of the resources to be sent are given as a JSON array. In | |
789 this case, a single DICOM connection is used. `Sample code is | |
790 available | |
449 | 791 <https://hg.orthanc-server.com/orthanc/file/default/OrthancServer/Resources/Samples/Python/HighPerformanceAutoRouting.py>`__. |
0 | 792 |
173
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
793 Note that the list of resources to be sent can include the |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
794 :ref:`Orthanc identifiers <orthanc-ids>` of entire patients, |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
795 studies or series as well. |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
796 |
901bc7b2dbab
improved bulk store scu section
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
169
diff
changeset
|
797 |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
798 Performing C-Echo |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
799 ----------------- |
0 | 800 |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
801 To validate the DICOM connectivity between Orthanc and a remote modality, |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
802 you can perform a C-ECHO:: |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
803 |
557
3af5dda67520
fix sample for c-echo in rest api
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
494
diff
changeset
|
804 $ curl -X POST http://localhost:8042/modalities/sample/echo -d '{}' |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
805 |
557
3af5dda67520
fix sample for c-echo in rest api
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
494
diff
changeset
|
806 From Orthanc 1.7.0, you can include an extra ``Timeout`` field:: |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
807 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
808 $ curl -X POST http://localhost:8042/modalities/sample/echo -d '{ "Timeout": 10 }' |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
809 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
810 If no ``Timeout`` parameter is specified, the value of the ``DicomScuTimeout`` |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
811 configuration is used as a default. If ``Timeout`` is set to zero, this means |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
812 no timeout. |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
813 |
557
3af5dda67520
fix sample for c-echo in rest api
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
494
diff
changeset
|
814 NB: A body containing a valid JSON object is needed by |
3af5dda67520
fix sample for c-echo in rest api
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
494
diff
changeset
|
815 ``/modalities/{id}/echo`` since Orthanc 1.7.0. |
3af5dda67520
fix sample for c-echo in rest api
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
494
diff
changeset
|
816 |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
817 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
818 Performing C-Move |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
819 ----------------- |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
820 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
821 .. highlight:: bash |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
822 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
823 You can perform a DICOM C-Move to move a specific study from one modality |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
824 to another (including Orthanc itself if you don't specify the ``TargetAet`` |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
825 field). |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
826 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
827 I.e. to move a study whose you know the ``StudyInstanceUID`` from |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
828 the modality ``sample`` to another Orthanc whose AET is ``ORTHANCB``:: |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
829 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
830 $ curl --request POST --url http://localhost:8042/modalities/samples/move \ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
831 --data '{ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
832 "Level" : "Study", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
833 "Resources" : [ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
834 { |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
835 "StudyInstanceUID": "1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129" |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
836 } |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
837 ], |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
838 "TargetAet": "ORTHANCB", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
839 "Timeout": 60 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
840 }' |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
841 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
842 |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
843 Performing Query/Retrieve (C-Find) and Find with REST |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
844 ----------------------------------------------------- |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
845 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
846 *Section contributed by Bryan Dearlove* |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
847 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
848 Orthanc can be used to perform queries on the local Orthanc instance, |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
849 or on remote modalities through the REST API. |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
850 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
851 To perform a query of a remote modality you must define the modality |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
852 within the :ref:`configuration file <configuration>` (See |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
853 Configuration section under Sending resources to remote modalities). |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
854 |
698 | 855 .. _rest-find-scu: |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
856 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
857 Performing Queries on Modalities |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
858 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
859 |
138 | 860 .. highlight:: bash |
861 | |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
862 To initiate a query you perform a POST command against the Modality |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
863 with the identifiers you are looking for. The the example below we are |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
864 performing a study level query against the modality sample for any |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
865 study descriptions with the word chest within it. This search is case |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
866 insensitive unless configured otherwise within the Orthanc |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
867 configuration file:: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
868 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
869 $ curl --request POST \ |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
870 --url http://localhost:8042/modalities/sample/query \ |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
871 --data '{ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
872 "Level" : "Study", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
873 "Query" : { |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
874 "PatientID" : "", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
875 "StudyDescription" : "*Chest*", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
876 "PatientName" : "" |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
877 } |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
878 }' |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
879 |
314
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
880 You might be interested in including the ``Normalize`` option to bypass |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
881 the normalization of the outgoing C-FIND queries. For instance, for |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
882 the ``InstitutionName`` to be included at the ``Study`` level, one would |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
883 run:: |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
884 |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
885 $ curl -v http://localhost:8042/modalities/sample/query -X POST -d \ |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
886 '{"Level":"Study","Query":{"InstitutionName":"a"},"Normalize":false}' |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
887 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
888 .. highlight:: json |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
889 |
138 | 890 You will receive back an ID which can be used to retrieve more |
891 information with GET commands or C-Move requests with a POST Command:: | |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
892 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
893 { |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
894 "ID": "5af318ac-78fb-47ff-b0b0-0df18b0588e0", |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
895 "Path": "/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0" |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
896 } |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
897 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
898 |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
899 Additional Options |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
900 ^^^^^^^^^^^^^^^^^^ |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
901 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
902 .. highlight:: json |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
903 |
314
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
904 You can use patient identifiers by including the ``*`` within your |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
905 search. For example if you were searching for a name beginning with |
314
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
906 ``Jones`` you can do:: |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
907 |
139 | 908 "PatientName":"Jones*" |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
909 |
314
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
910 If you wanted to search for a name with the words ``Jo`` anywhere |
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
911 within it you can do:: |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
912 |
139 | 913 "PatientName":"*Jo*" |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
914 |
138 | 915 To perform date searches you can specify within StudyDate a starting |
916 date and/or a before date. For example ``"StudyDate":"20180323-"`` | |
917 would search for all study dates after the specified date to | |
918 now. Doing ``"StudyDate":"20180323-20180325"`` would search for all | |
919 study dates between the specified date. | |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
920 |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
921 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
922 Reviewing Level |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
923 ^^^^^^^^^^^^^^^ |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
924 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
925 .. highlight:: bash |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
926 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
927 :: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
928 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
929 $ curl --request GET --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/level |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
930 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
931 Will retrieve the level with which the query was performed, Study, |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
932 Series or Instance. |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
933 |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
934 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
935 Reviewing Modality |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
936 ^^^^^^^^^^^^^^^^^^ |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
937 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
938 .. highlight:: bash |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
939 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
940 :: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
941 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
942 $ curl --request GET --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/modality |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
943 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
944 Will provide the modality name which the original query was performed against. |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
945 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
946 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
947 Reviewing Query |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
948 ^^^^^^^^^^^^^^^ |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
949 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
950 .. highlight:: bash |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
951 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
952 To retrieve information on what identifiers the query was originally |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
953 performed using you can use the query filter:: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
954 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
955 $ curl --request GET --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/query |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
956 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
957 |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
958 Reviewing Query Answers |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
959 ^^^^^^^^^^^^^^^^^^^^^^^ |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
960 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
961 .. highlight:: bash |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
962 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
963 You are able to individually review each answer returned by performing |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
964 a GET with the answers parameter:: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
965 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
966 $ curl --request GET --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/answers |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
967 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
968 You will get a JSON back with numbered identifiers for each answer you |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
969 received back. For example because we performed a Study level query we |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
970 received back 5 studies answers back. We are able to query each answer |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
971 for content details:: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
972 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
973 $ curl --request GET --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/answers/0/content |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
974 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
975 If there are content items missing, you may add them by adding that |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
976 identifier to the original query. For example if we wanted Modalities |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
977 listed in this JSON answer in the initial query we would add to the |
314
5f0cd51d97c0
Normalize option in /modalities/.../query
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
313
diff
changeset
|
978 POST body: ``"ModalitiesInStudy":""`` |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
979 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
980 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
981 Performing Retrieve (C-Move) |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
982 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
983 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
984 .. highlight:: bash |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
985 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
986 You can perform a C-Move to retrieve all studies within the original |
205
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
987 query using a post command and identifying the Modality (named in this |
207 | 988 example ``Orthanc``), to be one to in the POST contents:: |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
989 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
990 $ curl --request POST --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/retrieve --data Orthanc |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
991 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
992 You are also able to perform individual C-Moves for a content item by |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
993 specifying that individual content item:: |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
994 |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
995 $ curl --request POST --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/answers/0/retrieve --data Orthanc |
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
996 |
207 | 997 If C-Moves take too long (for example, performing a C-Move of a big |
671
bc8fa2bf4cf7
asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
667
diff
changeset
|
998 study), you may run the request in :ref:`asynchronous mode <jobs>`, |
bc8fa2bf4cf7
asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
667
diff
changeset
|
999 which will create a job in Orthanc:: |
205
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1000 |
207 | 1001 $ curl --request POST --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/retrieve \ |
1002 --data '{"TargetAet":"Orthanc","Synchronous":false}' | |
1003 | |
205
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1004 |
207 | 1005 .. highlight:: bash |
1006 | |
671
bc8fa2bf4cf7
asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
667
diff
changeset
|
1007 The answer of this POST request is the job ID taking care of the |
bc8fa2bf4cf7
asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
667
diff
changeset
|
1008 C-Move command, :ref:`whose status can be monitored <jobs-monitoring>` |
bc8fa2bf4cf7
asynchronous c-move
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
667
diff
changeset
|
1009 in order to detect failure or completion:: |
205
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1010 |
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1011 { |
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1012 "ID" : "11541b16-e368-41cf-a8e9-3acf4061d238", |
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1013 "Path" : "/jobs/11541b16-e368-41cf-a8e9-3acf4061d238" |
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1014 } |
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1015 |
7213bef30604
rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents:
173
diff
changeset
|
1016 |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1017 |
378
16dc3561b41e
Filtering and returning metadata using Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
360
diff
changeset
|
1018 .. _rest-find: |
16dc3561b41e
Filtering and returning metadata using Python
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
360
diff
changeset
|
1019 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1020 Performing Finds within Orthanc |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1021 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1022 .. highlight:: bash |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1023 |
662
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1024 Performing a find within the local database of Orthanc is very similar |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1025 to using Queries against DICOM modalities and the additional options |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1026 listed above work with find also. When performing a find, you will |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1027 receive the Orthanc ID's of all the matched items within your |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1028 find. For example if you perform a study level find and 5 Studies |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1029 match you will receive 5 study level Orthanc ID's in JSON format as a |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1030 response:: |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1031 |
404
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1032 $ curl --request POST --url http://localhost:8042/tools/find \ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1033 --data '{ |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1034 "Level" : "Instance", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1035 "Query" : { |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1036 "Modality" : "CR", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1037 "StudyDate" : "20180323-", |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1038 "PatientID" : "*" |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1039 } |
7469b6c5618b
DICOM commands: Timeout + improved existing doc
Alain Mazy <alain@mazy.be>
parents:
381
diff
changeset
|
1040 }' |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1041 |
312
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1042 Setting the ``Expand`` field to ``true`` in the POST body of the |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1043 query will automatically report details about each study:: |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1044 |
313 | 1045 $ curl https://demo.orthanc-server.com/tools/find -d '{"Level":"Study","Query":{"PatientName":"KNIX"}}' |
1046 [ | |
1047 "b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0" | |
1048 ] | |
312
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1049 $ curl https://demo.orthanc-server.com/tools/find -d '{"Level":"Study","Query":{"PatientName":"KNIX"},"Expand":true}' |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1050 [ |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1051 { |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1052 "ID" : "b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1053 "IsStable" : true, |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1054 "LastUpdate" : "20180414T091528", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1055 "MainDicomTags" : { |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1056 "InstitutionName" : "0ECJ52puWpVIjTuhnBA0um", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1057 "ReferringPhysicianName" : "1", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1058 "StudyDate" : "20070101", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1059 "StudyDescription" : "Knee (R)", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1060 "StudyID" : "1", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1061 "StudyInstanceUID" : "1.2.840.113619.2.176.2025.1499492.7391.1171285944.390", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1062 "StudyTime" : "120000.000000" |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1063 }, |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1064 "ParentPatient" : "6816cb19-844d5aee-85245eba-28e841e6-2414fae2", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1065 "PatientMainDicomTags" : { |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1066 "PatientID" : "ozp00SjY2xG", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1067 "PatientName" : "KNIX" |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1068 }, |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1069 "Series" : [ |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1070 "20b9d0c2-97d85e07-f4dbf4d2-f09e7e6a-0c19062e", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1071 "edbfa0a9-fa2641d7-29514b1c-45881d0b-46c374bd", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1072 "f2635388-f01d497a-15f7c06b-ad7dba06-c4c599fe", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1073 "4d04593b-953ced51-87e93f11-ae4cf03c-25defdcd", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1074 "5e343c3e-3633c396-03aefde8-ba0e08c7-9c8208d3", |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1075 "8ea120d7-5057d919-837dfbcc-ccd04e0f-7f3a94aa" |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1076 ], |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1077 "Type" : "Study" |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1078 } |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1079 ] |
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1080 |
662
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1081 Here is a sample REST API call to find the Orthanc identifiers of all |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1082 the DICOM series generated by an imaging modality whose "Device Serial |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1083 Number (0018,1000)" DICOM tag is equal to "123":: |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1084 |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1085 $ curl -X POST http://localhost:8042/tools/find -d '{"Level":"Series","Query":{"DeviceSerialNumber":"123"},"Expand":true}' |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1086 |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1087 If you are interested by a **list of several items** (in this case, in |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1088 a list of serial numbers), just separate them with backslashes as |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1089 would do with DICOM C-FIND:: |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1090 |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1091 $ curl -X POST http://localhost:8042/tools/find -d '{"Level":"Series","Query":{"DeviceSerialNumber":"123\\abc"},"Expand":true}' |
88503c6e549f
list of items in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
633
diff
changeset
|
1092 |
312
b19b892977a2
expand in /tools/find
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
297
diff
changeset
|
1093 |
138 | 1094 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1095 Additional Options |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1096 ^^^^^^^^^^^^^^^^^^ |
138 | 1097 .. highlight:: json |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1098 |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1099 You also have the ability to limit the responses by specifying a limit within the body of the POST message. For example:: |
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1100 |
138 | 1101 "Limit":4 |
136
8e08909ab69b
Added find information to: Performing Query/Retrieve and Find with REST
Bryan Dearlove <bdearlove@gmail.com>
parents:
132
diff
changeset
|
1102 |
837
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1103 .. highlight:: bash |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1104 |
839 | 1105 Since Orthanc 1.11.0, you may also request a specific list of tags in the response (like in a C-FIND) even if these |
837
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1106 tags are not stored in the MainDicomTags or if the tags needs to be computed (like ``ModalitiesInStudy``). This ``RequestedTags`` option is |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1107 available only if you specify ``"Expand": true``:: |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1108 |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1109 $ curl -X POST http://localhost:8042/tools/find -d ' |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1110 { |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1111 "Level": "Studies", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1112 "Expand": true, |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1113 "Query": { |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1114 "StudyDate": "20220502" |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1115 }, |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1116 "RequestedTags": ["PatientName", "PatientID", "StudyDescription", "StudyDate", "StudyInstanceUID", "ModalitiesInStudy", "NumberOfStudyRelatedSeries"] |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1117 }' |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1118 |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1119 .. highlight:: json |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1120 |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1121 This query will return a response like this one:: |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1122 |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1123 [ |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1124 { |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1125 "ID" : "8a8cf898-ca27c490-d0c7058c-929d0581-2bbf104d", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1126 "IsStable" : true, |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1127 "LastUpdate" : "20220428T074549", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1128 "MainDicomTags" : { |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1129 "...":"..." |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1130 }, |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1131 "..." : "...", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1132 "RequestedTags" : { |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1133 "PatientName" : "Patient", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1134 "PatientID" : "1", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1135 "StudyDescription" : "Description", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1136 "StudyDate" : "20220502", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1137 "StudyInstanceUID" : "1.2.3", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1138 "ModalitiesInStudy" : "CT\\SEG\\SR", |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1139 "NumberOfStudyRelatedSeries" : "3" |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1140 }, |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1141 "Series" : [ "93034833-163e42c3-bc9a428b-194620cf-2c5799e5" ], |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1142 "Type" : "Study" |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1143 } |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1144 ] |
66ff2f30afcc
added new features from next upcoming Orthanc release
Alain Mazy <am@osimis.io>
parents:
825
diff
changeset
|
1145 |
132
55a2ee3c462d
Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
114
diff
changeset
|
1146 |
216 | 1147 .. _changes: |
1148 | |
0 | 1149 Tracking changes |
1150 ---------------- | |
1151 | |
1152 .. highlight:: bash | |
1153 | |
1154 Whenever Orthanc receives a new DICOM instance, this event is recorded | |
1155 in the so-called "Changes Log". This enables remote scripts to react | |
1156 to the arrival of new DICOM resources. A typical application is | |
1157 **auto-routing**, where an external script waits for a new DICOM | |
1158 instance to arrive into Orthanc, then forward this instance to another | |
1159 modality. | |
1160 | |
1161 The Changes Log can be accessed by the following command:: | |
1162 | |
1163 $ curl http://localhost:8042/changes | |
1164 | |
1165 .. highlight:: json | |
1166 | |
1167 Here is a typical output:: | |
1168 | |
1169 { | |
1170 "Changes" : [ | |
1171 { | |
1172 "ChangeType" : "NewInstance", | |
1173 "Date" : "20130507T143902", | |
1174 "ID" : "8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe", | |
1175 "Path" : "/instances/8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe", | |
1176 "ResourceType" : "Instance", | |
1177 "Seq" : 921 | |
1178 }, | |
1179 { | |
1180 "ChangeType" : "NewSeries", | |
1181 "Date" : "20130507T143902", | |
1182 "ID" : "cceb768f-e0f8df71-511b0277-07e55743-9ef8890d", | |
1183 "Path" : "/series/cceb768f-e0f8df71-511b0277-07e55743-9ef8890d", | |
1184 "ResourceType" : "Series", | |
1185 "Seq" : 922 | |
1186 }, | |
1187 { | |
1188 "ChangeType" : "NewStudy", | |
1189 "Date" : "20130507T143902", | |
1190 "ID" : "c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f", | |
1191 "Path" : "/studies/c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f", | |
1192 "ResourceType" : "Study", | |
1193 "Seq" : 923 | |
1194 }, | |
1195 { | |
1196 "ChangeType" : "NewPatient", | |
1197 "Date" : "20130507T143902", | |
1198 "ID" : "dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94", | |
1199 "Path" : "/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94", | |
1200 "ResourceType" : "Patient", | |
1201 "Seq" : 924 | |
1202 } | |
1203 ], | |
1204 "Done" : true, | |
1205 "Last" : 924 | |
1206 } | |
1207 | |
1208 This output corresponds to the receiving of one single DICOM instance | |
1209 by Orthanc. It records that a new instance, a new series, a new study | |
1210 and a new patient has been created inside Orthanc. Note that each | |
1211 changes is labeled by a ``ChangeType``, a ``Date`` (in the `ISO format | |
25 | 1212 <https://en.wikipedia.org/wiki/ISO_8601>`__), the location of the |
0 | 1213 resource inside Orthanc, and a sequence number (``Seq``). |
1214 | |
1215 Note that this call is non-blocking. It is up to the calling program | |
1216 to wait for the occurrence of a new event (by implementing a polling | |
1217 loop). | |
1218 | |
1219 .. highlight:: bash | |
1220 | |
1221 This call only returns a fixed number of events, that can be changed | |
1222 by using the ``limit`` option:: | |
1223 | |
1224 $ curl http://localhost:8042/changes?limit=100 | |
1225 | |
1226 The flag ``Last`` records the sequence number of the lastly returned | |
1227 event. The flag ``Done`` is set to ``true`` if no further event has | |
1228 occurred after this lastly returned event. If ``Done`` is set to | |
1229 ``false``, further events are available and can be retrieved. This is | |
1230 done by setting the ``since`` option that specifies from which | |
1231 sequence number the changes must be returned:: | |
1232 | |
1233 $ curl 'http://localhost:8042/changes?limit=100&since=922' | |
1234 | |
1235 A `sample code in the source distribution | |
449 | 1236 <https://hg.orthanc-server.com/orthanc/file/default/OrthancServer/Resources/Samples/Python/ChangesLoop.py>`__ |
0 | 1237 shows how to use this Changes API to implement a polling loop. |
1238 | |
1239 | |
1240 Deleting resources from Orthanc | |
1241 ------------------------------- | |
1242 | |
1243 .. highlight:: bash | |
1244 | |
1245 Deleting patients, studies, series or instances | |
1246 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
1247 | |
1248 Deleting DICOM resources (i.e. patients, studies, series or instances) | |
1249 from Orthanc is as simple as using a HTTP DELETE on the URI of this | |
1250 resource. | |
1251 | |
1252 Concretely, you would first explore the resources that are stored in | |
1253 Orthanc :ref:`as explained above <rest-access>`:: | |
1254 | |
1255 $ curl http://localhost:8042/patients | |
1256 $ curl http://localhost:8042/studies | |
1257 $ curl http://localhost:8042/series | |
1258 $ curl http://localhost:8042/instances | |
1259 | |
1260 Secondly, once you have spotted the resources to be removed, you would | |
1261 use the following command-line syntax to delete them:: | |
1262 | |
1263 $ curl -X DELETE http://localhost:8042/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94 | |
1264 $ curl -X DELETE http://localhost:8042/studies/c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f | |
1265 $ curl -X DELETE http://localhost:8042/series/cceb768f-e0f8df71-511b0277-07e55743-9ef8890d | |
1266 $ curl -X DELETE http://localhost:8042/instances/8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe | |
1267 | |
1268 | |
712 | 1269 Starting with Orthanc 1.9.4, it is also possible to ``POST`` on the |
1270 new route ``/tools/bulk-delete`` to delete at once a set of multiple | |
1271 DICOM resources that are not related (i.e. that don't share any parent | |
1272 DICOM resource). A typical use case is to delete a list of DICOM | |
1273 instances that don't belong to the same parent patient/study/series. | |
1274 The list of the :ref:`Orthanc identifiers <orthanc-ids>` of the | |
1275 resources to be deleted (that may indifferently correspond to | |
1276 patients, studies, series or instances) must be provided in an | |
1277 argument ``Resources`` in the body of the request. Here is a sample | |
1278 call:: | |
1279 | |
1280 $ curl http://localhost:8042/tools/bulk-delete -d '{"Resources":["b6da0b16-a25ae9e7-1a80fc33-20df01a9-a6f7a1b0","d6634d97-24379e4a-1e68d3af-e6d0451f-e7bcd3d1"]}' | |
1281 | |
1282 | |
0 | 1283 Clearing log of changes |
1284 ^^^^^^^^^^^^^^^^^^^^^^^ | |
1285 | |
1286 :ref:`As described above <changes>`, Orthanc keeps track of all the | |
1287 changes that occur in the DICOM store. This so-called "Changes Log" | |
1288 is accessible at the following URI:: | |
1289 | |
1290 $ curl http://localhost:8042/changes | |
1291 | |
1292 To clear the content of the Changes Log, simply DELETE this URI:: | |
1293 | |
1294 $ curl -X DELETE http://localhost:8042/changes | |
1295 | |
1296 | |
155 | 1297 Log of exported resources |
1298 ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
1299 | |
1300 For medical traceability, Orthanc can be configured to store a log of | |
1301 all the resources that have been exported to remote modalities:: | |
0 | 1302 |
1303 $ curl http://localhost:8042/exports | |
1304 | |
1305 In auto-routing scenarios, it is important to prevent this log to grow | |
1306 indefinitely as incoming instances are routed. You can either disable | |
1307 this logging by setting the option ``LogExportedResources`` to ``false`` | |
1308 in the :ref:`configuration file <configuration>`, or periodically | |
1309 clear this log by DELETE-ing this URI:: | |
1310 | |
1311 $ curl -X DELETE http://localhost:8042/exports | |
1312 | |
155 | 1313 NB: Starting with Orthanc 1.4.0, the ``LogExportedResources`` is set |
1314 to ``false`` by default. If the logging is desired, set this option to | |
1315 ``true``. | |
1316 | |
0 | 1317 |
1318 Anonymization and modification | |
1319 ------------------------------ | |
1320 | |
1321 The process of anonymizing and modifying DICOM resources is | |
1322 :ref:`documented in a separate page <anonymization>`. | |
1323 | |
1324 | |
1325 Further reading | |
1326 --------------- | |
1327 | |
1328 The examples above have shown you the basic principles for driving an | |
1329 instance of Orthanc through its REST API. All the possibilities of the | |
35
5737f51ff94e
How does Orthanc stores its database
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
25
diff
changeset
|
1330 API have not been described: |
5737f51ff94e
How does Orthanc stores its database
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
25
diff
changeset
|
1331 |
224
02399e86f046
starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
1332 * Advanced features of the REST API can be found on :ref:`another page |
02399e86f046
starting documentation of jobs
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
223
diff
changeset
|
1333 <rest-advanced>`. |
35
5737f51ff94e
How does Orthanc stores its database
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
25
diff
changeset
|
1334 * A :ref:`FAQ entry <rest-samples>` lists where you can find more |
5737f51ff94e
How does Orthanc stores its database
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
25
diff
changeset
|
1335 advanced samples of the REST API of Orthanc. |
577
7d27154e70f9
cheatsheet and full openapi
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
1336 * A :ref:`short reference of the REST API of Orthanc <cheatsheet>` is |
7d27154e70f9
cheatsheet and full openapi
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
1337 part of the Orthanc Book. |
7d27154e70f9
cheatsheet and full openapi
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
1338 * The full documentation of the REST API in the OpenAPI/Swagger format |
7d27154e70f9
cheatsheet and full openapi
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
1339 is `available online <https://api.orthanc-server.com/>`__. This |
7d27154e70f9
cheatsheet and full openapi
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
1340 reference is automatically generated from the source code of |
7d27154e70f9
cheatsheet and full openapi
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
557
diff
changeset
|
1341 Orthanc. |