Creating DICOM Directories

In order to identify a DICOM file-set, and to facilitate accessing the information stored in the DICOM files of the file-set, the DICOM standard has defined the Basic Directory IOD. A DICOM file-set contains one or more DICOM files. One of the files contained in the file-set is the DICOMDIR file. The DICOMDIR file contains Dicom Directory information, which makes it easier to access the information contained in the other DICOM files in the file set. The DICOM files in the file-set are assigned File IDs, so that they can be referenced by the DICOMDIR File, which itself, is identified by a File ID of DICOMDIR.

LEADTOOLS provides the LDicomDir class, which is derived from LDicomDS, to simplify the process of creating DICOM Directories for file-sets.

As a demonstration of a typical usage of the LDicomDir class, let’s suppose that we need to build the DICOM Directory of the file-set defined by the files contained in the folder "C:\DICOM Images\" and in any subfolders. This folder is then the destination folder of the DICOMDIR File.

At the beginning of the application, the destination folder should be specified. This can be done either at construction time or later by using the function LDicomDir::ResetDicomDir.

Only the DICOM files within the destination folder (e.g., "C:\DICOM Images\Brain") or in a subfolder of this folder (e.g., "C:\DICOM Images\Patient1\Series1\Knee") can be added to the Dicom Directory. The File ID, which is used by the Dicom Directory to reference an added file, will be the relative path of the file. For instance, the File IDs of the two previous files would be "Brain" and "Patient1\Series1\Knee", respectively.

A DICOM file can be added to the Dicom Directory in one of two ways:

image\sqrblit.gif Directly, using the function LDicomDir::InsertDicomFile. The DICOM files contained in the destination folder can also be added individually or all at once using this function. Adding the files individually requires multiple calls to the LDicomDir::InsertDicomFile function, with the name of the file to add passed in the pszFileName parameter. All files in the destination folder can be added at once by calling the LDicomDir::InsertDicomFile function with the pszFileName parameter set to NULL. In this case, the LDicomDir::OnInsertDicomFile callback function is called for each file that is added so that the progress of adding the files can be monitored. The DICOM files in the subfolders of the destination folder can also be added by setting the bIncludeSubfolders member of a DICOMDIROPTIONS structure to TRUE, setting the new option using the LDicomDir::SetOptions function and then calling this function with pszFileName set to NULL.

image\sqrblit.gif Indirectly, using the function LDicomDir::InsertDicomDS. In this way, the Data Set contained by the DICOM file to be added is first loaded using the function LDicomDS::LoadDS. The data set is then added by calling LDicomDir::InsertDicomDS.

The function LDicomDir::SetFileSetID can be used to identify the file-set by providing a simple humanly readable identifier. Also, the function LDicomDir::SetDescriptorFile can be used to specify a descriptor file (a "readme" file) for the file-set.

The functions LDicomDir::SetOptions and LDicomDir::GetOptions let you get or set certain options that affect the behavior of the other functions of the class.

Once the DICOM Directory is ready, the function LDicomDir::SaveDicomDir can be called to create the DICOMDIR File and store the directory information. The DICOMDIR File is named "DICOMDIR" and is saved in the destination folder ("C:\DICOM Images\DICOMDIR").

The function LDicomDir::LoadDS, which overrides the function LDicomDS::LoadDS, can be used to load the Dicom Directory Data Set stored in an existing DICOMDIR file. The loaded Dicom Directory can then be manipulated using the various functions. For instance, additional DICOM files can be added to the Dicom Directory.

The sample below demonstrates how easy it is to create a DICOMDIR file using the LEADTOOLS LDicomDir class. This example shows how to create a DICOM Directory for all the files in the folder "C:\Medical".

LDicomDir DicomDir("C:\\Medical");

// Add all the DICOM files to the Directory
DicomDir.InsertDicomFile(NULL);

// Save the DICOMDIR File
DicomDir.SaveDicomDir();

This topic provides information about high-level "Basic Directory" support. For information on low-level Basic Directory Key Element support, refer to Working with Basic Directory Key Elements.