diff --git a/src/main/java/de/medizininformatikinitiative/torch/util/Redaction.java b/src/main/java/de/medizininformatikinitiative/torch/util/Redaction.java index 9aae026e..420f40fd 100644 --- a/src/main/java/de/medizininformatikinitiative/torch/util/Redaction.java +++ b/src/main/java/de/medizininformatikinitiative/torch/util/Redaction.java @@ -81,7 +81,7 @@ public Base redact(ExtractionRedactionWrapper wrapper) { if (!validProfiles.equals(wrapper.profiles())) { logger.error("Missing Profiles in Resource {} {}: {} for requested profiles {}", resource.getResourceType(), resource.getId(), resourceProfiles, wrapper.profiles()); - throw new RuntimeException("Resource is missing required profiles: " + resourceProfiles); + throw new RuntimeException("Resource is missing required profiles: " + wrapper.profiles()); } } else { resourceProfiles = wrapper.profiles().stream().map(CanonicalType::new).toList(); diff --git a/src/test/java/de/medizininformatikinitiative/torch/RedactionTest.java b/src/test/java/de/medizininformatikinitiative/torch/RedactionTest.java index e0adf63d..2679964c 100644 --- a/src/test/java/de/medizininformatikinitiative/torch/RedactionTest.java +++ b/src/test/java/de/medizininformatikinitiative/torch/RedactionTest.java @@ -6,10 +6,12 @@ import org.hl7.fhir.r4.model.CanonicalType; import org.hl7.fhir.r4.model.CodeableConcept; import org.hl7.fhir.r4.model.Coding; +import org.hl7.fhir.r4.model.Condition; import org.hl7.fhir.r4.model.DomainResource; import org.hl7.fhir.r4.model.Identifier; import org.hl7.fhir.r4.model.Medication; import org.hl7.fhir.r4.model.Meta; +import org.hl7.fhir.r4.model.Observation; import org.hl7.fhir.r4.model.Patient; import org.junit.Test; import org.junit.jupiter.api.Nested; @@ -23,6 +25,7 @@ import static de.medizininformatikinitiative.torch.util.FhirUtil.createAbsentReasonExtension; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; public class RedactionTest { @@ -45,11 +48,11 @@ public RedactionTest() throws IOException { @ParameterizedTest @ValueSource(strings = {"Observation_lab_Missing_Elements_Unknown_Slices.json"}) void testObservationLab(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource("src/test/resources/InputResources/Observation/" + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Observation src = (Observation) integrationTestSetup.readResource("src/test/resources/InputResources/Observation/" + resource); + Observation expected = (Observation) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(OBSERVATION_LAB), Map.of("Observation.subject", Set.of("Patient/VHF-MIXED-TEST-CASE-0001-a"), "Observation.encounter", Set.of("Encounter/VHF-MIXED-TEST-CASE-0001-a-E-1")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Observation) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } @@ -59,11 +62,11 @@ void testObservationLab(String resource) throws IOException { "Observation-mii-exa-test-data-patient-1-vitalstatus-1.json" }) void testValueSetBindingPassingThroughAsDiscriminator(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource("src/test/resources/InputResources/Observation/" + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Observation src = (Observation) integrationTestSetup.readResource("src/test/resources/InputResources/Observation/" + resource); + Observation expected = (Observation) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(VITALSTATUS), Map.of("Observation.subject", Set.of("Patient/VHF-MIXED-TEST-CASE-0001-a"), "Observation.encounter", Set.of("Encounter/VHF-MIXED-TEST-CASE-0001-a-E-1")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Observation) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } @@ -73,18 +76,50 @@ void testValueSetBindingPassingThroughAsDiscriminator(String resource) throws IO "Observation-mii-exa-test-data-patient-1-vitalstatus-1-identifier.json" }) void testReferenceComplexType(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource("src/test/resources/InputResources/Observation/" + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Observation src = (Observation) integrationTestSetup.readResource("src/test/resources/InputResources/Observation/" + resource); + Observation expected = (Observation) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(VITALSTATUS), Map.of("Observation.subject", Set.of("Patient/VHF-MIXED-TEST-CASE-0001-a"), "Observation.encounter", Set.of("Encounter/VHF-MIXED-TEST-CASE-0001-a-E-1")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Observation) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } + @Test + public void mismatchProfileWithAssignedProfile() { + org.hl7.fhir.r4.model.Condition src = new org.hl7.fhir.r4.model.Condition(); + Meta meta = new Meta(); + meta.setProfile(List.of(new CanonicalType(MEDICATION))); + src.setMeta(meta); + ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of(), Set.of()); + + assertThatThrownBy(() -> integrationTestSetup.redaction().redact(wrapper)).isInstanceOf(RuntimeException.class) + .hasMessage("Resource is missing required profiles: [" + DIAGNOSIS + "]"); + } + + @Test + public void unknownProfile() { + org.hl7.fhir.r4.model.Condition src = new org.hl7.fhir.r4.model.Condition(); + Meta meta = new Meta(); + meta.setProfile(List.of(new CanonicalType("UnknownProfile"))); + src.setMeta(meta); + ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of("UnknownProfile"), Map.of(), Set.of()); + + assertThatThrownBy(() -> integrationTestSetup.redaction().redact(wrapper)).isInstanceOf(RuntimeException.class) + .hasMessage("Trying to handle unknown profiles: [UnknownProfile]"); + } + + @Test + public void metaMissing() { + org.hl7.fhir.r4.model.Condition src = new org.hl7.fhir.r4.model.Condition(); + + ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of(), Set.of()); + assertThatThrownBy(() -> integrationTestSetup.redaction().redact(wrapper)).isInstanceOf(RuntimeException.class); + } + @Test public void unknownSlice() throws IOException { - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + "unknownSlice.json"); + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + "unknownSlice.json"); org.hl7.fhir.r4.model.Condition src = new org.hl7.fhir.r4.model.Condition(); Meta meta = new Meta(); meta.setProfile(List.of(new CanonicalType(DIAGNOSIS))); @@ -94,6 +129,35 @@ public void unknownSlice() throws IOException { concept.setCoding(List.of(code)); src.setCode(concept); + ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of(), Set.of()); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); + + assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); + } + + @ParameterizedTest + @ValueSource(strings = {"DiagnosisWithExtensionAtCodeWithUnknownField.json"}) + void notHandlingUnknownElementID(String resource) throws IOException { + + Condition src = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + + ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of("Condition.subject", Set.of("Patient/12345", "Patient/123"), "Condition.encounter", Set.of("Encounter/12345")), Set.of()); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); + + assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); + + + } + + @Test + public void emptyValues() throws IOException { + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + "EmptyValues.json"); + org.hl7.fhir.r4.model.Condition src = new org.hl7.fhir.r4.model.Condition(); + Meta meta = new Meta(); + meta.setProfile(List.of(new CanonicalType(DIAGNOSIS))); + src.setMeta(meta); + ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of(), Set.of()); DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); @@ -103,11 +167,11 @@ public void unknownSlice() throws IOException { @ParameterizedTest @ValueSource(strings = {"DiagnosisUnknownPrimitiveExtension.json", "DiagnosisWithExtensionAtCode.json", "DiagnosisUnknownComplexExtension.json"}) void removeUnknownPrimitiveAndComplexExtension(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Condition src = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of("Condition.subject", Set.of("Patient/12345", "Patient/123"), "Condition.encounter", Set.of("Encounter/12345")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } @@ -130,7 +194,7 @@ public void backboneElementHandling() { ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(medication, Set.of(MEDICATION), Map.of(), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Medication) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expectedMedication)); } @@ -153,22 +217,22 @@ public void patient() { expectedPatient.setIdentifier(List.of(identifier)); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(patient, Set.of(PATIENT), Map.of(), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Patient) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expectedPatient)); } @Nested - class Condition { + class ConditionTest { @ParameterizedTest @ValueSource(strings = {"Condition-mii-exa-diagnose-condition-minimal.json", "Condition-mii-exa-diagnose-mehrfachkodierung-primaercode.json", "Condition-mii-exa-diagnose-mehrfachkodierung-primaercode.json", "Condition-mii-exa-diagnose-multiple-kodierungen.json", "Condition-mii-exa-test-data-patient-1-diagnose-1.json", "Condition-mii-exa-test-data-patient-1-diagnose-2.json", "Condition-mii-exa-test-data-patient-3-diagnose-1.json", "Condition-mii-exa-test-data-patient-4-diagnose-1.json"}) - void diagnosisAllValid(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); - DomainResource expected = integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + void diagnosisNoChange(String resource) throws IOException { + Condition src = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + Condition expected = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of("Condition.subject", Set.of("Patient/12345", "Patient/mii-exa-test-data-patient-1", "Patient/mii-exa-test-data-patient-3"), "Condition.encounter", Set.of("Encounter/12345")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } @@ -176,11 +240,11 @@ void diagnosisAllValid(String resource) throws IOException { @ParameterizedTest @ValueSource(strings = {"Condition-mii-exa-diagnose-condition-minimal.json", "Condition-mii-exa-diagnose-mehrfachkodierung-primaercode.json"}) void invalidReferences(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Condition src = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of("Condition.subject", Set.of(), "Condition.encounter", Set.of("Encounter/12345")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } @@ -188,11 +252,11 @@ void invalidReferences(String resource) throws IOException { @ParameterizedTest @ValueSource(strings = {"DiagnosisWithInvalidSliceCode.json"}) void diagnosisInvalidElements(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Condition src = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of("Condition.subject", Set.of("Patient/12345"), "Condition.encounter", Set.of("Encounter/12345")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } @@ -200,11 +264,11 @@ void diagnosisInvalidElements(String resource) throws IOException { @ParameterizedTest @ValueSource(strings = {"Diagnosis1.json", "Diagnosis2.json"}) void diagnosisMissingElements(String resource) throws IOException { - DomainResource src = integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); - DomainResource expected = integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); + Condition src = (Condition) integrationTestSetup.readResource(INPUT_CONDITION_DIR + resource); + Condition expected = (Condition) integrationTestSetup.readResource(EXPECTED_OUTPUT_DIR + resource); ExtractionRedactionWrapper wrapper = new ExtractionRedactionWrapper(src, Set.of(DIAGNOSIS), Map.of("Condition.subject", Set.of("Patient/12345", "Patient/123"), "Condition.encounter", Set.of("Encounter/12345")), Set.of()); - DomainResource tgt = (DomainResource) integrationTestSetup.redaction().redact(wrapper); + DomainResource tgt = (Condition) integrationTestSetup.redaction().redact(wrapper); assertThat(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(tgt)).isEqualTo(fhirContext.newJsonParser().setPrettyPrint(true).encodeResourceToString(expected)); } diff --git a/src/test/resources/InputResources/Condition/DiagnosisWithExtensionAtCodeWithUnknownField.json b/src/test/resources/InputResources/Condition/DiagnosisWithExtensionAtCodeWithUnknownField.json new file mode 100644 index 00000000..2168a97e --- /dev/null +++ b/src/test/resources/InputResources/Condition/DiagnosisWithExtensionAtCodeWithUnknownField.json @@ -0,0 +1,79 @@ +{ + "resourceType": "Condition", + "id": "mii-exa-diagnose-mehrfachkodierung-primaercode", + "meta": { + "profile": [ + "https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose" + ] + }, + "code": { + "coding": [ + { + "system": "http://fhir.de/CodeSystem/bfarm/icd-10-gm", + "extension": [ + { + "url": "http://fhir.de/StructureDefinition/seitenlokalisation", + "valueCoding": { + "code": "L", + "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ICD_SEITENLOKALISATION", + "display": "links" + } + }, + { + "url": "http://fhir.de/StructureDefinition/icd-10-gm-mehrfachcodierungs-kennzeichen", + "valueCoding": { + "code": "†", + "system": "http://fhir.de/CodeSystem/icd-10-gm-mehrfachcodierungs-kennzeichen" + } + } + ], + "code": "A54.4", + "version": "2020", + "display": "Gonokokkeninfektion des Muskel-Skelett-Systems" + }, + { + "system": "http://fhir.de/CodeSystem/bfarm/alpha-id", + "code": "I97525", + "version": "2020", + "display": "Bursitis gonorrhoica" + } + ] + }, + "clinicalStatus": { + "coding": [ + { + "code": "active", + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "extension": [ + { + "url": "http://fhir.de/StructureDefinition/seitenlokalisation", + "valueCoding": { + "code": "L", + "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ICD_SEITENLOKALISATION", + "display": "links" + } + } + ] + } + ] + }, + "verificationStatus": { + "coding": [ + { + "code": "confirmed", + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status" + } + ] + }, + "subject": { + "reference": "Patient/12345" + }, + "encounter": { + "reference": "Encounter/12345" + }, + "onsetPeriod": { + "start": "2019-09-26T12:45:00+01:00", + "end": "2020-03-25T13:00:00+01:00" + }, + "recordedDate": "2020-01-05T12:53:00+01:00" +} diff --git a/src/test/resources/RedactTest/expectedOutput/DiagnosisWithExtensionAtCodeWithUnknownField.json b/src/test/resources/RedactTest/expectedOutput/DiagnosisWithExtensionAtCodeWithUnknownField.json new file mode 100644 index 00000000..2168a97e --- /dev/null +++ b/src/test/resources/RedactTest/expectedOutput/DiagnosisWithExtensionAtCodeWithUnknownField.json @@ -0,0 +1,79 @@ +{ + "resourceType": "Condition", + "id": "mii-exa-diagnose-mehrfachkodierung-primaercode", + "meta": { + "profile": [ + "https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose" + ] + }, + "code": { + "coding": [ + { + "system": "http://fhir.de/CodeSystem/bfarm/icd-10-gm", + "extension": [ + { + "url": "http://fhir.de/StructureDefinition/seitenlokalisation", + "valueCoding": { + "code": "L", + "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ICD_SEITENLOKALISATION", + "display": "links" + } + }, + { + "url": "http://fhir.de/StructureDefinition/icd-10-gm-mehrfachcodierungs-kennzeichen", + "valueCoding": { + "code": "†", + "system": "http://fhir.de/CodeSystem/icd-10-gm-mehrfachcodierungs-kennzeichen" + } + } + ], + "code": "A54.4", + "version": "2020", + "display": "Gonokokkeninfektion des Muskel-Skelett-Systems" + }, + { + "system": "http://fhir.de/CodeSystem/bfarm/alpha-id", + "code": "I97525", + "version": "2020", + "display": "Bursitis gonorrhoica" + } + ] + }, + "clinicalStatus": { + "coding": [ + { + "code": "active", + "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", + "extension": [ + { + "url": "http://fhir.de/StructureDefinition/seitenlokalisation", + "valueCoding": { + "code": "L", + "system": "https://fhir.kbv.de/CodeSystem/KBV_CS_SFHIR_ICD_SEITENLOKALISATION", + "display": "links" + } + } + ] + } + ] + }, + "verificationStatus": { + "coding": [ + { + "code": "confirmed", + "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status" + } + ] + }, + "subject": { + "reference": "Patient/12345" + }, + "encounter": { + "reference": "Encounter/12345" + }, + "onsetPeriod": { + "start": "2019-09-26T12:45:00+01:00", + "end": "2020-03-25T13:00:00+01:00" + }, + "recordedDate": "2020-01-05T12:53:00+01:00" +} diff --git a/src/test/resources/RedactTest/expectedOutput/EmptyValues.json b/src/test/resources/RedactTest/expectedOutput/EmptyValues.json new file mode 100644 index 00000000..75cf7f95 --- /dev/null +++ b/src/test/resources/RedactTest/expectedOutput/EmptyValues.json @@ -0,0 +1,32 @@ +{ + "resourceType": "Condition", + "meta": { + "profile": [ + "https://www.medizininformatik-initiative.de/fhir/core/modul-diagnose/StructureDefinition/Diagnose" + ] + }, + "code": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason", + "valueCode": "masked" + } + ] + }, + "subject": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason", + "valueCode": "masked" + } + ] + }, + "_recordedDate": { + "extension": [ + { + "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason", + "valueCode": "masked" + } + ] + } +}