com.pixelmed.dicom
Class ClinicalTrialsAttributes

java.lang.Object
  extended by com.pixelmed.dicom.ClinicalTrialsAttributes

public abstract class ClinicalTrialsAttributes
extends Object

An abstract class of static methods to support removing identifying attributes and adding Clinical Trials Patient, Study and Series Modules attributes.

UID attributes are handled specially, in that they may be kept, removed or remapped. Remapping means that any UID that is not standard (e.g., not a SOP Class, etc.) will be replaced consistently with another generated UID, such that when that UID is encountered again, the same replacement value will be used. The replacement mapping persists within the invocation of the JVM until it is explciitly flushed. A different JVM invocation will replace the UIDs with different values. Therefore, multiple instances that need to be remapped consistently must be cleaned within the same invocation.

Note that this map could grow quite large and consumes resources in memory, and hence in a server application should be flushed at appropriate intervals using the appropriate method.


Nested Class Summary
 class ClinicalTrialsAttributes.HandleUIDs
           
 
Field Summary
protected static String defaultValueForMissingNonZeroLengthStrings
           
protected static String defaultValueForMissingPossiblyZeroLengthStrings
           
protected static Map mapOfOriginalToReplacementUIDs
           
protected static UIDGenerator uidGenerator
           
 
Method Summary
static void addClinicalTrialsAttributes(AttributeList list, boolean replaceConventionalAttributes, String clinicalTrialSponsorName, String clinicalTrialProtocolID, String clinicalTrialProtocolName, String clinicalTrialSiteID, String clinicalTrialSiteName, String clinicalTrialSubjectID, String clinicalTrialSubjectReadingID, String clinicalTrialTimePointID, String clinicalTrialTimePointDescription, String clinicalTrialCoordinatingCenterName)
          Add the attributes of the Clinical Trials Patient, Study and Series Modules, to a list of attributes.
static void addContributingEquipmentSequence(AttributeList list, boolean retainExistingItems, CodedSequenceItem purposeOfReferenceCodeSequence, String manufacturer, String institutionName, String institutionalDepartmentName, String institutionAddress, String stationName, String manufacturerModelName, String deviceSerialNumber, String softwareVersion, String contributionDescription, String contributionDateTime)
          Add the attributes of the Contributing Equipment Sequence to a list of attributes.
static void addContributingEquipmentSequence(AttributeList list, boolean retainExistingItems, CodedSequenceItem purposeOfReferenceCodeSequence, String manufacturer, String institutionName, String institutionalDepartmentName, String institutionAddress, String stationName, String manufacturerModelName, String deviceSerialNumber, String softwareVersion, String contributionDescription, String contributionDateTime, String[] operatorNames, PersonIdentification[] operatorIdentifications)
          Add the attributes of the Contributing Equipment Sequence to a list of attributes.
static void addContributingEquipmentSequence(AttributeList list, String manufacturer, String institutionName, String institutionalDepartmentName, String institutionAddress, String stationName, String manufacturerModelName, String deviceSerialNumber, String softwareVersion)
          Add the attributes of the Contributing Equipment Sequence to a list of attributes.
protected static void addType1LongStringAttribute(AttributeList list, AttributeTag t, String value, SpecificCharacterSet specificCharacterSet)
           
protected static void addType2LongStringAttribute(AttributeList list, AttributeTag t, String value, SpecificCharacterSet specificCharacterSet)
           
protected static void addType3DateTimeAttribute(AttributeList list, AttributeTag t, String value)
           
protected static void addType3LongStringAttribute(AttributeList list, AttributeTag t, String value, SpecificCharacterSet specificCharacterSet)
           
protected static void addType3ShortStringAttribute(AttributeList list, AttributeTag t, String value, SpecificCharacterSet specificCharacterSet)
           
protected static void addType3ShortTextAttribute(AttributeList list, AttributeTag t, String value, SpecificCharacterSet specificCharacterSet)
           
static void flushMapOfUIDs()
          Flush (remove all entries in) the map of original UIDs to replacement UIDs.
static boolean isSafePrivateAttribute(AttributeTag tag, AttributeList list)
          Is a private tag safe.
static void main(String[] arg)
          For testing.
static void remapUIDAttributes(AttributeList list)
          Remap UID attributes in a list of attributes, recursively iterating through nested sequences.
static void removeOrNullIdentifyingAttributes(AttributeList list, boolean keepUIDs, boolean keepDescriptors)
          Deprecated. retained for compatibility with previous releases; does NOT keep patient characteristics (such as might be needed for PET SUV calculations); use removeOrNullIdentifyingAttributes() instead
