def test_get_item_override_value(self, dicom_generator): filename, dicom = dicom_generator() dcm = Dicom(filename, dcm=dicom) dcm.set_anonymization_rules({'Field': 'Value'}) assert dcm['Field'] == 'Value'
def test_sort_anonymize_invalid_field(self, dicom_generator, tmpdir): filename, dicom = dicom_generator( PatientName='TO^BE^REMOVED', SeriesDescription='desc', SeriesNumber=1, ) dcm = Dicom(filename, dcm=dicom) # Overwrite the PatientID (this field does not exist) dcm.set_anonymization_rules({'PatientID': 'ANON'}) # Base Directory root = str(tmpdir) # Subdirectories directory = [ '%(PatientID)s', '%(SeriesDescription)s', ] # Filename format file_format = '%(ImageType)s' dcm.sort(root, directory, file_format, keep_original=False) destination = tmpdir.join('ANON').join('desc_Series0001') destination = str(destination.join('Unknown')) assert os.path.exists(destination) # Make sure the field was not added to the new DICOM newdcm = pydicom.read_file(destination) assert 'PatientID' not in newdcm
def test_sort_anonymize(self, dicom_generator, tmpdir): filename, dicom = dicom_generator( PatientName='TO^BE^REMOVED', SeriesDescription='desc', SeriesNumber=1, ) dcm = Dicom(filename, dcm=dicom) # Overwrite the PatientName dcm.set_anonymization_rules({'PatientName': 'ANON'}) # Base Directory root = str(tmpdir) # Subdirectories directory = [ '%(PatientName)s', '%(SeriesDescription)s', ] # Filename format file_format = '%(ImageType)s' dcm.sort(root, directory, file_format, keep_original=False) destination = tmpdir.join('ANON').join('desc_Series0001') destination = str(destination.join('Unknown')) assert os.path.exists(destination) # Ensure the DICOM was modified newdcm = pydicom.read_file(destination) assert newdcm.PatientName == 'ANON'
def test_anonymization_invalid_input(self, dicom_generator): filename, dataset = dicom_generator() dcm = Dicom(filename, dcm=dataset) with pytest.raises(Exception) as excinfo: dcm.set_anonymization_rules('') assert excinfo.value.args[0] == 'Anon rules must be a dictionary'
def test_anonymize_birthdate(self, dicom_generator): date = '20191101' filename, dataset = dicom_generator(PatientBirthDate='20200101') dcm = Dicom(filename, dcm=dataset) dcm.set_anonymization_rules({'PatientBirthDate': date}) assert dcm.overrides['PatientBirthDate'] == date assert dcm['PatientBirthDate'] == date
def test_is_anonymous(self, dicom_generator): filename, dataset = dicom_generator() dcm = Dicom(filename, dcm=dataset) assert dcm.is_anonymous() is False # Set anonimization rules dcm.set_anonymization_rules({'PatientName': 'ANON'}) assert dcm.is_anonymous() is True
def test_anonymize_age(self, dicom_generator): filename, dataset = dicom_generator(PatientAge='030Y', PatientBirthDate='19890201', StudyDate='20190301') dcm = Dicom(filename, dcm=dataset) dcm.set_anonymization_rules({'PatientBirthDate': ''}) assert dcm['PatientAge'] == '030Y' assert dcm['PatientBirthDate'] == '19890101'
def test_anonymization(self, dicom_generator): filename, dataset = dicom_generator() dcm = Dicom(filename, dcm=dataset) adict = {'Key': 'Value'} dcm.set_anonymization_rules(adict) assert dcm.anonymization_lookup == adict assert dcm.overrides['Key'] == 'Value' assert dcm['Key'] == 'Value'
def test_anonymize_empty_birthdate(self, dicom_generator): filename, dataset = dicom_generator( PatientBirthDate='20170601', StudyDate='20180201', ) dcm = Dicom(filename, dcm=dataset) dcm.set_anonymization_rules({'PatientBirthDate': ''}) # Maintains the patient age but uses January 01 assert dcm.overrides['PatientBirthDate'] == '20180101' assert dcm['PatientBirthDate'] == '20180101' # 1-day Old dataset.PatientBirthDate = '20180131' dcm.set_anonymization_rules({'PatientBirthDate': ''}) assert dcm.overrides['PatientBirthDate'] == '20180101' assert dcm['PatientBirthDate'] == '20180101'