Skip to content

Release Notes

0.5.2 [2026-02-13]

Enhancements:

  • Added automated release notes generation using Claude Code in CI pipeline

Maintenance:

  • Migrated from poetry to uv for dependency management
  • Updated pyproject.toml and pre-commit-config.yaml to new standard
  • Simplified Dockerfile
  • Updated manifest source URL from blob-specific path to repository root

Documentation:

  • Fixed broken Flywheel documentation URL in docs/usages.md from docs.flywheel.io/user/compute/gears/user_gear_rules/ to docs.flywheel.io/user/workflow/gear-based/user_gear_rules/
  • Expanded historical release notes coverage from version 0.5.0 back to 0.1.0

0.5.1 [2025-07-14]

Fixes:

  • Fixed handling of list-type DICOM tag values in 4D detection by converting to tuples before creating sets
  • Improved code style by simplifying conditional check in check_0_byte function

Maintenance:

  • Updated CI configuration to use .docker instead of .podman for test execution
  • Updated git to 2.50.1-r0 and jq to 1.8.0-r0 in Docker image to address vulnerabilities
  • Optimized Dockerfile to reduce image layer duplication and consolidated apk commands
  • Uninstalled setuptools in production Docker image to reduce attack surface
  • Added flywheel user to production Docker image for non-root execution
  • Added linter suppression comments for non-top-level imports from fw-gear-dicom-splitter

Documentation:

  • Improved link formatting in CONTRIBUTING.md, README.md, docs/details.md, and docs/faq.md

0.5.0 [2025-04-03]

Enhancements:

  • Replaced check_dciodvfy config option with check_dicom_validator to use dicom-validator tool for DICOM compliance checking
  • Added dicom_standard config option to specify DICOM standard version for dicom-validator (default: current)

Fixes:

  • Enhanced pixel data validation to detect unparseable pixel arrays

Maintenance:

  • Removed dicom3tools dependency and associated build stages from Dockerfile
  • Updated fw-gear-dicom-splitter dependency constraint from ^2 to >=2.1.0
  • Upgraded base image python version from 3.12.6 to 3.13.1
  • Removed curl installation from dev stage in Dockerfile

Documentation:

  • Updated documentation to reflect migration from dciodvfy to dicom-validator
  • Fixed broken Flywheel documentation URL in docs/usages.md

Breaking Changes:

  • Removed check_dciodvfy config option - replaced by check_dicom_validator
  • Removed dicom3tools citation from manifest.json

0.4.14 [2024-10-04]

Enhancements:

  • Added fail_on_critical_error config option to mark job as failed when critical errors (i.e. corrupted pixel data) are encountered
  • Added skip_when_4D config option to skip slice_consistency and bed_moving tests when gear identifies DICOM as 4D

Maintenance:

  • Migrated base image from gcc:11.2.0-bullseye to flywheel/python:3.11-alpine
  • Updated python from 3.9 to 3.11
  • Migrated from flywheel-gear-toolkit to fw-gear library
  • Updated CI configuration to use flywheel-io/tools/etc/qa-ci reference
  • Updated pre-commit hooks to use ruff instead of black and isort
  • Added multi-stage Dockerfile with separate dev and prod targets
  • Added uv for faster dependency installation
  • Updated dependency fw-gear-splitter to fw-gear-dicom-splitter

Documentation:

  • Restructured documentation with new mkdocs site including Overview, Details, Examples, Usages and Workflows, FAQ, and Release Notes
  • Moved JSON schema examples from examples/ directory to documentation
  • Updated README to link to new documentation site
  • Added API reference documentation using mkdocstrings

0.4.13 [2024-02-23]

Enhancements:

  • Added show-job flag to manifest configuration for improved job visibility

Maintenance:

  • Updated fw-gear-splitter from ^1.7.0 to ^1.7.1

0.4.12 [2024-02-15]

Fixes:

  • Fixed dciodvfy command parsing to properly handle shell operators by using shell=True in subprocess.Popen

0.4.11 [2024-02-13]

Maintenance:

  • Updated fw-gear-splitter dependency from ^1.5.2 to ^1.7.0
  • Specified amd64 architecture in Dockerfile base image
  • Updated black from ^20.8b1 to ^21.0
  • Updated mypy from ^0.790 to ^1.0

0.4.10 [2024-01-12]

Enhancements:

  • Added new check_dciodvfy rule to validate DICOM compliance using the dciodvfy binary
  • Improved dciodvfy error reporting to show which slices are affected by each error type
  • Added de-identification validation example JSON schema demonstrating how to verify certain DICOM tags are not present

