Library / SDK
dcm4che/dcm4che avatar
dcm4che/dcm4che

dcm4che DICOM Toolkit: Installation, Architecture, and Adoption Limits

DICOM Implementation in JAVA

1,465 stars721 forksJavaNOASSERTION

At a glance

What is it?
dcm4che is a Java toolkit for implementing DICOM and HL7 workflows, with libraries for networking, configuration, images, de-identification, and Web services. It suits engineering teams that need several DICOM modules behind one Maven build, but its native image dependency and custom licensing require review before adoption.
Who is it for?
Engineering teams building DICOM archives, modality services, converters, gateways, or HL7 integrations should examine dcm4che's module boundaries and memory-oriented design. Projects confined to a lightweight DICOM parser should reject the larger dependency surface, while deployments using image codecs must first confirm a matching native platform and review LICENSE.txt rather than relying on GitHub's custom-license classification.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • dcm4che/dcm4che1,465 ★ · +3
Star history
Repository2026-10-162026-11-07
dcm4che/dcm4che1.5k1.5k

3 Stars in the last 22 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Where dcm4che Fits in a DICOM Java Stack

dcm4che addresses the implementation work required to process DICOM objects and communicate through healthcare protocols. Its intended users are Java developers building services such as archives, storage commitment clients, query clients, modality simulators, image converters, de-identification workflows, and HL7 interfaces. The repository describes the project as a complete rewrite of dcm4che-2.x, with minimizing the memory footprint of DICOM datasets as a principal design focus.

This is broader than a single DICOM parser. The module list includes core DICOM handling, dictionaries, networking, image input and output, JSON and JSON Schema support, LDAP configuration, audit facilities, HL7 support, XDS-I, WS-RS, and JavaScript dictionary data. The utilities include `storescp`, `findscu`, `dcmqrscp`, `dcm2dcm`, `dcm2json`, `dcmvalidate`, and `deidentify`. A medical imaging vendor could therefore assemble a Java application around existing protocol and data-format modules instead of implementing each layer independently.

That breadth is also the main adoption decision. Depending on one utility may pull in a larger project structure than expected, while teams building a DICOM application may need only several of the published modules. The repository does not document dependency selection for each use case in the README, so adopters must inspect the relevant module POM files before deciding that dcm4che is a better fit than a narrower library.

dcm4che Module Boundaries and Data Paths

Based on the repository layout, dcm4che separates protocol, representation, and operational concerns into Maven modules. `dcm4che-core` provides the central toolkit layer, while `dcm4che-dict` and `dcm4che-dict-priv` separate standard and private dictionary concerns. JSON representations have dedicated modules through `dcm4che-json`, and configuration is split among `dcm4che-conf-api`, `dcm4che-conf-json`, and several LDAP and HL7-facing modules.

Network behavior is concentrated in modules such as `dcm4che-net`, with image-aware and HL7-aware variants for DICOM networking and HL7 integration. Higher-level service code is represented by modules including `dcm4che-ws-rs`, `dcm4che-xdsi`, and `dcm4che-qstar`. This structure permits a consumer to avoid placing every integration concern into a single component, although the README does not show the resulting dependency graph for a specific application.

Pixel processing follows a different path. The README states that dcm4che calls `weasis-core-img`, a JNI build of OpenCV, for image compression and decompression. In other words, a call that looks like a Java library operation may cross into a native binary. This matters for deployments, container design, supported operating systems, and debugging because the process now depends on both Java classes and a platform-matched native library.

Configuration also has more than one storage mechanism. The project provides JSON and LDAP modules, and the LDAP implementation is described as compliant with the DICOM Application Configuration Management Profile in DICOM PS 3.15, Annex H. That makes dcm4che relevant to deployments where application entities and other configuration records are managed centrally rather than kept entirely in local files.

Building dcm4che with Java 17 and Maven

The README gives a source-build path rather than a package-manager installation command. It requires Java 17 or newer and uses the repository's Maven Wrapper, which keeps the build tied to the checked-in Maven configuration rather than requiring a separately selected system Maven installation.

On Linux or macOS, build and install the modules with:

bash
./mvnw install

The command runs the Maven Wrapper through the standard `install` lifecycle goal. The README does not state the generated artifact paths or a smoke-test output that a new user should inspect, so the first verification point is the completion status of the Maven build itself.

On Windows, use:

bash
.\mvnw install

This is the Windows form documented by the project. A developer starting here should first confirm that `java -version` reports Java 17 or newer.

For a first real utility use, the README lists binaries at the dcm4che SourceForge distribution and identifies utilities by name, including `dcmdump`, `dcm2json`, `storescp`, and `dcm2dcm`. It does not provide their command-line syntax or a worked input file in this document, so the supported first use here is locating the matching binary and consulting its tool README before processing clinical data.

Native Image Codec Requirements and Platform Boundaries

Image compression and decompression is not a portable Java-only operation in this project. dcm4che uses `weasis-core-img` through JNI, and the README lists separate native packages for supported systems and processor architectures. The current matrix covers Linux x86 64-bit and ARM 64-bit, Windows x86 64-bit, macOS x86 64-bit, and macOS ARM 64-bit. Thirty-two-bit packages are no longer shipped.

