Skip to main content

A tool for checking DICOM compliance against a reference model using Pydantic

Project description

dcm-check

dcm-check is a command-line tool and Python library for validating DICOM files against specified reference models. This tool supports JSON, DICOM, and Pydantic-based reference models to facilitate compliance checks for DICOM attributes. Features

  • Validate DICOM files against JSON, DICOM, or Pydantic reference models.
  • Generate detailed compliance reports, including expected and actual values for each parameter.
  • Output results in JSON format for further analysis or logging.

Installation

To install dcm-check, clone the repository and run:

pip install .

dcm-check requires Python >=3.10.

Usage

The tool can be used as a command-line interface (CLI) or as an API within Python scripts.

Command-Line Usage

The CLI provides options to specify a reference model and validate a DICOM file. Command Syntax

dcm-check --ref <reference-file> --type <json|dicom|pydantic> --acquisition <acquisition-type> --in <dicom-file> [--fields <field1 field2 ...>] [--out <output-file>]

Arguments:

  • --ref: Path to the reference file (JSON, DICOM, or Python module).
  • --type: Type of reference model (json, dicom, or pydantic).
  • --acquisition: Acquisition type (e.g., T1, T2w, etc.) when using JSON or Pydantic references; inferred if not given.
  • --in: Path to the DICOM file to validate.
  • --fields: (Optional) List of specific DICOM fields to include in validation for DICOM reference types.
  • --out: (Optional) Path to save the compliance report as a JSON file.

Example Commands:

Validate a DICOM file using a JSON reference model:

dcm-check --ref reference.json --acquisition T1 --in dicom_file.dcm

Validate a DICOM file using another DICOM as a reference:

dcm-check --ref reference.dcm --in dicom_file.dcm --fields EchoTime RepetitionTime

Validate a DICOM file using a Pydantic model in a Python module:

dcm-check --ref reference.py --acquisition T1_MPR --in dicom_file.dcm

Output

The compliance report is printed to the terminal in tabular format. You can also save it to a JSON file using the --out argument.

    Parameter          Expected                                       Actual       Pass
--  -----------------  ---------------------------------------------  -----------  ------
 0  EchoTime           Input should be greater than or equal to 5.74  3.0          False
 1  RepetitionTime     29.0                                           8.0          False
 2  SeriesDescription  String should match pattern '.*t1.*'           T1-weighted  False

Example JSON report:

[
    {
        "Parameter": "EchoTime",
        "Expected": "Input should be greater than or equal to 5.74",
        "Actual": 2.96,
        "Pass": false
    },
    {
        "Parameter": "RepetitionTime",
        "Expected": "29.0",
        "Actual": 2300.0,
        "Pass": false
    }
]

Python API Usage

To use dcm-check programmatically, import the appropriate functions from dcm_check:

from dcm_check.dcm_check import load_ref_json, load_ref_dicom, load_ref_pydantic, get_compliance_summary, is_compliant

# Example for loading a JSON reference model and checking compliance
reference_model = load_ref_json("reference.json", "T1")
dicom_values = load_dicom("dicom_file.dcm")
compliance_summary = get_compliance_summary(reference_model, dicom_values)

# Print compliance summary
print(compliance_summary)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dcm_check-0.1.2.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

dcm_check-0.1.2-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file dcm_check-0.1.2.tar.gz.

File metadata

  • Download URL: dcm_check-0.1.2.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for dcm_check-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9b03c5d639782d6651d6d049aad8935a4c48eae576ac259e270ea52cbdf1f99d
MD5 0a80251de1799aa9bce94d584a146a75
BLAKE2b-256 727f6c425d06058639e1101d2c809641cee685096266eaf8083bdfb48d712e23

See more details on using hashes here.

File details

Details for the file dcm_check-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: dcm_check-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 26.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for dcm_check-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2179aafa9580eb33b38b01fa6cb535f7645c1af18a6c5a51f43514f7190de38c
MD5 80803271a4f75a3f009780d457f599d2
BLAKE2b-256 054e503f03a27111588cbaae1a9d6cac799a08aa949631b8751ac9be942911f4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page