29 if __name__ ==
"__main__":
31 if (len(sys.argv) < 2):
33 print "No input filename found"
36 filename = sys.argv[1]
41 reader.SetFileName(filename)
42 if (
not reader.Read()):
43 print "Unable to read %s" % (filename)
46 file = reader.GetFile()
49 fileMetaInformation = file.GetHeader()
50 print fileMetaInformation
53 dataSet = file.GetDataSet()
58 mediaStorage.SetFromFile(file)
61 print "This file is not a DICOMDIR (Media storage type: %s)" % (str(mediaStorage))
65 if (fileMetaInformation.FindDataElement(
gdcm.Tag(0x0002, 0x0002))):
66 sopClassUid = str(fileMetaInformation.GetDataElement(
gdcm.Tag(0x0002, 0x0002)).GetValue())
68 if (sopClassUid !=
"1.2.840.10008.1.3.10"):
70 print "This file is not a DICOMDIR"
73 print "Media Storage SOP Class not present"
77 iterator = dataSet.GetDES().begin()
78 while (
not iterator.equal(dataSet.GetDES().end())):
79 dataElement = iterator.next()
82 if (dataElement.GetTag() ==
gdcm.Tag(0x004, 0x1220)):
84 sequence = dataElement.GetValueAsSQ()
88 while (itemNr < sequence.GetNumberOfItems()):
89 item = sequence.GetItem(itemNr)
92 if (item.FindDataElement(
gdcm.Tag(0x0004, 0x1430))):
94 value = str(item.GetDataElement(
gdcm.Tag(0x0004, 0x1430)).GetValue())
97 while (value.strip() ==
"PATIENT"):
100 if (item.FindDataElement(
gdcm.Tag(0x0010, 0x0010))):
101 value = str(item.GetDataElement(
gdcm.Tag(0x0010, 0x0010)).GetValue())
105 if (item.FindDataElement(
gdcm.Tag(0x0010, 0x0020))):
106 value = str(item.GetDataElement(
gdcm.Tag(0x0010, 0x0020)).GetValue())
111 item = sequence.GetItem(itemNr)
112 if (item.FindDataElement(
gdcm.Tag(0x0004, 0x1430))):
113 value = str(item.GetDataElement(
gdcm.Tag(0x0004, 0x1430)).GetValue())
116 while (value.strip() ==
"STUDY"):
120 if (item.FindDataElement(
gdcm.Tag(0x0020, 0x000d))):
121 value = str(item.GetDataElement(
gdcm.Tag(0x0020, 0x000d)).GetValue())
125 if (item.FindDataElement(
gdcm.Tag(0x0008, 0x0020))):
126 value = str(item.GetDataElement(
gdcm.Tag(0x0008, 0x0020)).GetValue())
130 if (item.FindDataElement(
gdcm.Tag(0x0008, 0x1030))):
131 value = str(item.GetDataElement(
gdcm.Tag(0x0008, 0x1030)).GetValue())
136 item = sequence.GetItem(itemNr)
137 if (item.FindDataElement(
gdcm.Tag(0x0004, 0x1430))):
138 value = str(item.GetDataElement(
gdcm.Tag(0x0004, 0x1430)).GetValue())
141 while (value.strip() ==
"SERIES"):
145 if (item.FindDataElement(
gdcm.Tag(0x0020, 0x000e))):
146 value = str(item.GetDataElement(
gdcm.Tag(0x0020, 0x000e)).GetValue())
150 if (item.FindDataElement(
gdcm.Tag(0x0008, 0x0060))):
151 value = str(item.GetDataElement(
gdcm.Tag(0x0008, 0x0060)).GetValue())
156 if (item.FindDataElement(
gdcm.Tag(0x0008, 0x103e))):
157 value = str(item.GetDataElement(
gdcm.Tag(0x0008, 0x103e)).GetValue())
163 item = sequence.GetItem(itemNr)
164 if (item.FindDataElement(
gdcm.Tag(0x0004, 0x1430))):
165 value = str(item.GetDataElement(
gdcm.Tag(0x0004, 0x1430)).GetValue())
168 while (value.strip() ==
"IMAGE"):
172 if (item.FindDataElement(
gdcm.Tag(0x0004, 0x1511))):
173 value = str(item.GetDataElement(
gdcm.Tag(0x0004, 0x1511)).GetValue())
177 if (itemNr < sequence.GetNumberOfItems()):
182 item = sequence.GetItem(itemNr)
183 if (item.FindDataElement(
gdcm.Tag(0x0004, 0x1430))):
184 value = str(item.GetDataElement(
gdcm.Tag(0x0004, 0x1430)).GetValue())