diff --git a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/StructureDefinition40_50Test.java b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/StructureDefinition40_50Test.java index 975e7de51..0d15864fa 100644 --- a/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/StructureDefinition40_50Test.java +++ b/org.hl7.fhir.convertors/src/test/java/org/hl7/fhir/convertors/conv40_50/StructureDefinition40_50Test.java @@ -22,8 +22,8 @@ public class StructureDefinition40_50Test { @Test @DisplayName("Test r5 -> r4 AuditEvent conversion.") public void testR5_R4() throws IOException { - byte[] r4_input = TestingUtilities.loadTestResourceBytes("conversion", "sd-xpath-constraint-r4.xml"); - byte[] r5_input = TestingUtilities.loadTestResourceBytes("conversion", "sd-xpath-constraint-r5.xml"); + byte[] r4_input = TextFile.streamToBytes(this.getClass().getResourceAsStream("/sd-xpath-constraint-r4.xml")); + byte[] r5_input = TextFile.streamToBytes(this.getClass().getResourceAsStream("/sd-xpath-constraint-r5.xml")); org.hl7.fhir.r5.model.StructureDefinition r5_actual = (org.hl7.fhir.r5.model.StructureDefinition) new org.hl7.fhir.r5.formats.XmlParser().parse(r5_input); org.hl7.fhir.r4.model.StructureDefinition r4_conv = (org.hl7.fhir.r4.model.StructureDefinition) VersionConvertorFactory_40_50.convertResource(r5_actual); @@ -40,8 +40,8 @@ public class StructureDefinition40_50Test { @Test @DisplayName("Test r4 -> r5 AuditEvent conversion.") public void testR4_R5() throws IOException { - byte[] r4_input = TestingUtilities.loadTestResourceBytes("conversion", "sd-xpath-constraint-r4.xml"); - byte[] r5_input = TestingUtilities.loadTestResourceBytes("conversion", "sd-xpath-constraint-r5.xml"); + byte[] r4_input = TextFile.streamToBytes(this.getClass().getResourceAsStream("/sd-xpath-constraint-r4.xml")); + byte[] r5_input = TextFile.streamToBytes(this.getClass().getResourceAsStream("/sd-xpath-constraint-r5.xml")); org.hl7.fhir.r4.model.StructureDefinition r4_actual = (org.hl7.fhir.r4.model.StructureDefinition) new org.hl7.fhir.r4.formats.XmlParser().parse(r4_input); org.hl7.fhir.r5.model.StructureDefinition r5_conv = (org.hl7.fhir.r5.model.StructureDefinition) VersionConvertorFactory_40_50.convertResource(r4_actual); diff --git a/org.hl7.fhir.convertors/src/test/resources/sd-xpath-constraint-r4.xml b/org.hl7.fhir.convertors/src/test/resources/sd-xpath-constraint-r4.xml new file mode 100644 index 000000000..d73d2f835 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/sd-xpath-constraint-r4.xml @@ -0,0 +1,43 @@ + + + + + + + + + <status value="active"/> + <experimental value="false"/> + <date value="2022-09-30"/> + <publisher value="HL7 International - Cross-Group Projects"/> + <fhirVersion value="4.0.1"/> + <kind value="resource"/> + <abstract value="false"/> + <type value="Patient"/> + <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient"/> + <derivation value="constraint"/> + <differential> + <element id="Patient"> + <path value="Patient"/> + <definition value="\-"/> + <comment value="\-"/> + <mustSupport value="false"/> + </element> + <element id="Patient.name"> + <path value="Patient.name"/> + <min value="1"/> + <constraint> + <key value="us-core-6"/> + <severity value="error"/> + <human value="At least name.given and/or name.family are present or, if neither is available, the Data Absent Reason Extension is present."/> + <expression value="(family.exists() or given.exists()) xor extension.where(url='http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()"/> + <xpath value="(/f:extension/@url='http://hl7.org/fhir/StructureDefinition/data-absent-reason' and not(/f:family or /f:given)) or (not(/f:extension/@url='http://hl7.org/fhir/StructureDefinition/data-absent-reason') and (/f:family or /f:given))"/> + </constraint> + <mustSupport value="true"/> + <mapping> + <identity value="argonaut-dq-dstu2"/> + <map value="Patient.name"/> + </mapping> + </element> + </differential> +</StructureDefinition> \ No newline at end of file diff --git a/org.hl7.fhir.convertors/src/test/resources/sd-xpath-constraint-r5.xml b/org.hl7.fhir.convertors/src/test/resources/sd-xpath-constraint-r5.xml new file mode 100644 index 000000000..e1d9a1372 --- /dev/null +++ b/org.hl7.fhir.convertors/src/test/resources/sd-xpath-constraint-r5.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<StructureDefinition xmlns="http://hl7.org/fhir"> + <id value="us-core-patient"/> + <url value="http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"/> + <version value="6.0.0-preview"/> + <name value="USCorePatientProfile"/> + <title value="US Core Patient Profile"/> + <status value="active"/> + <experimental value="false"/> + <date value="2022-09-30"/> + <publisher value="HL7 International - Cross-Group Projects"/> + <fhirVersion value="4.0.1"/> + <kind value="resource"/> + <abstract value="false"/> + <type value="Patient"/> + <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Patient"/> + <derivation value="constraint"/> + <differential> + <element id="Patient"> + <path value="Patient"/> + <definition value="\-"/> + <comment value="\-"/> + <mustSupport value="false"/> + </element> + <element id="Patient.name"> + <path value="Patient.name"/> + <min value="1"/> + <constraint> + <extension url="http://hl7.org/fhir/4.0/StructureDefinition/extension-ElementDefinition.constraint.xpath"> + <valueString value="(/f:extension/@url='http://hl7.org/fhir/StructureDefinition/data-absent-reason' and not(/f:family or /f:given)) or (not(/f:extension/@url='http://hl7.org/fhir/StructureDefinition/data-absent-reason') and (/f:family or /f:given))"/> + </extension> + <key value="us-core-6"/> + <severity value="error"/> + <human value="At least name.given and/or name.family are present or, if neither is available, the Data Absent Reason Extension is present."/> + <expression value="(family.exists() or given.exists()) xor extension.where(url='http://hl7.org/fhir/StructureDefinition/data-absent-reason').exists()"/> + </constraint> + <mustSupport value="true"/> + <mapping> + <identity value="argonaut-dq-dstu2"/> + <map value="Patient.name"/> + </mapping> + </element> + </differential> +</StructureDefinition> \ No newline at end of file