Background

in earlier versions of DicomObjects (both .NET & COM), the same basic mechanism was used 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 mechanism 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, which is described here 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 .NET System

Overview

Whilst the old mechanism was been retained for backward compatibility, there is now an improved version. 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

Details

  • SOP classes are automatically arranged into different groups, which share common characteristics. The SOP classes included in each group are listed at the bottom of this page.

  • 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 ImplicitVRLittleEndian ExplicitVRLittleEndian ImplicitVRLittleEndian
NonImageObjects ExplicitVRLittleEndian ImplicitVRLittleEndian ExplicitVRLittleEndian ImplicitVRLittleEndian
Images8Bit ExplicitVRLittleEndian ImplicitVRLittleEndian JPEGLossless JPEGLosslessFirstOrder RLELossless ExplicitVRLittleEndian ImplicitVRLittleEndian JPEGLossless JPEGLosslessFirstOrder RLELossless JPEGExtended JPEGBaseline JPEG2000Lossless JPEG2000Lossy
Images16Bit ExplicitVRLittleEndian ImplicitVRLittleEndian JPEGLossless JPEGLosslessFirstOrder RLELossless ExplicitVRLittleEndian ImplicitVRLittleEndian JPEGLossless JPEGLosslessFirstOrder RLELossless JPEGExtended JPEGBaseline JPEG2000Lossless JPEG2000Lossy
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