Commit 69671ddcbdab5850cb3442afcb638b4577a3e89a
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,11 +118,11 @@ class LoadDicom: | ||
| 118 | # Retrieve header | 118 | # Retrieve header |
| 119 | header = file.GetHeader() | 119 | header = file.GetHeader() |
| 120 | stf = gdcm.StringFilter() | 120 | stf = gdcm.StringFilter() |
| 121 | + stf.SetFile(file) | ||
| 121 | 122 | ||
| 122 | field_dict = {} | 123 | field_dict = {} |
| 123 | data_dict = {} | 124 | data_dict = {} |
| 124 | 125 | ||
| 125 | - | ||
| 126 | tag = gdcm.Tag(0x0008, 0x0005) | 126 | tag = gdcm.Tag(0x0008, 0x0005) |
| 127 | ds = reader.GetFile().GetDataSet() | 127 | ds = reader.GetFile().GetDataSet() |
| 128 | if ds.FindDataElement(tag): | 128 | if ds.FindDataElement(tag): |
| @@ -138,53 +138,52 @@ class LoadDicom: | @@ -138,53 +138,52 @@ class LoadDicom: | ||
| 138 | else: | 138 | else: |
| 139 | encoding = "ISO_IR 100" | 139 | encoding = "ISO_IR 100" |
| 140 | 140 | ||
| 141 | - | ||
| 142 | # Iterate through the Header | 141 | # Iterate through the Header |
| 143 | iterator = header.GetDES().begin() | 142 | iterator = header.GetDES().begin() |
| 144 | while (not iterator.equal(header.GetDES().end())): | 143 | while (not iterator.equal(header.GetDES().end())): |
| 145 | dataElement = iterator.next() | 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 | # Iterate through the Data set | 163 | # Iterate through the Data set |
| 166 | iterator = dataSet.GetDES().begin() | 164 | iterator = dataSet.GetDES().begin() |
| 167 | while (not iterator.equal(dataSet.GetDES().end())): | 165 | while (not iterator.equal(dataSet.GetDES().end())): |
| 168 | dataElement = iterator.next() | 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 | # -------------- To Create DICOM Thumbnail ----------- | 189 | # -------------- To Create DICOM Thumbnail ----------- |