Fixes:

  • Fixed metadata storage format by renaming description field to data in rule reports to align with QC namespace standards
  • Improved handling of invalid CS values in DICOM headers through updated fw-file dependency
  • Improved handling of invalid DS/IS values in DICOM headers through updated fw-file dependency

Maintenance:

  • Migrated CI configuration from flywheel-io/tools/etc/qa-ci to flywheel-io/scientific-solutions/etc/sse-qa-ci
  • Updated .pre-commit-config.yaml hooks to use new QA-CI configuration
  • Migrated from poetry to direct pip installation in Dockerfile
  • Updated python version constraint to >=3.8,<4 in pyproject.toml
  • Updated fw-gear-splitter dependency from ^1.3 to ^1.5.2
  • Removed pandas and jsonschema as direct dependencies (now transitive)
  • Updated Docker entrypoint to use python directly instead of poetry run
  • Added requirements.txt and README.md to .dockerignore include list
  • Set pytest coverage threshold to 95% in CI configuration
  • Updated repository source URL to flywheel-io/scientific-solutions/gears/dicom-qc

Documentation:

  • Updated README to reflect data field instead of description in QC output
  • Added documentation for check_dciodvfy rule
  • Expanded JSON schema validation examples with detailed explanation of how validation works with file.info metadata
  • Added example demonstrating how to use "not" and "anyOf" keys to validate absence of specific DICOM tags

0.4.9 [2022-08-24]

Maintenance:

  • Changed suite classification from AEQC to Curation

0.4.8 [2022-08-24]

Enhancements:

  • Changed gear suite designation from Curation to AEQC

0.4.7 [2022-08-23]

Fixes:

  • Fixed state comparison to use PASS instead of passed in zero-byte file check (fw_gear_dicom_qc/main.py:76)
  • Updated test assertions to use PASS state consistently in test suite

Maintenance:

  • Removed .dvc directory and configuration files from version control
  • Added .dvc to .gitignore to prevent future tracking
  • Fixed JSON formatting in basic-only-dicom-dicom-array.json example file

Breaking Changes:

  • Changed validation-schema input from optional to required in manifest

0.4.6 [2022-07-01]

Fixes:

  • Fixed trailing comma in empty JSON schema file

0.4.5 [2022-07-01]

Enhancements:

  • Made validation-schema input optional with automatic fallback to empty schema when not provided

Fixes:

  • Fixed QC state values to use uppercase format (PASS/FAIL instead of passed/failed/na)
  • Fixed metadata update to use context.metadata.add_qc_result() instead of deprecated add_qc_info()
  • Fixed file tag handling to use context.metadata.add_file_tags()

Maintenance:

  • Updated fw-gear-splitter dependency from ^1.2.3 to ^1.3
  • Added .dockerignore file to optimize Docker build context
  • Removed na_rule() helper function, now using pass_rule() for non-applicable cases
  • Removed unused pathlib.Path import from main.py
  • Refactored create_metadata() to update_metadata() with simplified interface

0.4.4 [2022-05-12]

Maintenance:

  • Updated splitter dependency with bug fix
  • Removed dvc and gcsfs development dependencies

0.4.3 [2022-04-27]

Fixes:

  • Fixed UTF-8 decode errors when processing dciodvfy output by adding error replacement handling

0.4.2 [2022-03-16]

Fixes:

  • Fixed handling of single DICOM file validation to properly initialize DICOMCollection with the file path
  • Corrected order of validation operations to check for 0-byte files before processing DICOM collection
  • Fixed logic to properly exit when single DICOM file fails 0-byte check

Maintenance:

  • Added parametrized test coverage for both zipfile and single file paths in test_run()

0.4.1 [2022-02-24]

Fixes:

  • Fixed modality extraction by correctly accessing file_["object"] in metadata creation
  • Fixed duplicate tag addition by checking if tag already exists before appending

0.4.0 [2022-02-14]

Enhancements:

  • Added dciodvfy (DICOM IOD Verify) binary from dicom3tools for DICOM compliance verification
  • Added new check_dciodvfy configuration option to enable/disable DICOM compliance verification (default True)

