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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 .. _rest:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 REST API of Orthanc
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 ===================
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 .. contents::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 :depth: 3
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 One of the major strengths of Orthanc lies in its built-in `RESTful
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 API
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 <https://en.wikipedia.org/wiki/Representational_state_transfer>`__,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 that can be used to drive Orthanc from external applications,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 independently of the programming language that is used to develop
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 these applications. The REST API of Orthanc gives a full programmatic
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 access to all the core features of Orthanc.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 Importantly, Orthanc Explorer (the embedded administrative interface
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 of Orthanc) entirely resorts to this REST API for all its features.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 This implies that anything that can be done through Orthanc Explorer,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 can also be done through REST queries.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 *Note:* All the examples are illustrated with the `cURL command-line
25
669ea65ba7fb fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
23 tool <https://curl.haxx.se/>`__, but equivalent calls can be readily
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 transposed to any programming language that supports both HTTP and
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 JSON.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 674
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 675
diff changeset
44 it won't work as such, and you'll have to replace single-quotes by
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 675
diff changeset
45 double-quotes, and prefix the double-quotes by a backslash
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 675
diff changeset
46 character. For instance, consider the following command line that
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 675
diff changeset
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
736d30badda0 large POST body
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 35
diff changeset
65 .. _sending-dicom-images:
736d30badda0 large POST body
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 35
diff changeset
66
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 Sending DICOM images
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68 --------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 The upload of DICOM files is possible by querying the REST API using
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 the following syntax::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75 $ curl -X POST http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm
868
2cb6b69537c6 /instances
Alain Mazy <am@osimis.io>
parents: 860
diff changeset
76 $ curl -X POST http://localhost:8042/instances --data-binary @multiple-files.zip
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 Orthanc will respond with a JSON file that contain information about
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 the location of the stored instance, such as::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 {
868
2cb6b69537c6 /instances
Alain Mazy <am@osimis.io>
parents: 860
diff changeset
84 "ID" : "5d4a3991-8a265cb2-da669bea-d8c761af-4a77113a",
2cb6b69537c6 /instances
Alain Mazy <am@osimis.io>
parents: 860
diff changeset
85 "ParentPatient" : "69a957ab-57545037-ce9a492a-d0bd89c1-d7e2220d",
2cb6b69537c6 /instances
Alain Mazy <am@osimis.io>
parents: 860
diff changeset
86 "ParentSeries" : "87c81b2c-e9f92adf-2dc11d37-399b5214-37275cdb",
2cb6b69537c6 /instances
Alain Mazy <am@osimis.io>
parents: 860
diff changeset
87 "ParentStudy" : "1b1cc0c9-c0377071-78e8cd3a-2e382948-a243db42",
2cb6b69537c6 /instances
Alain Mazy <am@osimis.io>
parents: 860
diff changeset
88 "Path" : "/instances/5d4a3991-8a265cb2-da669bea-d8c761af-4a77113a",
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 "Status" : "Success"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 Note that in the case of curl, setting the ``Expect`` HTTP Header will
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
97
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
98 $ curl -X POST -H "Expect:" http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100 The code distribution of Orthanc contains a `sample Python script
933
a5e7e7001316 Orthanc 1.12.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 914
diff changeset
101 <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.12.0/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102 that recursively upload the content of some folder into Orthanc using
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103 the REST API::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
104
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 $ python ImportDicomFiles.py localhost 8042 ~/DICOM/
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
a5e7e7001316 Orthanc 1.12.0
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 914
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
6d7a36447e21 Small rephrasing
Benjamin Golinvaux <bgo@osimis.io>
parents: 360
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
130 .. _rest-access:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
131
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
132 Accessing the content of Orthanc
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133 --------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 Orthanc structures the stored DICOM resources using the "Patient,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 Study, Series, Instance" model of the DICOM standard. Each DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137 resource is associated with an :ref:`unique identifier <orthanc-ids>`.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139 List all the DICOM resources
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142 Here is how you would list all the DICOM resources that are stored in
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143 your local Orthanc instance::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145 $ curl http://localhost:8042/patients
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
146 $ curl http://localhost:8042/studies
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
147 $ curl http://localhost:8042/series
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
148 $ curl http://localhost:8042/instances
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
150 Note that the result of this command is a `JSON file
25
669ea65ba7fb fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
151 <https://en.wikipedia.org/wiki/Json>`__ that contains an array of
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152 resource identifiers. The JSON file format is lightweight and can be
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 parsed from almost any computer language.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155 Accessing a patient
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
156 ^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 To access a single resource, add its identifier to the `URI
25
669ea65ba7fb fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
161 <https://en.wikipedia.org/wiki/Uniform_resource_identifier>`__. You
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 would for instance retrieve the main information about one patient as
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 follows::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 $ curl http://localhost:8042/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 Here is a possible answer from Orthanc::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 "ID" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 "MainDicomTags" : {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174 "OtherPatientIDs" : "(null)",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
175 "PatientBirthDate" : "0",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
176 "PatientID" : "000000185",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
177 "PatientName" : "Anonymous^Unknown",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178 "PatientSex" : "O"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
180 "Studies" : [ "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15" ],
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
181 "Type" : "Patient"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
182 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
183
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
184 This is once again a JSON file. Note how Orthanc gives you a summary
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
185 of the main DICOM tags that correspond to the patient level.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
190 Browsing from the patient down to the instance
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
191 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
192
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
193 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
194
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
195 The field ``Studies`` list all the DICOM studies that are associated
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196 with the patient. So, considering the patient above, we would go down
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
197 in her DICOM hierarchy as follows::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
198
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
199 $ curl http://localhost:8042/studies/9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
201 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
202
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
203 And Orthanc could answer::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
204
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
205 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
206 "ID" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
207 "MainDicomTags" : {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
208 "AccessionNumber" : "(null)",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
209 "StudyDate" : "20120716",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
210 "StudyDescription" : "TestSUVce-TF",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
211 "StudyID" : "23848",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
212 "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
213 "StudyTime" : "170728"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
214 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
215 "ParentPatient" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
216 "Series" : [
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
217 "6821d761-31fb55a9-031ebecb-ba7f9aae-ffe4ddc0",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
218 "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
219 "7384c47e-6398f2a8-901846ef-da1e2e0b-6c50d598"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
220 ],
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
221 "Type" : "Study"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
222 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
223
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
224 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
225
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
226 The main DICOM tags are now those that are related to the study
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
227 level. It is possible to retrieve the identifier of the patient in the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
228 ``ParentPatient`` field, which can be used to go upward the DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
229 hierarchy. But let us rather go down to the series level by using the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
230 ``Series`` array. The next command would return information about one
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
231 of the three series that have just been reported::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
232
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
233 $ curl http://localhost:8042/series/2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
234
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
235 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
236
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
237 Here is a possible answer::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
238
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
239 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
240 "ExpectedNumberOfInstances" : 45,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
241 "ID" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
242 "Instances" : [
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
243 "41bc3f74-360f9d10-6ae9ffa4-01ea2045-cbd457dd",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
244 "1d3de868-6c4f0494-709fd140-7ccc4c94-a6daa3a8",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
245 <...>
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
246 "1010f80b-161b71c0-897ec01b-c85cd206-e669a3ea",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
247 "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
248 ],
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
249 "MainDicomTags" : {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
250 "Manufacturer" : "Philips Medical Systems",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
251 "Modality" : "PT",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
252 "NumberOfSlices" : "45",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
253 "ProtocolName" : "CHU/Body_PET/CT___50",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
254 "SeriesDate" : "20120716",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
255 "SeriesDescription" : "[WB_CTAC] Body",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
256 "SeriesInstanceUID" : "1.3.46.670589.28.2.12.30.26407.37145.2.2516.0.1342458737",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
257 "SeriesNumber" : "587370",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
258 "SeriesTime" : "171121",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
259 "StationName" : "r054-svr"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
260 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
261 "ParentStudy" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
262 "Status" : "Complete",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
263 "Type" : "Series"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
264 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
265
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
266 It can be seen that this series comes from a PET modality. Orthanc has
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
267 computed that this series should contain 45 instances.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
268
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
269 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
270
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
271 So far, we have navigated from the patient level, to the study level,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
272 and finally to the series level. There only remains the instance
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
273 level. Let us dump the content of one of the instances::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
274
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
275 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
276
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
277 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
278
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
279 The instance contains the following information::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
280
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
281 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
282 "FileSize" : 70356,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
283 "FileUuid" : "3fd265f0-c2b6-41a2-ace8-ae332db63e06",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
284 "ID" : "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
285 "IndexInSeries" : 6,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
286 "MainDicomTags" : {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
287 "ImageIndex" : "6",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
288 "InstanceCreationDate" : "20120716",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
289 "InstanceCreationTime" : "171344",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
290 "InstanceNumber" : "6",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
291 "SOPInstanceUID" : "1.3.46.670589.28.2.15.30.26407.37145.3.2116.39.1342458737"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
292 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
293 "ParentSeries" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
294 "Type" : "Instance"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
295 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
296
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
297 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
298
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
299 The instance has the index 6 in the parent series. The instance is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
300 stored as a raw DICOM file of 70356 bytes. You would download this
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
301 DICOM file using the following command::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
302
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
303 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/file > Instance.dcm
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
304
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
305
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
306 Accessing the DICOM fields of an instance as a JSON file
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
307 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
308
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
309 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
310
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
311 When one gets to the instance level, you can retrieve the hierarchy of
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
312 all the DICOM tags of this instance as a JSON file::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
313
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
314 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/simplified-tags
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
315
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
316 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
317
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
318 Here is a excerpt of the Orthanc answer::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
319
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
320 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
321 "ACR_NEMA_2C_VariablePixelDataGroupLength" : "57130",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
322 "AccessionNumber" : null,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
323 "AcquisitionDate" : "20120716",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
324 "AcquisitionDateTime" : "20120716171219",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
325 "AcquisitionTime" : "171219",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
326 "ActualFrameDuration" : "3597793",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
327 "AttenuationCorrectionMethod" : "CTAC-SG",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
328 <...>
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
329 "PatientID" : "000000185",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
330 "PatientName" : "Anonymous^Unknown",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
331 "PatientOrientationCodeSequence" : [
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
332 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
333 "CodeMeaning" : "recumbent",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
334 "CodeValue" : "F-10450",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
335 "CodingSchemeDesignator" : "99SDM",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
336 "PatientOrientationModifierCodeSequence" : [
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
337 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
338 "CodeMeaning" : "supine",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
339 "CodeValue" : "F-10340",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
340 "CodingSchemeDesignator" : "99SDM"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
341 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
342 ]
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
343 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
344 ],
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
345 <...>
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
346 "StudyDescription" : "TestSUVce-TF",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
347 "StudyID" : "23848",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
348 "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
349 "StudyTime" : "171117",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
350 "TypeOfDetectorMotion" : "NONE",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
351 "Units" : "BQML",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
352 "Unknown" : null,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
353 "WindowCenter" : "1.496995e+04",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
354 "WindowWidth" : "2.993990e+04"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
355 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
356
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
357 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
358
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
359 If you need more detailed information about the type of the variables
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
360 or if you wish to use the hexadecimal indexes of DICOM tags, you are
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
361 free to use the following URL::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
362
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
363 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/tags
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
364
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
365 Accessing the raw DICOM fields of an instance
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
366 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
367
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
368 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
369
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
370 You also have the opportunity to access the raw value of the DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
371 tags of an instance, without going through a JSON file. Here is how
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
372 you would find the Patient Name of the instance::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
373
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
376
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
377 The list of all the available tags for this instance can also be retrieved easily::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
378
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
379 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/content
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
380
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
381 It is also possible to recursively explore the sequences of tags::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
382
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
383 $ curl http://localhost:8042/instances/e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4/content/0008-1250/0/0040-a170/0/0008-0104
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
384 For Attenuation Correction
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
385
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
386 The command above has opened the "0008-1250" tag that is a DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
387 sequence, taken its first child, opened its "0040-a170" tag that is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
388 also a sequence, taken the first child of this child, and returned the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
389 "0008-0104" DICOM tag.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
390
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
391 Downloading images
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
392 ^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
393
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
394 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
888df946c1be preview quality
Alain Mazy <am@osimis.io>
parents: 872
diff changeset
411 ``Accept`` to ``image/jpeg``. By default, the jpeg quality is set to
888df946c1be preview quality
Alain Mazy <am@osimis.io>
parents: 872
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 168
diff changeset
414 $ curl -H 'Accept: image/jpeg' http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/preview > Preview.jpg
910
888df946c1be preview quality
Alain Mazy <am@osimis.io>
parents: 872
diff changeset
415 $ curl -H 'Accept: image/jpeg' http://localhost:8042/instances/609665c0-c5198aa2-8632476b-a00e0de0-e9075d94/preview?quality=80 > Preview80.jpg
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
c29ac12e3160 Orthanc-1.11.0
Alain Mazy <am@osimis.io>
parents: 837
diff changeset
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
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
500 Downloading studies
411
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 407
diff changeset
501 ^^^^^^^^^^^^^^^^^^^
380
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
502
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
503 .. highlight:: bash
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
504
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
505 All instances of a study can be retrieved as a zip file as follows::
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
506
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
507 $ curl http://localhost:8042/studies/6b9e19d9-62094390-5f9ddb01-4a191ae7-9766b715/archive > Study.zip
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
508
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
509 It is also possible to download a zipped DICOMDIR through::
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
510
381
Alain Mazy <alain@mazy.be>
parents: 380
diff changeset
511 $ curl http://localhost:8042/studies/6b9e19d9-62094390-5f9ddb01-4a191ae7-9766b715/media > Study.zip
380
06ab5ab05a2d API doc: download study
Alain Mazy <alain@mazy.be>
parents: 379
diff changeset
512
218
amazy
parents: 216
diff changeset
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
amazy
parents: 216
diff changeset
541 .. _peering:
amazy
parents: 216
diff changeset
542
216
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
550
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
551 Configuration
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
552 ^^^^^^^^^^^^^
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
553
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
554 .. highlight:: json
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
559
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
560 ...
494
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 449
diff changeset
561 "OrthancPeers" : {
216
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
562 "sample" : [ "http://localhost:8043" ], // short version
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
563 "sample2" : { // long version
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
564 "Url" : "http://localhost:8044",
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
565 "Username" : "alice", // optional
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
566 "Password" : "alicePassword", // optional
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
567 "HttpHeaders" : { "Token" : "Hello world" }, // optional
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
568 "CertificateFile" : "client.crt", // optional (only if using client certificate authentication)
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
569 "CertificateKeyFile" : "client.key", // optional (only if using client certificate authentication)
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
570 "CertificateKeyPassword" : "certpass" // optional (only if using client certificate authentication)
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
571 },
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
572 ...
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
573
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
574 .. highlight:: bash
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
575
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
579
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
580 $ curl http://localhost:8042/peers?expand
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
584
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
585 $ curl -v -X PUT http://localhost:8042/peers/sample -d '{"Url" : "http://127.0.0.1:8043"}'
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
595
216
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
596 ...
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
597 "OrthancPeersInDatabase" : true,
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
598 ...
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
599
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
600 Sending One Resource
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
601 ^^^^^^^^^^^^^^^^^^^^
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
602
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
603 .. highlight:: bash
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
604
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
605 Once you have identified the Orthanc identifier of the DICOM resource
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
606 that would like to send :ref:`as explained above <rest-access>`, you
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
607 would use the following command to send it::
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
608
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
609 $ curl -X POST http://localhost:8042/peers/sample/store -d c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
610
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
611 The ``/sample/`` component of the URI corresponds to the identifier of
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
612 the remote modality, as specified above in the configuration file.
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
613
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
614 Note that you can send isolated DICOM instances with this command, but
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
615 also entire patients, studies or series. It is possible to send multiple instances with a single POST
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
616 request::
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
617
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
620 Note that the list of resources to be sent can include the
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
621 :ref:`Orthanc identifiers <orthanc-ids>` of entire patients,
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
622 studies or series as well.
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
630 Testing connectivity with a remote peer
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
631 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
632
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
633 .. highlight:: bash
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
634
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
635 In version 1.5.9+, we have introduced a route to retrieve the ``/system`` info from
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
636 a remote peer. This route can also be used to test the connectivity with that peer
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
637 without actually sending a DICOM resource.::
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
638
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
639 $ curl http://localhost:8042/peers/sample/system
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
640
33fb45a86cd8 /peers/{id}/system
Alain Mazy <alain@mazy.be>
parents: 275
diff changeset
641
216
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
642 Using HTTPS
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
643 ^^^^^^^^^^^
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
655
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
656 ...
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
657 "HttpsCACertificates" : "/etc/ssl/certs/ca-certificates.crt,
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
658 ...
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
659
223
9ccafca945d2 Fixed small typo
Benjamin Golinvaux <bgo@osimis.io>
parents: 218
diff changeset
660 If you want your server to accept incoming connections for known hosts only, you can either:
216
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
661
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
662 - configure a firewall to accept incoming connections from known IP addresses
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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.
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
664
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
665
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
666
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
670
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
671 Orthanc can send its DICOM instances to remote DICOM modalities (C-Store SCU). This process
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
672 can be triggered by the REST API.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
673
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
674 Configuration
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
675 ^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
676
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
677 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
678
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
679 You first have to declare the AET, the IP address and the port number
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
680 of the remote modality inside the :ref:`configuration file
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
681 <configuration>`. For instance, here is how to declare a remote
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
682 modality::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
683
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
684 ...
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
685 "DicomModalities" : {
212
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
686 "sample" : [ "ORTHANCA", "127.0.0.1", 2000 ], // short version
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
687 "sample2" : { // long version
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
688 "AET" : "ORTHANCB",
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
689 "Port" : 2001,
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
690 "Host" : "127.0.0.1",
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
691 "Manufacturer" : "Generic",
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
692 "AllowEcho" : true,
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
693 "AllowFind" : true,
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
694 "AllowMove" : true,
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
695 "AllowStore" : true
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
696 }
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
697 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
698 ...
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
699
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
700 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
701
212
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
702 Such a configuration would enable Orthanc to connect to two DICOM
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
703 stores (for instance, other Orthanc instances) that listens on the
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
704 localhost on the port 2000 & 2001. The modalities that are known to Orthanc
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
705 can be queried::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
706
212
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
707 $ curl http://localhost:8042/modalities?expand
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
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
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
711
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
712 $ curl -v -X PUT http://localhost:8042/modalities/sample -d '{"AET" : "ORTHANCC", "Host": "127.0.0.1", "Port": 2002}'
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
723
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
724 ...
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
725 "DicomModalitiesInDatabase" : true,
7ff807cc5ade added modalities configuration
amazy
parents: 207
diff changeset
726 ...
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
731 Sending One Resource
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
732 ^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
733
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
734 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
735
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
736 Once you have identified the Orthanc identifier of the DICOM resource
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
737 that would like to send :ref:`as explained above <rest-access>`, you
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
738 would use the following command to send it::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
739
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
740 $ curl -X POST http://localhost:8042/modalities/sample/store -d c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
741
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
742 The ``/sample/`` component of the URI corresponds to the identifier of
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
743 the remote modality, as specified above in the configuration file.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
747
407
3aa7d50a4ccd fix merge
Alain Mazy <alain@mazy.be>
parents: 406
diff changeset
748 Various optional fields are also available. i.e, if you need to
3aa7d50a4ccd fix merge
Alain Mazy <alain@mazy.be>
parents: 406
diff changeset
749 monitor the state of a transfer, you can start the transfer in :ref:`asynchronous mode
3aa7d50a4ccd fix merge
Alain Mazy <alain@mazy.be>
parents: 406
diff changeset
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
e73148f45930 async c-store
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 381
diff changeset
763
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
764 Bulk Store SCU
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
765 ^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
766
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
767 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
768
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
773
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
774 To circumvent this problem, you have 2 possibilities:
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
775
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
776 1. Set the ``DicomAssociationCloseDelay`` option in the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
777 :ref:`configuration file <configuration>` to a non-zero value. This
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
785
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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"]'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
787
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
788 The list of the resources to be sent are given as a JSON array. In
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
789 this case, a single DICOM connection is used. `Sample code is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
790 available
449
2922fb1bd65e fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
791 <https://hg.orthanc-server.com/orthanc/file/default/OrthancServer/Resources/Samples/Python/HighPerformanceAutoRouting.py>`__.
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 680
diff changeset
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
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
860 .. highlight:: bash
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
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
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
890 You will receive back an ID which can be used to retrieve more
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 138
diff changeset
913 "PatientName":"*Jo*"
132
55a2ee3c462d Performing Query/Retrieve with REST
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 114
diff changeset
914
138
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
915 To perform date searches you can specify within StudyDate a starting
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
916 date and/or a before date. For example ``"StudyDate":"20180323-"``
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
917 would search for all study dates after the specified date to
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
918 now. Doing ``"StudyDate":"20180323-20180325"`` would search for all
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
1001 $ curl --request POST --url http://localhost:8042/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0/retrieve \
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
1002 --data '{"TargetAet":"Orthanc","Synchronous":false}'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
1003
205
7213bef30604 rest.rst edited online with Bitbucket.
Diego Fernández Slezak <dfslezak@gmail.com>
parents: 173
diff changeset
1004
207
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
1005 .. highlight:: bash
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 205
diff changeset
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
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 312
diff changeset
1045 $ curl https://demo.orthanc-server.com/tools/find -d '{"Level":"Study","Query":{"PatientName":"KNIX"}}'
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 312
diff changeset
1046 [
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 312
diff changeset
1047 "b9c08539-26f93bde-c81ab0d7-bffaf2cb-a4d0bdd0"
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 312
diff changeset
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
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
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
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
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
f3127d33cf5e rst syntax
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 136
diff changeset
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
c29ac12e3160 Orthanc-1.11.0
Alain Mazy <am@osimis.io>
parents: 837
diff changeset
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
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
1147 .. _changes:
dcf6c2e60448 added section about peering (wip)
amazy
parents: 212
diff changeset
1148
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1149 Tracking changes
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1150 ----------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1151
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1152 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1153
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1154 Whenever Orthanc receives a new DICOM instance, this event is recorded
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1155 in the so-called "Changes Log". This enables remote scripts to react
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1156 to the arrival of new DICOM resources. A typical application is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1157 **auto-routing**, where an external script waits for a new DICOM
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1158 instance to arrive into Orthanc, then forward this instance to another
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1159 modality.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1160
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1161 The Changes Log can be accessed by the following command::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1162
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1163 $ curl http://localhost:8042/changes
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1164
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1165 .. highlight:: json
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1166
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1167 Here is a typical output::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1168
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1169 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1170 "Changes" : [
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1171 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1172 "ChangeType" : "NewInstance",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1173 "Date" : "20130507T143902",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1174 "ID" : "8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1175 "Path" : "/instances/8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1176 "ResourceType" : "Instance",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1177 "Seq" : 921
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1178 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1179 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1180 "ChangeType" : "NewSeries",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1181 "Date" : "20130507T143902",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1182 "ID" : "cceb768f-e0f8df71-511b0277-07e55743-9ef8890d",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1183 "Path" : "/series/cceb768f-e0f8df71-511b0277-07e55743-9ef8890d",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1184 "ResourceType" : "Series",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1185 "Seq" : 922
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1186 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1187 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1188 "ChangeType" : "NewStudy",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1189 "Date" : "20130507T143902",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1190 "ID" : "c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1191 "Path" : "/studies/c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1192 "ResourceType" : "Study",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1193 "Seq" : 923
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1194 },
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1195 {
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1196 "ChangeType" : "NewPatient",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1197 "Date" : "20130507T143902",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1198 "ID" : "dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1199 "Path" : "/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1200 "ResourceType" : "Patient",
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1201 "Seq" : 924
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1202 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1203 ],
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1204 "Done" : true,
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1205 "Last" : 924
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1206 }
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1207
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1208 This output corresponds to the receiving of one single DICOM instance
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1209 by Orthanc. It records that a new instance, a new series, a new study
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1210 and a new patient has been created inside Orthanc. Note that each
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1211 changes is labeled by a ``ChangeType``, a ``Date`` (in the `ISO format
25
669ea65ba7fb fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 0
diff changeset
1212 <https://en.wikipedia.org/wiki/ISO_8601>`__), the location of the
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1213 resource inside Orthanc, and a sequence number (``Seq``).
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1214
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1215 Note that this call is non-blocking. It is up to the calling program
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1216 to wait for the occurrence of a new event (by implementing a polling
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1217 loop).
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1218
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1219 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1220
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1221 This call only returns a fixed number of events, that can be changed
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1222 by using the ``limit`` option::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1223
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1224 $ curl http://localhost:8042/changes?limit=100
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1225
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1226 The flag ``Last`` records the sequence number of the lastly returned
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1227 event. The flag ``Done`` is set to ``true`` if no further event has
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1228 occurred after this lastly returned event. If ``Done`` is set to
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1229 ``false``, further events are available and can be retrieved. This is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1230 done by setting the ``since`` option that specifies from which
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1231 sequence number the changes must be returned::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1232
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1233 $ curl 'http://localhost:8042/changes?limit=100&since=922'
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1234
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1235 A `sample code in the source distribution
449
2922fb1bd65e fix links
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 428
diff changeset
1236 <https://hg.orthanc-server.com/orthanc/file/default/OrthancServer/Resources/Samples/Python/ChangesLoop.py>`__
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1237 shows how to use this Changes API to implement a polling loop.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1238
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1239
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1240 Deleting resources from Orthanc
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1241 -------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1242
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1243 .. highlight:: bash
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1244
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1245 Deleting patients, studies, series or instances
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1246 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1247
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1248 Deleting DICOM resources (i.e. patients, studies, series or instances)
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1249 from Orthanc is as simple as using a HTTP DELETE on the URI of this
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1250 resource.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1251
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1252 Concretely, you would first explore the resources that are stored in
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1253 Orthanc :ref:`as explained above <rest-access>`::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1254
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1255 $ curl http://localhost:8042/patients
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1256 $ curl http://localhost:8042/studies
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1257 $ curl http://localhost:8042/series
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1258 $ curl http://localhost:8042/instances
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1259
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1260 Secondly, once you have spotted the resources to be removed, you would
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1261 use the following command-line syntax to delete them::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1262
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1263 $ curl -X DELETE http://localhost:8042/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1264 $ curl -X DELETE http://localhost:8042/studies/c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1265 $ curl -X DELETE http://localhost:8042/series/cceb768f-e0f8df71-511b0277-07e55743-9ef8890d
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1266 $ curl -X DELETE http://localhost:8042/instances/8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1267
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1268
712
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1269 Starting with Orthanc 1.9.4, it is also possible to ``POST`` on the
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1270 new route ``/tools/bulk-delete`` to delete at once a set of multiple
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1271 DICOM resources that are not related (i.e. that don't share any parent
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1272 DICOM resource). A typical use case is to delete a list of DICOM
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1273 instances that don't belong to the same parent patient/study/series.
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1274 The list of the :ref:`Orthanc identifiers <orthanc-ids>` of the
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1275 resources to be deleted (that may indifferently correspond to
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1276 patients, studies, series or instances) must be provided in an
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1277 argument ``Resources`` in the body of the request. Here is a sample
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1278 call::
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1279
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1280 $ curl http://localhost:8042/tools/bulk-delete -d '{"Resources":["b6da0b16-a25ae9e7-1a80fc33-20df01a9-a6f7a1b0","d6634d97-24379e4a-1e68d3af-e6d0451f-e7bcd3d1"]}'
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1281
6c4fcd1ad337 bulk deletion
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 698
diff changeset
1282
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1283 Clearing log of changes
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1284 ^^^^^^^^^^^^^^^^^^^^^^^
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1285
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1286 :ref:`As described above <changes>`, Orthanc keeps track of all the
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1287 changes that occur in the DICOM store. This so-called "Changes Log"
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1288 is accessible at the following URI::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1289
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1290 $ curl http://localhost:8042/changes
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1291
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1292 To clear the content of the Changes Log, simply DELETE this URI::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1293
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1294 $ curl -X DELETE http://localhost:8042/changes
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1295
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1296
155
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1297 Log of exported resources
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1298 ^^^^^^^^^^^^^^^^^^^^^^^^^
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1299
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1300 For medical traceability, Orthanc can be configured to store a log of
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1301 all the resources that have been exported to remote modalities::
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1302
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1303 $ curl http://localhost:8042/exports
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1304
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1305 In auto-routing scenarios, it is important to prevent this log to grow
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1306 indefinitely as incoming instances are routed. You can either disable
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1307 this logging by setting the option ``LogExportedResources`` to ``false``
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1308 in the :ref:`configuration file <configuration>`, or periodically
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1309 clear this log by DELETE-ing this URI::
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1310
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1311 $ curl -X DELETE http://localhost:8042/exports
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1312
155
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1313 NB: Starting with Orthanc 1.4.0, the ``LogExportedResources`` is set
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1314 to ``false`` by default. If the logging is desired, set this option to
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1315 ``true``.
498c9e42c99d exported resources
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 139
diff changeset
1316
0
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1317
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1318 Anonymization and modification
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1319 ------------------------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1320
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1321 The process of anonymizing and modifying DICOM resources is
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1322 :ref:`documented in a separate page <anonymization>`.
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1323
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1324
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1325 Further reading
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1326 ---------------
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1327
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1328 The examples above have shown you the basic principles for driving an
901e8961f46e initial commit
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
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.