more testing of FHIRPath reference resolution

This commit is contained in:
Grahame Grieve 2019-09-18 00:02:01 +10:00
parent 54e672394b
commit 6fe8c492d3
8 changed files with 206 additions and 3 deletions

View File

@ -257,10 +257,16 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
if (res != null) if (res != null)
return res; return res;
if (externalHostServices == null) if (externalHostServices != null)
throw new Error("Not done yet - resolve "+url+" locally (2)");
else
return externalHostServices.resolveReference(c.appContext, url); return externalHostServices.resolveReference(c.appContext, url);
else if (fetcher != null)
try {
return fetcher.fetch(c.appContext, url);
} catch (IOException e) {
throw new FHIRException(e);
}
else
throw new Error("Not done yet - resolve "+url+" locally (2)");
} }

View File

@ -1,5 +1,6 @@
package org.hl7.fhir.validation.tests; package org.hl7.fhir.validation.tests;
import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
@ -20,6 +21,7 @@ import org.hl7.fhir.convertors.VersionConvertor_14_50;
import org.hl7.fhir.convertors.VersionConvertor_30_40; import org.hl7.fhir.convertors.VersionConvertor_30_40;
import org.hl7.fhir.convertors.VersionConvertor_30_50; import org.hl7.fhir.convertors.VersionConvertor_30_50;
import org.hl7.fhir.convertors.VersionConvertor_40_50; import org.hl7.fhir.convertors.VersionConvertor_40_50;
import org.hl7.fhir.r5.elementmodel.Manager;
import org.hl7.fhir.exceptions.DefinitionException; import org.hl7.fhir.exceptions.DefinitionException;
import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.FHIRException;
import org.hl7.fhir.exceptions.FHIRFormatError; import org.hl7.fhir.exceptions.FHIRFormatError;
@ -300,6 +302,11 @@ public class ValidationTestSuite implements IEvaluationContext, IValidatorResour
public Element fetch(Object appContext, String url) throws FHIRFormatError, DefinitionException, IOException, FHIRException { public Element fetch(Object appContext, String url) throws FHIRFormatError, DefinitionException, IOException, FHIRException {
if (url.equals("Patient/test")) if (url.equals("Patient/test"))
return new ObjectConverter(TestingUtilities.context()).convert(new Patient()); return new ObjectConverter(TestingUtilities.context()).convert(new Patient());
String filename = TestingUtilities.resourceNameToFile("validation-examples", url.replace("/", "-"));
if (new File(filename+".json").exists())
return Manager.makeParser(TestingUtilities.context(), FhirFormat.JSON).parse(new FileInputStream(filename+".json"));
if (new File(filename+".xml").exists())
return Manager.makeParser(TestingUtilities.context(), FhirFormat.XML).parse(new FileInputStream(filename+".xml"));
return null; return null;
} }

View File

@ -0,0 +1,14 @@
{
"resourceType": "CareTeam",
"participant": [
{
"member": {
"reference": "Practitioner/notprac"
},
"onBehalfOf": {
"reference": "Organization/2"
}
}
]
}

View File

@ -0,0 +1,14 @@
{
"resourceType": "CareTeam",
"participant": [
{
"member": {
"reference": "Practitioner/1"
},
"onBehalfOf": {
"reference": "Organization/2"
}
}
]
}

View File

@ -0,0 +1,14 @@
{
"resourceType": "CareTeam",
"participant": [
{
"member": {
"reference": "Practitioner/x"
},
"onBehalfOf": {
"reference": "Organization/2"
}
}
]
}

View File

@ -186,6 +186,15 @@
"errors-for-debugging" : ["ERROR: Medication.extension[2].valueCodeableConcept.coding: The code \"N02AA\" is not valid in the system http://www.whocc.no/atc; The code provided (http://www.whocc.no/atc#N02AA) is not valid in the value set All codes known to the system"], "errors-for-debugging" : ["ERROR: Medication.extension[2].valueCodeableConcept.coding: The code \"N02AA\" is not valid in the system http://www.whocc.no/atc; The code provided (http://www.whocc.no/atc#N02AA) is not valid in the value set All codes known to the system"],
"allowed-extension-domain": "https://api-v8-r4.hspconsortium.org/DrugFormulary0/open" "allowed-extension-domain": "https://api-v8-r4.hspconsortium.org/DrugFormulary0/open"
}, },
"fhirpath-good.json": {
"errorCount": 0
},
"fhirpath-bad.json": {
"errorCount": 1
},
"fhirpath-null.json": {
"errorCount": 1
},
"qr-ex.json": { "qr-ex.json": {
"questionnaire": "q-ex.json", "questionnaire": "q-ex.json",
"version" : "3.0", "version" : "3.0",

View File

@ -0,0 +1,33 @@
{
"resourceType": "Practitioner",
"id": "1",
"identifier": [
{
"system": "http://www.acme.org/practitioners",
"value": "23"
}
],
"active": true,
"name": [
{
"family": "Careful",
"given": [
"Adam"
],
"prefix": [
"Dr"
]
}
],
"address": [
{
"use": "home",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"state": "Vic",
"postalCode": "3999"
}
]
}

View File

@ -0,0 +1,106 @@
{
"resourceType": "Patient",
"id": "notprac",
"identifier": [
{
"use": "usual",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "MR"
}
]
},
"system": "urn:oid:1.2.36.146.595.217.0.1",
"value": "12345",
"period": {
"start": "2001-05-06"
},
"assigner": {
"display": "Acme Healthcare"
}
}
],
"active": true,
"name": [
{
"use": "official",
"family": "Chalmers",
"given": [
"Peter",
"James"
]
},
{
"use": "usual",
"given": [
"Jim"
]
},
{
"use": "maiden",
"family": "Windsor",
"given": [
"Peter",
"James"
],
"period": {
"end": "2002"
}
}
],
"telecom": [
{
"use": "home"
},
{
"system": "phone",
"value": "(03) 5555 6473",
"use": "work",
"rank": 1
},
{
"system": "phone",
"value": "(03) 3410 5613",
"use": "mobile",
"rank": 2
},
{
"system": "phone",
"value": "(03) 5555 8834",
"use": "old",
"period": {
"end": "2014"
}
}
],
"gender": "male",
"birthDate": "1974-12-25",
"_birthDate": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",
"valueDateTime": "1974-12-25T14:35:45-05:00"
}
]
},
"deceasedBoolean": false,
"address": [
{
"use": "home",
"type": "both",
"text": "534 Erewhon St PeasantVille, Rainbow, Vic 3999",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"district": "Rainbow",
"state": "Vic",
"postalCode": "3999",
"period": {
"start": "1974-12-25"
}
}
]
}