Exemplo n.º 1
0
    def setup_class(cls):
        TestOneStudyTwoSerieses.dataset1 = load_instance(patient_number=1, study_number=1, series_number=1)
        TestOneStudyTwoSerieses.dataset2 = load_instance(patient_number=1, study_number=1, series_number=2)

        anonymizer = Anonymizer()
        anonymizer.anonymize(TestOneStudyTwoSerieses.dataset1)
        anonymizer.anonymize(TestOneStudyTwoSerieses.dataset2)
    def setup_class(cls):
        TestOnePatientTwoStudies.dataset1 = load_instance(patient_number=1, study_number=1)
        TestOnePatientTwoStudies.dataset2 = load_instance(patient_number=1, study_number=2)

        anonymizer = Anonymizer(seed="")
        anonymizer.anonymize(TestOnePatientTwoStudies.dataset1)
        anonymizer.anonymize(TestOnePatientTwoStudies.dataset2)
Exemplo n.º 3
0
def test_id_prefix_and_suffix_are_both_added_to_id():
    with load_instance() as dataset:
        anonymizer = Anonymizer(id_prefix="C3", id_suffix="3C")
        anonymizer.anonymize(dataset)

        actual = dataset.PatientID

        assert actual.startswith("C3") and actual.endswith("3C")
Exemplo n.º 4
0
def test_id_suffix_is_appended_to_id(element_path):
    with load_instance() as dataset:
        anonymizer = Anonymizer(id_suffix="1A")
        anonymizer.anonymize(dataset)

        actual = eval("dataset." + element_path)

        assert actual.endswith("1A")
Exemplo n.º 5
0
def test_id_prefix_is_prepended_to_id(element_path):
    with load_instance() as dataset:
        anonymizer = Anonymizer(id_prefix="A1")
        anonymizer.anonymize(dataset)

        actual = eval("dataset." + element_path)

        assert actual.startswith("A1")
Exemplo n.º 6
0
def test_extra_patient_attributes_are_removed(element_name):
    with load_test_instance() as dataset:
        assert element_name in dataset

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        assert element_name not in dataset
Exemplo n.º 7
0
def test_deidentification_method_set_properly(initial, expected):
    with load_test_instance() as dataset:
        ensure_attribute_is(dataset, "DeidentificationMethod", initial)

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        assert_attribute_is(dataset, "DeidentificationMethod", expected)
Exemplo n.º 8
0
def test_id_suffix_is_appended_to_each_other_patient_id():
    with load_instance() as dataset:
        dataset.OtherPatientIDs = r"ID1\ID2"
        anonymizer = Anonymizer(id_suffix="2B")
        anonymizer.anonymize(dataset)

        actual = dataset.OtherPatientIDs

        assert actual[0].endswith("2B")
        assert actual[1].endswith("2B")
Exemplo n.º 9
0
def test_ids_are_anonymized(element_path):
    with load_test_instance() as dataset:

        original = eval("dataset." + element_path)
        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = eval("dataset." + element_path)

        assert actual != original
Exemplo n.º 10
0
def test_repeated_identifying_uis_get_same_values(one_element_path, another_element_path):
    with load_test_instance() as dataset:

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        one_uid = eval("dataset." + one_element_path)
        another_uid = eval("dataset." + another_element_path)

        assert one_uid == another_uid
Exemplo n.º 11
0
def test_requesting_service_gets_anonymized():
    with load_test_instance() as dataset:
        original = dataset.RequestingService

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = dataset.RequestingService

        assert actual != original
Exemplo n.º 12
0
def test_current_patient_location_gets_anonymized():
    with load_test_instance() as dataset:
        original = dataset.CurrentPatientLocation

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = dataset.CurrentPatientLocation

        assert actual != original
Exemplo n.º 13
0
def test_non_patient_names_get_anonymized(element_path):
    with load_test_instance() as dataset:
        original_name = eval("dataset." + element_path)
        assert original_name

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_name = eval("dataset." + element_path)
        assert new_name != original_name
Exemplo n.º 14
0
def test_issuer_of_patient_id_changed_if_not_empty():
    with load_test_instance() as dataset:

        dataset.IssuerOfPatientID = "NOTEMPTY"

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = dataset.IssuerOfPatientID

        assert actual == "DICOGNITO"
Exemplo n.º 15
0
def test_identifying_uis_are_updated(element_path):
    with load_test_instance() as dataset:

        expected = eval("dataset." + element_path)

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = eval("dataset." + element_path)

        assert actual != expected
Exemplo n.º 16
0
def test_patient_identity_removed(
    initial_patient_identity_removed, burned_in_annotation, expected_patient_identity_removed
):
    with load_test_instance() as dataset:
        ensure_attribute_is(dataset, "PatientIdentityRemoved", initial_patient_identity_removed)
        ensure_attribute_is(dataset, "BurnedInAnnotation", burned_in_annotation)

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        assert_attribute_is(dataset, "PatientIdentityRemoved", expected_patient_identity_removed)
    def test_anonymize_all_attributes_are_different(self, element_path):
        dataset1 = load_instance(patient_number=1)
        dataset2 = load_instance(patient_number=2)

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset1)
        anonymizer.anonymize(dataset2)

        value1 = eval("dataset1." + element_path)
        value2 = eval("dataset2." + element_path)
        assert value1 != value2
