ImFusion C++ SDK 4.4.0
Low-level/Core API

Low-level data structures for handling DICOM data. More...

Collaboration diagram for Low-level/Core API:

Detailed Description

Low-level data structures for handling DICOM data.

The core level of the ImFusion DICOM API revolves around a couple of central classes modeling the structure of DICOM data. As illustrated in the following class diagram, there are three essential abstract base classes/interfaces.

  • The Dicom::IOD class models a DICOM Information Object Definition. Inheriting classes implement specific DICOM SOP types and provide the code needed for reading/writing the corresponding type of DICOM data. In line with DICOM data, the IOD class therefore aggregates multiple Modules specifying the aspects of the SOP.
  • The Dicom::Module class serves as grouping element to wrap a set of DICOM tags into a semantic entity. Inheriting classes implement specific DICOM Modules and aggregate multiple Elements in order to access the DICOM tags.
  • The Dicom::Element class serves as high-level wrapper to access DICOM tags. Specializations of this class provide convenience methods to convert from/to given data types and add support for Sequences.

The set of IODs that are available for loading/saving DICOM data is managed by the IOD_Registry. This enables API developers and third-party plugins to extend the ImFusion Dicom Plugin with support for additional DICOM SOPs and other custom types.

Overview class diagram of the core API modeling the structure of DICOM data.

Error Handling

The core API of the ImFusion DICOM plugin provides a fine-grained error handling interface to track errors while handling DICOM files. The central class for this is the ErrorRecorder interface. Inherit from this class if you need to handle error occurring during loading/saving DICOM data. The majority of the classes in the Dicom plugin (e.g. Dicom::Module, Dicom::IOD, DicomLoader) implement this interface and automatically propagate errors up the different hierarchy levels.

A Dicom::Error distinguishes three severities:

  • Warnings can often be ignored but indicate a non-standard-compliant DICOM data (e.g. missing mandatory tags or invalid values). Warnings should not have an impact on the final display.
  • Non-critical errors might lead to wrong display but will not abort the loading.
  • Critical errors will abort loading, no image will be returned.

In case of warnings or non-critical errors, the user has to decide how to proceed with the loaded data.

Extending DICOM loading/saving

Since DICOM is a very extensive standard, the ImFusionLib might not load/store all the (meta)data that are required for a specific application. The best way to support these cases, is to extend the DicomLoader and/or DicomWriter. There are currently two options for this:

Creating a Dicom::Extension

Implementing a Dicom::Extension is the best way if you need to load/store additional metadata, like a custom DataComponent or change certain parameters of the image data. See Extensions for more information.

Creating a Dicom::IOD

In some cases, creating a Dicom::Extension is not enough. For example due to an unsupported SOP class which produces a wrong SharedImageSet. In those cases it might be necessary to derive a custom Dicom::IOD. Check the documentation of Dicom::IOD for details on the individual interfaces that need to be implemented.

Also check if it makes sense to derive from Dicom::MultiFrameImageIOD or Dicom::EnhancedMultiFrameImageIOD instead of writing a Dicom::IOD from scratch.

Namespaces

namespace  ImFusion::Dicom
 Low-level and intermediate-level interfaces for working with DICOM data.
namespace  ImFusion::Dicom::VolumeReconstruction
 Namespace containing helper functions to reconstruct potential volumes from a set of individual DICOM frames.

Classes

class  ImFusion::Dicom::ElementList
 Interface for classes that consist of Elements. More...
class  ImFusion::Dicom::value_error
 Exception specialization for DICOM element retrieval. More...
class  ImFusion::Dicom::Element< T >
 Dicom Element with a concrete value type. More...
struct  ImFusion::Dicom::Error
 Structure for storing errors occurring during loading/saving DICOM data. More...
class  ImFusion::Dicom::ErrorRecorder
 Error handling interface for the Dicom module. More...
struct  ImFusion::Dicom::FrameDescriptor
 Descriptor for a single DICOM frame that is used during the loading process as intermediate representation before eventually converting the image data to a SharedImageSet. More...
class  ImFusion::Dicom::IOD
 Base class of a Dicom Information Object Definition (IOD). More...
class  ImFusion::Dicom::IOD_Registry
 A registry that assigns a IOD implementation to a SOP class UID. More...
class  ImFusion::Dicom::ModuleList
 Interface for classes that consist of modules. More...
class  ImFusion::Dicom::Module
 Base class for Dicom Modules. More...
class  ImFusion::Dicom::SequenceItem
 Base class for sequence items. More...
class  ImFusion::Dicom::Sequence< T >
 Concrete sequence of items of type T, which must be derived from SequenceItem. More...
class  ImFusion::PhilipsQLabIOD
 Loads ultrasound volume stored by Philips QLab software. More...
Search Tab / S to search, Esc to close