Association Management Functions
Association management functions manage DICOM Associations with Remote Applications. These functions include initiating an association, waiting for an association request, accepting an association, and examining the negotiation parameters, whether during the negotiation or in preparation for message exchange. Functions also exist to use secure associations. The presentation context list used during negotiation can be configured beforehand or constructed at run time.
Message Object Functions
Message object functions build, exchange, and parse DICOM Messages. Functions from this group allow an attribute value to be set or retrieved, according to the data type holding the value. Additionally, functions are provided to turn a parsed Message into a File for media storage.
Compression and Decompression Functions
Functions can be registered to facilitate JPEG compression and decompression. The library includes functions for this purpose that support many different formats and use embedded third party compression libraries. Functions that implement RLE encoding are also included.
DICOM Files Functions
Functions from this group manage DICOM Image Files and DICOMDIR Files. There are functions for building and parsing DICOM Files, similar to the Message object functions. This group also includes functions for maintaining and navigating the various records in a DICOMDIR File. Additionally, functions for converting parsed DICOM file into a Message, for message exchange, are included in this group.
Library Initialization and Registration Functions
Functions from this group are responsible for initializing the library run-time from the configuration files and register the local application by DICOM Application Entity Title.
Thread and Memory Management Functions
The library supports multi-threading whenever operating system allows access to an Association or Message from more than one thread at the same time. The library includes its own memory management system to minimize the number of requests to the system and optimize the storage of large numbers of small data objects. Bulk attributes, such as Pixel Data, are typically stored in temporary files in order to reduce memory use. The library provides functions that produce a memory usage report and force the release of memory from the built in management system. It is also possible to arrange to be responsible for the Pixel Data through a callback mechanism in order to exercise more control over memory use.
The library relies on configuration files that contain many operating options as well as the list of Remote Applications and the Service Lists to be used during Association Negotiation. Functions are included which allow most configuration options to be reset at run time. It is also possible to convert the configuration into source code that can be linked into your application in order to reduce disk access.
DICOM Object Data Structures
Structures defining various DICOM objects and message are centrally stored. The attributes that make up each class of Message or File are kept in a message info file. When a Message of a particular SOP Class, for a particular operation, is created, this file is accesssed in order to build an unpopulated list of the attributes in the Message, to help in building a valid Message. It is also possible, for performance reasons, to bypass this message file access. A function exists to validate an existing Message according to the applicable attribute list in this file. There is also a data dictionary file, which contains further information about each attribute.