Network Transfer Syntax Control (NET)
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