Merge pull request #501 from tyfoni/fix_conv_30_50

Issue #453: add copying of aggregation mode for conversion from 50 to 30
This commit is contained in:
Grahame Grieve 2021-05-31 08:46:58 +10:00 committed by GitHub
commit a765223e7b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 103 additions and 1 deletions

View File

@ -1 +1,5 @@
* Adding Maven exec to test validation cli jar
* add copying of aggregation mode for conversion from 50 to 30
* add test for Observation conversion from 10 to 40
* add procedures conversion form dstu2 to r4
* add medication conversion from dstu2 to r4
* Adding Maven exec to test validation cli jar

View File

@ -1828,6 +1828,10 @@ public class VersionConvertor_30_50 extends VersionConvertor_Base {
tgt.setProfile(u.getValue());
}
}
for (org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.AggregationMode> t : src.getAggregation()) {
org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ElementDefinition.AggregationMode> a = convertAggregationMode(t);
if (!tgt.hasAggregation(a.getValue())) copyElement(t, tgt.addAggregation(a.getValue()));
}
}
static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.ElementDefinition.AggregationMode> convertAggregationMode(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ElementDefinition.AggregationMode> src) throws FHIRException {

View File

@ -0,0 +1,28 @@
package org.hl7.fhir.convertors.conv30_50;
import org.hl7.fhir.convertors.VersionConvertor_30_40;
import org.hl7.fhir.convertors.VersionConvertor_30_50;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.io.InputStream;
public class StructureDefinition30_50Test {
@Test
@DisplayName("Test r5 -> dstu3 device conversion.")
public void test1() throws IOException {
InputStream r5_input = this.getClass().getResourceAsStream("/0_structuredefinition_50.json");
InputStream dstu3_expected_output = this.getClass().getResourceAsStream("/0_structuredefinition_30.json");
org.hl7.fhir.r5.model.StructureDefinition r5_actual = (org.hl7.fhir.r5.model.StructureDefinition) new org.hl7.fhir.r5.formats.JsonParser().parse(r5_input);
org.hl7.fhir.dstu3.model.Resource dstu3_conv = VersionConvertor_30_50.convertResource(r5_actual, true);
org.hl7.fhir.dstu3.formats.JsonParser dstu3_parser = new org.hl7.fhir.dstu3.formats.JsonParser();
org.hl7.fhir.dstu3.model.Resource dstu3_expected = dstu3_parser.parse(dstu3_expected_output);
Assertions.assertTrue(dstu3_expected.equalsDeep(dstu3_conv),
"Failed comparing\n" + dstu3_parser.composeString(dstu3_expected) + "\nand\n" + dstu3_parser.composeString(dstu3_conv));
}
}

View File

@ -0,0 +1,33 @@
{
"resourceType": "StructureDefinition",
"id": "ehealth-observation",
"url": "http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-observation",
"name": "ehealth-observation",
"title": "eHealth Observation",
"status": "draft",
"kind": "resource",
"abstract": "false",
"type": "Observation",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
"derivation": "constraint",
"snapshot": {
"element": [
{
"id": "Observation.subject",
"path": "Observation.subject",
"min": "1",
"type": [
{
"code": "Reference",
"targetProfile": [
"http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient"
],
"aggregation": [
"referenced"
]
}
]
}
]
}
}

View File

@ -0,0 +1,33 @@
{
"resourceType": "StructureDefinition",
"id": "ehealth-observation",
"url": "http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-observation",
"name": "ehealth-observation",
"title": "eHealth Observation",
"status": "draft",
"kind": "resource",
"abstract": "false",
"type": "Observation",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
"derivation": "constraint",
"snapshot": {
"element": [
{
"id": "Observation.subject",
"path": "Observation.subject",
"min": "1",
"type": [
{
"code": "Reference",
"targetProfile": [
"http://ehealth.sundhed.dk/fhir/StructureDefinition/ehealth-patient"
],
"aggregation": [
"referenced"
]
}
]
}
]
}
}