static void removeOrNullIdentifyingAttributes(AttributeList list, boolean keepUIDs, boolean keepDescriptors, boolean keepCharacteristics)
          Deidentify a list of attributes.
static void removeOrNullIdentifyingAttributes(AttributeList list, int handleUIDs, boolean keepDescriptors, boolean keepCharacteristics)
          Deidentify a list of attributes.
static void removeOrNullIdentifyingAttributes(AttributeList list, int handleUIDs, boolean keepDescriptors, boolean keepSeriesDescriptors, boolean keepCharacteristics)
          Deidentify a list of attributes.
protected static void removeOrNullIdentifyingAttributesRecursively(AttributeList list, int handleUIDs, boolean keepDescriptors, boolean keepSeriesDescriptors, boolean keepCharacteristics)
          Deidentify a list of attributes, recursively iterating through nested sequences.
protected static void removeOrRemapUIDAttributes(AttributeList list, int handleUIDs)
          Remove or remap UID attributes in a list of attributes, recursively iterating through nested sequences.
static void removeUIDAttributes(AttributeList list)
          Remove UID attributes in a list of attributes, recursively iterating through nested sequences.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

defaultValueForMissingNonZeroLengthStrings

protected static final String defaultValueForMissingNonZeroLengthStrings
See Also:
Constant Field Values

defaultValueForMissingPossiblyZeroLengthStrings

protected static final String defaultValueForMissingPossiblyZeroLengthStrings
See Also:
Constant Field Values

mapOfOriginalToReplacementUIDs

protected static Map mapOfOriginalToReplacementUIDs

uidGenerator

protected static UIDGenerator uidGenerator
Method Detail

addType1LongStringAttribute

protected static void addType1LongStringAttribute(AttributeList list,
                                                  AttributeTag t,
                                                  String value,
                                                  SpecificCharacterSet specificCharacterSet)
                                           throws DicomException
Throws:
DicomException

addType2LongStringAttribute

protected static void addType2LongStringAttribute(AttributeList list,
                                                  AttributeTag t,
                                                  String value,
                                                  SpecificCharacterSet specificCharacterSet)
                                           throws DicomException
Throws:
DicomException

addType3ShortTextAttribute

protected static void addType3ShortTextAttribute(AttributeList list,
                                                 AttributeTag t,
                                                 String value,
                                                 SpecificCharacterSet specificCharacterSet)
                                          throws DicomException
Throws:
DicomException

addType3ShortStringAttribute

protected static void addType3ShortStringAttribute(AttributeList list,
                                                   AttributeTag t,
                                                   String value,
                                                   SpecificCharacterSet specificCharacterSet)
                                            throws DicomException
Throws:
DicomException

addType3LongStringAttribute

protected static void addType3LongStringAttribute(AttributeList list,
                                                  AttributeTag t,
                                                  String value,
                                                  SpecificCharacterSet specificCharacterSet)
                                           throws DicomException
Throws:
DicomException

addType3DateTimeAttribute

protected static void addType3DateTimeAttribute(AttributeList list,
                                                AttributeTag t,
                                                String value)
                                         throws DicomException
Throws:
DicomException

addContributingEquipmentSequence

public static void addContributingEquipmentSequence(AttributeList list,
                                                    String manufacturer,
                                                    String institutionName,
                                                    String institutionalDepartmentName,
                                                    String institutionAddress,
                                                    String stationName,
                                                    String manufacturerModelName,
                                                    String deviceSerialNumber,
                                                    String softwareVersion)
                                             throws DicomException

Add the attributes of the Contributing Equipment Sequence to a list of attributes.

Attributes are added if supplied string value are added if not null. May be zero length.

Retains any existing items in Contributing Equipment Sequence.

Uses ("109104","DCM","De-identifying Equipment") for the Purpose of Reference.

Uses "Deidentified" for the Contribution Description.

Uses the current date and time for the Contribution DateTime.

Parameters:
list - the list of attributes to which to add the Contributing Equipment Sequence
manufacturer -
institutionName -
institutionalDepartmentName -
institutionAddress -
stationName -
manufacturerModelName -
deviceSerialNumber -
softwareVersion -
Throws:
DicomException

addContributingEquipmentSequence

public static void addContributingEquipmentSequence(AttributeList list,
                                                    boolean retainExistingItems,
                                                    CodedSequenceItem purposeOfReferenceCodeSequence,
                                                    String manufacturer,
                                                    String institutionName,
                                                    String institutionalDepartmentName,
                                                    String institutionAddress,
                                                    String stationName,
                                                    String manufacturerModelName,
                                                    String deviceSerialNumber,
                                                    String softwareVersion,
                                                    String contributionDescription,
                                                    String contributionDateTime)
                                             throws DicomException

