Some tricks with DCMTK

Sending uncommon or recent SOP class UIDs

On many systems, the storescu command from the DCMTK project is not configured out-of-the-box to send uncommon/recent SOP class UIDs or transfer syntaxes. You might have to fine-tune the default configuration file of storescu in order to be able to send e.g. MPEG4 videos or breast tomosynthesis images.

For instance, here is the result of sending one MPEG4 video on a Ubuntu 18.04 box:

$ storescu localhost 4242 XC000000.dcm
E: No presentation context for: (VVp) 1.2.840.10008.5.1.4.1.1.77.1.4.1
E: Store SCU Failed: 0006:0208 DIMSE No valid Presentation Context ID

This error message is unrelated to Orthanc (especially if you have set the configuration option UnknownSopClassAccepted to true). To properly adapt the configuration file, first determine the value of the DICOM tag SOPClassUID (0008,0016) and the transfer syntax of the file, which can be done by using the dcm2xml command-line tool:

$ dcm2xml XC000000.dcm | grep -E 'data-set xfer|"SOPClassUID"'
<data-set xfer="1.2.840.10008.1.2.4.102" name="MPEG-4 AVC/H.264 High Profile / Level 4.1">
<element tag="0008,0016" vr="UI" vm="1" len="32" name="SOPClassUID">1.2.840.10008.5.1.4.1.1.77.1.4.1</element>

Secondly, create a copy of the default storescu.cfg configuration file, e.g. on Ubuntu 18.04:

$ cp /etc/dcmtk/storescu.cfg /tmp/storescu.cfg

Edit this file so as to replace one of the 128 preconfigured presentation contexts, using this information:

$ diff /etc/dcmtk/storescu.cfg storescu.cfg
198c198
< PresentationContext128 = VideoPhotographicImageStorage\MPEG2
---
> PresentationContext128 = 1.2.840.10008.5.1.4.1.1.77.1.4.1\MPEG4

Obviously, you can replace more predefinitions if other pairs of SOP class UID and transfer syntax are needed. Finally, run storescu using this new configuration:

$ storescu -xf /tmp/storescu.cfg Default localhost 4242 XC000000.dcm

Note that the storescu command from the dcm4che project might be more easy to use in such situations.