DCMTK Version 3.7.0 OFFIS DICOM Toolkit

dcmect: a library for working with Enhanced CT objects

# Introduction

This module contains classes to deal with DICOM Enhanced CT objects. It is able to create, load and save them. Several checks (as possible) make sure that only valid Enhanced CT objects are written. This module makes heavy use of the dcmiod module for managing common IOD attribute as well as the dcmfg module to manage the functional groups required forEnhanced CT objects.

The main class of this module is:

- EctEnhancedCT

# How to use dcmect

The dcmect module offers a main class, EctEnhancedCT, that should be used as a starting point to load or create Enhanced CT objects. The EctEnhancedCT class manages its data in a similar way as the related Enhanced CT IOD is organized in the standard. It holds a list of modules (see Supported Modules) and a set of functional group macros (see Supported Functional Group Macros) that together make up the Enhanced CT object.

## Creation

In order to create a new Enhanced CT object from scratch, a factory method EctEnhancedCT::create() must be used (regular constructor is protected)). create() asks for some required information that is needed in any case to create valid Enhanced CT objects.

Afterwards, the various attributes in the supported modules can be set. There is a get() method for each Module that returns a reference, e.g. EctEnhancedCT::getIODPatientModule() to retrieve the Patient Module in order to set the attribute Patient's Name (IODPatientModule::setPatientName())

An exception are the attributes of the Enhanced CT Image Module which can be set directly using set() methods on the EctEnhancedCT class, e.g. EctEnhancedCT::setISOCenterPosition().

Functional Groups are added in two ways:

1. EctEnhancedCT::addForAllFrames() adds a Functional Group as "shared", i.e. as being valid for all frames that will be part of this Enhanced CT object
2. EctEnhancedCT::Frames::addFrame() adds a new frame with pixel data and also takes a set of functional groups that should be added as "per-frame".

After constructing the Enhanced CT object it can be written to a DcmItem or to a DICOM file (EctEnhancedCT::writeDataset() versus EctEnhancedCT::saveFile()).

## Reading

An existing Enhanced CT object can be read using the static methods EctEnhancedCT::loadFile() (load from DICOM file) or EctEnhancedCT::loadDataset() (reading from an existing DcmItem object in memory).

For compression see section on compression.

## Saving

An existing Enhanced CT object can be written using the methods EctEnhancedCT::saveFile() (save to DICOM file) or EctEnhancedCT::writeDataset() (writing to an existing DcmItem object in memory). By default, EctEnhancedCT writes uncompressed files in transfer syntax Little Endian Explicit.

For compression section on compression.

## Modification

An existing EctEnhancedCT object can be modified in memory using the methods described above. Note that modification must be done careful and might lead to inconsistent objects. That's why it is not the recommended to modify existing objects with the dcmect module.

## Code Example

The dcmect/tests directory contains a file called t_roundtrip.cc which contains code that creates, writes and reads a Enhanced CT object so it is a quite complete demo case that shows how to use dcmect module.

## Compression

The EctEnhancedCT works on uncompressed pixel data. Therefore it first tries to decompress a file that is encoded using a compressed ("encapsulated") transfer syntax.

DCMTK supports various compressed transfer syntaxes, however, the related codecs that perform compression or decompression must be registered first by the application that wants to use them. EctEnhancedCT does not automatically register those codecs but leaves this to the user of the module. Once the codecs are registered, EctEnhancedCT will make use of them when trying to decompress the compressed dataset.

See for example the dcmjpeg module to see how registering (and later deregistering) codecs work.

When sving, EctEnhancedCT::saveFile() writes the file in Little Endian Explicit transfer syntax. By setting its parameter writeXfer to a compressed transfer syntax, dcmect tries to compress the file before writing. As when reading a dataset or file, this only works if the user registered the related decompression codecs first.

# Supported Modules

The following modules of the Enhanced CT IOD are supported:

- Patient Module
- Patient Study Module
- General Study Module
- General Series Module
- Enhanced CT Series Module
- Frame of Reference Module
- Synchronization Module
- General Equipment Module
- Enhanced General Equipment Module
- Image Pixel Module
- Multi-frame Functional Groups Module
- Multi-frame Dimension Module
- Acquisition Context Module
- Enhanced CT Module
- SOP Common Module
- Common Instance Reference Module

The following modules are not (yet) supported:

- Enhanced Contrast/Bolus Module
- Cardiac Synchronization Module
- Respiratory Synchronization Module
- Supplemental Palette Color Lookup Table Module
- Device Module
- Specimen Module
- Enhanced Multi-energy CT Acquisition Module
- ICC Profile Module
- Frame Extraction Module

There might be further unsupported optional modules that have been added to the DICOM Standard after the last update of this documentation.

# Supported Functional Group Macros

The following functional group macros are supported:

- Pixel Measures
- Frame Content
- Plane Position (Patient)
- Plane Orientation (Patient)
- Derivation Image
- Frame Anatomy
- Frame VOI LUT
- Real World Value Mapping
- Irradiation Event Identification
- CT Image Frame Type
- CT Acquisition Type
- CT Acquisition Details
- CT Table Dynamics
- CT Position
- CT Geometry
- CT Reconstruction
- CT Exposure
- CT X-Ray Details
- CT Pixel Value Transformation
- CT Additional X-Ray Source
- Temporal Position

The following functional group macros are not (yet) support:

- Referenced Image
- Cardiac Synchronization
- Contrast/Bolus Usage
- Respiratory Synchronization
- Multi-energy CT Processing
- Multi-energy CT Characteristics

There might be further unsupported optional functional group macros that have been added to the DICOM Standard after the last update of this documentation.

Generated on Mon Dec 15 2025 for DCMTK Version 3.7.0 by Doxygen 1.9.1