Source code for deid.tests.test_dicom_fields

#!/usr/bin/env python

__author__ = "Vanessa Sochat"
__copyright__ = "Copyright 2016-2022, Vanessa Sochat"
__license__ = "MIT"

import os
import shutil
import tempfile
import unittest

from deid.data import get_dataset
from deid.dicom.fields import get_fields
from deid.tests.common import get_dicom
from deid.utils import get_installdir


[docs]class TestDicomFields(unittest.TestCase):
[docs] def setUp(self): self.pwd = get_installdir() self.deid = os.path.abspath("%s/../examples/deid/deid.dicom" % self.pwd) self.dataset = get_dataset("animals") # includes private tags self.tmpdir = tempfile.mkdtemp() print("\n######################START######################")
[docs] def tearDown(self): shutil.rmtree(self.tmpdir) print("\n######################END########################")
[docs] def test_field_expansion(self): print("Test deid.dicom.fields expand_field_expression") from deid.dicom.fields import expand_field_expression dicom = get_dicom(self.dataset) contenders = get_fields(dicom) print("Testing that field expansion works for basic tags") fields = expand_field_expression( dicom=dicom, field="endswith:Time", contenders=contenders ) # The fields returned should end in time for uid, field in fields.items(): assert field.name.endswith("Time") print("Testing that field expansion works for groups") fields = expand_field_expression( dicom=dicom, field="select:group:0020", contenders=contenders ) # The fields returned should be tag group 0020 for uid, field in fields.items(): assert field.element.tag.group == 0x0020 print("Testing that field expansion works for VR") fields = expand_field_expression( dicom=dicom, field="select:VR:TM", contenders=contenders ) # The fields returned should end in time for uid, field in fields.items(): assert field.name.endswith("Time") assert field.element.VR == "TM" print("Testing that we can also search private tags based on numbers.") fields = expand_field_expression( dicom=dicom, field="contains:0019", contenders=contenders ) # The fields returned should include tag group or element 0019 for uid, field in fields.items(): assert "0019" in uid print("Testing nested private tags") dataset = get_dataset("animals") # includes nested private tags dicom = get_dicom(dataset)
if __name__ == "__main__": unittest.main()