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 a functionality to simplify the process of creating DICOM Directories for file-sets.
As a demonstration of a typical usage of the L_DicomDirXXX functionality, 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 L_DicomDirReset.
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:
Directly, using the function L_DicomDirInsertFile. 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 L_DicomDirInsertFile 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 L_DicomDirInsertFile function with the pszFileName parameter set to NULL. In this case, the INSERTDICOMFILECALLBACK 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 L_DicomDirSetOptions function and then calling this function with pszFileName set to NULL.
Indirectly, using the function L_DicomDirInsertDS. In this way, the Data Set contained by the DICOM file to be added is first loaded using the function L_DicomDirLoadDS. The data set is then added by calling L_DicomDirInsertDS.
The function L_DicomDirSetFileSetID can be used to identify the file-set by providing a simple humanly readable identifier. Also, the function L_DicomDirSetDescriptorFile can be used to specify a descriptor file (a "readme" file) for the file-set.
Once the DICOM Directory is ready, the function L_DicomDirSave 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 L_DicomDirLoadDS, 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 L_DicomDirXXX functionality. This example shows how to create a DICOM Directory for all the files in the folder "C:\Medical".
HDICOMDIR hDicomDir = L_DicomDirCreate(TEXT("C:\\Medical"), NULL);
// Add all the DICOM files to the Directory
// Save the DICOMDIR File
This topic provides information about high-level "Basic Directory" support. For information on low-level Basic Directory Key Element support, refer to Working with Key Elements.
Medical Web Viewer .NET
.NET, Java, Android, and iOS/macOS Assemblies
C API/C++ Class Libraries