Karnak 2.0, the open-source DICOM gateway for de-identification and tag morphing, adds a DICOM conformance validator whose IOD rules are not hand-written. They come from a machine-readable copy of the standard, the
Innolitics dicom-standard JSON (SOP Classes, IODs, modules, attribute Types, VR, VM). A small curated rule set adds what the standard only states in prose: enumerated values and the Type 1C/2C conditions that can be evaluated.
What it checks: module presence, Type 1/2/1C/2C, VR and VM, private blocks, and retired constructs. It also runs value-level checks modeled on dciodvfy (implausible zeros, pixel geometry, orientation, laterality, UID reuse, multi-frame consistency) and study-level consistency (Study UID, patient identity, Frame of Reference, Modality ↔ SOP Class). On de-identifying destinations, it flags identifiers that survived the profile.
Why in a gateway: it validates the dataset that actually leaves Karnak, after de-identification and tag morphing, and emails one HTML report per study with a PASSED/FAILED verdict. A virtual destination validates without forwarding, which is useful for commissioning a new modality or checking outside data before it reaches the archive. See
example reports.
Try it with the
portable version (Windows, Linux, macOS, nothing to install)
Conformance report:
https://karnak.weasis.org/en/userguide/conformancereport/General documentation:
https://karnak.weasis.org/en/Source:
https://github.com/nroduit/karnakReports of false positives or issues are very welcome on GitHub.