Package com.pixelmed.dicom

## Class DicomDictionaryBase

- java.lang.Object
- - com.pixelmed.dicom.DicomDictionaryBase

- Direct Known Subclasses:
    `DicomDictionary`

      public abstract class DicomDictionaryBase
      extends java.lang.Object

  The `DicomDictionaryBase` class is an abstract class for creating and accessing a dictionary of DICOM attributes and associated information.

  Defines methods for creating a dictionary of DICOM attributes and associated information, and implements methods for accessing that information.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected java.util.HashMap` | `fullNameByTag` |
    `protected java.util.HashMap` | `informationEntityByTag` |
    `protected java.util.HashMap` | `nameByTag` |
    `protected java.util.HashMap` | `tagByName` |
    `protected java.util.TreeSet` | `tagList` |
    `protected java.util.HashMap` | `valueRepresentationsByTag` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DicomDictionaryBase()` | Instantiate a dictionary by calling all create methods of the concrete sub-class.

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected abstract void` | `createFullNameByTag()` | Concrete sub-classes implement this method to create a map of attribute full names from tags for each tag in the dictionary.
    `protected abstract void` | `createInformationEntityByTag()` | Concrete sub-classes implement this method to create a map of information entities for each tag in the dictionary.
    `protected abstract void` | `createNameByTag()` | Concrete sub-classes implement this method to create a map of attribute names from tags for each tag in the dictionary.
    `protected abstract void` | `createTagByName()` | Concrete sub-classes implement this method to create a map of tags from attribute names for each tag in the dictionary.
    `protected abstract void` | `createTagList()` | Concrete sub-classes implement this method to create a list of all tags in the dictionary.
    `protected abstract void` | `createValueRepresentationsByTag()` | Concrete sub-classes implement this method to create a map of value representations for each tag in the dictionary.
    `java.lang.String` | `getFullNameFromTag​(AttributeTag tag)` | Get the string full name of an attribute from its tag.
    `InformationEntity` | `getInformationEntityFromTag​(AttributeTag tag)` | Get the information entity (patient, study, and so on) of an attribute.
    `java.lang.String` | `getNameFromTag​(AttributeTag tag)` | Get the string name of an attribute from its tag.
    `AttributeTag` | `getTagFromName​(java.lang.String name)` | Get the tag of an attribute from its string name.
    `java.util.Iterator` | `getTagIterator()` | Get an `Iterator` to iterate through every tag in the dictionary.
    `byte[]` | `getValueRepresentationFromTag​(AttributeTag tag)` | Get the value representation of an attribute.
    `static void` | `main​(java.lang.String[] arg)` | Unit test.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### tagList

          protected java.util.TreeSet tagList

    - #### valueRepresentationsByTag

          protected java.util.HashMap valueRepresentationsByTag

    - #### informationEntityByTag

          protected java.util.HashMap informationEntityByTag

    - #### nameByTag

          protected java.util.HashMap nameByTag

    - #### tagByName

          protected java.util.HashMap tagByName

    - #### fullNameByTag

          protected java.util.HashMap fullNameByTag

  - ### Constructor Detail

    - #### DicomDictionaryBase

          public DicomDictionaryBase()

      Instantiate a dictionary by calling all create methods of the concrete sub-class.

  - ### Method Detail

    - #### createTagList

          protected abstract void createTagList()

      Concrete sub-classes implement this method to create a list of all tags in the dictionary.

    - #### createValueRepresentationsByTag

          protected abstract void createValueRepresentationsByTag()

      Concrete sub-classes implement this method to create a map of value representations for each tag in the dictionary.

    - #### createInformationEntityByTag

          protected abstract void createInformationEntityByTag()

      Concrete sub-classes implement this method to create a map of information entities for each tag in the dictionary.

    - #### createTagByName

          protected abstract void createTagByName()

      Concrete sub-classes implement this method to create a map of tags from attribute names for each tag in the dictionary.

    - #### createNameByTag

          protected abstract void createNameByTag()

      Concrete sub-classes implement this method to create a map of attribute names from tags for each tag in the dictionary.

    - #### createFullNameByTag

          protected abstract void createFullNameByTag()

      Concrete sub-classes implement this method to create a map of attribute full names from tags for each tag in the dictionary.

    - #### getValueRepresentationFromTag

          public byte[] getValueRepresentationFromTag​(AttributeTag tag)

      Get the value representation of an attribute.

      Parameters:
        `tag` - the tag of the attribute
      Returns:
        the value representation of the attribute as an array of two bytes

    - #### getInformationEntityFromTag

          public InformationEntity getInformationEntityFromTag​(AttributeTag tag)

      Get the information entity (patient, study, and so on) of an attribute.

      Parameters:
        `tag` - the tag of the attribute
      Returns:
        the information entity of the attribute

    - #### getTagFromName

          public AttributeTag getTagFromName​(java.lang.String name)

      Get the tag of an attribute from its string name.

      Though the DICOM standard does not formally define names to be used as keys for attributes, the convention used here is to use the name from the PS 3.6 Name field and remove spaces, apostrophes, capitalize first letters of words and so on to come up with a unique name for each attribute.

      Parameters:
        `name` - the string name of the attribute
      Returns:
        the tag of the attribute

    - #### getNameFromTag

          public java.lang.String getNameFromTag​(AttributeTag tag)

      Get the string name of an attribute from its tag.

      Parameters:
        `tag` - the tag of the attribute
      Returns:
        the string name of the attribute
      See Also:
        `getTagFromName(String)`

    - #### getFullNameFromTag

          public java.lang.String getFullNameFromTag​(AttributeTag tag)

      Get the string full name of an attribute from its tag.

      The full name may not be unique, so do not use it as a key (e.g., "Group Length").

      Parameters:
        `tag` - the tag of the attribute
      Returns:
        the string full name of the attribute

    - #### getTagIterator

          public java.util.Iterator getTagIterator()

      Get an `Iterator` to iterate through every tag in the dictionary.

      The order in which the dictionary attributes are returned is by ascending tag value.

      Returns:
        an iterator
      See Also:
        `AttributeTag.compareTo(Object)`

    - #### main

          public static void main​(java.lang.String[] arg)

      Unit test.

      Parameters:
        `arg` - ignored