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.6.tar.gz (23.8 kB view details)

Uploaded Source

Built Distribution

dcm_check-0.1.6-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dcm_check-0.1.6.tar.gz
  • Upload date:
  • Size: 23.8 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.6.tar.gz
Algorithm Hash digest
SHA256 ecc1af6591925fcf0715e0fc9291d9a5ed727ce4061494d0c4d4fe123987367a
MD5 eb4cc4b933f9d445bdcfda918a2ea720
BLAKE2b-256 b84a7f861a3ae29f7a955453da5f883cc5a531fa46662ec37eb8fdfb80e5caf3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dcm_check-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 28.1 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 636596850def7008dc670ecb7a4e04805888b3c149a26999fbaefbfa0b27a052
MD5 ddcc028669c231561748d5064ab043cf
BLAKE2b-256 684b538a877fd202838b28e154e53a2d6b724717e91b3ef9633e206265581d50

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