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 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()); }
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 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()); }
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()); }
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 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 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 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 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>()); }
/* * 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); } }