Source code for deid.main

#!/usr/bin/env python3

__author__ = "Vanessa Sochat"
__copyright__ = "Copyright 2016-2022, Vanessa Sochat"
__license__ = "MIT"

import argparse
import os
import sys
import tempfile
from glob import glob

from deid.version import __version__


[docs]def get_parser(): parser = argparse.ArgumentParser( description="Deid (de-identification, anonymization) command line tool." ) # Global Variables parser.add_argument( "--quiet", "-q", dest="quiet", help="Quiet the verbose output", default=False, action="store_true", ) parser.add_argument( "--debug", dest="debug", help="use verbose logging to debug.", default=False, action="store_true", ) parser.add_argument( "--version", dest="version", help="print version and exit.", default=False, action="store_true", ) parser.add_argument( "--outfolder", "-o", dest="outfolder", help="full path to save output, will use temporary folder if not specified", type=str, default=None, ) parser.add_argument( "--format", "-f", dest="format", help="format of images, default is dicom", default="dicom", choices=["dicom"], ) parser.add_argument( "--overwrite", dest="overwrite", help="overwrite pre-existing files in output directory, if they exist.", default=False, action="store_true", ) subparsers = parser.add_subparsers( help="action for deid to perform", title="actions", description="actions for deid to perform", dest="command", ) subparsers.add_parser( "version", help="print version and exit" # pylint: disable=unused-variable ) # Checks (checks / tests for various services) inspect = subparsers.add_parser( "inspect", help="various checks for PHI and quality" ) inspect.add_argument( nargs="+", dest="folder", help="input folder or single image. If not provided, test data will be used.", type=str, default=None, ) inspect.add_argument( "--deid", dest="deid", help="deid file with preferences, if not specified, default used.", type=str, default=None, ) inspect.add_argument( "--pattern", dest="pattern", help="A pattern to match files in input folder.", type=str, default=None, ) inspect.add_argument( "--save", "-s", dest="save", help="save result to output tab separated file.", default=False, action="store_true", ) ids = subparsers.add_parser( "identifiers", help="extract and replace identifiers from headers" ) ids.add_argument( "--deid", dest="deid", help="deid file with preferences, if not specified, default used.", type=str, default=None, ) # A path to an ids file, required if user wants to put (without get) ids.add_argument( "--ids", dest="ids", help="Path to a json file with identifiers, required for PUT if you don't do get (via all)", type=str, default=None, ) ids.add_argument( "--input", dest="input", help="Input folder or single image to perform action on.", type=str, default=None, ) # Action ids.add_argument( "--action", "-a", dest="action", help="specify to get, put (replace), or all. Default will get identifiers.", default=None, choices=["get", "put", "all", "inspect"], required=True, ) return parser
[docs]def main(): parser = get_parser() try: args = parser.parse_args() except Exception: sys.exit(0) if args.command == "version" or args.version: print(__version__) sys.exit(0) # if environment logging variable not set, make silent os.environ["MESSAGELEVEL"] = "INFO" if args.quiet is True: os.environ["MESSAGELEVEL"] = "QUIET" # Initialize the message bot, with level above from deid.logger import bot # pylint: disable=unused-import if args.command == "identifiers": from .identifiers import main elif args.command == "inspect": from .inspect import main else: parser.print_help() sys.exit(1) # Run main for selection return main(args, parser)
if __name__ == "__main__": main()