public static void TestRedactDateTime() { var tag1 = DicomTag.InstanceCreationDate; var tag2 = DicomTag.InstanceCoercionDateTime; var tag3 = DicomTag.CalibrationDate; var tag4 = DicomTag.ReferencedDateTime; var dataset = new DicomDataset { { tag1, "20210320" }, { tag2, "20210320202020.20+0800" }, { tag3, "20210320", "19110101", "20200101" }, { tag4, "20210320202020.20+0800", "20210320202020.00654", "20210320202020+1400" }, }; var itemList = dataset.ToArray(); var redactProcess = new RedactProcessor(new ParameterConfiguration() { EnablePartialDatesForRedact = true }); foreach (var item in itemList) { redactProcess.Process(dataset, item); } }
public void GivenAnAgeNode_WhenRedact_RedactedNodeShouldBeReturn() { RedactProcessor processor = new RedactProcessor(true, enablePartialAgesForRedact: true, true, new List <string>()); var age = new Age() { Value = 91 }; var node = ElementNode.FromElement(age.ToTypedElement()).Children("value").Cast <ElementNode>().FirstOrDefault(); processor.Process(node); Assert.Equal("", node.Value.ToString()); processor = new RedactProcessor(true, enablePartialAgesForRedact: false, true, new List <string>()); node = ElementNode.FromElement(age.ToTypedElement()).Children("value").Cast <ElementNode>().FirstOrDefault(); processor.Process(node); Assert.Equal("", node.Value.ToString()); processor = new RedactProcessor(true, enablePartialAgesForRedact: true, true, new List <string>()); age = new Age() { Value = 89 }; node = ElementNode.FromElement(age.ToTypedElement()).Children("value").Cast <ElementNode>().FirstOrDefault(); processor.Process(node); Assert.Equal("89", node.Value.ToString()); }
private void InitializeProcessors(AnonymizerConfigurationManager configurationManager) { _processors[AnonymizerMethod.DateShift.ToString().ToUpperInvariant()] = DateShiftProcessor.Create(configurationManager); _processors[AnonymizerMethod.Redact.ToString().ToUpperInvariant()] = RedactProcessor.Create(configurationManager); _processors[AnonymizerMethod.CryptoHash.ToString().ToUpperInvariant()] = new CryptoHashProcessor(configurationManager.GetParameterConfiguration().CryptoHashKey); _processors[AnonymizerMethod.Keep.ToString().ToUpperInvariant()] = new KeepProcessor(); }
public void GivenAPostalCodeNode_WhenRedact_RedactedNodeShouldBeReturn() { RedactProcessor processor = new RedactProcessor(true, true, enablePartialZipCodesForRedact: true, restrictedZipCodeTabulationAreas: new List <string>() { "123" }); var node = ElementNode.FromElement(new FhirString("12345").ToTypedElement()); node.Name = "postalCode"; processor.Process(node); Assert.Equal("00000", node.Value.ToString()); node = ElementNode.FromElement(new FhirString("54321").ToTypedElement()); node.Name = "postalCode"; processor.Process(node); Assert.Equal("54300", node.Value.ToString()); processor = new RedactProcessor(true, true, enablePartialZipCodesForRedact: false, restrictedZipCodeTabulationAreas: new List <string>() { }); node = ElementNode.FromElement(new FhirString("54321").ToTypedElement()); node.Name = "postalCode"; processor.Process(node); Assert.Equal("00000", node.Value.ToString()); }
public void GivenAnOtherNode_WhenRedact_RedactedNodeShouldBeReturn() { RedactProcessor processor = new RedactProcessor(true, true, true, new List <string>()); var node = ElementNode.FromElement(new FhirString("TestString").ToTypedElement()); node.Name = "dummy"; processor.Process(node); Assert.Equal("", node.Value.ToString()); }
private void InitializeProcessors(AnonymizerConfigurationManager configurationManager) { _processors[AnonymizerMethod.DateShift.ToString().ToUpperInvariant()] = DateShiftProcessor.Create(configurationManager); _processors[AnonymizerMethod.Redact.ToString().ToUpperInvariant()] = RedactProcessor.Create(configurationManager); _processors[AnonymizerMethod.CryptoHash.ToString().ToUpperInvariant()] = new CryptoHashProcessor(configurationManager.GetParameterConfiguration().CryptoHashKey); _processors[AnonymizerMethod.Encrypt.ToString().ToUpperInvariant()] = new EncryptProcessor(configurationManager.GetParameterConfiguration().EncryptKey); _processors[AnonymizerMethod.Substitute.ToString().ToUpperInvariant()] = new SubstituteProcessor(); _processors[AnonymizerMethod.Perturb.ToString().ToUpperInvariant()] = new PerturbProcessor(); _processors[AnonymizerMethod.Keep.ToString().ToUpperInvariant()] = new KeepProcessor(); _processors[AnonymizerMethod.Generalize.ToString().ToUpperInvariant()] = new GeneralizeProcessor(); _processors[AnonymizerMethod.Presidio.ToString().ToUpperInvariant()] = new PresidioProcessor( PresidioApiHandler.Instantiate(configurationManager.GetParameterConfiguration())); }
public void GivenADateNode_WhenRedact_RedactedNodeShouldBeReturn() { RedactProcessor processor = new RedactProcessor(enablePartialDatesForRedact: true, true, true, new List <string>()); Date testDate = new Date("2015-02"); var node = ElementNode.FromElement(testDate.ToTypedElement()); processor.Process(node); Assert.Equal("2015", node.Value.ToString()); processor = new RedactProcessor(enablePartialDatesForRedact: false, true, true, new List <string>()); node = ElementNode.FromElement(testDate.ToTypedElement()); processor.Process(node); Assert.Null(node.Value); }
public void GivenADateTimeNode_WhenRedact_RedactedNodeShouldBeReturn() { RedactProcessor processor = new RedactProcessor(enablePartialDatesForRedact: true, true, true, new List <string>()); FhirDateTime testDateTime = new FhirDateTime("2015-02-07T13:28:17-05:00"); var node = ElementNode.FromElement(testDateTime.ToTypedElement()); processor.Process(node); Assert.Equal("2015", node.Value.ToString()); processor = new RedactProcessor(enablePartialDatesForRedact: false, true, true, new List <string>()); node = ElementNode.FromElement(testDateTime.ToTypedElement()); processor.Process(node); Assert.Equal("", node.Value.ToString()); }
public void GivenAInstantNode_WhenRedact_RedactedNodeShouldBeReturn() { RedactProcessor processor = new RedactProcessor(enablePartialDatesForRedact: true, true, true, new List <string>()); Instant testInstant = new Instant(new DateTimeOffset(new DateTime(2015, 1, 1))); var node = ElementNode.FromElement(testInstant.ToTypedElement()); processor.Process(node); Assert.Equal("2015", node.Value.ToString()); processor = new RedactProcessor(enablePartialDatesForRedact: false, true, true, new List <string>()); node = ElementNode.FromElement(testInstant.ToTypedElement()); processor.Process(node); Assert.Equal("", node.Value.ToString()); }
private void InitializeProcessors(AnonymizerConfigurationManager configurationManager) { _processors[AnonymizerMethod.DateShift.ToString().ToUpperInvariant()] = DateShiftProcessor.Create(configurationManager); _processors[AnonymizerMethod.Redact.ToString().ToUpperInvariant()] = RedactProcessor.Create(configurationManager); _processors[AnonymizerMethod.CryptoHash.ToString().ToUpperInvariant()] = new CryptoHashProcessor(configurationManager.GetParameterConfiguration().CryptoHashKey); _processors[AnonymizerMethod.Encrypt.ToString().ToUpperInvariant()] = new EncryptProcessor(configurationManager.GetParameterConfiguration().EncryptKey); _processors[AnonymizerMethod.Substitute.ToString().ToUpperInvariant()] = new SubstituteProcessor(); _processors[AnonymizerMethod.Perturb.ToString().ToUpperInvariant()] = new PerturbProcessor(); _processors[AnonymizerMethod.Keep.ToString().ToUpperInvariant()] = new KeepProcessor(); _processors[AnonymizerMethod.Generalize.ToString().ToUpperInvariant()] = new GeneralizeProcessor(); if (_customProcessorFactory != null) { InitializeCustomProcessors(configurationManager); } }
private Dictionary <string, IAnonymizerProcessor> CreateTestProcessors() { KeepProcessor keepProcessor = new KeepProcessor(); RedactProcessor redactProcessor = new RedactProcessor(false, false, false, null); DateShiftProcessor dateShiftProcessor = new DateShiftProcessor("123", "123", false); CryptoHashProcessor cryptoHashProcessor = new CryptoHashProcessor("123"); Dictionary <string, IAnonymizerProcessor> processors = new Dictionary <string, IAnonymizerProcessor>() { { "KEEP", keepProcessor }, { "REDACT", redactProcessor }, { "DATESHIFT", dateShiftProcessor }, { "CRYPTOHASH", cryptoHashProcessor } }; return(processors); }
private Dictionary <string, IAnonymizerProcessor> CreateTestProcessors() { KeepProcessor keepProcessor = new KeepProcessor(); RedactProcessor redactProcessor = new RedactProcessor(false, false, false, null); DateShiftProcessor dateShiftProcessor = new DateShiftProcessor("123", "123", false); CryptoHashProcessor cryptoHashProcessor = new CryptoHashProcessor("123"); EncryptProcessor encryptProcessor = new EncryptProcessor("1234567890123456"); SubstituteProcessor substituteProcessor = new SubstituteProcessor(); PerturbProcessor perturbProcessor = new PerturbProcessor(); Dictionary <string, IAnonymizerProcessor> processors = new Dictionary <string, IAnonymizerProcessor>() { { "KEEP", keepProcessor }, { "REDACT", redactProcessor }, { "DATESHIFT", dateShiftProcessor }, { "CRYPTOHASH", cryptoHashProcessor }, { "ENCRYPT", encryptProcessor }, { "SUBSTITUTE", substituteProcessor }, { "PERTURB", perturbProcessor } }; return(processors); }
/* * static async System.Threading.Tasks.Task Main(string[] args) * { * // TestRedactAge(); * // TestRedactDateTime(); * //TestPerturb(); * * string fileName = "image-00000.dcm"; * DicomFile dicomFile = await DicomFile.OpenAsync(fileName).ConfigureAwait(false); * * //FilterByVR(dicomFile, "PN"); * var engine = new AnonimizerEngine(); * engine.Anonymize(dicomFile); * dicomFile.Save("result.dcm"); * } */ public static void TestRedactAge() { var tag1 = DicomTag.PatientAge; var tag2 = DicomTag.SelectorASValue; var dataset = new DicomDataset { { tag1, "090Y" }, { tag2, "010D", "010W", "100M", "010Y", "090Y" }, }; var itemList = dataset.ToArray(); var redactProcess = new RedactProcessor(new ParameterConfiguration() { EnablePartialAgesForRedact = true }); foreach (var item in itemList) { redactProcess.Process(dataset, item); } }
public void GivenADataSetWithDTItem_WhenRedactWithPartialRedact_ValueWillBePartialRedact() { var tag1 = DicomTag.InstanceCoercionDateTime; var tag2 = DicomTag.ReferencedDateTime; var dataset = new DicomDataset { { tag1, "20210320202020.20+0800" }, { tag2, "20210320202020.20+0800", "20210320202020.00654", "20210320202020+1400", "19000320202020+1400" }, }; var itemList = dataset.ToArray(); var newProcessor = new RedactProcessor(JObject.Parse("{\"EnablePartialDatesForRedact\" : \"true\"}")); foreach (var item in itemList) { newProcessor.Process(dataset, item); } Assert.Equal("20210101000000.000000+0800", dataset.GetDicomItem <DicomElement>(tag1).Get <string>()); Assert.Equal(@"20210101000000.000000+0800\20210101120000.000000\20210101000000.000000+1400", dataset.GetDicomItem <DicomElement>(tag2).Get <string>()); }
public void GivenADataSetWithDAItem_WhenRedactWithPartialRedact_ValueWillBePartialRedact() { var tag1 = DicomTag.InstanceCreationDate; var tag2 = DicomTag.CalibrationDate; var dataset = new DicomDataset { { tag1, "20210320" }, { tag2, "20210320", "19110101", "20200101" }, }; var itemList = dataset.ToArray(); var newProcessor = new RedactProcessor(JObject.Parse("{\"EnablePartialDatesForRedact\" : \"true\"}")); foreach (var item in itemList) { newProcessor.Process(dataset, item); } Assert.Equal("20210101", dataset.GetDicomItem <DicomElement>(tag1).Get <string>()); Assert.Equal(@"20210101\20200101", dataset.GetDicomItem <DicomElement>(tag2).Get <string>()); }
public void GivenADataSetWithASItem_WhenRedactWithPartialRedact_ValueWillBePartialRedact() { var tag1 = DicomTag.PatientAge; var tag2 = DicomTag.SelectorASValue; var dataset = new DicomDataset { { tag1, "090Y" }, { tag2, "010D", "010W", "100M", "010Y", "090Y" }, }; var itemList = dataset.ToArray(); var newProcessor = new RedactProcessor(JObject.Parse("{\"EnablePartialAgesForRedact\" : \"true\"}")); foreach (var item in itemList) { newProcessor.Process(dataset, item); } Assert.Equal(string.Empty, dataset.GetDicomItem <DicomElement>(tag1).Get <string>()); Assert.Equal(@"010D\010W\100M\010Y", dataset.GetDicomItem <DicomElement>(tag2).Get <string>()); }
public RedactProcessorUnitTests() { Processor = new RedactProcessor(JObject.Parse("{\"EnablePartialDatesForRedact\" : \"false\"}")); }
private void InitializeProcessors(AnonymizerConfigurationManager configurationManager) { _processors[AnonymizerMethods.DateShift.ToString().ToUpperInvariant()] = DateShiftProcessor.Create(configurationManager); _processors[AnonymizerMethods.Redact.ToString().ToUpperInvariant()] = RedactProcessor.Create(configurationManager); _processors[AnonymizerMethods.Keep.ToString().ToUpperInvariant()] = new KeepProcessor(); }