test max value set handling.
This commit is contained in:
parent
d63a8f7be3
commit
09b74eab50
|
@ -139,4 +139,28 @@ public class ValueSetUtilities {
|
|||
return -1;
|
||||
}
|
||||
|
||||
public static ValueSet generateImplicitValueSet(String uri) {
|
||||
if (uri.startsWith("http://snomed.info/sct"))
|
||||
return generateImplicitSnomedValueSet(uri);
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ValueSet generateImplicitSnomedValueSet(String uri) {
|
||||
if ("http://snomed.info/sct?fhir_vs".equals(uri))
|
||||
return makeImplicitSnomedValueSet(uri);
|
||||
return null;
|
||||
}
|
||||
|
||||
private static ValueSet makeImplicitSnomedValueSet(String uri) {
|
||||
ValueSet vs = new ValueSet();
|
||||
vs.setUrl(uri);
|
||||
vs.setName("SCTValueSet");
|
||||
vs.setTitle("SCT ValueSet");
|
||||
vs.setDescription("All SNOMED CT Concepts");
|
||||
vs.setCopyright("This value set includes content from SNOMED CT, which is copyright © 2002+ International Health Terminology Standards Development Organisation (SNOMED International), and distributed by agreement between SNOMED International and HL7. Implementer use of SNOMED CT is not covered by this agreement");
|
||||
vs.setStatus(PublicationStatus.ACTIVE);
|
||||
vs.getCompose().addInclude().setSystem("http://snomed.info/sct");
|
||||
return vs;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -121,6 +121,7 @@ import org.hl7.fhir.r5.model.TypeDetails;
|
|||
import org.hl7.fhir.r5.model.UriType;
|
||||
import org.hl7.fhir.r5.model.ValueSet;
|
||||
import org.hl7.fhir.r5.model.ValueSet.ValueSetExpansionContainsComponent;
|
||||
import org.hl7.fhir.r5.terminologies.ValueSetUtilities;
|
||||
import org.hl7.fhir.r5.utils.FHIRLexer.FHIRLexerException;
|
||||
import org.hl7.fhir.r5.utils.FHIRPathEngine;
|
||||
import org.hl7.fhir.r5.utils.FHIRPathEngine.IEvaluationContext;
|
||||
|
@ -2554,6 +2555,8 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
fr = context.fetchResource(ValueSet.class, reference);
|
||||
}
|
||||
}
|
||||
if (fr == null)
|
||||
fr = ValueSetUtilities.generateImplicitValueSet(reference);
|
||||
txTime = txTime + (System.nanoTime() - t);
|
||||
return fr;
|
||||
}
|
||||
|
|
|
@ -854,6 +854,34 @@
|
|||
"errorCount": 1
|
||||
}
|
||||
},
|
||||
"observation-maxvs-base.xml": {
|
||||
"errorCount": 0,
|
||||
"profile": {
|
||||
"source": "maxvalueset-profile.xml",
|
||||
"errorCount": 0
|
||||
}
|
||||
},
|
||||
"observation-maxvs-ex.xml": {
|
||||
"errorCount": 0,
|
||||
"profile": {
|
||||
"source": "maxvalueset-profile.xml",
|
||||
"errorCount": 0
|
||||
}
|
||||
},
|
||||
"observation-maxvs-text.xml": {
|
||||
"errorCount": 0,
|
||||
"profile": {
|
||||
"source": "maxvalueset-profile.xml",
|
||||
"errorCount": 0
|
||||
}
|
||||
},
|
||||
"observation-maxvs-wrong.xml": {
|
||||
"errorCount": 0,
|
||||
"profile": {
|
||||
"source": "maxvalueset-profile.xml",
|
||||
"errorCount": 1
|
||||
}
|
||||
},
|
||||
"bundle-local-refs.xml" : {
|
||||
"errorCount": 0,
|
||||
"warningCount": 0
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<StructureDefinition xmlns="http://hl7.org/fhir">
|
||||
<url value="http://hl7.org/fhir/StructureDefinition/multi-profile-same-resource-profile"/>
|
||||
<name value="MaxValueSetProfile"/>
|
||||
<status value="draft"/>
|
||||
<description value="Profile with max value Set"/>
|
||||
<kind value="resource"/>
|
||||
<abstract value="false"/>
|
||||
<type value="Observation"/>
|
||||
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/Observation"/>
|
||||
<derivation value="constraint"/>
|
||||
<differential>
|
||||
<element id="Observation.code">
|
||||
<path value="Observation.code"/>
|
||||
<min value="1"/>
|
||||
<max value="1"/>
|
||||
<binding>
|
||||
<strength value="extensible"/>
|
||||
<valueSet value="http://hl7.org/fhir/ValueSet/clinical-findings"/>
|
||||
<extension url="http://hl7.org/fhir/StructureDefinition/elementdefinition-maxValueSet">
|
||||
<valueCanonical value="http://snomed.info/sct?fhir_vs"/>
|
||||
</extension>
|
||||
</binding>
|
||||
</element>
|
||||
</differential>
|
||||
</StructureDefinition>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Observation xmlns="http://hl7.org/fhir">
|
||||
<status value="final"/>
|
||||
<code>
|
||||
<coding>
|
||||
<system value="http://snomed.info/sct"/>
|
||||
<code value="109006"/>
|
||||
<display value="Anxiety disorder of childhood OR adolescence"/>
|
||||
</coding>
|
||||
</code>
|
||||
<subject>
|
||||
<reference value="Patient/example"/>
|
||||
</subject>
|
||||
</Observation>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Observation xmlns="http://hl7.org/fhir">
|
||||
<status value="final"/>
|
||||
<code>
|
||||
<coding>
|
||||
<system value="http://snomed.info/sct"/>
|
||||
<code value="106004"/>
|
||||
<display value="Posterior carpal region"/>
|
||||
</coding>
|
||||
</code>
|
||||
<subject>
|
||||
<reference value="Patient/example"/>
|
||||
</subject>
|
||||
</Observation>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Observation xmlns="http://hl7.org/fhir">
|
||||
<status value="final"/>
|
||||
<code>
|
||||
<text value="Anxiety disorder of childhood OR adolescence"/>
|
||||
</code>
|
||||
<subject>
|
||||
<reference value="Patient/example"/>
|
||||
</subject>
|
||||
</Observation>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Observation xmlns="http://hl7.org/fhir">
|
||||
<status value="final"/>
|
||||
<code>
|
||||
<coding>
|
||||
<system value="http://loinc.org"/>
|
||||
<code value="29463-7"/>
|
||||
<display value="Body Weight"/>
|
||||
</coding>
|
||||
</code>
|
||||
<subject>
|
||||
<reference value="Patient/example"/>
|
||||
</subject>
|
||||
</Observation>
|
Loading…
Reference in New Issue