An Overview of DCMTK — The DICOM Toolkit

 March 27, 2020
  Chris Amow
SHARE ON

DICOM

Available since 1995, the DICOM Toolkit (DCMTK) can be helpful to anyone working on systems that use the Digital Imaging and Communications in Medicine (DICOM) standard. This DCMTK introduction is of interest to those exploring DICOM for the first time, as well as those familiar with it but wanting to take a renewed look at the DICOM tools landscape.

Developed for a wide range of platforms, DCMTK is a set of over 20 open-source C/C++ libraries and utilities. Sponsored by OFFIS, Institut für Informatik in Oldenburg, Germany, it has been bolstered by contributions from many European organizations, along with others throughout the world.

The toolkit addresses a broad range of needs—from a person studying and inspecting DICOM metadata and structure, to one who needs a quick, lightweight Picture Archive and Communication System (PACS) server and is already fluent in C-ECHO, C-FIND, and C-MOVE operations.

DCMTK has a dual nature in many ways. Understanding it may make it easier to grasp the naming and organization of its tools:

  • Both client and server tools are provided. They correspond to scu and scp, DICOM terminology for service class user vs. service class provider, e.g., storescu and storescp.
  • Some tools move data between DICOM endpoints, while others move it from outside to a DICOM endpoint (e.g., movescu and dcmsend, respectively).
  • Simple, convenient tools exist alongside more configurable power user tools, such as dcmrecv and storescp.
  • dcmodify provides direct in-place editing while a workflow is supported for intermediate manual text editing using dcmdump and dump2dcm.
  • The toolkit provides both synchronous data manipulation and also processes for high-level data flow that can be used in production.
  • DCMTK supports such a wide range of functionality because DICOM itself covers broad areas of the medical domain. The toolkit handles format conversions and even offers networking diagnostics, such as the ability to ping systems to check connectivity.

It can sometimes be challenging to troubleshoot DICOM interactions due to varying hardware and software compliance levels. Here, DCMTK can help you understand and troubleshoot DICOM behavior that may not be obvious. For example, the accession number and MRN concepts borrowed from the EHR (electronic health records) world have limited support within DICOM. The toolkit can offer you visibility into these undocumented or partially supported areas.

For those administering or deploying DICOM systems, it’s available in standard repositories for Linux, Macintosh, and Windows. Additionally, it has been built for iOS and is cross-compiled for Android. Low dependency binary packages are also released; these are handy for use in disconnected environments.

For programmers, the C/C++ libraries are convenient to use with languages having support for external processes, such as Python. DCMTK is very complementary to libraries such as pydicom, which is focused specifically on Python data access within a DICOM file.

(NOTE: DCMTK has similarities with other packages, such as the Java-based dcm4che. But be aware that, while tool and command-line syntax is similar, such packages aren’t fully compatible.)

For more advanced needs:

  • DCMTK can be compiled with C++11 support, which may increase performance.
  • It can be built as a single shared library.
  • There is thorough support for DICOM tag mapping nuances, and it’s also possible to permit promiscuous access.
  • It supports digital signing.

At Innolitics, we use DCMTK for many of our clients’ projects, as well as in-house development. We are thankful for contributions to the toolkit project and are proud to have donated to the cause this past autumn.

More detailed information about DCMTK can be found here:

SHARE ON
×

Get To Market Faster

Monthly Medtech Insider Insights

Our monthly Medtech tips will help you get safe and effective Medtech software on the market faster. We cover regulatory process, AI/ML, software, cybersecurity, interoperability and more.