Exemplo n.º 18
0
def test_multivalued_datetime_gets_anonymized():
    with load_test_instance() as dataset:
        dataset.AcquisitionDateTime = original_datetime = ["19741103121558", "19721004161558"]

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_datetime = dataset.AcquisitionDateTime

    assert new_datetime != original_datetime
    assert len(new_datetime) == len(original_datetime)
Exemplo n.º 19
0
def test_station_gets_anonymized_when_no_modality():
    with load_test_instance() as dataset:
        original_station_name = dataset.StationName
        del dataset.Modality

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_station_name = dataset.StationName

        assert new_station_name != original_station_name
Exemplo n.º 20
0
def test_datetime_of_various_lengths_gets_anonymized(acquisition_datetime):
    with load_test_instance() as dataset:
        dataset.AcquisitionDateTime = acquisition_datetime

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_datetime_string = dataset.AcquisitionDateTime

    assert new_datetime_string != acquisition_datetime
    assert len(new_datetime_string) == len(acquisition_datetime)
Exemplo n.º 21
0
def test_issuer_of_patient_id_not_added_if_empty():
    with load_test_instance() as dataset:

        dataset.IssuerOfPatientID = ""

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = dataset.IssuerOfPatientID

        assert actual == ""
Exemplo n.º 22
0
def test_multivalued_date_with_no_time_pair_gets_anonymized():
    with load_test_instance() as dataset:
        dataset.DateOfLastCalibration = original_date = ["20010401", "20010402"]

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_date_string = dataset.DateOfLastCalibration

    assert new_date_string != original_date
    assert len(new_date_string) == len(original_date)
Exemplo n.º 23
0
def test_date_gets_anonymized_when_there_is_no_time():
    with load_test_instance() as dataset:
        original_birth_date = dataset.PatientBirthDate = "19830213"
        assert "PatientBirthTime" not in dataset

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_birth_date = dataset.PatientBirthDate

    assert new_birth_date != original_birth_date
    assert "PatientBirthTime" not in dataset
Exemplo n.º 24
0
def test_no_sex_still_changes_patient_name():
    with load_test_instance() as dataset:
        del dataset.PatientSex

        original_patient_name = dataset.PatientName

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_patient_name = dataset.PatientName

    assert new_patient_name != original_patient_name
Exemplo n.º 25
0
    def setup_class(cls):
        TestOneSeriesTwoInstances.dataset1 = load_instance(patient_number=1,
                                                           study_number=1,
                                                           series_number=1,
                                                           instance_number=1)
        TestOneSeriesTwoInstances.dataset2 = load_instance(patient_number=1,
                                                           study_number=1,
                                                           series_number=1,
                                                           instance_number=2)

        anonymizer = Anonymizer(seed="")
        anonymizer.anonymize(TestOneSeriesTwoInstances.dataset1)
        anonymizer.anonymize(TestOneSeriesTwoInstances.dataset2)
Exemplo n.º 26
0
def test_other_patient_ids_anonymized_to_same_number_of_ids(number_of_ids):
    with load_test_instance() as dataset:

        original = ["ID" + str(i) for i in range(1, number_of_ids + 1)]
        dataset.OtherPatientIDs = original

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        actual = dataset.OtherPatientIDs

        assert actual != original
        assert len(set(actual)) == number_of_ids
Exemplo n.º 27
0
def test_datetime_gets_anonymized(datetime_name):
    original_datetime = datetime.datetime(1974, 11, 3, 12, 15, 58)
    original_datetime_string = original_datetime.strftime("%Y%m%d%H%M%S")

    with load_test_instance() as dataset:
        setattr(dataset, datetime_name, original_datetime_string)

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_datetime_string = getattr(dataset, datetime_name)

    assert new_datetime_string != original_datetime_string
    def test_anonymize_same_patient_with_differently_formatted_name_anonymizes_the_same_way(
            self):
        dataset1 = load_instance(patient_number=1)
        dataset1.PatientName = "LAST^FIRST^MIDDLE"
        dataset2 = load_instance(patient_number=1)
        dataset2.PatientName = "LAST^FIRST^MIDDLE^"

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset1)
        anonymizer.anonymize(dataset2)

        value1 = dataset1.PatientName
        value2 = dataset2.PatientName
        assert value1 == value2
def test_mitra_global_patient_id_is_updated():
    with load_test_instance() as dataset:

        block = dataset.private_block(0x0031,
                                      "MITRA LINKED ATTRIBUTES 1.0",
                                      create=True)
        block.add_new(0x20, "LO", "GPIYMBB54")

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        block = dataset.private_block(0x0031, "MITRA LINKED ATTRIBUTES 1.0")
        actual = block[0x20].value

        assert actual != "GPIYMBB54"
Exemplo n.º 30
0
def test_date_gets_anonymized_when_time_has_various_lengths(birth_time):
    with load_test_instance() as dataset:
        dataset.PatientBirthDate = original_birth_date = "20010401"
        dataset.PatientBirthTime = birth_time

        anonymizer = Anonymizer()
        anonymizer.anonymize(dataset)

        new_date_string = dataset.PatientBirthDate
        new_time_string = dataset.PatientBirthTime

    assert new_date_string != original_birth_date
    assert len(new_date_string) == len(original_birth_date)
    assert new_time_string[2:] == birth_time[2:]
    assert len(new_time_string) == len(birth_time)