New methods for selecting Transfer Syntax in .NET version 5.6 Onwards
Note - the information here only applies to the .NET version of DicomObjects, and only version 5.6 onwards
Background
All previous versions of DicomObjects, both .NET & COM have shared the same basic mechanism for selecting transfer syntaxes:
- When initiating, they can be created specifically using Contexts.Add etc.
- When accepting, they can be selected specifically using Context.AcceptedTS or Reject
- If neither of the above is used (as most people don't) then a default mechansim is used, based on the TransferSyntax registry hive, which allows:
- Setting of specific values for different SOP classes using TransferSyntax/SOP_class_UID
- A more generic setting for all other SOP classes in the TransferSyntax/ default value
This system has worked well for many years, but has 3 main drawbacks:
- It is complicated to set up a different value for each SOP class, and many developers do not know the characteristics of each (especially maximum bit depth)
- Most developers therefore use a generic list of Transfer syntaxes, which are not always appropriate for all SOP classes (e.g. using JPEG lossy baseline for images with > 8 bits such as CT or MR)
- It leads to "compressed" synatxes being offered for services such as C-FIND etc., which (though 100% legal in DICOM) is rather pointless and looks a little unprofessional.
The New System - overview
So......Whilst the old mechanism has been retained for backward compatibility in 5.6, an improved version has been added as an alternative. This provides the following benefits:
- The defaults are more sensible
- It is easier to change the chosen transfer syntaxes for a list of SOP classes in one operation
- Separate lists are maintained for offered and accepted transfer syntaxes
The New System - details
- SOP classes are automatically arranged into different groups, which share common characteristics. The groups are:
-
- Services
- DICOM Services such as verification and C-GET etc. Default values are:
- "1.2.840.10008.1.1"
- "1.2.840.10008.1.9"
- "1.2.840.10008.1.20.1"
- "1.2.840.10008.1.20.2"
- "1.2.840.10008.3.1.2.1.1"
- "1.2.840.10008.3.1.2.2.1"
- "1.2.840.10008.3.1.2.3.1"
- "1.2.840.10008.3.1.2.3.2"
- "1.2.840.10008.3.1.2.3.3"
- "1.2.840.10008.3.1.2.3.4"
- "1.2.840.10008.3.1.2.3.5"
- "1.2.840.10008.3.1.2.5.1"
- "1.2.840.10008.3.1.2.6.1"
- "1.2.840.10008.5.1.1.1"
- "1.2.840.10008.5.1.1.2"
- "1.2.840.10008.5.1.1.4"
- "1.2.840.10008.5.1.1.4.1"
- "1.2.840.10008.5.1.1.4.2"
- "1.2.840.10008.5.1.1.14"
- "1.2.840.10008.5.1.1.15"
- "1.2.840.10008.5.1.1.16"
- "1.2.840.10008.5.1.1.16.376"
- "1.2.840.10008.5.1.1.24.1"
- "1.2.840.10008.5.1.1.22"
- "1.2.840.10008.5.1.1.31"
- "1.2.840.10008.5.1.4.1.2.1.1"
- "1.2.840.10008.5.1.4.1.2.1.2"
- "1.2.840.10008.5.1.4.1.2.1.3"
- "1.2.840.10008.5.1.4.1.2.2.1"
- "1.2.840.10008.5.1.4.1.2.2.2"
- "1.2.840.10008.5.1.4.1.2.2.3"
- "1.2.840.10008.5.1.4.1.2.3.1"
- "1.2.840.10008.5.1.4.1.2.3.2"
- "1.2.840.10008.5.1.4.1.2.3.3"
- "1.2.840.10008.5.1.4.31"
-
- Images8Bit
- DICOM Images expected to contain only 8 bit pixel data. Default values are:
- "1.2.840.10008.5.1.4.1.1.3"
- "1.2.840.10008.5.1.4.1.1.3.1"
- "1.2.840.10008.5.1.4.1.1.6"
- "1.2.840.10008.5.1.4.1.1.6.1"
- "1.2.840.10008.5.1.4.1.1.7"
- "1.2.840.10008.5.1.4.1.1.77.1.1"
- "1.2.840.10008.5.1.4.1.1.77.1.1.1"
- "1.2.840.10008.5.1.4.1.1.77.1.2"
- "1.2.840.10008.5.1.4.1.1.77.1.2.1"
- "1.2.840.10008.5.1.4.1.1.77.1.3"
- "1.2.840.10008.5.1.4.1.1.77.1.4"
- "1.2.840.10008.5.1.4.1.1.77.1.4.1"
- "1.2.840.10008.5.1.4.1.1.77.1.5.1"
- "1.2.840.10008.5.1.4.1.1.7.1"
- "1.2.840.10008.5.1.4.1.1.7.2"
- "1.2.840.10008.5.1.4.1.1.7.4"
-
- Images16Bit
- DICOM Images expected to contain up to 16 bit pixel data. Default values are:
- "1.2.840.10008.5.1.4.1.1.1"
- "1.2.840.10008.5.1.4.1.1.1.1"
- "1.2.840.10008.5.1.4.1.1.1.1.1"
- "1.2.840.10008.5.1.4.1.1.1.2"
- "1.2.840.10008.5.1.4.1.1.1.2.1"
- "1.2.840.10008.5.1.4.1.1.1.3"
- "1.2.840.10008.5.1.4.1.1.1.3.1"
- "1.2.840.10008.5.1.4.1.1.2"
- "1.2.840.10008.5.1.4.1.1.2.1"
- "1.2.840.10008.5.1.4.1.1.4"
- "1.2.840.10008.5.1.4.1.1.4.1"
- "1.2.840.10008.5.1.4.1.1.4.2"
- "1.2.840.10008.5.1.4.1.1.5"
- "1.2.840.10008.5.1.4.1.1.12.1"
- "1.2.840.10008.5.1.4.1.1.12.2"
- "1.2.840.10008.5.1.4.1.1.12.3"
- "1.2.840.10008.5.1.4.1.1.20"
- "1.2.840.10008.5.1.4.1.1.77.1.5.2"
- "1.2.840.10008.5.1.4.1.1.7.3"
- "1.2.840.10008.5.1.4.1.1.128"
-
- Images32Bit
- DICOM Images expected to contain up to 32 bit pixel data. Default values are:
- "1.2.840.10008.5.1.4.1.1.481.2"
-
- NonImageObjects
- Persistent DICOM objects without pixel data. Default values are:
- "1.2.840.10008.1.3.10"
- "1.2.840.10008.5.1.1.23"
- "1.2.840.10008.5.1.1.24"
- "1.2.840.10008.5.1.1.26"
- "1.2.840.10008.5.1.1.27"
- "1.2.840.10008.5.1.1.29"
- "1.2.840.10008.5.1.1.30"
- "1.2.840.10008.5.1.4.1.1.8"
- "1.2.840.10008.5.1.4.1.1.9"
- "1.2.840.10008.5.1.4.1.1.9.1.1"
- "1.2.840.10008.5.1.4.1.1.9.1.2"
- "1.2.840.10008.5.1.4.1.1.9.1.3"
- "1.2.840.10008.5.1.4.1.1.9.2.1"
- "1.2.840.10008.5.1.4.1.1.9.3.1"
- "1.2.840.10008.5.1.4.1.1.9.4.1"
- "1.2.840.10008.5.1.4.1.1.10"
- "1.2.840.10008.5.1.4.1.1.11"
- "1.2.840.10008.5.1.4.1.1.11.1"
- "1.2.840.10008.5.1.4.1.1.66"
- "1.2.840.10008.5.1.4.1.1.66.1"
- "1.2.840.10008.5.1.4.1.1.66.2"
- "1.2.840.10008.5.1.4.1.1.77.1.5.3"
- "1.2.840.10008.5.1.4.1.1.88.11"
- "1.2.840.10008.5.1.4.1.1.88.22"
- "1.2.840.10008.5.1.4.1.1.88.33"
- "1.2.840.10008.5.1.4.1.1.88.40"
- "1.2.840.10008.5.1.4.1.1.88.50"
- "1.2.840.10008.5.1.4.1.1.88.59"
- "1.2.840.10008.5.1.4.1.1.88.65"
- "1.2.840.10008.5.1.4.1.1.104.1"
- "1.2.840.10008.5.1.4.1.1.129"
- "1.2.840.10008.5.1.4.1.1.481.1"
- "1.2.840.10008.5.1.4.1.1.481.3"
- "1.2.840.10008.5.1.4.1.1.481.4"
- "1.2.840.10008.5.1.4.1.1.481.5"
- "1.2.840.10008.5.1.4.1.1.481.6"
- "1.2.840.10008.5.1.4.1.1.481.7"
-
- User1, User2 & User3
- Spares for unusual user-defined groupings
- Associated with each group are 3 lists:
- A list of SOP classes to which it currently applies
- A list of Transfer Syntaxes to be offered when initiating an association
- A separate list of Transfer Syntaxes to be chosen (in preference order) when accepting an association
- The default lists of transfer syntaxes are as follows:
| Group | Offered Transfer Syntaxes | Accepted Transfer Syntaxes |
|---|---|---|
| Services |
ExplicitVRLittleEndian |
ExplicitVRLittleEndian |
| NonImageObjects |
ExplicitVRLittleEndian |
ExplicitVRLittleEndian |
| Images8Bit |
ExplicitVRLittleEndian |
ExplicitVRLittleEndian |
| Images16Bit |
ExplicitVRLittleEndian |
ExplicitVRLittleEndian |
| Images32Bit |
ExplicitVRLittleEndian |
ExplicitVRLittleEndian |