Source code for deid.tests.Xtest_dicom_header
#!/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.utils import get_installdir
[docs]class TestDicomHeader(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("dicom-cookies")
self.tmpdir = tempfile.mkdtemp()
print("\n######################START######################")
[docs] def tearDown(self):
shutil.rmtree(self.tmpdir)
print("\n######################END########################")
[docs] def test_get_fields(self):
print("Case 1: Test get fields from dataset")
from deid.dicom.header import get_fields
dicom = get_dicom(self.dataset)
fields = get_fields(dicom)
self.assertEqual(len(fields), 28)
self.assertTrue("PatientID" in fields)
[docs] def test_get_identifiers(self):
print("Testing deid.dicom get_identifiers")
from deid.dicom import get_identifiers
dicom_files = get_dicom(self.dataset, return_dir=True)
ids = get_identifiers(dicom_files)
self.assertTrue(len(ids) == 1)
self.assertTrue(isinstance(ids, dict))
self.assertEqual(len(ids["cookie-47"]), 7)
[docs] def test_replace_identifiers(self):
print("Testing deid.dicom replace_identifiers")
from pydicom import read_file
from deid.dicom import get_identifiers, replace_identifiers
dicom_files = get_dicom(self.dataset, return_dir=True)
ids = get_identifiers(dicom_files)
# Before blanking, 28 fields don't have blanks
notblanked = read_file(dicom_files[0])
notblanked_fields = [
x for x in notblanked.dir() if notblanked.get(x) != ""
] # 28
self.assertTrue(len(notblanked_fields) == 28)
updated_files = replace_identifiers(dicom_files, ids, output_folder=self.tmpdir)
# After replacing only 9 don't have blanks
blanked = read_file(updated_files[0])
blanked_fields = [x for x in blanked.dir() if blanked.get(x) != ""]
self.assertTrue(len(blanked_fields) == 9)
[docs]def get_dicom(dataset, return_dir=False):
"""helper function to load a dicom"""
from pydicom import read_file
from deid.dicom import get_files
dicom_files = get_files(dataset)
if return_dir:
return list(dicom_files)
return read_file(next(dicom_files))
if __name__ == "__main__":
unittest.main()