Maintenance:

  • Updated python version constraint from ^3.8 to >=3.8,<3.11
  • Updated fw-gear-splitter from ^1.0 to ^1.2.3
  • Added SAFETY_EXTRA="--ignore 44715" to .env configuration
  • Migrated Dockerfile to multi-stage build with gcc:11.2.0-bullseye for building dicom3tools
  • Updated base image reference from flywheel/python-gdcm:master.3a9476be to flywheel/python-gdcm:main.bcc9ef6b
  • Updated .gitlab-ci.yml to pin specific commit SHA and restructured PUBLISH_POETRY variable to job-level scope

Documentation:

  • Added citation for dicom3tools library in manifest.json
  • Updated README.md to document new check_dciodvfy configuration option

Breaking Changes:

  • Changed license from MIT to BSD-3-Clause

0.3.0 [2021-11-09]

Enhancements:

  • Changed slice location calculation to only use ImageOrientationPatient and ImagePositionPatient (removed fallback to SliceLocation tag)
  • Added rounding tolerance on slice locations for more reliable consistency checking

Fixes:

  • Improved slice consistency check accuracy by standardizing on calculated slice locations

Maintenance:

  • Migrated CI pipeline to flywheel-io/tools/etc/qa-ci framework
  • Updated pre-commit hooks to use qa-ci repository hooks
  • Switched base Docker image to flywheel/python-gdcm:master.3a9476be
  • Removed manual gdcm build process from Dockerfile
  • Removed add_gdcm.sh script (now handled by base image)
  • Removed .python-version file
  • Updated python version constraint from ~3.8 to ^3.8 in pyproject.toml
  • Added .env file with pytest coverage requirement set to 90%

Documentation:

  • Reformatted all markdown files to comply with line length limits
  • Improved markdown structure and consistency in README.md, CONTRIBUTING.md, and examples/README.md
  • Added missing docstrings to main functions and classes
  • Improved inline documentation formatting and readability

0.2.3 [2021-06-16]

Fixes:

  • Fixed split_dicom() function call signature in check_embedded_localizer() by removing obsolete file path parameter

0.2.2 [2021-06-03]

Fixes:

  • Fixed DICOM reading by adding force=True parameter to DICOMCollection to ensure DICOMs are read even when validation issues are encountered

Maintenance:

  • Updated .gitlab-ci.yml to reference main branch instead of master for CI templates

0.2.1 [2021-05-26]

Fixes:

  • Made check_0_byte a mandatory default rule required for integrity of other tests
  • Fixed formatting of zero-byte file error messages in check_0_byte rule

Maintenance:

  • Removed check_0_byte configuration option from gear manifest as it is now always enabled

0.2.0 [2021-05-24]

Enhancements:

  • Added tag configuration option to specify tag added to input file upon run completion
  • Improved logging to include removed files in check_0_byte, 0-byte files, and unique inconsistent slice intervals
  • Enhanced 0-byte file handling to report files instead of removing them from collection

Fixes:

  • Fixed handling of empty JSON schemas in validation
  • Fixed typo in logging message for missing ImagePositionPatient slices
  • Fixed extraction and processing of DICOM files from zip archives to properly handle 0-byte files
  • Fixed single DICOM file processing to check for 0-byte files before creating collection

Documentation:

  • Updated configuration documentation to use backtick formatting for boolean values
  • Added tag configuration option to README

0.1.1 [2021-04-09]

Maintenance:

  • Added newline at end of manifest.json file

0.1.0 [2021-04-09]

Enhancements:

  • Added DICOM quality control validation gear with configurable rule-based checking
  • Added jsonschema validation for DICOM headers with custom schema support
  • Added zero-byte file detection rule
  • Added series consistency validation (checks for unique SeriesInstanceUID)
  • Added instance number uniqueness validation
  • Added embedded localizer detection using splitter algorithm
  • Added bed movement detection via ImagePositionPatient analysis
  • Added slice consistency validation using SliceLocation or calculated from ImageOrientationPatient and ImagePositionPatient

Documentation:

  • Added comprehensive README with rule descriptions and usage examples
  • Added CONTRIBUTING guide with poetry and pre-commit setup instructions
  • Added example jsonschema templates for DICOM header validation
  • Added MIT license

Maintenance:

  • Added poetry for dependency management
  • Added pre-commit hooks for code quality (isort, black, pytest, manifest validation)
  • Added GitLab CI configuration using shared poetry-pre-commit template
  • Added python 3.8.0 runtime
  • Added flywheel-gear-toolkit, fw-gear-splitter, pandas, and jsonschema dependencies
  • Added dvc for test data versioning with Google Cloud Storage backend
  • Added comprehensive test suite with pytest
  • Added Dockerfile with GDCM library compilation for DICOM processing