def test_core_deidentify_safe_private(a_dataset, a_safe_private_definition): """Private elements marked as safe should not be removed by Clean()""" assert Tag("00b10010") in a_dataset # a private creator tag assert Tag("00b11001") in a_dataset # and a private tag # A core instance that should clean() private tags, but one tag is deemed safe ruleset = RuleSet( [Rule(PrivateTags(), Clean(safe_private=a_safe_private_definition))]) core = Core(profile=Profile([ruleset])) # One tag should be kept deltas = extract_signature(deidentifier=core, dataset=a_dataset) assert {x.tag: x for x in deltas}[Tag("00b10010")].status == "REMOVED" assert {x.tag: x for x in deltas}[Tag("00b11001")].status == "UNCHANGED" # but only so long as dataset has modality = CT a_dataset.Modality = "US" deltas = extract_signature(deidentifier=core, dataset=a_dataset) assert {x.tag: x for x in deltas}[Tag("00b10010")].status == "REMOVED" assert {x.tag: x for x in deltas}[Tag("00b11001")].status == "REMOVED"
def test_default_core(a_safe_private_definition): core = create_default_core( safe_private_definition=a_safe_private_definition) core.deidentify(CTDatasetFactory()) signature = extract_signature(deidentifier=core, dataset=CTDatasetFactory()) assert len(signature) == 108 with pytest.raises(DeidentificationException): # suspicious, but this type of dataset is not in a_safe_private_definition core.deidentify(CTDatasetFactory(Modality="US"))
def test_signature(a_core, a_dataset): deltas = extract_signature(a_core, a_dataset) assert [x.status for x in deltas] == [ DeltaStatusCodes.UNCHANGED, DeltaStatusCodes.CHANGED, DeltaStatusCodes.UNCHANGED, DeltaStatusCodes.REMOVED, DeltaStatusCodes.REMOVED, DeltaStatusCodes.REMOVED, DeltaStatusCodes.REMOVED, DeltaStatusCodes.CREATED, ]
def test_signature_realistic_dataset(a_core): """Check with a realistic dataset. Nothing should crash""" deltas = extract_signature(a_core, CTDatasetFactory()) assert len([x for x in deltas if x.has_changed()]) == 19
def test_signature_include_each_element(a_core, a_dataset): """Make sure all DICOM elements in dataset get a delta""" deltas = extract_signature(a_core, a_dataset) assert len( deltas) == len(a_dataset) + 1 # +1 because a_core inserts 1 element
def test_signature_leave_input_dataset_unaltered(a_core, a_dataset): """Make sure extracting a signature does not alter input dataset""" len_before = len(a_dataset) extract_signature(a_core, a_dataset) assert len(a_dataset) == len_before