Class FileInfoDicom

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable

    public class FileInfoDicom
    extends FileInfoBase

    This class contains DICOM header information. It uses a table to store all the information about the tags. The FileDicomTagTable listing all known tags with empty values is in DicomDictionary. Also stored here is the offset of the image, the image number, the resolutions, some pixel data, the bytes allocated, and the dimensions of the image.

    This file also contains a table used for displaying the tag information. There is an option to display just the standard tags or both the standard and the private tags.

    Version:
    1.0 Aug 1, 1999
    See Also:
    FileDicom, FileDicomTag, FileDicomTagTable, JDialogFileInfoDICOM, Serialized Form
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Use serialVersionUID for interoperability.
        See Also:
        Constant Field Values
      • UNDEFINED_PIXEL_REP

        public static final int UNDEFINED_PIXEL_REP
        (0028,0103) Pixel Representations
        See Also:
        Constant Field Values
      • UNSIGNED_PIXEL_REP

        public static final int UNSIGNED_PIXEL_REP
        (0028,0103) Pixel Representations
        See Also:
        Constant Field Values
      • SIGNED_PIXEL_REP

        public static final int SIGNED_PIXEL_REP
        (0028,0103) Pixel Representations
        See Also:
        Constant Field Values
      • RLETAMARencapsulatedOffset

        private int RLETAMARencapsulatedOffset
      • anonymizeTagIDs

        public static final java.lang.String[] anonymizeTagIDs
        these are the DICOM tag ID numbers corresponding to the tags which are anonymized. They are kept here for simplicity of updating (when it is decided that other tags are must be anonymized) and to the advantage of calling objects.
      • bitsAllocated

        public short bitsAllocated
        Bits allocated per pixel.
      • bitsStored

        public short bitsStored
        Bits stored per pixel>
      • highBit

        public short highBit
      • bytesPerPixel

        public short bytesPerPixel
        Number of bytes per pixel.
      • originalDataType

        public int originalDataType
      • containsDICM

        public boolean containsDICM
        True if the DICOM file has the ID DICM at beginning at file pointer 128.
      • displayType

        public int displayType
        Data type.
      • instanceNumber

        public int instanceNumber
        DICOM instance number.
      • isCurrentTagSQ

        public boolean isCurrentTagSQ
        Whether the tag currently being processed and read in is a sequence tag.
      • multiFrame

        public boolean multiFrame
        True indicates image has multiple image planes in a single file.
      • olderVersion

        public boolean olderVersion
        True is image format < DICOM 3.0.
      • orientation

        public java.lang.String orientation
        Orientation - SAGITTAL, CORONAL, AXIAL.
      • photometricInterp

        public java.lang.String photometricInterp
        Type of image - color, monochrome etc.
      • pixelPaddingValue

        public java.lang.Short pixelPaddingValue
        Pixel Padding Value (0028, 0120). Value of pixels added to non-rectangular image to pad to rectangular format.
      • pixelRepresentation

        public short pixelRepresentation
        DICOM tag (0028, 0103) -1 = undefined 0 = unsigned 1 = signed
      • planarConfig

        public short planarConfig
        0 = RGB, RGB, 1 = R R R, G G G, B B B.
      • sliceLocation

        public float sliceLocation
        DICOM slice location.
      • xLocation

        public float xLocation
        DICOM x coordianate of the slice location.
      • yLocation

        public float yLocation
        DICOM y coordianate of the slice location.
      • zLocation

        public float zLocation
        DICOM z coordianate of the slice location.
      • tagTable

        private FileDicomTagTable tagTable
        Stores all the information about the DICOM tags.
      • isEnhancedDicom

        private boolean isEnhancedDicom
        whether it is enhanced dicom or not
      • lut

        private ModelLUT lut
        LUT for pre-processing of dicom file
    • Constructor Detail

      • FileInfoDicom

        public FileInfoDicom​(java.lang.String name,
                             java.lang.String directory,
                             int format)
        DICOM file information constructor. Used for the file info which contains the reference tag table for an image.
        Parameters:
        name - file name
        directory - file directory
        format - format (in this case, DICOM)
      • FileInfoDicom

        public FileInfoDicom​(java.lang.String name,
                             java.lang.String directory,
                             int format,
                             FileInfoDicom refInfo)
        DICOM file information constructor. Used for the file info which does NOT contain the reference tag table for an image.
        Parameters:
        name - file name
        directory - file directory
        format - format (in this case, DICOM)
        refInfo - The reference file info, containing the reference tag table.
    • Method Detail

      • setRLETAMARencapsulatedOffset

        public void setRLETAMARencapsulatedOffset​(int offset)
      • getRLETAMARencapsulatedOffset

        public int getRLETAMARencapsulatedOffset()
      • anonymize

        public final void anonymize​(boolean[] list,
                                    boolean removeValue)
        removes any and all personal information in the info that a doctor, patient, researcher may want to have deleted from the image, such as patient name or patient ID number--from this slice given by this fileInfoDicom.

        In addition, it allows the change or removal of a whole list of information, such as: ("0010,0010") Patient name; ("0010,0020") patient ID number; ("0010,0050") patient Insurance plan code sequence; ("0010,1000") other patient IDs; ("0010,1001") other patient names; ("0010,1040") patient address; ("0010,1060") patient mother's birth name; ("0010,2154") patient telephone numbers; ("0010,2160") patient ethnic group; ("0010,21D0") patient's last menstrual date; ("0010,21F0") patient religious preference; and ("0010,4000") patient comments.

        Parameters:
        list - the list of tags to remove; it MUST correspond to anonymizeTagIDs list (or spurious errors result), and it must be of the same length, or this will throw an IllegalArgumentException.
        Throws:
        java.lang.IllegalArgumentException - DOCUMENT ME!
      • anonymizeSequenceTags

        public void anonymizeSequenceTags​(boolean[] list,
                                          java.util.Vector<FileDicomSQItem> seqs,
                                          boolean removeValue)
        Method to anonymize the tags found in the DICOM supplement 55 that may appear in sequence tags. A list of sequence tags should be passed in so that you do not have to figure out which tags are sequences every time.
      • removePrivateTags

        public final void removePrivateTags​(FileDicomKey[] keys)
        Method to remove private tags from the file. No option is given to anonymize the values. Requires an array of DICOM keys.
      • removePrivateTagsWhite

        public final void removePrivateTagsWhite​(FileDicomKey[] keys)
      • removePrivateSequenceTags

        public final void removePrivateSequenceTags​(FileDicomKey[] keys,
                                                    java.util.Vector<FileDicomSQItem> seqs)
        Method to anonymize private tags that may appear in sequence tags. A list of sequence tags should be passed in so that you do not have to figure out which tags are sequences every time.
      • removePrivateSequenceTagsWhite

        public final void removePrivateSequenceTagsWhite​(FileDicomKey[] keys,
                                                         java.util.Vector<FileDicomSQItem> seqs)
      • anonymizePublicTags

        public final void anonymizePublicTags​(FileDicomKey[] keys,
                                              boolean removeValue)
        Method to anonymize public tags that do not appear in the DICOM Supplement 55. Like in the other anonymize methods, you may instead choose to replace the value with a blank string.
      • anonymizePublicSequenceTags

        public final void anonymizePublicSequenceTags​(FileDicomKey[] keys,
                                                      java.util.Vector<FileDicomSQItem> seqs,
                                                      boolean removeValue)
        Method to anonymize public tags not in the DICOM Supplement 55 that may appear in sequence tags. A list of sequence tags should be passed in so that you do not have to figure out which tags are sequences every time.
      • generateNewTagValue

        public java.lang.Object generateNewTagValue​(java.lang.String key,
                                                    boolean remove)
        Generates a new version of a particular tag that is DICOM compatible
        Parameters:
        key -
        Returns:
      • getLUT

        public final ModelLUT getLUT()
        returns the ModelLUT, if there, which might be specified by the 0028,1201, 0028,1202, 0028,1203 tags.
        Overrides:
        getLUT in class FileInfoBase
        Returns:
        DOCUMENT ME!
      • generateNewTagValue

        public static java.lang.Object generateNewTagValue​(java.lang.String key,
                                                           FileDicomTagTable tagTable,
                                                           boolean remove)
        Generates a new version of a particular tag in the given tag table with same length that is DICOM compatible
        Parameters:
        key -
        Returns:
      • generateNewTagValue

        public static java.lang.Object generateNewTagValue​(java.lang.String key,
                                                           java.lang.String strValue)
        Generates a new version of a particular tag in the standard DICOM tag table with same length that is DICOM compatible
        Parameters:
        key -
        Returns:
      • generateNewTagValue

        public static java.lang.Object generateNewTagValue​(java.lang.String key,
                                                           java.lang.String strValue,
                                                           FileDicomTagInfo.VR vr)
        Generates a new version of a particular tag given an arbitrary value and returns a DICOM compatible result
        Parameters:
        key -
        Returns:
      • generateNewTagValue

        public static java.lang.Object generateNewTagValue​(java.lang.String key,
                                                           java.lang.String strValue,
                                                           FileDicomTagInfo.VR vr,
                                                           boolean remove)
      • finalize

        public void finalize()
        Prepares this class for cleanup.
        Overrides:
        finalize in class FileInfoBase
      • setOriginalDataType

        public void setOriginalDataType​(int originalDataType)
      • getOriginalDataType

        public int getOriginalDataType()
      • getPatientOrientation

        public final TransMatrix getPatientOrientation()
        This method extracts directional cosines from the DICOM image header (tag = "0020, 0037"). Since the third row of transformation matrix is not given in the tag but can be derived by taking the cross product. The result is then put into a MIPAV transformation matrix object and returned.
        Returns:
        the transformation object extracted from the DICOM header. If this tag is null then the class returns null.
      • getTagTable

        public final FileDicomTagTable getTagTable()
        Returns a reference to the tag table for this dicom file info.
        Returns:
        A reference to the tag table.
      • setTagTable

        public final void setTagTable​(FileDicomTagTable tagTable)
        Parameters:
        tagTable - the tagTable to set, useful when a tag table has been populated from an enhanced DICOM series.
      • isMultiFrame

        public final boolean isMultiFrame()
        Accessor for the status of this dicom info.
        Returns:
        boolean true for images that think they are multi-frame.
      • setMultiFrame

        public final void setMultiFrame​(boolean multiFrame)
        Sets whether the DICOM image is a multiFrame image.
      • parseTagValue

        public final java.lang.String[] parseTagValue​(java.lang.String tagName)
        Parse the string for Objects seperated by "\". Uses the local method getValue to look at the Object held in the tag and decipher it for the user class into an array of strings.

        parseTagValue has not been updated for the newer versions of DicomTag

        Parameters:
        tagName - The name given as the key to search the Hashtable for.
        Returns:
        the array of Strings that were coded into the tag; a single string is given if the string in the tag has no "\" seporators. Each String in the array is a single value, and there are value multiplicity number of Strings in the array. NOTE: user class must convert this list to the correct type; (which does indicate user class knows what returned string is) If null then there were zero tokens in the tag
      • removeStampSecondaryCapture

        public void removeStampSecondaryCapture()
        In anonymization cases it may be necessary to hide the fact that MIPAV has processed this image (to remove any NIH affiliation). This method removes those tags that identify any secondary capture device information contained within the image, to make it appear as if the image has not been processed.
        Parameters:
        fileInfo - File info structure to set.
      • setInfoFromTags

        public final void setInfoFromTags()
        Public method for populating ModelImage data fields.
      • setInfoFromTags

        private final void setInfoFromTags​(FileDicomTagTable tagTable,
                                           boolean insideSequenceTag)
        After the tag table is filled, check for a number of tags to set up some fields in this file info object.
      • setSecondaryCaptureTags

        public void setSecondaryCaptureTags​(boolean isMultiFrame,
                                            int dataType)
        Changes a few dicom tags associated with a secondary capture image (marking it as having been created with mipav). This is often used after a new image is created as the result of an algorithm and the source image's file infos are copied over to the new image.
      • getModalityFromDicomStr

        protected static final int getModalityFromDicomStr​(java.lang.String value)
        Returns the MIPAV modality constant for a given DICOM modality string.
        Parameters:
        value - The DICOM modality tag value.
        Returns:
        The equivalent MIPAV modality constant (or UNKNOWN_MODALITY if there is no equivalent found).
      • setInfoFromTag

        protected final void setInfoFromTag​(FileDicomTag tag)
        Sets fields in this file info based on a given tag's key and value.
        Parameters:
        tag - The tag to use to update the file info fields (not all tags cause field changes).
      • isEnhancedDicom

        public boolean isEnhancedDicom()
      • setIsEnhancedDicom

        public void setIsEnhancedDicom​(boolean isEnhancedDicom)
      • setModalityFromDicomStr

        protected final void setModalityFromDicomStr​(java.lang.String value)
        Uses the DICOM tag value to set the Image modality field.
        Parameters:
        value - Object used is the value of DICOM tag (0008,0060)