Getting file id from DICOMDIR

All other questions regarding DCMTK

Moderator: Moderator Team

Post Reply
Message
Author
samnaction
Posts: 5
Joined: Tue, 2019-11-19, 10:11

Getting file id from DICOMDIR

#1 Post by samnaction »

I have the following DICOMDIR, how can I get all the reference file id from it

Code: Select all


# Dicom-File-Format

# Dicom-Meta-Information-Header
# Used TransferSyntax: Little Endian Explicit
(0002,0000) UL 192                                      #   4, 1 FileMetaInformationGroupLength
(0002,0001) OB 00\01                                    #   2, 1 FileMetaInformationVersion
(0002,0002) UI =MediaStorageDirectoryStorage            #  20, 1 MediaStorageSOPClassUID
(0002,0003) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797286.549] #  54, 1 MediaStorageSOPInstanceUID
(0002,0010) UI =LittleEndianExplicit                    #  20, 1 TransferSyntaxUID
(0002,0012) UI [1.2.276.0.7230010.3.0.3.6.5]            #  28, 1 ImplementationClassUID
(0002,0013) SH [OFFIS_DCMTK_365]                        #  16, 1 ImplementationVersionName

# Dicom-Data-Set
# Used TransferSyntax: Little Endian Explicit
(0004,1130) CS [DCMTK_MEDIA_DEMO]                       #  16, 1 FileSetID
(0004,1200) up 406                                      #   4, 1 OffsetOfTheFirstDirectoryRecordOfTheRootDirectoryEntity
(0004,1202) up 406                                      #   4, 1 OffsetOfTheLastDirectoryRecordOfTheRootDirectoryEntity
(0004,1212) US 0                                        #   2, 1 FileSetConsistencyFlag
(0004,1220) SQ (Sequence with explicit length #=9)      # 2564, 1 DirectoryRecordSequence
  (fffe,e000) na "Directory Record" PATIENT #=6           #  72, 1 Item
  #  offset=$406
    (0004,1400) up 0                                        #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 486                                      #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [PATIENT]                                #   8, 1 DirectoryRecordType
    (0010,0010) PN [abc]                                    #   4, 1 PatientName
    (0010,0020) LO [4]                                      #   2, 1 PatientID
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" STUDY #=10            # 162, 1 Item
  #  offset=$486
    (0004,1400) up 0                                        #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 656                                      #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [STUDY]                                  #   6, 1 DirectoryRecordType
    (0008,0020) DA [20200204]                               #   8, 1 StudyDate
    (0008,0030) TM [11]                                     #   2, 1 StudyTime
    (0008,0050) SH (no value available)                     #   0, 0 AccessionNumber
    (0008,1030) LO (no value available)                     #   0, 0 StudyDescription
    (0020,000d) UI [1.2.276.0.7230010.3.1.2.4262634275.2836.1580797281.535] #  54, 1 StudyInstanceUID
    (0020,0010) SH [2]                                      #   2, 1 StudyID
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" SERIES #=7            # 132, 1 Item
  #  offset=$656
    (0004,1400) up 0                                        #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 796                                      #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [SERIES]                                 #   6, 1 DirectoryRecordType
    (0008,0060) CS [SM]                                     #   2, 1 Modality
    (0020,000e) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536] #  54, 1 SeriesInstanceUID
    (0020,0011) IS [2020]                                   #   4, 1 SeriesNumber
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" IMAGE #=15            # 362, 1 Item
  #  offset=$796  refFileID="LEVEL0"
    (0004,1400) up 1166                                     #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 0                                        #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [IMAGE]                                  #   6, 1 DirectoryRecordType
    (0004,1500) CS [LEVEL0]                                 #   6, 1 ReferencedFileID
    (0004,1510) UI =VLWholeSlideMicroscopyImageStorage      #  30, 1 ReferencedSOPClassUIDInFile
    (0004,1511) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797283.545] #  54, 1 ReferencedSOPInstanceUIDInFile
    (0004,1512) UI =JPEGBaseline                            #  22, 1 ReferencedTransferSyntaxUIDInFile
    (0008,0008) CS [DERIVED\PRIMARY\VOLUME\NONE]            #  28, 4 ImageType
    (0020,0013) IS [1]                                      #   2, 1 InstanceNumber
    (0020,0052) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536.1] #  56, 1 FrameOfReferenceUID
    (0028,0008) IS [49729]                                  #   6, 1 NumberOfFrames
    (0028,0010) US 256                                      #   2, 1 Rows
    (0028,0011) US 256                                      #   2, 1 Columns
    (0028,0030) DS [0.000263\0.000263]                      #  18, 2 PixelSpacing
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" IMAGE #=15            # 360, 1 Item
  #  offset=$1166  refFileID="LEVEL1"
    (0004,1400) up 1534                                     #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 0                                        #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [IMAGE]                                  #   6, 1 DirectoryRecordType
    (0004,1500) CS [LEVEL1]                                 #   6, 1 ReferencedFileID
    (0004,1510) UI =VLWholeSlideMicroscopyImageStorage      #  30, 1 ReferencedSOPClassUIDInFile
    (0004,1511) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797283.537] #  54, 1 ReferencedSOPInstanceUIDInFile
    (0004,1512) UI =JPEGBaseline                            #  22, 1 ReferencedTransferSyntaxUIDInFile
    (0008,0008) CS [DERIVED\PRIMARY\VOLUME\NONE]            #  28, 4 ImageType
    (0020,0013) IS [2]                                      #   2, 1 InstanceNumber
    (0020,0052) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536.2] #  56, 1 FrameOfReferenceUID
    (0028,0008) IS [3136]                                   #   4, 1 NumberOfFrames
    (0028,0010) US 256                                      #   2, 1 Rows
    (0028,0011) US 256                                      #   2, 1 Columns
    (0028,0030) DS [0.001053\0.001053]                      #  18, 2 PixelSpacing
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" IMAGE #=15            # 360, 1 Item
  #  offset=$1534  refFileID="LEVEL2"
    (0004,1400) up 1902                                     #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 0                                        #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [IMAGE]                                  #   6, 1 DirectoryRecordType
    (0004,1500) CS [LEVEL2]                                 #   6, 1 ReferencedFileID
    (0004,1510) UI =VLWholeSlideMicroscopyImageStorage      #  30, 1 ReferencedSOPClassUIDInFile
    (0004,1511) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797283.541] #  54, 1 ReferencedSOPInstanceUIDInFile
    (0004,1512) UI =JPEGBaseline                            #  22, 1 ReferencedTransferSyntaxUIDInFile
    (0008,0008) CS [DERIVED\PRIMARY\VOLUME\NONE]            #  28, 4 ImageType
    (0020,0013) IS [3]                                      #   2, 1 InstanceNumber
    (0020,0052) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536.3] #  56, 1 FrameOfReferenceUID
    (0028,0008) IS [196]                                    #   4, 1 NumberOfFrames
    (0028,0010) US 256                                      #   2, 1 Rows
    (0028,0011) US 256                                      #   2, 1 Columns
    (0028,0030) DS [0.004214\0.004214]                      #  18, 2 PixelSpacing
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" IMAGE #=14            # 348, 1 Item
  #  offset=$1902  refFileID="LEVEL3"
    (0004,1400) up 2258                                     #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 0                                        #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [IMAGE]                                  #   6, 1 DirectoryRecordType
    (0004,1500) CS [LEVEL3]                                 #   6, 1 ReferencedFileID
    (0004,1510) UI =VLWholeSlideMicroscopyImageStorage      #  30, 1 ReferencedSOPClassUIDInFile
    (0004,1511) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797284.547] #  54, 1 ReferencedSOPInstanceUIDInFile
    (0004,1512) UI =JPEGBaseline                            #  22, 1 ReferencedTransferSyntaxUIDInFile
    (0008,0008) CS [DERIVED\PRIMARY\VOLUME\NONE]            #  28, 4 ImageType
    (0020,0013) IS [4]                                      #   2, 1 InstanceNumber
    (0020,0052) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536.4] #  56, 1 FrameOfReferenceUID
    (0028,0010) US 1024                                     #   2, 1 Rows
    (0028,0011) US 1024                                     #   2, 1 Columns
    (0028,0030) DS [0.000263\0.000263]                      #  18, 2 PixelSpacing
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" IMAGE #=14            # 348, 1 Item
  #  offset=$2258  refFileID="LEVEL4"
    (0004,1400) up 2614                                     #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 0                                        #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [IMAGE]                                  #   6, 1 DirectoryRecordType
    (0004,1500) CS [LEVEL4]                                 #   6, 1 ReferencedFileID
    (0004,1510) UI =VLWholeSlideMicroscopyImageStorage      #  30, 1 ReferencedSOPClassUIDInFile
    (0004,1511) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797283.539] #  54, 1 ReferencedSOPInstanceUIDInFile
    (0004,1512) UI =JPEGBaseline                            #  22, 1 ReferencedTransferSyntaxUIDInFile
    (0008,0008) CS [DERIVED\PRIMARY\VOLUME\NONE]            #  28, 4 ImageType
    (0020,0013) IS [5]                                      #   2, 1 InstanceNumber
    (0020,0052) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536.5] #  56, 1 FrameOfReferenceUID
    (0028,0010) US 396                                      #   2, 1 Rows
    (0028,0011) US 396                                      #   2, 1 Columns
    (0028,0030) DS [0.000263\0.000263]                      #  18, 2 PixelSpacing
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
  (fffe,e000) na "Directory Record" IMAGE #=14            # 348, 1 Item
  #  offset=$2614  refFileID="LEVEL5"
    (0004,1400) up 0                                        #   4, 1 OffsetOfTheNextDirectoryRecord
    (0004,1410) US 65535                                    #   2, 1 RecordInUseFlag
    (0004,1420) up 0                                        #   4, 1 OffsetOfReferencedLowerLevelDirectoryEntity
    (0004,1430) CS [IMAGE]                                  #   6, 1 DirectoryRecordType
    (0004,1500) CS [LEVEL5]                                 #   6, 1 ReferencedFileID
    (0004,1510) UI =VLWholeSlideMicroscopyImageStorage      #  30, 1 ReferencedSOPClassUIDInFile
    (0004,1511) UI [1.2.276.0.7230010.3.1.4.4262634275.2836.1580797283.543] #  54, 1 ReferencedSOPInstanceUIDInFile
    (0004,1512) UI =JPEGBaseline                            #  22, 1 ReferencedTransferSyntaxUIDInFile
    (0008,0008) CS [DERIVED\PRIMARY\VOLUME\NONE]            #  28, 4 ImageType
    (0020,0013) IS [6]                                      #   2, 1 InstanceNumber
    (0020,0052) UI [1.2.276.0.7230010.3.1.3.4262634275.2836.1580797281.536.6] #  56, 1 FrameOfReferenceUID
    (0028,0010) US 547                                      #   2, 1 Rows
    (0028,0011) US 609                                      #   2, 1 Columns
    (0028,0030) DS [0.000263\0.000263]                      #  18, 2 PixelSpacing
  (fffe,e00d) na "ItemDelimitationItem for re-encoding"   #   0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem for re-encod.) #   0, 0 SequenceDelimitationItem