The operating-system requirements are concrete. Linux x86-64 requires `GLIBC_2.17+`, while Linux ARM64 requires `GLIBC_2.27+`. Windows requires Windows 10 or newer. The macOS packages require Mac OS 10.13 or newer. Because the Linux binaries are dynamically linked against glibc, the README says they do not run on musl-based systems such as Alpine without a glibc compatibility layer. That makes Alpine unsuitable for a direct native-library deployment unless the application team supplies and tests that compatibility arrangement.

The native component is CPU-only and uses SIMD runtime dispatch, including AVX2 and AVX-512 on x86-64 and NEON on aarch64. There is no documented GPU or OpenCL path. Installations therefore cannot assume that image acceleration will use a GPU merely because one is present.

Platform selection should happen early. A deployment that targets Alpine, a 32-bit runtime, or an unsupported OS can compile the Java portions while still failing when an image codec attempts to load its native dependency. The project docs identify these boundaries clearly, but they do not provide a universal package bundle for every build environment.

DCM4che Utility Scope and Wrong-Tool Cases

The utility catalog covers distinct DICOM lifecycle tasks, which makes dcm4che useful for assembling operational tools. `dcmqrscp` is described as a simple DICOM archive, `storescp` receives composite objects, and `storescu` sends them. Query and retrieve behavior is split across utilities such as `findscu`, `getscu`, and `movescu`. Other commands focus on representation conversion, including `dcm2dcm`, `dcm2json`, `json2dcm`, `dcm2xml`, and `xml2dcm`.

That specialization is useful when a workflow needs a particular operation. It also reveals cases where dcm4che is the wrong tool. A service that only parses a small number of DICOM attributes, without networking, image decoding, LDAP, HL7, or a command-line interface, may not justify adopting the full toolkit. The README does not publish minimal dependency graphs or memory limits that would establish the opposite conclusion.

Clinical deployment adds another boundary. `dcmvalidate` can validate an object against a specified Information Object Definition, and `deidentify` can process one or several files, but the README does not state that every utility is suitable for production diagnostic imaging or that default transformations satisfy a particular institution's privacy policy. Those workflows require separate validation against their actual inputs and organizational requirements.

A related constraint is customization. dcm4che offers many integration modules, but that does not mean a finished archive or RIS will match an existing deployment's database, identity model, routing policy, or user interface. The repository supplies protocol and toolkit foundations, while application-specific behavior remains outside the documented scope.

DCM4che Alternatives, Licensing, and Release Work

A real alternative is a narrow Java DICOM parser embedded in an application that also obtains networking and image processing from separate components. The approach differs in both size and control. Such a design can limit the dependency surface for a parser-only job, but it leaves the adopter responsible for protocol services, transfer syntax support, codecs, configuration, and associated integration behavior. dcm4che instead places these capabilities across related Maven modules and supplies utilities for many common DICOM operations.

The choice should therefore be driven by required workflow coverage. A full modality gateway or archive is more likely to benefit from dcm4che's network and service modules than from a parser alone. A simple metadata inspection utility may favor the narrower design if native deployment constraints are irrelevant and only a few DICOM operations are needed.

The repository declares a custom license under `LICENSE.txt`, which GitHub cannot classify. This review cannot infer permission or obligation categories from the repository metadata. An organization considering source modification or distribution must read `LICENSE.txt` directly and confirm how it applies to the selected modules and native dependencies. The separate status of `weasis-core-img` and OpenCV also means that reviewing only dcm4che's top-level file may be incomplete.

Maintenance activity is current: the last push was on 2026-10-15, and releases 5.35.0, 5.35.1, and 5.35.2 are listed in August and October 2026. This supports recent project work, but it does not remove upgrade cost. Java applications must reconcile module versions, Maven changes, native packages, and deployment operating systems. The README does not provide a formal upgrade procedure or compatibility matrix for moving between those releases, so migration planning cannot be reduced to changing one version number.

Editorial conclusion

Engineering teams building DICOM archives, modality services, converters, gateways, or HL7 integrations should examine dcm4che's module boundaries and memory-oriented design. Projects confined to a lightweight DICOM parser should reject the larger dependency surface, while deployments using image codecs must first confirm a matching native platform and review LICENSE.txt rather than relying on GitHub's custom-license classification.

Frequently asked questions

What is dcm4che and who is it for?

dcm4che is a Java implementation of DICOM-related libraries and command-line utilities. It is intended for developers building archive, modality, query, retrieve, image-processing, de-identification, configuration, and HL7 integration software.

How do you build dcm4che from source?

Install Java 17 or newer, then run `./mvnw install` on Linux or macOS or `.\mvnw install` on Windows. The README does not document a separate quick-install package command.

Does dcm4che run on Alpine Linux?

The documented Linux native libraries require glibc and do not run directly on musl-based systems such as Alpine. The README says a glibc compatibility layer is required.

Official sources

  1. dcm4che/dcm4che on GitHub
  2. Issues
  3. README
  4. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/dcm4che-dcm4che.svg)](https://hysenlabs.com/projects/dcm4che-dcm4che)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/dcm4che-dcm4che.svg)](https://hysenlabs.com/projects/dcm4che-dcm4che)

Was this useful?