com.pixelmed.database

## Class MinimalPatientStudySeriesInstanceModel

- java.lang.Object
- - com.pixelmed.database.DatabaseInformationModel
  - - com.pixelmed.database.DicomDatabaseInformationModel
    - - com.pixelmed.database.MinimalPatientStudySeriesInstanceModel

- Direct Known Subclasses:
    DoseReporterWithLegacyOCRAndAutoSendToRegistry.OurPatientStudySeriesInstanceModel, StudyReceiver.OurPatientStudySeriesInstanceModel

      public class MinimalPatientStudySeriesInstanceModel
      extends DicomDatabaseInformationModel

  The `MinimalPatientStudySeriesInstanceModel` class supports a minimal DICOM Patient/Study/Series/Instance model.

  Attributes of other DICOM entities than Patient, Study, Series, and Instance are included at the appropriate lower level entity.

  See Also:
    `DicomDictionaryForMinimalPatientStudySeriesInstanceModel`

- - ### Field Summary

    - ### Fields inherited from class com.pixelmed.database.DicomDatabaseInformationModel

      `derivedAcquisitionDateTimeColumnName, derivedContentDateTimeColumnName, derivedLossyImageCompressionColumnName, derivedSeriesDateTimeColumnName, derivedStudyDateTimeColumnName`

    - ### Fields inherited from class com.pixelmed.database.DatabaseInformationModel

      `additionalIndexMapOfColumnsToTables, databaseConnection, databaseRootName, defaultDatabaseRootName, dictionary, externalServerInstance, FILE_COPIED, FILE_REFERENCED, listsOfAttributesByInformationEntity, localFileName, localFileReferenceTypeColumnName, localParentReferenceColumnName, localPrimaryKeyColumnName, localRecordInsertionTimeColumnName, personNameCanonicalColumnNamePrefix, personNameCanonicalColumnNameSuffix, personNamePhoneticCanonicalColumnNamePrefix, personNamePhoneticCanonicalColumnNameSuffix, rootInformationEntity, userColumnName1, userColumnName2, userColumnName3, userColumnName4`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName)` Construct a model with the attributes from the default dictionary.
    `MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName, DicomDictionary dictionary)` Construct a model with the attributes from the specified dictionary.
    `MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName, java.lang.String databaseServerName)` Construct a model with the attributes from the default dictionary allowing external SQL access.
    `MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName, java.lang.String databaseServerName, DicomDictionary dictionary)` Construct a model with the attributes from the specified dictionary allowing external SQL access.
    `MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName, java.lang.String databaseServerName, DicomDictionary dictionary, java.lang.String databaseRootName)` Construct a model with the attributes from the specified dictionary allowing external SQL access.
    `MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName, java.lang.String databaseServerName, java.lang.String databaseRootName)` Construct a model with the attributes from the default dictionary allowing external SQL access.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `createAdditionalIndexes()` Create additional indexes on UIDs to optimize queries.
    `protected void` | `extendStatementStringWithMatchingAttributesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie)` Extend a SQL SELECT statement in the process of being constructed with matching clauses for the unique keys of the entity and all its parents.
    `InformationEntity` | `getChildTypeForParent(InformationEntity ie)` For an information entity (regardless of a particular instance), find the next information entity lower down in the information model hierarchy in the general case.
    `InformationEntity` | `getChildTypeForParent(InformationEntity ie, AttributeList list)` For a particular instance of an information entity, find the next information entity lower down in the information model hierarchy.
    `InformationEntity` | `getChildTypeForParent(InformationEntity ie, boolean concatenation)` For a particular instance of an information entity, find the next information entity lower down in the information model hierarchy.
    `java.lang.String` | `getDescriptiveColumnName(InformationEntity ie)` For a particular information entity, find the name of the column in the entity's database table containing the first of three descriptive attributes for the entity.
    `java.lang.String` | `getOtherDescriptiveColumnName(InformationEntity ie)` For a particular information entity, find the name of the column in the entity's database table containing the second of three descriptive attributes for the entity.
    `java.lang.String` | `getOtherOtherDescriptiveColumnName(InformationEntity ie)` For a particular information entity, find the name of the column in the entity's database table containing the third of three descriptive attributes for the entity.
    `java.lang.String` | `getUIDColumnNameForInformationEntity(InformationEntity ie)` For a particular information entity, find the name of the column in the entity's database table containing the DICOM UID for the entity.
    `protected boolean` | `isInformationEntityInModel(InformationEntity ie)` Is the entity in the information model ?
    `static void` | `main(java.lang.String[] arg)` For unit test purposes.

    - ### Methods inherited from class com.pixelmed.database.DicomDatabaseInformationModel

      `createPrimaryKeyForSelectedInformationEntity, extendCreateStatementStringWithDerivedAttributes, extendInsertStatementStringWithAttributeNamesForSelectedInformationEntity, extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity, extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity, extendInsertStatementStringWithDerivedAttributeNamesForSelectedInformationEntity, extendInsertStatementStringWithDerivedAttributeValuesForSelectedInformationEntity, extendInsertStatementStringWithPersonNameSearchColumnsForSelectedInformationEntity, extendInsertStatementStringWithPersonNameSearchValuesForSelectedInformationEntity, getDateFromDicomDateAndTime, getDateFromDicomDateAndTime, getNametoDescribeThisInstanceOfInformationEntity, getQueryResponseGeneratorFactory, getQuotedEscapedSingleStringValueOrNull, getQuotedSingleStringValueOrNull, getQuotedUnescapedSingleStringValueOrNull, getQuotedValueOrNULL, getRetrieveResponseGeneratorFactory, getTimestampFromDate, getTimestampFromDicomDateAndTime, getTimestampFromDicomDateAndTime`

    - ### Methods inherited from class com.pixelmed.database.DatabaseInformationModel

      `appendExactOrIsNullMatch, close, deleteRecord, deleteSelectedRecord, doCommonConstructorStuff, extendCreateStatementStringWithAnyExtraAttributes, extendCreateStatementStringWithUserColumns, finalize, findAllAttributeValuesForAllRecordsForThisInformationEntity, findAllAttributeValuesForAllRecordsForThisInformationEntityWithMatchingParent, findAllAttributeValuesForAllRecordsForThisInformationEntityWithSpecifiedKeyValue, findAllAttributeValuesForAllRecordsForThisInformationEntityWithSpecifiedParent, findAllAttributeValuesForAllRecordsForThisInformationEntityWithSpecifiedUID, findAllAttributeValuesForSelectedRecord, findSelectedAttributeValuesForSelectedRecord, getAttributeTagFromDatabaseColumnName, getDatabaseColumnNameFromDicomName, getDatabaseColumnNameFromDicomTag, getDicomNameFromDatabaseColumnName, getInformationEntityFromTag, getLocalFileNameColumnName, getLocalFileReferenceTypeColumnName, getLocalParentReferenceColumnName, getLocalPrimaryKeyColumnName, getLocalRecordInsertionTimeColumnName, getSQLTypeFromDicomValueRepresentation, getTableNameForInformationEntity, insertObject, insertObject, isInformationEntityInModel, localFileNameColumnName, toString, updateSelectedRecord`

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

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

- - ### Constructor Detail

    - #### MinimalPatientStudySeriesInstanceModel

          public MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName)
                                                 throws DicomException

      Construct a model with the attributes from the default dictionary.

      The dictionary `DicomDictionaryForMinimalPatientStudySeriesInstanceModel` is used.

      Parameters:
        `databaseFileName` -
      Throws:
        `DicomException`

    - #### MinimalPatientStudySeriesInstanceModel

          public MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName,
                                                        java.lang.String databaseServerName)
                                                 throws DicomException

      Construct a model with the attributes from the default dictionary allowing external SQL access.

      The dictionary `DicomDictionaryForMinimalPatientStudySeriesInstanceModel` is used.

      Parameters:
        `databaseFileName` -
        `databaseServerName` -
      Throws:
        `DicomException`

    - #### MinimalPatientStudySeriesInstanceModel

          public MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName,
                                                        java.lang.String databaseServerName,
                                                        java.lang.String databaseRootName)
                                                 throws DicomException

      Construct a model with the attributes from the default dictionary allowing external SQL access.

      The dictionary `DicomDictionaryForMinimalPatientStudySeriesInstanceModel` is used.

      Parameters:
        `databaseFileName` -
        `databaseServerName` -
        `databaseRootName` -
      Throws:
        `DicomException`

    - #### MinimalPatientStudySeriesInstanceModel

          public MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName,
                                                        DicomDictionary dictionary)
                                                 throws DicomException

      Construct a model with the attributes from the specified dictionary.

      Parameters:
        `databaseFileName` -
        `dictionary` -
      Throws:
        `DicomException`

    - #### MinimalPatientStudySeriesInstanceModel

          public MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName,
                                                        java.lang.String databaseServerName,
                                                        DicomDictionary dictionary)
                                                 throws DicomException

      Construct a model with the attributes from the specified dictionary allowing external SQL access.

      Parameters:
        `databaseFileName` -
        `databaseServerName` -
        `dictionary` -
      Throws:
        `DicomException`

    - #### MinimalPatientStudySeriesInstanceModel

          public MinimalPatientStudySeriesInstanceModel(java.lang.String databaseFileName,
                                                        java.lang.String databaseServerName,
                                                        DicomDictionary dictionary,
                                                        java.lang.String databaseRootName)
                                                 throws DicomException

      Construct a model with the attributes from the specified dictionary allowing external SQL access.

      Parameters:
        `databaseFileName` -
        `databaseServerName` -
        `dictionary` -
        `databaseRootName` -
      Throws:
        `DicomException`

  - ### Method Detail

    - #### isInformationEntityInModel

          protected boolean isInformationEntityInModel(InformationEntity ie)

      Description copied from class: `DatabaseInformationModel`

      Is the entity in the information model ?

      Will be specific to a particular concrete information model.

      Specified by:
        `isInformationEntityInModel` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the information entity
      Returns:
        true if the information entity is in the model

    - #### getChildTypeForParent

          public InformationEntity getChildTypeForParent(InformationEntity ie,
                                                         boolean concatenation)

      Description copied from class: `DatabaseInformationModel`

      For a particular instance of an information entity, find the next information entity lower down in the information model hierarchy.

      For a patient, this might be a study. For a series, this might be a concatenation or an instance, depending on both the information model and whether concatenations are to be considered in the model.

      This method may return a simpler view than the more general method, and is used when traversing the database tables.

      Specified by:
        `getChildTypeForParent` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the parent information entity
        `concatenation` - true if concatenations are to be considered in the model
      Returns:
        the child information entity

    - #### getChildTypeForParent

          public InformationEntity getChildTypeForParent(InformationEntity ie)

      Description copied from class: `DatabaseInformationModel`

      For an information entity (regardless of a particular instance), find the next information entity lower down in the information model hierarchy in the general case.

      For a patient, this might be a study.

      For a series, this might be a concatenation or an instance, depending on the information model.

      This method essentially returns the most complex model possible and is used when building the database table schema.

      Specified by:
        `getChildTypeForParent` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the parent information entity
      Returns:
        the child information entity

    - #### getChildTypeForParent

          public InformationEntity getChildTypeForParent(InformationEntity ie,
                                                         AttributeList list)

      Description copied from class: `DatabaseInformationModel`

      For a particular instance of an information entity, find the next information entity lower down in the information model hierarchy.

      For a patient, this might be a study. For a series, this might be a concatenation or an instance, depending on both the information model and the contents of the instance itself.

      This method may return a simpler view than the more general method, and is used when traversing the database tables.

      Specified by:
        `getChildTypeForParent` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the parent information entity
        `list` - an AttributeList, in which ConcatenationUID may or may not be present,as a flag to use concatenations in the model or not
      Returns:
        the child information entity

    - #### getDescriptiveColumnName

          public java.lang.String getDescriptiveColumnName(InformationEntity ie)

      Description copied from class: `DatabaseInformationModel`

      For a particular information entity, find the name of the column in the entity's database table containing the first of three descriptive attributes for the entity.

      For example, for an instance (e.g. an image), this might be the `InstanceNumber`. For a patient, this might be the `PatientName`.

      Specified by:
        `getDescriptiveColumnName` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the information entity
      Returns:
        the upper case name of a column in the table that describes the instance of the information entity

    - #### getOtherDescriptiveColumnName

          public java.lang.String getOtherDescriptiveColumnName(InformationEntity ie)

      Description copied from class: `DatabaseInformationModel`

      For a particular information entity, find the name of the column in the entity's database table containing the second of three descriptive attributes for the entity.

      For example, for an instance (e.g. an image), this might be the `InConcatenationNumber`. Frequently null for other entities.

      Specified by:
        `getOtherDescriptiveColumnName` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the information entity
      Returns:
        the upper case name of another column in the table that describes the instance of the information entity

    - #### getOtherOtherDescriptiveColumnName

          public java.lang.String getOtherOtherDescriptiveColumnName(InformationEntity ie)

      Description copied from class: `DatabaseInformationModel`

      For a particular information entity, find the name of the column in the entity's database table containing the third of three descriptive attributes for the entity.

      For example, for an instance (e.g. an image), this might be the `ImageComments`. For a patient, this might be the `PatientID`.

      Specified by:
        `getOtherOtherDescriptiveColumnName` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the information entity
      Returns:
        the upper case name of yet another column in the table that describes the instance of the information entity

    - #### getUIDColumnNameForInformationEntity

          public java.lang.String getUIDColumnNameForInformationEntity(InformationEntity ie)

      Description copied from class: `DatabaseInformationModel`

      For a particular information entity, find the name of the column in the entity's database table containing the DICOM UID for the entity.

      For example, for an instance (e.g. an image), this might be the name of the column corresponding to the SOP Instance UID.

      Specified by:
        `getUIDColumnNameForInformationEntity` in class `DatabaseInformationModel`
      Parameters:
        `ie` - the information entity
      Returns:
        the upper case name of the column in the table that describes the UID of the information entity, or null if none

    - #### extendStatementStringWithMatchingAttributesForSelectedInformationEntity

          protected void extendStatementStringWithMatchingAttributesForSelectedInformationEntity(java.lang.StringBuffer b,
                                                                                                 AttributeList list,
                                                                                                 InformationEntity ie)
                                                                                          throws DicomException

      Description copied from class: `DatabaseInformationModel`

      Extend a SQL SELECT statement in the process of being constructed with matching clauses for the unique keys of the entity and all its parents.

      For example, a model might specify the unique key for the patient to be `PatientID`, the study to be `StudyInstanceUID`, the series to be `SeriesInstanceUID` and so on. A match requested at the series level would then require `PatientID`, `StudyInstanceUID` and `SeriesInstanceUID` to match what was in the supplied `AttributeList`

      Called when inserting a new record for an instance of the entity.

      Specific to each concrete information model extending `DatabaseInformationModel`.

      Specified by:
        `extendStatementStringWithMatchingAttributesForSelectedInformationEntity` in class `DatabaseInformationModel`
      Parameters:
        `b` -
        `list` -
        `ie` -
      Throws:
        `DicomException`

    - #### createAdditionalIndexes

          protected void createAdditionalIndexes()
                                          throws DicomException

      Create additional indexes on UIDs to optimize queries.

      Overrides:
        `createAdditionalIndexes` in class `DatabaseInformationModel`
      Throws:
        `DicomException`

    - #### main

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

      For unit test purposes.

      Reads the DICOM files listed on the command line, loads them into the model and pops up a browser for viewing the tree hierarchy of the model and the values of each instance of an entity.

      Parameters:
        `arg` - a list of DICOM file names