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 if the SCU only has access
275 to the SOP instance in lossy compressed form or if the decompressed
276 pixel data would be too large to be encoded. With option --no-illegal-
277 proposal the strict DICOM-conformant behavior can be enforced, i.e. no
278 possibly illegal presentation context will be proposed but the
279 corresponding SOP instance will be rejected (if needed). Please note,
280 however, that the size of the decompressed pixel data is not checked.
281
282 The default transfer syntax for 'Lossless JPEG Compression', 'Lossy
283 JPEG Compression' and so on are not always proposed as also required by
284 the DICOM standard. The same limitation applies to other compression
285 schemes. See DICOM PS 3.5 section 10 for details.
286
288 The level of logging output of the various command line tools and
289 underlying libraries can be specified by the user. By default, only
290 errors and warnings are written to the standard error stream. Using
291 option --verbose also informational messages like processing details
292 are reported. Option --debug can be used to get more details on the
293 internal activity, e.g. for debugging purposes. Other logging levels
294 can be selected using option --log-level. In --quiet mode only fatal
295 errors are reported. In such very severe error events, the application
296 will usually terminate. For more details on the different logging
297 levels, see documentation of module 'oflog'.
298
299 In case the logging output should be written to file (optionally with
300 logfile rotation), to syslog (Unix) or the event log (Windows) option
301 --log-config can be used. This configuration file also allows for
302 directing only certain messages to a particular output stream and for
303 filtering certain messages based on the module or application where
304 they are generated. An example configuration file is provided in
305 <etcdir>/logger.cfg.
306
308 All command line tools use the following notation for parameters:
309 square brackets enclose optional values (0-1), three trailing dots
310 indicate that multiple values are allowed (1-n), a combination of both
311 means 0 to n values.
312
313 Command line options are distinguished from parameters by a leading '+'
314 or '-' sign, respectively. Usually, order and position of command line
315 options are arbitrary (i.e. they can appear anywhere). However, if
316 options are mutually exclusive the rightmost appearance is used. This
317 behavior conforms to the standard evaluation rules of common Unix
318 shells.
319
320 In addition, one or more command files can be specified using an '@'
321 sign as a prefix to the filename (e.g. @command.txt). Such a command
322 argument is replaced by the content of the corresponding text file
323 (multiple whitespaces are treated as a single separator unless they
324 appear between two quotation marks) prior to any further evaluation.
325 Please note that a command file cannot contain another command file.
326 This simple but effective approach allows one to summarize common
327 combinations of options/parameters and avoids longish and confusing
328 command lines (an example is provided in file <datadir>/dumppat.txt).
329
331 The dcmsend utility uses the following exit codes when terminating.
332 This enables the user to check for the reason why the application
333 terminated.
334
335 general
336 EXITCODE_NO_ERROR 0
337 EXITCODE_COMMANDLINE_SYNTAX_ERROR 1
338
339 input file errors
340 EXITCODE_CANNOT_READ_INPUT_FILE 20 (*)
341 EXITCODE_NO_INPUT_FILES 21
342 EXITCODE_INVALID_INPUT_FILE 22
343 EXITCODE_NO_VALID_INPUT_FILES 23
344
345 output file errors
346 EXITCODE_CANNOT_WRITE_OUTPUT_FILE 40 (*)
347 EXITCODE_CANNOT_WRITE_REPORT_FILE 43
348
349 network errors
350 EXITCODE_CANNOT_INITIALIZE_NETWORK 60
351 EXITCODE_CANNOT_NEGOTIATE_ASSOCIATION 61
352 EXITCODE_CANNOT_SEND_REQUEST 62
353 EXITCODE_CANNOT_ADD_PRESENTATION_CONTEXT 65
354
355 (*) Actually, these codes are currently not used by dcmsend but serve
356 as a placeholder for the corresponding group of exit codes.
357
359 The dcmsend utility will attempt to load DICOM data dictionaries
360 specified in the DCMDICTPATH environment variable. By default, i.e. if
361 the DCMDICTPATH environment variable is not set, the file
362 <datadir>/dicom.dic will be loaded unless the dictionary is built into
363 the application (default for Windows).
364
365 The default behavior should be preferred and the DCMDICTPATH
366 environment variable only used when alternative data dictionaries are
367 required. The DCMDICTPATH environment variable has the same format as
368 the Unix shell PATH variable in that a colon (':') separates entries.
369 On Windows systems, a semicolon (';') is used as a separator. The data
370 dictionary code will attempt to load each file specified in the
371 DCMDICTPATH environment variable. It is an error if no data dictionary
372 can be loaded.
373
375 dcmrecv(1), storescu(1), storescp(1)
376
378 Copyright (C) 2011-2022 by OFFIS e.V., Escherweg 2, 26121 Oldenburg,
379 Germany.
380
381
382
383Version 3.6.7 Fri Apr 22 2022 dcmsend(1)