Add the attributes of the Contributing Equipment Sequence to a list of attributes.

Attributes are added if supplied string value are added if not null. May be zero length.

Parameters:
list - the list of attributes to which to add the Contributing Equipment Sequence
retainExistingItems - if true, retain any existing items in Contributing Equipment Sequence, otherwise remove them
purposeOfReferenceCodeSequence -
manufacturer -
institutionName -
institutionalDepartmentName -
institutionAddress -
stationName -
manufacturerModelName -
deviceSerialNumber -
softwareVersion -
contributionDescription -
contributionDateTime -
Throws:
DicomException

addContributingEquipmentSequence

public static void addContributingEquipmentSequence(AttributeList list,
                                                    boolean retainExistingItems,
                                                    CodedSequenceItem purposeOfReferenceCodeSequence,
                                                    String manufacturer,
                                                    String institutionName,
                                                    String institutionalDepartmentName,
                                                    String institutionAddress,
                                                    String stationName,
                                                    String manufacturerModelName,
                                                    String deviceSerialNumber,
                                                    String softwareVersion,
                                                    String contributionDescription,
                                                    String contributionDateTime,
                                                    String[] operatorNames,
                                                    PersonIdentification[] operatorIdentifications)
                                             throws DicomException

Add the attributes of the Contributing Equipment Sequence to a list of attributes.

Attributes are added if supplied string value are added if not null. May be zero length.

Parameters:
list - the list of attributes to which to add the Contributing Equipment Sequence
retainExistingItems - if true, retain any existing items in Contributing Equipment Sequence, otherwise remove them
purposeOfReferenceCodeSequence -
manufacturer -
institutionName -
institutionalDepartmentName -
institutionAddress -
stationName -
manufacturerModelName -
deviceSerialNumber -
softwareVersion -
contributionDescription -
contributionDateTime -
operatorNames - an array of Strings of one or more operator's names, or null if not to be added
operatorIdentifications - an array of PersonIdentification, or null if not to be added
Throws:
DicomException

addClinicalTrialsAttributes

public static void addClinicalTrialsAttributes(AttributeList list,
                                               boolean replaceConventionalAttributes,
                                               String clinicalTrialSponsorName,
                                               String clinicalTrialProtocolID,
                                               String clinicalTrialProtocolName,
                                               String clinicalTrialSiteID,
                                               String clinicalTrialSiteName,
                                               String clinicalTrialSubjectID,
                                               String clinicalTrialSubjectReadingID,
                                               String clinicalTrialTimePointID,
                                               String clinicalTrialTimePointDescription,
                                               String clinicalTrialCoordinatingCenterName)
                                        throws DicomException

Add the attributes of the Clinical Trials Patient, Study and Series Modules, to a list of attributes.

Parameters:
list - the list of attributes to which to add the attributes
replaceConventionalAttributes - if true, use the supplied clinical trials attributes in place of the conventional ID attributes as well
clinicalTrialSponsorName -
clinicalTrialProtocolID -
clinicalTrialProtocolName -
clinicalTrialSiteID -
clinicalTrialSiteName -
clinicalTrialSubjectID -
clinicalTrialSubjectReadingID -
clinicalTrialTimePointID -
clinicalTrialTimePointDescription -
clinicalTrialCoordinatingCenterName -
Throws:
DicomException

isSafePrivateAttribute

public static boolean isSafePrivateAttribute(AttributeTag tag,
                                             AttributeList list)

Is a private tag safe.

Safe private attributes are all those that are known not to contain individually identifiable information.

Private creators are always considered safe.

Parameters:
tag - the tag in question
list - the list in which the tag is contained from which the private creator can be extracted

flushMapOfUIDs

public static void flushMapOfUIDs()

Flush (remove all entries in) the map of original UIDs to replacement UIDs.


remapUIDAttributes

public static void remapUIDAttributes(AttributeList list)
                               throws DicomException

Remap UID attributes in a list of attributes, recursively iterating through nested sequences.

Parameters:
list - the list of attributes to be cleaned up
Throws:
DicomException

removeUIDAttributes

public static void removeUIDAttributes(AttributeList list)
                                throws DicomException

Remove UID attributes in a list of attributes, recursively iterating through nested sequences.

Parameters:
list - the list of attributes to be cleaned up
Throws:
DicomException

removeOrRemapUIDAttributes

