1GDCMSCU(1) DICOM Manipulation. GDCMSCU(1)
2
3
4
6 gdcmscu - Tool to execute a DICOM Query/Retrieve operation
7
9 gdcmscu [OPTION]...[OPERATION]...HOSTNAME...[PORT]...
10
11 Execute a DICOM Q/R operation to HOSTNAME, using port PORT (104 when
12 not specified)
13
15 The gdcmscu command line program is the tool to execute DICOM
16 Query/Retrieve operation. It supports:
17
18 • C-ECHO (SCU)
19
20 • C-FIND (SCU)
21
22 • C-STORE (SCU)
23
24 • C-MOVE (SCU/SCP) C-MOVE operation are executed using two different
25 ports (one for the SCU and one for the SCP).
26
27
30 specific options
31 -H --hostname %s Hostname.
32 -p --port %d Port number.
33 --aetitle %s Set calling AE Title.
34 --call %s Set called AE Title.
35
36 mode options
37 --echo C-ECHO (default when none).
38 --store C-STORE.
39 --find C-FIND.
40 --move C-MOVE.
41
42 C-STORE options
43 -i --input %s DICOM filename
44 -r --recursive recursively process (sub-)directories
45 --store-query %s Store constructed query in file
46
47 C-FIND/C-MOVE options
48 --patientroot C-FIND Patient Root Model.
49 --studyroot C-FIND Study Root Model.
50
51 --patient C-FIND Query on Patient Info (cannot be used with --studyroot).
52 --study C-FIND Query on Study Info.
53 --series C-FIND Query on Series Info.
54 --image C-FIND Query on Image Info.
55 --key %d,%d[=%s] 0123,4567=VALUE for specifying search criteria (wildcard allowed)
56 With --key, leave blank (ie, --key 10,20="" or --key 10,20) to retrieve values
57
58 C-MOVE options
59 -o --output %s DICOM filename / directory
60 --port-scp %d Port for incoming associations
61 --key %d,%d[=%s 0123,4567=VALUE for specifying search criteria (wildcard not allowed)
62 Note that C-MOVE supports the same queries as C-FIND, but no wildcards are allowed
63
64 general options
65 -h --help
66 print this help text and exit
67
68 -v --version
69 print version information and exit
70
71 -V --verbose
72 verbose mode (warning+error).
73
74 -W --warning
75 warning mode, print warning information
76
77 -E --error
78 error mode, print error information
79
80 -D --debug
81 debug mode, print debug information
82
83 -L --log-file
84 specify a filename where to write logs
85
86 --queryhelp
87 print query help
88
89 environment variable
90 GDCM_ROOT_UID Root UID
91
93 gdcmscu is a great tool to test if a DICOM server is up. For example to
94 send a C-ECHO to server dicom.example.com using port 104, use:
95
96 $ gdcmscu dicom.example.com
97
98 or if you prefer being explicit:
99
100 $ gdcmscu --echo dicom.example.com 104
101
102 Using basic security your DICOM server might require that you set the
103 appropriate called AE-TITLE
104
105 $ gdcmscu --echo dicom.example.com 11112 --call SERVSCP
106
107 If you want to specify your own AE-TITLE (default is GDCMSCU), simply
108 use:
109
110 $ gdcmscu --echo dicom.example.com 11112 --call SERVSCP --aetitle MYSCU
111
112 For example you could test on the DICOM server provided by DICOMObject
113 team:
114
115 $ gdcmscu www.dicomserver.co.uk 11112
116
118 C-STORE is the operation that allow sending a DICOM file to a remote
119 DICOM server. For instance to send a file called myfile.dcm
120
121 $ gdcmscu --store dicom.example.com 104 myfile.dcm
122
123 or if you prefer being explicit:
124
125 $ gdcmscu --store dicom.example.com 104 -i myfile.dcm
126
127 You can even send multiple files using the same association:
128
129 $ gdcmscu --store dicom.example.com 104 myfile1.dcm myfile2.dcm myfile3.dcm ...
130
132 gdcmscu also allow querying a DICOM server. This is the C-FIND
133 operation, for example to find all DICOM Instance where PatientsName
134 match a particular pattern, usage is simply:
135
136 $ gdcmscu --find --patient dicom.example.com 11112 --patientroot --key 10,10,"A*"
137
138 We also support a DCMTK compatible convention:
139
140 $ gdcmscu --find --patient dicom.example.com 11112 --patientroot --key 10,10="A*"
141
142 When an attribute is set without a value it will be part of the output
143 result:
144
145 $ gdcmscu --find --patient dicom.example.com 11112 --call MI2B2 --patientroot -k 10,10="A*" -k 10,20
146
148 C-MOVE is the operation to retrieve a DICOM instance from a remote
149 DICOM server. Most of the time, it is a subsequent operation after a
150 C-FIND query. To retrieve a DICOM instance where PatientID is ABCD1234,
151 simply execute:
152
153 $ gdcmscu --move --patient --aetitle ACME1 --call ACME_STORE dicom.example.com 5678 --patientroot -k 10,20="ABCD1234" --port-scp 1234
154
155 WARNING For this operation to work you need information from the DICOM
156 server you are communicating with. Only the DICOM server you are
157 sending a C-MOVE query will be responsible for sending back incoming
158 associations (the actual C-STORE SCP). Therefore you need to make sure
159 that you mapping of (AE-TITLE,PortNumber) is properly set on the DICOM
160 server side as well as the port for incoming association (–port-scp).
161
162 gdcmscu does not currently support external C-STORE association
163 (C-STORE request sent to an external SCP application).
164
166 The flag –patientroot is just simply a wrapper around the syntax –key
167 8,52=PATIENT For instance one would write using DCMTK syntax:
168
169 $ findscu --patient dicom.example.com 11112 --key 8,52=PATIENT --key 10,10="F*"
170
171 This would become using GDCM syntax:
172
173 $ gdcmscu --find --patient dicom.example.com 11112 --patientroot --key 10,10="F*"
174
176 This is sometime difficult to investigate why a connection to a remote
177 DICOM server cannot be done. Some recommendations follows:
178
179 Always try to do a simple C-ECHO at first. If you cannot get the C-ECHO
180 to work none of the other operations will work
181
182 Before trying to a C-MOVE operation, make sure you can execute the
183 C-FIND equivalent query first.
184
185 When doing a C-MOVE operation you really need to communicate with the
186 PACS admin as the C-MOVE operation is different from the other lower
187 level operation such as HTTP/GET. When doing a C-MOVE, the server will
188 communicate back using another channel (could be different port) using
189 it's internal database to map an AE-TITLE back to the destination IP.
190
191 Indeed the C-MOVE operation by design does not always use your incoming
192 IP address to send back the resulting dataset. Instead it uses a
193 mapping of AE-TITLE to IP address to send back any results. So pay
194 particular attention to the spelling of your AE-TITLE and your incoming
195 port (which may be different from the port to connect to the server).
196
198 Watch out that port ranging [1-1024] are reserved for admin and not
199 easily accessible unless granted special privileges. Therefore the
200 default 104 DICOM port might not be accessible to all your users.
201
203 When constructing a C-STORE operation, gdcmscu will always use the
204 Media Storage SOP Class UID as found in the file to be sent. For
205 encapsulated DICOM file (eg. RLE Lossless) the receiving SCP server
206 might not support this compression and will legitimately refuse the
207 C-STORE operation. In this case users have to manually convert to a
208 non-compressed form this particular file:
209
210 $ gdcmconv --raw compressed.dcm non_compressed.dcm
211
213 At the moment gdcmscu only supports non-compressed transfer syntax. It
214 will always request DataSet using Implicit VR Little Endian Transfer
215 Syntax during a C-MOVE operation (both incoming and outgoing
216 associations). This make gdcmscu –move equivalent to DCMTK movescu
217 syntax:
218
219 $ movescu -xi +xi ...
220
222 One should pay attention that gdcmscu –find and findscu are not
223 completely equivalent. Using gdcmscu –find, all Unique Keys will be
224 added automatically. One can therefore execute something like this:
225
226 $ gdcmscu --find --patientroot --image --key 8,18=1.2.3.4.5.6 dicom.example.com 11112
227
228 instead of the more explicit form
229
230 $ gdcmscu --find --patientroot --image --key 8,18=1.2.3.4.5.6 dicom.example.com 11112 --key 10,20 --key 20,d --key 20,e
231
232 This would also be equivalent to:
233
234 $ findscu --patient --key 8,52=IMAGE --key 8,18=1.2.3.4.5.6 dicom.example.com 11112 --key 10,20 --key 20,d --key 20,e
235
237 It is also possible to store the query:
238
239 gdcmscu --find --patient --patientroot dicom.example.com 11112 --key 10,20="*" --key 10,10 --store-query query.dcm
240
241 One can then check the DataSet values send for the query:
242
243 $ gdcmdump query.dcm
244 # Dicom-File-Format
245
246 # Dicom-Meta-Information-Header
247 # Used TransferSyntax:
248
249 # Dicom-Data-Set
250 # Used TransferSyntax: 1.2.840.10008.1.2
251 (0008,0005) ?? (CS) [ISO_IR 192] # 10,1-n Specific Character Set
252 (0008,0052) ?? (CS) [PATIENT ] # 8,1 Query/Retrieve Level
253 (0010,0010) ?? (PN) (no value) # 0,1 Patient's Name
254 (0010,0020) ?? (LO) [* ] # 2,1 Patient ID
255
256 The Specific Character Set was set to “ISO_IR 192” as the locale
257 encoding of the system was found automatically by gdcmscu to be UTF-8.
258
259 This means that the following command line will properly setup the
260 Query with the appropriate Charset to be executed correctly:
261
262 $ gdcmscu --find --patient --patientroot dicom.example.com 11112 --key 10,10="*Jérôme*"
263
264 The query is always executed on the server side (SCP), some
265 implementations does not support string matching with different
266 Character Set.
267
269 An up to date list of DICOM Public Servers can be found at:
270
271 http://www.dclunie.com/medical-image-faq/html/part8.html#DICOMPublicServers
272
274 gdcmconv(1)
275
277 Mathieu Malaterre
278 Main developer
279
281 Copyright © 2006, 2011 Mathieu Malaterre
282
283
284
285GDCM 3.0.21 02/06/2023 GDCMSCU(1)