Release Notes
0.1.9 [2025-12-09]
Enhancements:
- Removed
apikey_pathconfig option; the gear now always uses theapi-keyinput for authentication, simplifying the authentication flow
Fixes:
- Fixed
CVE-2025-47907by installingjqand removing theyqgobinary from the container - Pinned
urllib3to2.6andrequeststo2.32.4to address security vulnerabilities
Maintenance:
- Migrated base image from
flywheel/python:3.12-debiantoflywheel/python:3.12-wolfi-build - Switched system package management from
apt-gettoapkfor Wolfi-based image compatibility - Removed pinned
spacy3.8.3dependency constraint - Removed
bot_keyparameter fromReaderTaskCreator,parse_config, andrunthroughout the codebase - Removed deprecated
local_dir_use_symlinks=Falseargument fromsnapshot_downloadcall
Breaking Changes:
- Removed
apikey_pathgear config option; gears previously configured to use a bot API key viaapikey_pathmust be reconfigured to use theapi-keyinput instead
0.1.8 [2025-08-12]
Fixes:
- Changed
exhaustivequery parameter fromtruetofalsein/api/read_task_protocolsAPI calls to correct protocol fetching behavior
Maintenance:
- Pinned
pillowto11.3.0
0.1.7 [2025-08-07]
Enhancements:
- Added
workdirparameter toFwScanRedactEngineto allow configuring a working directory for temporary files, defaulting to a system temp directory when not provided. - Added
work_pathparameter toEasyOCRto support pre-downloaded model weights, withdownload_enabled=Falseto avoid runtime downloads. - Added
tmpdirparameter todetect_and_unpack_zipto allow configuring where zip files are extracted. - Refactored
create_reader_protocolto use server-side filtering and handle multiple existing protocols by selecting the most recently modified one. - Updated
create_reader_taskto accept a list of assignees and randomly assign tasks to one of them. - Added
InstanceNumberassignment when separating multiframe DICOM arrays into individual files. - Updated
create_single_annotationto useslice_number(as integer) inannotation["data"]and formatupdated_image_pathusing the slice number instead of the raw frame index string. - Added HPC support.
- Use a filter when polling for Reader Task Protocols, rather than grabbing all existing protocols in the instance and filtering the response.
Fixes:
- Fixed
scan_dicoms_for_phiandredact_dicom_phito fall back toself.workdirwhen nooutput_pathis provided. - Fixed
detect_multiframeto useself.workdiras the base for theseparated_us_imagesdirectory instead of the current working directory. - Fixed
parse_configto safely accessjob.idusing.get("job", {}).get("id")to avoidAttributeErrorwhen the key is missing. - Fixed
FWClientinstantiation to use the unifiedtimeoutparameter instead of the removedread_timeoutandconnect_timeoutparameters. - Fixed Handling of new Reader Task Protocol creation. Specifically:
- Make sure gear grabs all protocols even if the user is Site Admin but doesn't have project permissions.
- Use most recent :xprotocol, based on date of last modification.
Maintenance:
- Upgraded base image from
flywheel/python:3.10-debiantoflywheel/python:3.12-debianwith a multi-stageDockerfilebuild (base,build,dev, and final production stages). - Updated
PYTHON_VERSIONfrom3.10.16to3.12.10inmanifest.json. - Upgraded
flywheel-sdkfrom16.16.7to^20.0. - Upgraded
pydicomfrom^2.3.1to^3.0. - Upgraded
fw-filefrom^3.4.0to^4.1. - Upgraded
fw-clientfrom^0.8.5to^2.1. - Upgraded
torchfrom^2.1.1to^2.7. - Upgraded
urllib3from>=1.25.4,<1.27to^2.0. - Upgraded
pytestfrom^6.1.2to^8.3and moved it totool.poetry.group.dev.dependencies. - Added
requirements-dev.txttoDockerfileand.dockerignorefor the dev build stage. - Increased CI test coverage threshold from
0to45%and setPYVERto3.12. - Added
timeout: 3handbuild-cluster-externaltag to thetest:gearCI job. - Updated
.gitignorewith standard Python, macOS, editor, and pre-commit entries. - Added new test modules
test_easy_ocr.py,test_scan_and_redact.py, andtest_utils_reader_tasks.pywith comprehensive unit test coverage.
Documentation:
- Updated
README.mdto clarify that reader tasks are assigned at random to one of the readers in the assignee list. - Updated
manifest.jsondescriptions forAssigneesandBaseline Operating Modeconfig fields with clearer wording and examples. - Updated
CONTRIBUTING.mdlink text for Poetry configuration documentation.
0.1.6 [2025-04-09]
Fixes:
- Fixed
apply_common_bboxesbeing incorrectly called for multi-frame images, where it had already been applied earlier in the processing pipeline
0.1.5 [2025-03-27]
Fixes:
- Fixed
apply_common_bboxesto be called once after processing all files rather than per-file, correcting bounding box application for DICOM image redaction
0.1.4 [2025-03-17]
Enhancements:
- Added
apikey_pathconfiguration option to support running the gear as a Gear Rule using an externally stored API key. - Added
bot_keyflag toReaderTaskCreatorto handle Flywheel bot API key authentication when running as a Gear Rule. - Moved
obi/deid_roberta_i2b2model files to be bundled within the package atfw_image_pii_detector/nlp_configs/obi_deid_roberta_i2b2, pinning to a specific revision for reproducibility. - Applied common bounding boxes per-image during processing loop rather than after all images are processed, improving annotation accuracy.
- Added
default_image_pii_detector_protocolas the default Reader Protocol name, replacingpresidio_default_protocol. - Updated viewer configuration to restrict toolbar to
Rectangleannotation tool only and disable segmentation panels.
Fixes:
- Fixed
validate_assigneesto only be called when operating mode isDetection+ReaderTasks, avoiding unnecessary API calls in other modes.
Maintenance:
- Renamed package from
fw-presidio-image-redactor/fw_presidio_image_redactortofw-image-pii-detector/fw_image_pii_detectorthroughout the codebase. - Upgraded base Docker image from
python:3.9.19-slim-bookwormtoflywheel/python:3.10-debian-build. - Updated
pythonversion constraint from^3.9to>=3.10, <3.13. - Pinned
spacyto3.8.3. - Added dependencies:
botocore ^1.35.98,ssm-parameter-store ^19.11.0,poetry-plugin-export ^1.9.0, andurllib3 >=1.25.4,<1.27. - Updated gear name from
presidio-image-redactortoimage-pii-detectorinmanifest.json.
Documentation:
- Updated
README.mdto reflect new gear nameimage-pii-detectorthroughout, including output file names, metadata tags, and operating mode descriptions. - Added documentation for the new
apikey_pathconfiguration option inREADME.md. - Removed outdated "active development / Release Candidate" warning from
README.md.
Breaking Changes:
- Gear tag applied to processed files changed from
presidio-image-redactortoimage-pii-detector; workflows filtering on the old tag will need to be updated. - Redacted file tag changed from
presidio-redactedtoimage-pii-detector-redacted. - Default Reader Protocol name changed from
presidio_default_protocoltodefault_image_pii_detector_protocol.
0.1.3 [2024-11-22]
Enhancements:
- Added
Detection+ReaderTasksoperating mode, enabling creation ofReaderProtocolandReaderTaskannotations for human-in-the-loop PHI review workflows - Added
RedactAllTextoperating mode that redacts all detected text regardless of PHI classification - Replaced
Scanning Onlyboolean toggle with aBaseline Operating Modestring configuration option supporting four distinct modes: Detection Only, Detection+ReaderTasks, Dynamic PHI Redaction, and RedactAllText - Added
Assigneesconfiguration option for specifying Flywheel user emails to assignReaderTaskreviews - Added
PHI-Not-Foundtag output to label input files where no PHI was detected - Added
presidio-image-redactorgear tag applied to all processed input files - Installed
en_core_web_lg-3.7.1spaCy model directly inDockerfilefor improved NER capabilities
Documentation:
- Rewrote
README.mdwith updated table of contents, expanded operating mode descriptions, three new use case workflows, and revised configuration settings reflecting the newBaseline Operating Modeoptions - Updated workflow Mermaid diagram to reflect four operating modes and downstream gear integrations
Maintenance:
- Migrated CI pipeline from
sse-qa-citoflywheel-io/tools/etc/qa-ciwith updatedci/gear.ymltemplate and large runner override - Updated
PYVERvariable removed;PUBLISH_POETRYchanged from"false"to empty string in.gitlab-ci.yml - Updated
qa-cipre-commit hooks reference to3218fd46and addedhadolint,jsonlint,linkcheckhooks with configured ignore rules
Breaking Changes:
- Removed
Toggle Scanning Onlyboolean config option; replaced byBaseline Operating Modestring option — existing gear configurations using the boolean toggle must be updated - Removed
Complete Redactionboolean config option; functionality now accessed viaRedactAllTextoperating mode selection
0.1.2 [2024-10-08]
Enhancements:
- Added
Transformer Score Thresholdconfig option (0–100) to set the minimum confidence score for transformer-identified PHI entities - Added
Entity Frequency Thresholdconfig option (0–100) for multi-frame DICOM files, specifying the minimum percentage of frames an entity must appear across to be included - Added
Complete Redactionconfig option to redact all burned-in text regardless of whether it is PHI - Added
Entities to Findconfig option as a comma-separated string listing which entity types the gear should detect - Added
Use DICOM Metadataconfig option to create a regex recognizer from DICOM metadata to improve PHI detection in pixel data - Added bundled
HuggingFacemodel (obi/deid_roberta_i2b2) download step inDockerfileto pre-cache the transformer model at image build time - Added example PHI info CSV output document under
docs/Example Documents/ - Added preprocessing Jupyter notebook under
docs/notebooks/
Fixes:
- Fixed typo "Mircrosoft" → "Microsoft" in
README.md - Fixed typo "pre-exisiting" → "pre-existing" and "idetification" → "identification" in
README.md - Fixed typo "faciliate" → "facilitate" in
README.md - Fixed typo "obscurred" → "obscured" in
README.md
Maintenance:
- Upgraded base image from
python:3.8-slimtopython:3.9.19-slim-bookworm(pinned by digest) - Added
cv2system dependencies (ffmpeg,libsm6,libxext6) toDockerfile - Added
apt-get autocleanandapt-get autoremovesteps toDockerfileto reduce image size - Added
.gitignorefor local development artifacts (input/,presidio-image-redactor*,config.json,run.sh) - Updated
.dockerignoreto include.vscodedirectory - Migrated linting from
black/isorttoruffandruff_formatin pre-commit hooks; addedgearcheckhook - Added
PYVER,DEBUG,PUBLISH_POETRY, andCACHE_CLEARCI variables to.gitlab-ci.yml - Switched CI reference from
default.ymltolarge-default.yml - Removed merge request template
default.md
Documentation:
- Rewrote
README.mdconfig settings section, replacing individual entity toggle flags with consolidatedEntities to Find,Transformer Score Threshold,Entity Frequency Threshold,Use DICOM Metadata, andComplete Redactionentries - Updated
README.mdscanning and redaction mode descriptions to reflectToggle Scanning Onlyconfig option - Updated
README.mdinput file classifications and modalities (US,CT,MR,XRay) for theimage_fileinput - Updated
README.mdworkflow diagram and step descriptions - Updated
README.mdoutput file naming conventions and descriptions - Added recommendation in
README.mdto rundicom-fixerprior to the gear
0.1.1 [2023-09-20]
Fixes:
- Fixed typo in gear description ("opensource" → "open source")
- Pinned
presidio-image-redactorto a specific upstream branch to resolve a greyscale bug in DICOM image processing
0.1.0 [2023-09-08]
Enhancements:
- Initial release of the Presidio Image Redactor gear, which scans DICOM images for PII using Microsoft's
presidioSDK with OCR, NER, and regex detection. - Added PII detection-only mode that tags acquisitions and files with
PHI-Foundwhen PII is identified. - Added PII redaction mode that masks identified PII in DICOM pixel data.
- Added support for bounding box image generation to visualize detected PII regions.
- Added support for optional prior scan inputs (
bbox_coords) to reuse bounding box coordinates from a previous run. - Added configurable PII entity detection for
PERSON,DATE_TIME,LOCATION,PHONE_NUMBER,MEDICAL_LICENSE,URL,NRP,EMAIL_ADDRESS,CRYPTO,IBAN_CODE,IP_ADDRESS,CREDIT_CARD,US_SSN,US_DRIVER_LICENSE,US_PASSPORT,US_BANK_NUMBER, andUS_ITIN. - Added DICOM metadata integration to improve PII detection accuracy via the
use_dicom_metadataconfig option. - Added support for both single DICOM files and zipped DICOM series as input.
Maintenance:
- Added
Dockerfileusingpython:3.8-slimwithtesseract-ocrfor OCR support. - Added CI configuration via
.gitlab-ci.ymland pre-commit hooks includingblack,isort,pytest,markdownlint,yamllint, and manifest validation. - Added
pyproject.tomlwithpoetryfor dependency management, includingpresidio-image-redactor,presidio-analyzer,flywheel-gear-toolkit,fw-file,pydicom,pandas, andopencv-python.
Documentation:
- Added
README.mdwith gear overview, inputs, config settings, outputs, and workflow documentation. - Added
CONTRIBUTING.mdwith setup, dependency management, and release instructions. - Added
FAQ.mdas a placeholder for frequently asked questions.