protected static void removeOrRemapUIDAttributes(AttributeList list,
                                                 int handleUIDs)
                                          throws DicomException

Remove or remap UID attributes in a list of attributes, recursively iterating through nested sequences.

Parameters:
list - the list of attributes to be cleaned up
handleUIDs - remove or remap the UIDs
Throws:
DicomException

removeOrNullIdentifyingAttributes

public static void removeOrNullIdentifyingAttributes(AttributeList list,
                                                     boolean keepUIDs,
                                                     boolean keepDescriptors)
                                              throws DicomException
Deprecated. retained for compatibility with previous releases; does NOT keep patient characteristics (such as might be needed for PET SUV calculations); use removeOrNullIdentifyingAttributes() instead

Deidentify a list of attributes.

De-identifies attributes within nested sequences, other than Context Sequence.

Handles UIDs as requested, including within nested sequences, including Context Sequence.

Also adds record that de-identification has been performed.

Parameters:
list - the list of attributes to be cleaned up
keepUIDs - if true, keep the UIDs
keepDescriptors - if true, keep the text description and comment attributes
Throws:
DicomException

removeOrNullIdentifyingAttributes

public static void removeOrNullIdentifyingAttributes(AttributeList list,
                                                     boolean keepUIDs,
                                                     boolean keepDescriptors,
                                                     boolean keepCharacteristics)
                                              throws DicomException

Deidentify a list of attributes.

De-identifies attributes within nested sequences, other than Context Sequence.

Handles UIDs as requested, including within nested sequences, including Context Sequence.

Also adds record that de-identification has been performed.

Parameters:
list - the list of attributes to be cleaned up
keepUIDs - if true, keep the UIDs
keepDescriptors - if true, keep the text description and comment attributes
keepCharacteristics - if true, keep patient characteristics (such as might be needed for PET SUV calculations)
Throws:
DicomException

removeOrNullIdentifyingAttributes

public static void removeOrNullIdentifyingAttributes(AttributeList list,
                                                     int handleUIDs,
                                                     boolean keepDescriptors,
                                                     boolean keepCharacteristics)
                                              throws DicomException

Deidentify a list of attributes.

De-identifies attributes within nested sequences, other than Context Sequence.

Handles UIDs as requested, including within nested sequences, including Context Sequence.

Also adds record that de-identification has been performed.

Parameters:
list - the list of attributes to be cleaned up
handleUIDs - keep, remove or remap the UIDs
keepDescriptors - if true, keep the text description and comment attributes
keepCharacteristics - if true, keep patient characteristics (such as might be needed for PET SUV calculations)
Throws:
DicomException

removeOrNullIdentifyingAttributes

public static void removeOrNullIdentifyingAttributes(AttributeList list,
                                                     int handleUIDs,
                                                     boolean keepDescriptors,
                                                     boolean keepSeriesDescriptors,
                                                     boolean keepCharacteristics)
                                              throws DicomException

Deidentify a list of attributes.

De-identifies attributes within nested sequences, other than Context Sequence.

Handles UIDs as requested, including within nested sequences, including Context Sequence.

Also adds record that de-identification has been performed.

Parameters:
list - the list of attributes to be cleaned up
handleUIDs - keep, remove or remap the UIDs
keepDescriptors - if true, keep the text description and comment attributes
keepSeriesDescriptors - if true, keep the series description even if all other descriptors are removed
keepCharacteristics - if true, keep patient characteristics (such as might be needed for PET SUV calculations)
Throws:
DicomException

removeOrNullIdentifyingAttributesRecursively

protected static void removeOrNullIdentifyingAttributesRecursively(AttributeList list,
                                                                   int handleUIDs,
                                                                   boolean keepDescriptors,
                                                                   boolean keepSeriesDescriptors,
                                                                   boolean keepCharacteristics)
                                                            throws DicomException

Deidentify a list of attributes, recursively iterating through nested sequences.

Does not process UIDs, but does remove sequences that would be invalidated by removing UIDs, e.g., Source Image Sequence and Referenced Image Sequence.

Parameters:
list - the list of attributes to be cleaned up
handleUIDs - keep, remove or remap the UIDs
keepDescriptors - if true, keep the text description and comment attributes
keepSeriesDescriptors - if true, keep the series description even if all other descriptors are removed
keepCharacteristics - if true, keep patient characteristics (such as might be needed for PET SUV calculations)
Throws:
DicomException

main

public static void main(String[] arg)

For testing.

Read a DICOM object from the file specified on the command line, and remove identifying attributes, and add sample clinical trials attributes.

Parameters:
arg -