Commit 69671ddcbdab5850cb3442afcb638b4577a3e89a

Authored by Thiago Franco de Moraes
1 parent 45e979a1
Exists in master

Checking if a tag element has undefined length

Showing 1 changed file with 36 additions and 37 deletions   Show diff stats
invesalius/reader/dicom_reader.py
... ... @@ -118,11 +118,11 @@ class LoadDicom:
118 118 # Retrieve header
119 119 header = file.GetHeader()
120 120 stf = gdcm.StringFilter()
  121 + stf.SetFile(file)
121 122  
122 123 field_dict = {}
123 124 data_dict = {}
124 125  
125   -
126 126 tag = gdcm.Tag(0x0008, 0x0005)
127 127 ds = reader.GetFile().GetDataSet()
128 128 if ds.FindDataElement(tag):
... ... @@ -138,53 +138,52 @@ class LoadDicom:
138 138 else:
139 139 encoding = "ISO_IR 100"
140 140  
141   -
142 141 # Iterate through the Header
143 142 iterator = header.GetDES().begin()
144 143 while (not iterator.equal(header.GetDES().end())):
145 144 dataElement = iterator.next()
146   - stf.SetFile(file)
147   - tag = dataElement.GetTag()
148   - data = stf.ToStringPair(tag)
149   - stag = tag.PrintAsPipeSeparatedString()
150   -
151   - group = str(tag.GetGroup())
152   - field = str(tag.GetElement())
  145 + if not dataElement.IsUndefinedLength():
  146 + tag = dataElement.GetTag()
  147 + data = stf.ToStringPair(tag)
  148 + stag = tag.PrintAsPipeSeparatedString()
153 149  
154   - tag_labels[stag] = data[0]
155   -
156   - if not group in data_dict.keys():
157   - data_dict[group] = {}
  150 + group = str(tag.GetGroup())
  151 + field = str(tag.GetElement())
158 152  
159   - if not(utils.VerifyInvalidPListCharacter(data[1])):
160   - data_dict[group][field] = data[1].decode(encoding)
161   - else:
162   - data_dict[group][field] = "Invalid Character"
  153 + tag_labels[stag] = data[0]
  154 +
  155 + if not group in data_dict.keys():
  156 + data_dict[group] = {}
  157 +
  158 + if not(utils.VerifyInvalidPListCharacter(data[1])):
  159 + data_dict[group][field] = data[1].decode(encoding)
  160 + else:
  161 + data_dict[group][field] = "Invalid Character"
163 162  
164   -
165 163 # Iterate through the Data set
166 164 iterator = dataSet.GetDES().begin()
167 165 while (not iterator.equal(dataSet.GetDES().end())):
168 166 dataElement = iterator.next()
169   -
170   - stf.SetFile(file)
171   - tag = dataElement.GetTag()
172   - data = stf.ToStringPair(tag)
173   - stag = tag.PrintAsPipeSeparatedString()
174   -
175   - group = str(tag.GetGroup())
176   - field = str(tag.GetElement())
177   -
178   - tag_labels[stag] = data[0]
179   -
180   - if not group in data_dict.keys():
181   - data_dict[group] = {}
182   -
183   - if not(utils.VerifyInvalidPListCharacter(data[1])):
184   - data_dict[group][field] = data[1].decode(encoding, 'replace')
185   - else:
186   - data_dict[group][field] = "Invalid Character"
187   -
  167 + if not dataElement.IsUndefinedLength():
  168 + tag = dataElement.GetTag()
  169 + # if (tag.GetGroup() == 0x0009 and tag.GetElement() == 0x10e3) \
  170 + # or (tag.GetGroup() == 0x0043 and tag.GetElement() == 0x1027):
  171 + # continue
  172 + data = stf.ToStringPair(tag)
  173 + stag = tag.PrintAsPipeSeparatedString()
  174 +
  175 + group = str(tag.GetGroup())
  176 + field = str(tag.GetElement())
  177 +
  178 + tag_labels[stag] = data[0]
  179 +
  180 + if not group in data_dict.keys():
  181 + data_dict[group] = {}
  182 +
  183 + if not(utils.VerifyInvalidPListCharacter(data[1])):
  184 + data_dict[group][field] = data[1].decode(encoding, 'replace')
  185 + else:
  186 + data_dict[group][field] = "Invalid Character"
188 187  
189 188  
190 189 # -------------- To Create DICOM Thumbnail -----------
... ...