public class DeidentifyAndRedact
extends java.lang.Object
A class to implement bulk de-identification and redaction of DICOM files.
Development of this class was supported by funding from MDDX Research and Informatics.
Modifier and Type | Class and Description |
---|---|
protected class |
DeidentifyAndRedact.OurMediaImporter
A protected class that actually does all the work of finding and processing the files.
|
protected class |
DeidentifyAndRedact.RedactionRegions
A protected class to store sets of rectangular redaction regions indexed by a String classname.
|
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<java.lang.String> |
failedSet |
protected static java.lang.String |
ourCalledAETitle |
Constructor and Description |
---|
DeidentifyAndRedact(java.lang.String inputPathName,
java.lang.String outputFolderName,
java.lang.String redactionControlFileName,
boolean decompress,
boolean keepAllPrivate)
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
|
DeidentifyAndRedact(java.lang.String inputPathName,
java.lang.String outputFolderName,
java.lang.String redactionControlFileName,
boolean decompress,
boolean keepAllPrivate,
AttributeList replacementAttributes)
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
|
DeidentifyAndRedact(java.lang.String inputPathName,
java.lang.String outputFolderName,
java.lang.String redactionControlFileName,
boolean decompress,
boolean keepAllPrivate,
boolean addContributingEquipmentSequence)
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
|
DeidentifyAndRedact(java.lang.String inputPathName,
java.lang.String outputFolderName,
java.lang.String redactionControlFileName,
boolean decompress,
boolean keepAllPrivate,
boolean addContributingEquipmentSequence,
AttributeList replacementAttributes)
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
|
Modifier and Type | Method and Description |
---|---|
java.util.Set<java.lang.String> |
getFilePathNamesThatFailedToProcess()
Get file names that failed to import.
|
static void |
main(java.lang.String[] arg)
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
|
protected java.lang.String |
makeOutputFileName(java.lang.String outputFolderName,
java.lang.String inputFileName,
java.lang.String sopInstanceUID)
Make a suitable file name to use for a deidentified and redacted input file.
|
protected java.util.Set<java.lang.String> failedSet
protected static java.lang.String ourCalledAETitle
public DeidentifyAndRedact(java.lang.String inputPathName, java.lang.String outputFolderName, java.lang.String redactionControlFileName, boolean decompress, boolean keepAllPrivate) throws DicomException, java.lang.Exception, java.io.IOException
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
Searches the specified input path recursively for suitable files.
If Baseline (sequential 8 bit) JPEG, can either redact without affecting other JPEG blocks or decompress JPEG entirely, redact and recompress (lossy)For details of the processing, see DeidentifyAndRedact.OurMediaImporter.doSomethingWithDicomFileOnMedia(String,String,String)
.
For specification of the contents of the redaction control file, see DeidentifyAndRedact.RedactionRegions
.
Adds ContributingEquipmentSequence by default.
inputPathName
- the path to search for DICOM filesoutputFolderName
- where to store all the processed output filesredactionControlFileName
- which regions to redact in all the processed filesdecompress
- decompress JPEG rather than try to avoid loss in unredacted blockskeepAllPrivate
- retain all private attributes, not just known safe onesDicomException
java.io.IOException
java.lang.Exception
public DeidentifyAndRedact(java.lang.String inputPathName, java.lang.String outputFolderName, java.lang.String redactionControlFileName, boolean decompress, boolean keepAllPrivate, AttributeList replacementAttributes) throws DicomException, java.lang.Exception, java.io.IOException
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
Searches the specified input path recursively for suitable files.
If Baseline (sequential 8 bit) JPEG, can either redact without affecting other JPEG blocks or decompress JPEG entirely, redact and recompress (lossy)For details of the processing, see DeidentifyAndRedact.OurMediaImporter.doSomethingWithDicomFileOnMedia(String,String,String)
.
For specification of the contents of the redaction control file, see DeidentifyAndRedact.RedactionRegions
.
Adds ContributingEquipmentSequence by default.
inputPathName
- the path to search for DICOM filesoutputFolderName
- where to store all the processed output filesredactionControlFileName
- which regions to redact in all the processed filesdecompress
- decompress JPEG rather than try to avoid loss in unredacted blockskeepAllPrivate
- retain all private attributes, not just known safe onesreplacementAttributes
- additional attributes with values to add or replace during de-identificationDicomException
java.io.IOException
java.lang.Exception
public DeidentifyAndRedact(java.lang.String inputPathName, java.lang.String outputFolderName, java.lang.String redactionControlFileName, boolean decompress, boolean keepAllPrivate, boolean addContributingEquipmentSequence) throws DicomException, java.lang.Exception, java.io.IOException
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
Searches the specified input path recursively for suitable files.
If Baseline (sequential 8 bit) JPEG, can either redact without affecting other JPEG blocks or decompress JPEG entirely, redact and recompress (lossy)For details of the processing, see DeidentifyAndRedact.OurMediaImporter.doSomethingWithDicomFileOnMedia(String,String,String)
.
For specification of the contents of the redaction control file, see DeidentifyAndRedact.RedactionRegions
.
inputPathName
- the path to search for DICOM filesoutputFolderName
- where to store all the processed output filesredactionControlFileName
- which regions to redact in all the processed filesdecompress
- decompress JPEG rather than try to avoid loss in unredacted blockskeepAllPrivate
- retain all private attributes, not just known safe onesaddContributingEquipmentSequence
- whether or not to add ContributingEquipmentSequenceDicomException
java.io.IOException
java.lang.Exception
public DeidentifyAndRedact(java.lang.String inputPathName, java.lang.String outputFolderName, java.lang.String redactionControlFileName, boolean decompress, boolean keepAllPrivate, boolean addContributingEquipmentSequence, AttributeList replacementAttributes) throws DicomException, java.lang.Exception, java.io.IOException
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
Searches the specified input path recursively for suitable files.
If Baseline (sequential 8 bit) JPEG, can either redact without affecting other JPEG blocks or decompress JPEG entirely, redact and recompress (lossy)For details of the processing, see DeidentifyAndRedact.OurMediaImporter.doSomethingWithDicomFileOnMedia(String,String,String)
.
For specification of the contents of the redaction control file, see DeidentifyAndRedact.RedactionRegions
.
inputPathName
- the path to search for DICOM filesoutputFolderName
- where to store all the processed output filesredactionControlFileName
- which regions to redact in all the processed filesdecompress
- decompress JPEG rather than try to avoid loss in unredacted blockskeepAllPrivate
- retain all private attributes, not just known safe onesaddContributingEquipmentSequence
- whether or not to add ContributingEquipmentSequencereplacementAttributes
- additional attributes with values to add or replace during de-identificationDicomException
java.io.IOException
java.lang.Exception
public java.util.Set<java.lang.String> getFilePathNamesThatFailedToProcess()
Get file names that failed to import.
public static void main(java.lang.String[] arg)
Read DICOM format image files, de-identify them and apply any specified redactions to the Pixel Data.
Searches the specified input path recursively for suitable files If Baseline (sequential 8 bit) JPEG, can either redact without affecting other JPEG blocks or decompress JPEG entirely, redact and recompress (lossy)arg
- three, four or more parameters, the inputPath (file or folder), outputFolder, redactionControlFile,
optionally the redaction method BLOCK|DECOMPRESS (default is BLOCK),
optionally whether or not to keep all or just known safe private data elements KEEPALLPRIVATE|KEEPSAFEPRIVATE (default is KEEPSAFEPRIVATE),
optionally whether or not to add ContributingEquipmentSequence ADDCONTRIBUTINGEQUIPMENT|DONOTADDCONTRIBUTINGEQUIPMENT (default is ADDCONTRIBUTINGEQUIPMENT),
followed by optional pairs of keyword and value attribute replacements (e.g., PatientName "Doe^Jane")protected java.lang.String makeOutputFileName(java.lang.String outputFolderName, java.lang.String inputFileName, java.lang.String sopInstanceUID) throws java.io.IOException
Make a suitable file name to use for a deidentified and redacted input file.
The default is the UID plus "_Anon.dcm" in the outputFolderName (ignoring the inputFileName).
Override this method in a subclass if a different file name is required.
outputFolderName
- where to store all the processed output filesinputFileName
- the path to search for DICOM filessopInstanceUID
- the SOP Instance UID of the output filejava.io.IOException
- if a filename cannot be constructed