Private creator 0031,0020 breaks anonymization
blairconrad opened this issue · comments
Blair Conrad commented
Anonymizing a dataset containing a value for 0031,0020, which would typically be a Private Creator Data Element, results in dicognito erroring out with
Error occurred while converting <_io.BytesIO object at 0x0000022DD4CEA160>. Aborting.
Traceback (most recent call last):
File "E:\Dev\dicognito\.venv\dicognito\Lib\site-packages\pydicom\tag.py", line 28, in tag_in_exception
yield
File "E:\Dev\dicognito\.venv\dicognito\Lib\site-packages\pydicom\dataset.py", line 2474, in walk
callback(self, data_element) # self = this Dataset
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Dev\dicognito\src\dicognito\anonymizer.py", line 151, in _anonymize_element
if handler(dataset, data_element):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Dev\dicognito\src\dicognito\idanonymizer.py", line 67, in __call__
if self._anonymize_mitra_global_patient_id(dataset, data_element):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Dev\dicognito\src\dicognito\idanonymizer.py", line 97, in _anonymize_mitra_global_patient_id
dataset[(mitra_linked_attributes_group << 16) + private_tag_group].value
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Dev\dicognito\.venv\dicognito\Lib\site-packages\pydicom\dataset.py", line 988, in __getitem__
elem = self._dict[tag]
~~~~~~~~~~^^^^^
KeyError: (0031, 0000)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "E:\Dev\dicognito\src\dicognito\__main__.py", line 76, in main
anonymizer.anonymize(dataset)
File "E:\Dev\dicognito\src\dicognito\anonymizer.py", line 134, in anonymize
dataset.walk(self._anonymize_element)
File "E:\Dev\dicognito\.venv\dicognito\Lib\site-packages\pydicom\dataset.py", line 2472, in walk
with tag_in_exception(tag):
File "D:\Users\amidu\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 155, in __exit__
self.gen.throw(typ, value, traceback)
File "E:\Dev\dicognito\.venv\dicognito\Lib\site-packages\pydicom\tag.py", line 32, in tag_in_exception
raise type(exc)(msg) from exc
KeyError: 'With tag (0031, 0020) got exception: (0031, 0000)\nTraceback (most recent call last):\n File "E:\\Dev\\dicognito\\.venv\\dicognito\\Lib\\site-packages\\pydicom\\tag.py", line 28, in tag_in_exception\n yield\n File "E:\\Dev\\dicognito\\.venv\\dicognito\\Lib\\site-packages\\pydicom\\dataset.py", line 2474, in walk\n callback(self, data_element) # self = this Dataset\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "E:\\Dev\\dicognito\\src\\dicognito\\anonymizer.py", line 151, in _anonymize_element\n if handler(dataset, data_element):\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "E:\\Dev\\dicognito\\src\\dicognito\\idanonymizer.py", line 67, in __call__\n if self._anonymize_mitra_global_patient_id(dataset, data_element):\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "E:\\Dev\\dicognito\\src\\dicognito\\idanonymizer.py", line 97, in _anonymize_mitra_global_patient_id\n dataset[(mitra_linked_attributes_group << 16) + private_tag_group].value\n ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "E:\\Dev\\dicognito\\.venv\\dicognito\\Lib\\site-packages\\pydicom\\dataset.py", line 988, in __getitem__\n elem = self._dict[tag]\n ~~~~~~~~~~^^^^^\nKeyError: (0031, 0000)\n'
It shouldn't error out.