IQDM-PDF

build Documentation Status PyPI Python Version lgtm lgtm code quality Codecov Lines of code Repo Size Code style: black

What does it do?

Scans a directory for IMRT QA reports and parses data into a CSV.

Other information

This library is part of the IMRT QA Data Mining (IQDM) project for the AAPM IMRT Working Group (WGIMRT).

Dependencies

Install

Latest PyPI release:

$ pip install iqdmpdf

Install from source:

$ python setup.py install

If you do not have a C++ compiler installed, you might have issues with installing the latest version of pdfminer.six. The following might resolve your issue:

$ pip install pdfminer.six==20200726

Usage

To scan a directory for IMRT QA report files and generate a results .csv file into your current directory:

$ iqdmpdf [init_directory]

As of v0.2.2, multi-threading is enabled. For example, you can enable 4 simultaneous threads with the following:

$ iqdmpdf [init_directory] -n 4

usage: iqdmpdf [-h] [-ie] [-od OUTPUT_DIR] [-of OUTPUT_FILE] [-ver] [-nr]
               [-re] [-n PROCESSES]
               [init_directory]

Command line interface for IQDM-PDF

positional arguments:
  init_directory        Initiate scan here

optional arguments:
  -h, --help            show this help message and exit
  -ie, --ignore-extension
                        Script will check all files, not just ones with .pdf
                        extensions
  -od OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Output stored in local directory by default, specify
                        otherwise here
  -of OUTPUT_FILE, --output-file OUTPUT_FILE
                        Output will be saved as <report_type>_results_<time-
                        stamp>.csv by default. Define this tag to customize
                        file name after <report_type>_
  -ver, --version       Print the IQDM version
  -nr, --no-recursive-search
                        Include this flag to skip sub-directories
  -re, --raise-errors   Allow failed file parsing to halt the program
  -n PROCESSES, --processes PROCESSES
                        Enable multiprocessing, set number of parallel
                        processes

Vendor Compatibility

We plan to support many vendors. If the report is very consistent, a new JSON file in the report_templates is essentially all that is needed. Additional documentation for custom templates can be found here.

Credits

Development Lead

  • Dan Cutright

Contributors

  • Marc Chamberland

  • Aditya Panchal

Test Data

Example IMRT QA reports used for unit testing and design are available here.

  • Dan Cutright, University of Chicago Hospital
    • delta4/UChicago

    • sncpatient/UChicago

  • Marc Chamberland, University of Vermont Health Network
    • sncpatient/UVermontHealthNetwork

  • Serpil Kucuker Dogan, Nortwestern Memorial Hospital
    • sncpatient/Northwestern_Memorial

    • sncpatient2020/Northwestern_Memorial

  • Aditya Panchal, AMITA Health
    • verisoft/AMITA_Health

  • Michael Snyder, Beaumont Health
    • sncpatient/Beaumont