1dcmsend(1) OFFIS DCMTK dcmsend(1)
2
3
4
6 dcmsend - Simple DICOM storage SCU (sender)
7
8
10 dcmsend [options] peer port dcmfile-in...
11
13 The dcmsend application implements a Service Class User (SCU) for the
14 Storage Service Class. In contrast to the well-known storescu utility,
15 dcmsend has less options and is, therefore, easier to use - this also
16 explains the term 'simple' in the title. The main purpose of this
17 application is to send a whole bunch of DICOM files to a Storage
18 Service Class Provider (SCP). dcmsend supports both multiple
19 associations (one after the other) and decompression of DICOM SOP
20 instances if needed to transfer them.
21
23 peer hostname of DICOM peer
24
25 port tcp/ip port number of peer
26
27 dcmfile-in DICOM file or directory to be transmitted
28
30 general options
31 -h --help
32 print this help text and exit
33
34 --version
35 print version information and exit
36
37 --list-decoders
38 list transfer syntaxes of decoders and exit
39
40 --arguments
41 print expanded command line arguments
42
43 -q --quiet
44 quiet mode, print no warnings and errors
45
46 -v --verbose
47 verbose mode, print processing details
48
49 -d --debug
50 debug mode, print debug information
51
52 -ll --log-level [l]evel: string constant
53 (fatal, error, warn, info, debug, trace)
54 use level l for the logger
55
56 -lc --log-config [f]ilename: string
57 use config file f for the logger
58
59 +v --verbose-pc
60 show presentation contexts in verbose mode
61
62 input options
63 input file format:
64
65 +f --read-file
66 read file format or data set
67
68 +fo --read-file-only
69 read file format only (default)
70
71 -f --read-dataset
72 read data set without file meta information
73
74 input files:
75
76 +rd --read-from-dicomdir
77 read information on input files from DICOMDIR
78
79 +sd --scan-directories
80 scan directories for input files (dcmfile-in)
81
82 +sp --scan-pattern [p]attern: string (only with --scan-directories)
83 pattern for filename matching (wildcards)
84
85 # possibly not available on all systems
86
87 -r --no-recurse
88 do not recurse within directories (default)
89
90 +r --recurse
91 recurse within specified directories
92
93 processing options
94 transfer syntax conversion:
95
96 -dn --decompress-never
97 never decompress compressed data sets
98
99 +dls --decompress-lossless
100 only decompress lossless compression (default)
101
102 +dly --decompress-lossy
103 decompress both lossy and lossless compression
104
105 deflate compression level:
106
107 +cl --compression-level [l]evel: integer (default: 6)
108 0=uncompressed, 1=fastest, 9=best compression
109
110 other processing options:
111
112 -nh --no-halt
113 do not halt on first invalid input file
114 or if unsuccessful store encountered
115
116 -nip --no-illegal-proposal
117 do not propose any presentation context that does
118 not contain the default transfer syntax (if needed)
119
120 -nuc --no-uid-checks
121 do not check UID values of input files
122
123 network options
124 application entity titles:
125
126 -aet --aetitle [a]etitle: string
127 set my calling AE title (default: DCMSEND)
128
129 -aec --call [a]etitle: string
130 set called AE title of peer (default: ANY-SCP)
131
132 association handling:
133
134 +ma --multi-associations
135 use multiple associations (one after the other)
136 if needed to transfer the instances (default)
137
138 -ma --single-association
139 always use a single association
140
141 other network options:
142
143 -to --timeout [s]econds: integer (default: unlimited)
144 timeout for connection requests
145
146 -ta --acse-timeout [s]econds: integer (default: 30)
147 timeout for ACSE messages
148
149 -td --dimse-timeout [s]econds: integer (default: unlimited)
150 timeout for DIMSE messages
151
152 -pdu --max-pdu [n]umber of bytes: integer (4096..131072)
153 set max receive pdu to n bytes (default: 16384)
154
155 --max-send-pdu [n]umber of bytes: integer (4096..131072)
156 restrict max send pdu to n bytes
157
158 output options
159 general:
160
161 +crf --create-report-file [f]ilename: string
162 create a detailed report on the transfer
163 (if successful) and write it to text file f
164
166 Typical Usage
167 A typical use case of dcmsend is to send arbitrary SOP instances that
168 are stored as DICOM files to a storage SCP. The following command does
169 exactly this:
170
171 dcmsend --verbose <peer> <port> *.dcm
172
173 If the DICOM files are stored in a hierarchy of directories below the
174 directory 'IMAGES', the following command can be used:
175
176 dcmsend -v <peer> <port> --scan-directories --recurse IMAGES
177
178 It is also possible to specify multiple directories and to combine the
179 aforementioned approaches (using both file and directory names):
180
181 dcmsend -v +sd +r <peer> <port> IMAGES_1 IMAGES_2 test.img *.dcm
182
183 If the SOP instances are referenced from a DICOMDIR file, option
184 --read-from-dicomdir (or +rd) can be used to send all referenced DICOM
185 files without loading them already for the association negotiation:
186
187 dcmsend -v <peer> <port> --read-from-dicomdir DICOMDIR
188
189 And again, all of the above approaches can be combined like this:
190
191 dcmsend -v +sd +r +rd <peer> <port> IMAGES_1 IMAGES_2 test.img DICOMDIR *.dcm
192
193 The default option --read-file-only makes sure that only DICOM files
194 (i.e. the ones with meta-header and magic word 'DICM' after the
195 preamble) are processed. Usually, if processing a whole bunch of files,
196 it is also a good idea not to halt on the first invalid input file or
197 if an unsuccessful store was encountered. This can be accomplished by
198 using option --no-halt. Please note, however, that 'unsuccessful store'
199 does not mean that the DIMSE status of the C-STORE response indicates
200 an error. It means that the C-STORE request could not be sent to the
201 storage SCP.
202
203 If more than 128 presentation contexts are needed, which is the maximum
204 number allowed according to the DICOM standard, a new association is
205 started after the previous one has been completed. In cases where this
206 behavior is unwanted, it can be disabled using option --single-
207 association. In addition, whether only lossless compressed data sets
208 are decompressed (if needed), which is the default, or also lossy
209 compressed data sets can be specified using the --decompress-xxx
210 options.
211
212 In order to get both an overview and detailed information on the
213 transfer of the DICOM SOP instances, option --create-report-file can be
214 used to create a corresponding text file. However, this file is only
215 created as a final step if the application did not terminate before
216 (with an error).
217
218 Scanning Directories
219 Adding directories as a parameter to the command line only makes sense
220 if option --scan-directories is also given. If the files in the
221 provided directories should be selected according to a specific name
222 pattern (e.g. using wildcard matching), option --scan-pattern has to be
223 used. Please note that this file pattern only applies to the files
224 within the scanned directories, and, if any other patterns are
225 specified on the command line outside the --scan-pattern option (e.g.
226 in order to select further files), these do not apply to the specified
227 directories.
228
229 Thus, the third of the above examples will recurse over directories
230 IMAGES_1 and IMAGES_2 and transmit files that are contained in these
231 two folders and all their subfolders (due to option +r). Additionally,
232 dcmsend will transfer 'test.img' and all files with extension 'dcm'
233 from the current working folder. Note that providing directory names
234 without enabling option +sd does not make sense.
235
236 DICOM Conformance
237 Basically, the dcmsend application supports all Storage SOP Classes as
238 an SCU, including private ones. By default, the application checks the
239 SOP Class UID of the DICOM file in order to make sure that only valid
240 SOP instances are sent. With option --no-uid-checks this check can be
241 disabled.
242
243 The dcmsend application also supports all Transfer Syntaxes that are
244 defined in the DICOM standard. Private transfer syntaxes can only be
245 used if the UID check is disabled with option --no-uid-checks. Please
246 note, however, that only a limited number of transfer syntaxes are
247 supported for converting them to the default transfer syntax (Implicit
248 VR Little Endian). With option --list-decoders the transfer syntaxes
249 supported natively or by decoders are listed. The output typically
250 looks like the following:
251
252 Transfer syntaxes supported natively:
253 - Little Endian Implicit
254 - Little Endian Explicit
255 - Big Endian Explicit
256
257 Transfer syntaxes supported by decoders:
258 - Deflated Explicit VR Little Endian
259 - JPEG Baseline
260 - JPEG Extended, Process 2+4
261 - JPEG Spectral Selection, Non-hierarchical, Process 6+8
262 - JPEG Full Progression, Non-hierarchical, Process 10+12
263 - JPEG Lossless, Non-hierarchical, Process 14
264 - JPEG Lossless, Non-hierarchical, 1st Order Prediction
265 - JPEG-LS Lossless
266 - JPEG-LS Lossy (Near-lossless)
267 - RLE Lossless
268
269 Since dcmsend tries to be as simple as possible for the user, by
270 default presentation contexts might be proposed to the SCP that are
271 strictly speaking 'illegal'. This is because, according to the DICOM
272 standard, the SCU always has to propose the default transfer syntax in
273 at least one presentation context associated with each abstract syntax
274 (i.e. SOP class). This requirement is waived when the SCU only has
275 access to the SOP instance in lossy compressed form. With option --no-
276 illegal-proposal the strict DICOM-conformant behavior can be enforced,
277 i.e. no possibly illegal presentation context will be proposed but the
278 corresponding SOP instance will be rejected (if needed).
279
280 Please note, however, that the default transfer syntax for 'Lossless
281 JPEG Compression', 'Lossy JPEG Compression' and so on are not always
282 proposed as also required by the DICOM standard. The same limitation
283 applies to other compression schemes. See DICOM PS 3.5 section 10 for
284 details.
285
287 The level of logging output of the various command line tools and
288 underlying libraries can be specified by the user. By default, only
289 errors and warnings are written to the standard error stream. Using
290 option --verbose also informational messages like processing details
291 are reported. Option --debug can be used to get more details on the
292 internal activity, e.g. for debugging purposes. Other logging levels
293 can be selected using option --log-level. In --quiet mode only fatal
294 errors are reported. In such very severe error events, the application
295 will usually terminate. For more details on the different logging
296 levels, see documentation of module 'oflog'.
297
298 In case the logging output should be written to file (optionally with
299 logfile rotation), to syslog (Unix) or the event log (Windows) option
300 --log-config can be used. This configuration file also allows for
301 directing only certain messages to a particular output stream and for
302 filtering certain messages based on the module or application where
303 they are generated. An example configuration file is provided in
304 <etcdir>/logger.cfg.
305
307 All command line tools use the following notation for parameters:
308 square brackets enclose optional values (0-1), three trailing dots
309 indicate that multiple values are allowed (1-n), a combination of both
310 means 0 to n values.
311
312 Command line options are distinguished from parameters by a leading '+'
313 or '-' sign, respectively. Usually, order and position of command line
314 options are arbitrary (i.e. they can appear anywhere). However, if
315 options are mutually exclusive the rightmost appearance is used. This
316 behavior conforms to the standard evaluation rules of common Unix
317 shells.
318
319 In addition, one or more command files can be specified using an '@'
320 sign as a prefix to the filename (e.g. @command.txt). Such a command
321 argument is replaced by the content of the corresponding text file
322 (multiple whitespaces are treated as a single separator unless they
323 appear between two quotation marks) prior to any further evaluation.
324 Please note that a command file cannot contain another command file.
325 This simple but effective approach allows one to summarize common
326 combinations of options/parameters and avoids longish and confusing
327 command lines (an example is provided in file <datadir>/dumppat.txt).
328
330 The dcmsend utility uses the following exit codes when terminating.
331 This enables the user to check for the reason why the application
332 terminated.
333
334 general
335 EXITCODE_NO_ERROR 0
336 EXITCODE_COMMANDLINE_SYNTAX_ERROR 1
337
338 input file errors
339 EXITCODE_CANNOT_READ_INPUT_FILE 20 (*)
340 EXITCODE_NO_INPUT_FILES 21
341 EXITCODE_INVALID_INPUT_FILE 22
342 EXITCODE_NO_VALID_INPUT_FILES 23
343
344 output file errors
345 EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40 (*)
346 EXITCODE_CANNOT_WRITE_REPORT_FILE 43
347
348 network errors
349 EXITCODE_CANNOT_INITIALIZE_NETWORK 60
350 EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION 61
351 EXITCODE_CANNOT_SEND_REQUEST 62
352 EXITCODE_CANNOT_ADD_PRESENTATION_CONTEXT 65
353
354 (*) Actually, these codes are currently not used by dcmsend but serve
355 as a placeholder for the corresponding group of exit codes.
356
358 The dcmsend utility will attempt to load DICOM data dictionaries
359 specified in the DCMDICTPATH environment variable. By default, i.e. if
360 the DCMDICTPATH environment variable is not set, the file
361 <datadir>/dicom.dic will be loaded unless the dictionary is built into
362 the application (default for Windows).
363
364 The default behavior should be preferred and the DCMDICTPATH
365 environment variable only used when alternative data dictionaries are
366 required. The DCMDICTPATH environment variable has the same format as
367 the Unix shell PATH variable in that a colon (':') separates entries.
368 On Windows systems, a semicolon (';') is used as a separator. The data
369 dictionary code will attempt to load each file specified in the
370 DCMDICTPATH environment variable. It is an error if no data dictionary
371 can be loaded.
372
374 dcmrecv(1), storescu(1), storescp(1)
375
377 Copyright (C) 2011-2017 by OFFIS e.V., Escherweg 2, 26121 Oldenburg,
378 Germany.
379
380
381
382Version 3.6.2 Fri Jul 14 2017 dcmsend(1)