Class DicomDatabaseInformationModel
- java.lang.Object
-
- com.pixelmed.database.DatabaseInformationModel
-
- com.pixelmed.database.DicomDatabaseInformationModel
-
- Direct Known Subclasses:
MinimalPatientStudySeriesInstanceModel
,PatientStudySeriesConcatenationInstanceModel
,StudySeriesInstanceModel
public abstract class DicomDatabaseInformationModel extends DatabaseInformationModel
The
DicomDatabaseInformationModel
class is an abstract class that specializesDatabaseInformationModel
by adding methods specific to a typical DICOM composite object information model.These methods include support for naming the standard DICOM information entities, building insert statements using all the dictionary attributes for a partcular DICOM information entity, and generating local primary keys.
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
derivedAcquisitionDateTimeColumnName
protected static java.lang.String
derivedContentDateTimeColumnName
protected static java.lang.String
derivedLossyImageCompressionColumnName
protected static java.lang.String
derivedSeriesDateTimeColumnName
protected static java.lang.String
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 Description DicomDatabaseInformationModel(java.lang.String databaseFileName, InformationEntity rootInformationEntity, DicomDictionary dictionary)
DicomDatabaseInformationModel(java.lang.String databaseFileName, InformationEntity rootInformationEntity, DicomDictionary dictionary, java.lang.String databaseRootName)
DicomDatabaseInformationModel(java.lang.String databaseFileName, java.lang.String databaseServerName, InformationEntity rootInformationEntity, DicomDictionary dictionary)
DicomDatabaseInformationModel(java.lang.String databaseFileName, java.lang.String databaseServerName, InformationEntity rootInformationEntity, DicomDictionary dictionary, java.lang.String databaseRootName)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected java.lang.String
createPrimaryKeyForSelectedInformationEntity(InformationEntity ie)
Create a new unique key which may be used to identify a new instance of an entity.protected void
extendCreateStatementStringWithDerivedAttributes(java.lang.StringBuffer b, InformationEntity ie)
Extend a SQL CREATE TABLE statement in the process of being constructed with any derived attributes (columns) that the model requires.protected void
extendInsertStatementStringWithAttributeNamesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie)
Extend a SQL INSERT statement in the process of being constructed with the names of the attributes in the instance for the entity.protected void
extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie, java.lang.String fileName)
Deprecated.protected void
extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie, java.lang.String fileName, java.lang.String fileReferenceType)
Extend a SQL INSERT statement in the process of being constructed with the values of the attributes in the instance for the entity.protected void
extendInsertStatementStringWithDerivedAttributeNamesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie)
Extend a SQL INSERT statement in the process of being constructed with the names of the derived attributes in the instance for the entity.protected void
extendInsertStatementStringWithDerivedAttributeValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie)
Extend a SQL INSERT statement in the process of being constructed with the values of the derived attributes in the instance for the entity.protected void
extendInsertStatementStringWithPersonNameSearchColumnsForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie)
Extend a SQL INSERT statement in the process of being constructed with the names of the additional search columns derived from person name attributes in the instance for the entity.protected void
extendInsertStatementStringWithPersonNameSearchValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie)
Extend a SQL INSERT statement in the process of being constructed with the values of the additional search columns derived from person name attributes in the instance for the entity.java.util.Date
getDateFromDicomDateAndTime(java.lang.String dateTime)
java.util.Date
getDateFromDicomDateAndTime(java.lang.String date, java.lang.String time, java.lang.String timezone)
java.lang.String
getNametoDescribeThisInstanceOfInformationEntity(InformationEntity ie, java.util.Map returnedAttributes)
For a particular instance of an information entity, find a descriptive name for the entity suitable for rendering.QueryResponseGeneratorFactory
getQueryResponseGeneratorFactory(int debugLevel)
Get a factory to manufacture a query response generator capable of performing a query and returning the results.static java.lang.String
getQuotedEscapedSingleStringValueOrNull(Attribute a)
Make a quoted string value suitable for using in a SQL statement from a DICOM attribute.static java.lang.String
getQuotedSingleStringValueOrNull(Attribute a, boolean escapeSpecialCharacters)
Make a quoted string value suitable for using in a SQL statement from a DICOM attribute.static java.lang.String
getQuotedUnescapedSingleStringValueOrNull(Attribute a)
Make a quoted string value suitable for using in a SQL statement from a DICOM attribute.static java.lang.String
getQuotedValueOrNULL(java.lang.String value)
Make a quoted string value suitable for using in a SQL statement from a (possibly null or empty) string.RetrieveResponseGeneratorFactory
getRetrieveResponseGeneratorFactory(int debugLevel)
Get a factory to manufacture a retrieve response generator capable of performing a retrieve and returning the results.java.sql.Timestamp
getTimestampFromDate(java.util.Date javaDate)
java.sql.Timestamp
getTimestampFromDicomDateAndTime(java.lang.String sdatetime)
java.sql.Timestamp
getTimestampFromDicomDateAndTime(java.lang.String date, java.lang.String time, java.lang.String timezone)
-
Methods inherited from class com.pixelmed.database.DatabaseInformationModel
appendExactOrIsNullMatch, close, createAdditionalIndexes, deleteRecord, deleteSelectedRecord, doCommonConstructorStuff, extendCreateStatementStringWithAnyExtraAttributes, extendCreateStatementStringWithUserColumns, extendStatementStringWithMatchingAttributesForSelectedInformationEntity, finalize, findAllAttributeValuesForAllRecordsForThisInformationEntity, findAllAttributeValuesForAllRecordsForThisInformationEntityWithMatchingParent, findAllAttributeValuesForAllRecordsForThisInformationEntityWithSpecifiedKeyValue, findAllAttributeValuesForAllRecordsForThisInformationEntityWithSpecifiedParent, findAllAttributeValuesForAllRecordsForThisInformationEntityWithSpecifiedUID, findAllAttributeValuesForSelectedRecord, findSelectedAttributeValuesForSelectedRecord, getAttributeTagFromDatabaseColumnName, getChildTypeForParent, getChildTypeForParent, getChildTypeForParent, getDatabaseColumnNameFromDicomName, getDatabaseColumnNameFromDicomTag, getDescriptiveColumnName, getDicomNameFromDatabaseColumnName, getInformationEntityFromTag, getLocalFileNameColumnName, getLocalFileReferenceTypeColumnName, getLocalParentReferenceColumnName, getLocalPrimaryKeyColumnName, getLocalRecordInsertionTimeColumnName, getOtherDescriptiveColumnName, getOtherOtherDescriptiveColumnName, getSQLTypeFromDicomValueRepresentation, getTableNameForInformationEntity, getUIDColumnNameForInformationEntity, insertObject, insertObject, isInformationEntityInModel, isInformationEntityInModel, localFileNameColumnName, toString, updateSelectedRecord
-
-
-
-
Field Detail
-
derivedStudyDateTimeColumnName
protected static final java.lang.String derivedStudyDateTimeColumnName
- See Also:
- Constant Field Values
-
derivedSeriesDateTimeColumnName
protected static final java.lang.String derivedSeriesDateTimeColumnName
- See Also:
- Constant Field Values
-
derivedContentDateTimeColumnName
protected static final java.lang.String derivedContentDateTimeColumnName
- See Also:
- Constant Field Values
-
derivedAcquisitionDateTimeColumnName
protected static final java.lang.String derivedAcquisitionDateTimeColumnName
- See Also:
- Constant Field Values
-
derivedLossyImageCompressionColumnName
protected static final java.lang.String derivedLossyImageCompressionColumnName
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DicomDatabaseInformationModel
public DicomDatabaseInformationModel(java.lang.String databaseFileName, InformationEntity rootInformationEntity, DicomDictionary dictionary) throws DicomException
- Parameters:
databaseFileName
-rootInformationEntity
-dictionary
-- Throws:
DicomException
-
DicomDatabaseInformationModel
public DicomDatabaseInformationModel(java.lang.String databaseFileName, InformationEntity rootInformationEntity, DicomDictionary dictionary, java.lang.String databaseRootName) throws DicomException
- Parameters:
databaseFileName
-rootInformationEntity
-dictionary
-databaseRootName
-- Throws:
DicomException
-
DicomDatabaseInformationModel
public DicomDatabaseInformationModel(java.lang.String databaseFileName, java.lang.String databaseServerName, InformationEntity rootInformationEntity, DicomDictionary dictionary) throws DicomException
- Parameters:
databaseFileName
-rootInformationEntity
-dictionary
-- Throws:
DicomException
-
DicomDatabaseInformationModel
public DicomDatabaseInformationModel(java.lang.String databaseFileName, java.lang.String databaseServerName, InformationEntity rootInformationEntity, DicomDictionary dictionary, java.lang.String databaseRootName) throws DicomException
- Parameters:
databaseFileName
-rootInformationEntity
-dictionary
-databaseRootName
-- Throws:
DicomException
-
-
Method Detail
-
getNametoDescribeThisInstanceOfInformationEntity
public java.lang.String getNametoDescribeThisInstanceOfInformationEntity(InformationEntity ie, java.util.Map returnedAttributes)
Description copied from class:DatabaseInformationModel
For a particular instance of an information entity, find a descriptive name for the entity suitable for rendering.
For a patient, this might be the name
Patient
. For an instance, this will depend on the SOPClassUID, and might be anImage
, aWaveform
, etc.- Specified by:
getNametoDescribeThisInstanceOfInformationEntity
in classDatabaseInformationModel
- Parameters:
ie
-returnedAttributes
-- Returns:
- a human-readable string name of the entity
-
extendInsertStatementStringWithPersonNameSearchColumnsForSelectedInformationEntity
protected void extendInsertStatementStringWithPersonNameSearchColumnsForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie) throws DicomException
Extend a SQL INSERT statement in the process of being constructed with the names of the additional search columns derived from person name attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
Specific to each concrete information model extending
DatabaseInformationModel
.- Specified by:
extendInsertStatementStringWithPersonNameSearchColumnsForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which a select statement is being constructed- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
extendInsertStatementStringWithPersonNameSearchValuesForSelectedInformationEntity
protected void extendInsertStatementStringWithPersonNameSearchValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie) throws DicomException
Extend a SQL INSERT statement in the process of being constructed with the values of the additional search columns derived from person name attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
Specific to each concrete information model extending
DatabaseInformationModel
.- Specified by:
extendInsertStatementStringWithPersonNameSearchValuesForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which a select statement is being constructed- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
extendInsertStatementStringWithAttributeNamesForSelectedInformationEntity
protected void extendInsertStatementStringWithAttributeNamesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie) throws DicomException
Extend a SQL INSERT statement in the process of being constructed with the names of the attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
The default implementation adds values for all attributes that are present in the database tables and present in the instance.
At the INSTANCE level, InstanceNumber is always added.
At the INSTANCE level, ImageOrientationPatient within PlaneOrientationSequence within SharedFunctionalGroupsSequence is always added, if present.
- Specified by:
extendInsertStatementStringWithAttributeNamesForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which an insert statement is being constructed- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity
protected void extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie, java.lang.String fileName) throws DicomException
Deprecated.Extend a SQL INSERT statement in the process of being constructed with the values of the attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
The default implementation adds values for all attributes that are present in the database tables and present in the instance.
At the INSTANCE level, InstanceNumber is always added.
At the INSTANCE level, ImageOrientationPatient within PlaneOrientationSequence within SharedFunctionalGroupsSequence is always added, if present.
At the INSTANCE level, the file reference type is left empty since unknown.
- Specified by:
extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which an insert statement is being constructedfileName
- the local filename, which may be non-null forINSTANCE
level insertions- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity
protected void extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie, java.lang.String fileName, java.lang.String fileReferenceType) throws DicomException
Extend a SQL INSERT statement in the process of being constructed with the values of the attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
The default implementation adds values for all attributes that are present in the database tables and present in the instance.
At the INSTANCE level, InstanceNumber is always added.
At the INSTANCE level, ImageOrientationPatient within PlaneOrientationSequence within SharedFunctionalGroupsSequence is always added, if present.
- Specified by:
extendInsertStatementStringWithAttributeValuesForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which an insert statement is being constructedfileName
- the local filename, which may be non-null forINSTANCE
level insertionsfileReferenceType
- "C" for copied (i.e., delete on purge), "R" for referenced (i.e., do not delete on purge)- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
extendInsertStatementStringWithDerivedAttributeNamesForSelectedInformationEntity
protected void extendInsertStatementStringWithDerivedAttributeNamesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie) throws DicomException
Extend a SQL INSERT statement in the process of being constructed with the names of the derived attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
Specific to each concrete information model extending
DatabaseInformationModel
.- Specified by:
extendInsertStatementStringWithDerivedAttributeNamesForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which an insert statement is being constructed- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
getTimestampFromDate
public java.sql.Timestamp getTimestampFromDate(java.util.Date javaDate)
-
getDateFromDicomDateAndTime
public java.util.Date getDateFromDicomDateAndTime(java.lang.String date, java.lang.String time, java.lang.String timezone)
-
getDateFromDicomDateAndTime
public java.util.Date getDateFromDicomDateAndTime(java.lang.String dateTime)
-
getTimestampFromDicomDateAndTime
public java.sql.Timestamp getTimestampFromDicomDateAndTime(java.lang.String date, java.lang.String time, java.lang.String timezone)
-
getTimestampFromDicomDateAndTime
public java.sql.Timestamp getTimestampFromDicomDateAndTime(java.lang.String sdatetime)
-
extendInsertStatementStringWithDerivedAttributeValuesForSelectedInformationEntity
protected void extendInsertStatementStringWithDerivedAttributeValuesForSelectedInformationEntity(java.lang.StringBuffer b, AttributeList list, InformationEntity ie) throws DicomException
Extend a SQL INSERT statement in the process of being constructed with the values of the derived attributes in the instance for the entity.
Called when inserting a new record for an instance of the entity.
Specific to each concrete information model extending
DatabaseInformationModel
.- Specified by:
extendInsertStatementStringWithDerivedAttributeValuesForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedlist
- the DICOM attributes of a composite object, containing the attributes describing this instance of the entityie
- theInformationEntity
for which an insert statement is being constructed- Throws:
DicomException
- thrown if there are problems extracting the DICOM attributes
-
extendCreateStatementStringWithDerivedAttributes
protected void extendCreateStatementStringWithDerivedAttributes(java.lang.StringBuffer b, InformationEntity ie)
Extend a SQL CREATE TABLE statement in the process of being constructed with any derived attributes (columns) that the model requires.
Called when creating the tables for a new database.
Specific to each concrete information model extending
DatabaseInformationModel
. Defaults to adding no extra columns if not overridden (i.e. it is not abstract).For example, there may be dates and times derived from DICOM attributes.
- Overrides:
extendCreateStatementStringWithDerivedAttributes
in classDatabaseInformationModel
- Parameters:
b
- the statement being constructedie
- theInformationEntity
for which a create table statement is being constructed
-
createPrimaryKeyForSelectedInformationEntity
protected java.lang.String createPrimaryKeyForSelectedInformationEntity(InformationEntity ie)
Description copied from class:DatabaseInformationModel
Create a new unique key which may be used to identify a new instance of an entity.
Called when inserting a new record for an instance of the entity.
- Specified by:
createPrimaryKeyForSelectedInformationEntity
in classDatabaseInformationModel
- Parameters:
ie
-- Returns:
- string value of a unique key
-
getQuotedValueOrNULL
public static java.lang.String getQuotedValueOrNULL(java.lang.String value)
Make a quoted string value suitable for using in a SQL statement from a (possibly null or empty) string.
No attempt at escaping specially characters is made ... this is assumed already done.
Leading or trailing whitespace is trimmed.
- Parameters:
value
- the string, which may be null or zero length- Returns:
- the quoted string value of the attribute, or the (unquoted) string NULL if the value is null or zero length
-
getQuotedEscapedSingleStringValueOrNull
public static java.lang.String getQuotedEscapedSingleStringValueOrNull(Attribute a) throws DicomException
Make a quoted string value suitable for using in a SQL statement from a DICOM attribute.
Special characters should be escaped (actually they are just replaced with a hyphen).
Multiple values are collapsed and separated by the usual DICOM backslash delimiter character (which doesn't bother SQL).
- Parameters:
a
- the DICOM attribute, which may be null, zero length or multi-valued- Returns:
- the quoted string value of the attribute, or the (unquoted) string NULL if attribute is absent, has no value or is zero length
- Throws:
DicomException
-
getQuotedUnescapedSingleStringValueOrNull
public static java.lang.String getQuotedUnescapedSingleStringValueOrNull(Attribute a) throws DicomException
Make a quoted string value suitable for using in a SQL statement from a DICOM attribute.
Does NOT escape special characters.
Multiple values are collapsed and separated by the usual DICOM backslash delimiter character (which doesn't bother SQL).
- Parameters:
a
- the DICOM attribute, which may be null, zero length or multi-valued- Returns:
- the quoted string value of the attribute, or the (unquoted) string NULL if attribute is absent, has no value or is zero length
- Throws:
DicomException
-
getQuotedSingleStringValueOrNull
public static java.lang.String getQuotedSingleStringValueOrNull(Attribute a, boolean escapeSpecialCharacters) throws DicomException
Make a quoted string value suitable for using in a SQL statement from a DICOM attribute.
Special characters may be escaped (actually they are just replaced with a hyphen).
Multiple values are collapsed and separated by the usual DICOM backslash delimiter character (which doesn't bother SQL).
Leading or trailing whitespace in each value is trimmed.
- Parameters:
a
- the DICOM attribute, which may be null, zero length or multi-valuedescapeSpecialCharacters
- whether or not to escape special characters (currently only single quote)- Returns:
- the quoted string value of the attribute, or the (unquoted) string NULL if attribute is absent, has no value or is zero length
- Throws:
DicomException
-
getQueryResponseGeneratorFactory
public QueryResponseGeneratorFactory getQueryResponseGeneratorFactory(int debugLevel)
Get a factory to manufacture a query response generator capable of performing a query and returning the results.
- Overrides:
getQueryResponseGeneratorFactory
in classDatabaseInformationModel
- Parameters:
debugLevel
- zero for no debugging messages, higher values more verbose messages- Returns:
- the response generator factory
-
getRetrieveResponseGeneratorFactory
public RetrieveResponseGeneratorFactory getRetrieveResponseGeneratorFactory(int debugLevel)
Get a factory to manufacture a retrieve response generator capable of performing a retrieve and returning the results.
- Overrides:
getRetrieveResponseGeneratorFactory
in classDatabaseInformationModel
- Parameters:
debugLevel
- zero for no debugging messages, higher values more verbose messages- Returns:
- the response generator factory
-
-