Michael Onken
DCMTK Developer
Posts: 2049
Joined: Fri, 2004-11-05, 13:47
Location: Oldenburg, Germany
Contact:

Re: Getting file id from DICOMDIR

#2 Post by Michael Onken »

dcmdump +P ReferencedFileID DICOMDIR

samnaction
Posts: 5
Joined: Tue, 2019-11-19, 10:11

Re: Getting file id from DICOMDIR

#3 Post by samnaction »

I have written the following code to get the filename. Is there any other efficient way instead of looping ?

Code: Select all

void readDICOMDIR(const char* dir)
{
	DcmDicomDir dicomdir(dir);
	DcmDirectoryRecord *   root = &(dicomdir.getRootRecord());
	DcmTag refFileTag(DCM_ReferencedFileID);
	if (root != NULL)
	{
		
		DcmDirectoryRecord *   PatientRecord = NULL;
		DcmDirectoryRecord *   StudyRecord = NULL;
		DcmDirectoryRecord *   SeriesRecord = NULL;
		DcmDirectoryRecord *   FileRecord = NULL;
		OFString            tmpString;
		std::vector<std::string> fileName;
		if (root != NULL)
		{
			while (((PatientRecord = root->nextSub(PatientRecord)) != NULL))
			{
				while (((StudyRecord = PatientRecord->nextSub(StudyRecord)) != NULL))
				{
					
					while (((SeriesRecord = StudyRecord->nextSub(SeriesRecord)) != NULL))
					{
						
						while (((FileRecord = SeriesRecord->nextSub(FileRecord)) != NULL))
						{
							if (FileRecord->findAndGetOFString(DCM_ReferencedFileID, tmpString).good())
							{
								fileName.push_back(std::string(tmpString.c_str()));
							}
							
						}
					}
				}
			}
		}

	}
}

Michael Onken
DCMTK Developer
Posts: 2049
Joined: Fri, 2004-11-05, 13:47
Location: Oldenburg, Germany
Contact:

Re: Getting file id from DICOMDIR

#4 Post by Michael Onken »

Hi,

you could use DcmItem's findAndGetElements() to retrieve all occurrences of a tag.

I think you must load it as a regular DICOM file/dataset (not via DcmDicomDir), i.e.

Code: Select all

DcmFileformat dcmff; 
dcmff.loadFile("DICOMDIR"); 
dcmff.getDataset()->findAndGetElements(....)
...
Best regards,
Michael

Post Reply

Who is online

Users browsing this forum: Google [Bot], Semrush [Bot] and 1 guest