Merge pull request #1572 from hapifhir/2024-03-gg-tx-improvements
2024 03 gg tx improvements
This commit is contained in:
commit
27bf474d7e
|
@ -3298,5 +3298,96 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public <T extends Resource> List<T> fetchResourcesByUrl(Class<T> class_, String uri) {
|
||||
List<T> res = new ArrayList<>();
|
||||
if (uri != null && !uri.startsWith("#")) {
|
||||
if (class_ == StructureDefinition.class) {
|
||||
uri = ProfileUtilities.sdNs(uri, null);
|
||||
}
|
||||
assert !uri.contains("|");
|
||||
if (uri.contains("#")) {
|
||||
uri = uri.substring(0, uri.indexOf("#"));
|
||||
}
|
||||
synchronized (lock) {
|
||||
if (class_ == Resource.class || class_ == null) {
|
||||
for (Map<String, ResourceProxy> rt : allResourcesById.values()) {
|
||||
for (ResourceProxy r : rt.values()) {
|
||||
if (uri.equals(r.getUrl())) {
|
||||
res.add((T) r.getResource());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (class_ == ImplementationGuide.class || class_ == Resource.class || class_ == null) {
|
||||
for (ImplementationGuide cr : guides.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == CapabilityStatement.class || class_ == Resource.class || class_ == null) {
|
||||
for (CapabilityStatement cr : capstmts.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == Measure.class || class_ == Resource.class || class_ == null) {
|
||||
for (Measure cr : measures.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == Library.class || class_ == Resource.class || class_ == null) {
|
||||
for (Library cr : libraries.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == StructureDefinition.class || class_ == Resource.class || class_ == null) {
|
||||
for (StructureDefinition cr : structures.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == StructureMap.class || class_ == Resource.class || class_ == null) {
|
||||
for (StructureMap cr : transforms.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == NamingSystem.class || class_ == Resource.class || class_ == null) {
|
||||
for (NamingSystem cr : systems.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == ValueSet.class || class_ == Resource.class || class_ == null) {
|
||||
for (ValueSet cr : valueSets.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == CodeSystem.class || class_ == Resource.class || class_ == null) {
|
||||
for (CodeSystem cr : codeSystems.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == ConceptMap.class || class_ == Resource.class || class_ == null) {
|
||||
for (ConceptMap cr : maps.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == ActorDefinition.class || class_ == Resource.class || class_ == null) {
|
||||
for (ActorDefinition cr : actors.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == Requirements.class || class_ == Resource.class || class_ == null) {
|
||||
for (Requirements cr : requirements.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == PlanDefinition.class || class_ == Resource.class || class_ == null) {
|
||||
for (PlanDefinition cr : plans.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == OperationDefinition.class || class_ == Resource.class || class_ == null) {
|
||||
for (OperationDefinition cr : operations.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == Questionnaire.class || class_ == Resource.class || class_ == null) {
|
||||
for (Questionnaire cr : questionnaires.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
} else if (class_ == SearchParameter.class || class_ == Resource.class || class_ == null) {
|
||||
for (SearchParameter cr : searchParameters.getForUrl(uri)) {
|
||||
res.add((T) cr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -537,6 +537,16 @@ public class CanonicalResourceManager<T extends CanonicalResource> {
|
|||
}
|
||||
}
|
||||
|
||||
public List<T> getForUrl(String url) {
|
||||
List<T> res = new ArrayList<>();
|
||||
List<CanonicalResourceManager<T>.CachedCanonicalResource<T>> list = listForUrl.get(url);
|
||||
if (list != null) {
|
||||
for (CanonicalResourceManager<T>.CachedCanonicalResource<T> t : list) {
|
||||
res.add(t.getResource());
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is asking for a packaged version aware resolution
|
||||
|
|
|
@ -191,6 +191,15 @@ public interface IWorkerContext {
|
|||
public <T extends Resource> List<T> fetchResourcesByType(Class<T> class_, FhirPublication fhirVersion);
|
||||
public <T extends Resource> List<T> fetchResourcesByType(Class<T> class_);
|
||||
|
||||
|
||||
/**
|
||||
* Fetch all the resources for the given URL - all matching versions
|
||||
*
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
public <T extends Resource> List<T> fetchResourcesByUrl(Class<T> class_, String url);
|
||||
|
||||
/**
|
||||
* Variation of fetchResource when you have a string type, and don't need the right class
|
||||
*
|
||||
|
|
|
@ -562,9 +562,28 @@ public class Coding extends DataType implements IBaseCoding, ICompositeType, ICo
|
|||
base = base + "#"+getCode();
|
||||
if (hasDisplay())
|
||||
base = base+": '"+getDisplay()+"'";
|
||||
return base;
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
public static Coding fromLiteral(String value) {
|
||||
String sv = value.contains("#") ? value.substring(0, value.indexOf("#")) : value;
|
||||
String cp = value.contains("#") ? value.substring(value.indexOf("#")+1) : null;
|
||||
|
||||
String system = sv.contains("|") ? sv.substring(0, sv.indexOf("|")) : sv;
|
||||
String version = sv.contains("|") ? sv.substring(sv.indexOf("|")+1) : null;
|
||||
|
||||
String code = cp != null && cp.contains("'") ? cp.substring(0, cp.indexOf("'")) : cp;
|
||||
String display = cp != null && cp.contains("'") ? cp.substring(cp.indexOf("'")+1) : null;
|
||||
if (display != null) {
|
||||
display = display.trim();
|
||||
display = display.substring(0, display.length() -1);
|
||||
}
|
||||
if ((system == null || !Utilities.isAbsoluteUrl(system)) && code == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new Coding(system, version, code, display);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean matches(Coding other) {
|
||||
return other.hasCode() && this.hasCode() && other.hasSystem() && this.hasSystem() && this.getCode().equals(other.getCode()) && this.getSystem().equals(other.getSystem()) ;
|
||||
|
|
|
@ -110,6 +110,7 @@ public class ProfileDrivenRenderer extends ResourceRenderer {
|
|||
p.b().tx("Generated Narrative: "+r.fhirType()+(context.isContained() ? " #"+r.getId() : ""));
|
||||
if (!Utilities.noString(r.getId())) {
|
||||
p.an(r.getId());
|
||||
p.an("hc"+r.getId());
|
||||
}
|
||||
idDone = true;
|
||||
}
|
||||
|
@ -119,6 +120,7 @@ public class ProfileDrivenRenderer extends ResourceRenderer {
|
|||
}
|
||||
if (!Utilities.noString(r.getId()) && !idDone) {
|
||||
x.para().an(r.getId());
|
||||
x.para().an("hc"+r.getId());
|
||||
}
|
||||
try {
|
||||
StructureDefinition sd = r.getDefinition();
|
||||
|
@ -479,7 +481,7 @@ public class ProfileDrivenRenderer extends ResourceRenderer {
|
|||
Reference r = (Reference) e;
|
||||
if (r.getReference() != null && r.getReference().contains("#")) {
|
||||
if (containedIds.contains(r.getReference().substring(1))) {
|
||||
x.ah(r.getReference()).tx("See "+r.getReference());
|
||||
x.ah("#hc"+r.getReference().substring(1)).tx("See "+r.getReference());
|
||||
} else {
|
||||
// in this case, we render the resource in line
|
||||
ResourceWrapper rw = null;
|
||||
|
@ -493,7 +495,7 @@ public class ProfileDrivenRenderer extends ResourceRenderer {
|
|||
} else {
|
||||
String ref = context.getResolver() != null ?context.getResolver().urlForContained(context, res.fhirType(), res.getId(), rw.fhirType(), rw.getId()) : null;
|
||||
if (ref == null) {
|
||||
x.an(rw.getId());
|
||||
x.an("hc"+rw.getId());
|
||||
RenderingContext ctxtc = context.copy();
|
||||
ctxtc.setAddGeneratedNarrativeHeader(false);
|
||||
ctxtc.setContained(true);
|
||||
|
|
|
@ -361,8 +361,10 @@ public abstract class ResourceRenderer extends DataRenderer {
|
|||
} else {
|
||||
c = x.ah(r.getReference());
|
||||
}
|
||||
} else if ("#".equals(r.getReference())) {
|
||||
c = x.ah("#");
|
||||
} else {
|
||||
c = x.ah(r.getReference());
|
||||
c = x.ah("#hc"+r.getReference().substring(1));
|
||||
}
|
||||
} else {
|
||||
c = x.span(null, null);
|
||||
|
@ -610,7 +612,7 @@ public abstract class ResourceRenderer extends DataRenderer {
|
|||
|
||||
String id = getPrimitiveValue(r, "id");
|
||||
if (doId) {
|
||||
div.an(id);
|
||||
div.an("hc"+id);
|
||||
}
|
||||
|
||||
String lang = getPrimitiveValue(r, "language");
|
||||
|
|
|
@ -200,8 +200,12 @@ public class CodeSystemUtilities extends TerminologyUtilities {
|
|||
|
||||
|
||||
public static boolean isNotSelectable(CodeSystem cs, ConceptDefinitionComponent def) {
|
||||
String pd = getPropertyByUrl(cs, "http://hl7.org/fhir/concept-properties#notSelectable");
|
||||
if (pd == null) {
|
||||
pd = "notSelectable";
|
||||
}
|
||||
for (ConceptPropertyComponent p : def.getProperty()) {
|
||||
if ("notSelectable".equals(p.getCode()) && p.hasValue() && p.getValue() instanceof BooleanType)
|
||||
if (pd.equals(p.getCode()) && p.hasValue() && p.getValue() instanceof BooleanType)
|
||||
return ((BooleanType) p.getValue()).getValue();
|
||||
}
|
||||
return false;
|
||||
|
@ -910,6 +914,7 @@ public class CodeSystemUtilities extends TerminologyUtilities {
|
|||
}
|
||||
|
||||
public static boolean hasPropertyDef(CodeSystem cs, String property) {
|
||||
|
||||
for (PropertyComponent pd : cs.getProperty()) {
|
||||
if (pd.hasCode() && pd.getCode().equals(property)) {
|
||||
return true;
|
||||
|
@ -924,6 +929,10 @@ public class CodeSystemUtilities extends TerminologyUtilities {
|
|||
}
|
||||
|
||||
public static DataType getProperty(CodeSystem cs, ConceptDefinitionComponent def, String property) {
|
||||
PropertyComponent defn = getPropertyDefinition(cs, property);
|
||||
if (defn != null) {
|
||||
property = defn.getCode();
|
||||
}
|
||||
ConceptPropertyComponent cp = getProperty(def, property);
|
||||
return cp == null ? null : cp.getValue();
|
||||
}
|
||||
|
@ -986,5 +995,69 @@ public class CodeSystemUtilities extends TerminologyUtilities {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* property in this case is the name of a property that appears in a ValueSet filter
|
||||
*
|
||||
* @param cs
|
||||
* @param property
|
||||
* @return
|
||||
*/
|
||||
public static PropertyComponent getPropertyDefinition(CodeSystem cs, String property) {
|
||||
String uri = getStandardPropertyUri(property);
|
||||
if (uri != null) {
|
||||
for (PropertyComponent cp : cs.getProperty()) {
|
||||
if (uri.equals(cp.getUri())) {
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (PropertyComponent cp : cs.getProperty()) {
|
||||
if (cp.getCode().equals(property)) {
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isDefinedProperty(CodeSystem cs, String property) {
|
||||
String uri = getStandardPropertyUri(property);
|
||||
if (uri != null) {
|
||||
for (PropertyComponent cp : cs.getProperty()) {
|
||||
if (uri.equals(cp.getUri())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (PropertyComponent cp : cs.getProperty()) {
|
||||
if (cp.getCode().equals(property) && (uri == null || !cp.hasUri())) { // if uri is right, will return from above
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private static String getStandardPropertyUri(String property) {
|
||||
switch (property) {
|
||||
case "status" : return "http://hl7.org/fhir/concept-properties#status";
|
||||
case "inactive" : return "http://hl7.org/fhir/concept-properties#inactive";
|
||||
case "effectiveDate" : return "http://hl7.org/fhir/concept-properties#effectiveDate";
|
||||
case "deprecationDate" : return "http://hl7.org/fhir/concept-properties#deprecationDate";
|
||||
case "retirementDate" : return "http://hl7.org/fhir/concept-properties#retirementDate";
|
||||
case "notSelectable" : return "http://hl7.org/fhir/concept-properties#notSelectable";
|
||||
case "parent" : return "http://hl7.org/fhir/concept-properties#parent";
|
||||
case "child" : return "http://hl7.org/fhir/concept-properties#child";
|
||||
case "partOf" : return "http://hl7.org/fhir/concept-properties#partOf";
|
||||
case "synonym" : return "http://hl7.org/fhir/concept-properties#synonym";
|
||||
case "comment" : return "http://hl7.org/fhir/concept-properties#comment";
|
||||
case "itemWeight" : return "http://hl7.org/fhir/concept-properties#itemWeight";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isExemptFromMultipleVersionChecking(String url) {
|
||||
return Utilities.existsInList(url, "http://snomed.info/sct", "http://loinc.org");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
package org.hl7.fhir.r5.terminologies.expansion;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.hl7.fhir.r5.model.CodeSystem;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.ConceptDefinitionComponent;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.ConceptPropertyComponent;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.PropertyComponent;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.PropertyType;
|
||||
import org.hl7.fhir.r5.model.Enumerations.FilterOperator;
|
||||
import org.hl7.fhir.r5.model.ValueSet.ConceptSetFilterComponent;
|
||||
|
||||
public class KnownPropertyFilter extends ConceptFilter {
|
||||
|
||||
private ConceptSetFilterComponent filter;
|
||||
private String code;
|
||||
|
||||
public KnownPropertyFilter(List<String> allErrors, ConceptSetFilterComponent fc, String code) {
|
||||
super (allErrors);
|
||||
this.filter = fc;
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean includeConcept(CodeSystem cs, ConceptDefinitionComponent def) {
|
||||
ConceptPropertyComponent pc = getPropertyForConcept(def);
|
||||
if (pc != null) {
|
||||
String v = pc.getValue().isPrimitive() ? pc.getValue().primitiveValue() : null;
|
||||
switch (filter.getOp()) {
|
||||
case DESCENDENTOF: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case EQUAL: return filter.getValue().equals(v);
|
||||
case EXISTS: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case GENERALIZES: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case IN: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case ISA: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case ISNOTA: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case NOTIN: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case NULL: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
case REGEX: throw fail("not supported yet: "+filter.getOp().toCode());
|
||||
default:
|
||||
throw fail("Shouldn't get here");
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private ConceptPropertyComponent getPropertyForConcept(ConceptDefinitionComponent def) {
|
||||
for (ConceptPropertyComponent pc : def.getProperty()) {
|
||||
if (pc.hasCode() && pc.getCode().equals(code)) {
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -40,8 +40,6 @@ public class PropertyFilter extends ConceptFilter {
|
|||
default:
|
||||
throw fail("Shouldn't get here");
|
||||
}
|
||||
} else if (property.getType() == PropertyType.BOOLEAN && filter.getOp() == FilterOperator.EQUAL) {
|
||||
return "false".equals(filter.getValue());
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -49,7 +47,7 @@ public class PropertyFilter extends ConceptFilter {
|
|||
|
||||
private ConceptPropertyComponent getPropertyForConcept(ConceptDefinitionComponent def) {
|
||||
for (ConceptPropertyComponent pc : def.getProperty()) {
|
||||
if (pc.getCode().equals(property.getCode())) {
|
||||
if (pc.hasCode() && pc.getCode().equals(property.getCode())) {
|
||||
return pc;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1222,12 +1222,22 @@ public class ValueSetExpander extends ValueSetProcessBase {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (isDefinedProperty(cs, fc.getProperty())) {
|
||||
} else if (CodeSystemUtilities.isDefinedProperty(cs, fc.getProperty())) {
|
||||
for (ConceptDefinitionComponent def : cs.getConcept()) {
|
||||
PropertyFilter pf = new PropertyFilter(allErrors, fc, CodeSystemUtilities.getPropertyDefinition(cs, fc.getProperty()));
|
||||
if (exclude) {
|
||||
excludeCodeAndDescendents(wc, cs, inc.getSystem(), def, null, imports, null, new PropertyFilter(allErrors, fc, getPropertyDefinition(cs, fc.getProperty())), filters, exp);
|
||||
excludeCodeAndDescendents(wc, cs, inc.getSystem(), def, null, imports, null, pf, filters, exp);
|
||||
} else {
|
||||
addCodeAndDescendents(wc, cs, inc.getSystem(), def, null, expParams, imports, null, new PropertyFilter(allErrors, fc, getPropertyDefinition(cs, fc.getProperty())), noInactive, exp.getProperty(), filters, exp);
|
||||
addCodeAndDescendents(wc, cs, inc.getSystem(), def, null, expParams, imports, null, pf, noInactive, exp.getProperty(), filters, exp);
|
||||
}
|
||||
}
|
||||
} else if (isKnownProperty(fc.getProperty(), cs)) {
|
||||
for (ConceptDefinitionComponent def : cs.getConcept()) {
|
||||
KnownPropertyFilter pf = new KnownPropertyFilter(allErrors, fc, fc.getProperty());
|
||||
if (exclude) {
|
||||
excludeCodeAndDescendents(wc, cs, inc.getSystem(), def, null, imports, null, pf, filters, exp);
|
||||
} else {
|
||||
addCodeAndDescendents(wc, cs, inc.getSystem(), def, null, expParams, imports, null, pf, noInactive, exp.getProperty(), filters, exp);
|
||||
}
|
||||
}
|
||||
} else if ("code".equals(fc.getProperty()) && fc.getOp() == FilterOperator.REGEX) {
|
||||
|
@ -1243,6 +1253,10 @@ public class ValueSetExpander extends ValueSetProcessBase {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isKnownProperty(String property, CodeSystem cs) {
|
||||
return Utilities.existsInList(property, "notSelectable");
|
||||
}
|
||||
|
||||
private List<ConceptDefinitionDesignationComponent> mergeDesignations(ConceptDefinitionComponent def,
|
||||
List<ConceptDefinitionDesignationComponent> list) {
|
||||
List<ConceptDefinitionDesignationComponent> res = new ArrayList<>();
|
||||
|
@ -1253,23 +1267,7 @@ public class ValueSetExpander extends ValueSetProcessBase {
|
|||
return res;
|
||||
}
|
||||
|
||||
private PropertyComponent getPropertyDefinition(CodeSystem cs, String property) {
|
||||
for (PropertyComponent cp : cs.getProperty()) {
|
||||
if (cp.getCode().equals(property)) {
|
||||
return cp;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean isDefinedProperty(CodeSystem cs, String property) {
|
||||
for (PropertyComponent cp : cs.getProperty()) {
|
||||
if (cp.getCode().equals(property)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private void addFragmentWarning(ValueSetExpansionComponent exp, CodeSystem cs) {
|
||||
String url = cs.getVersionedUrl();
|
||||
|
|
|
@ -1365,14 +1365,20 @@ public class ValueSetValidator extends ValueSetProcessBase {
|
|||
return codeInConceptFilter(cs, f, code);
|
||||
else if ("code".equals(f.getProperty()) && f.getOp() == FilterOperator.REGEX)
|
||||
return codeInRegexFilter(cs, f, code);
|
||||
else if (CodeSystemUtilities.hasPropertyDef(cs, f.getProperty())) {
|
||||
else if (CodeSystemUtilities.isDefinedProperty(cs, f.getProperty())) {
|
||||
return codeInPropertyFilter(cs, f, code);
|
||||
} else if (isKnownProperty(f.getProperty())) {
|
||||
return codeInKnownPropertyFilter(cs, f, code);
|
||||
} else {
|
||||
System.out.println("todo: handle filters with property = "+f.getProperty()+" "+f.getOp().toCode());
|
||||
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_HANDLE_SYSTEM__FILTER_WITH_PROPERTY__, cs.getUrl(), f.getProperty(), f.getOp().toCode()));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isKnownProperty(String code) {
|
||||
return Utilities.existsInList(code, "notSelectable");
|
||||
}
|
||||
|
||||
private boolean codeInPropertyFilter(CodeSystem cs, ConceptSetFilterComponent f, String code) {
|
||||
switch (f.getOp()) {
|
||||
case EQUAL:
|
||||
|
@ -1394,6 +1400,29 @@ public class ValueSetValidator extends ValueSetProcessBase {
|
|||
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_HANDLE_SYSTEM__PROPERTY_FILTER_WITH_OP__, cs.getUrl(), f.getOp()));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean codeInKnownPropertyFilter(CodeSystem cs, ConceptSetFilterComponent f, String code) {
|
||||
|
||||
switch (f.getOp()) {
|
||||
case EQUAL:
|
||||
if (f.getValue() == null) {
|
||||
return false;
|
||||
}
|
||||
DataType d = CodeSystemUtilities.getProperty(cs, code, f.getProperty());
|
||||
return d != null && f.getValue().equals(d.primitiveValue());
|
||||
case EXISTS:
|
||||
return CodeSystemUtilities.getProperty(cs, code, f.getProperty()) != null;
|
||||
case REGEX:
|
||||
if (f.getValue() == null) {
|
||||
return false;
|
||||
}
|
||||
d = CodeSystemUtilities.getProperty(cs, code, f.getProperty());
|
||||
return d != null && d.primitiveValue() != null && d.primitiveValue().matches(f.getValue());
|
||||
default:
|
||||
System.out.println("todo: handle known property filters with op = "+f.getOp());
|
||||
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_HANDLE_SYSTEM__PROPERTY_FILTER_WITH_OP__, cs.getUrl(), f.getOp()));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean codeInRegexFilter(CodeSystem cs, ConceptSetFilterComponent f, String code) {
|
||||
return code.matches(f.getValue());
|
||||
|
|
|
@ -269,6 +269,8 @@ public class ToolingExtensions {
|
|||
public static final String EXT_ISSUE_SLICE_INFO = "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-slicetext";
|
||||
public static final String EXT_ISSUE_SERVER = "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server";
|
||||
public static final String EXT_WEB_SOURCE = "http://hl7.org/fhir/tools/StructureDefinition/web-source";
|
||||
public static final String EXT_APPLICABLE_VERSION = "http://hl7.org/fhir/StructureDefinition/version-specific-use";
|
||||
public static final String EXT_APPLICABLE_VERSION_VALUE = "http://hl7.org/fhir/StructureDefinition/version-specific-value";
|
||||
|
||||
// specific extension helpers
|
||||
|
||||
|
|
|
@ -6,7 +6,9 @@ import org.hl7.fhir.r5.model.CanonicalResource;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
public interface IValidatorResourceFetcher {
|
||||
|
||||
|
@ -27,7 +29,7 @@ public interface IValidatorResourceFetcher {
|
|||
* @return an R5 version of the resource
|
||||
* @throws URISyntaxException
|
||||
*/
|
||||
CanonicalResource fetchCanonicalResource(IResourceValidator validator, String url) throws URISyntaxException;
|
||||
CanonicalResource fetchCanonicalResource(IResourceValidator validator, Object appContext, String url) throws URISyntaxException;
|
||||
|
||||
/**
|
||||
* Whether to try calling fetchCanonicalResource for this reference (not whether it will succeed - just throw an exception from fetchCanonicalResource if it doesn't resolve. This is a policy thing.
|
||||
|
@ -38,4 +40,6 @@ public interface IValidatorResourceFetcher {
|
|||
* @return
|
||||
*/
|
||||
boolean fetchesCanonicalResource(IResourceValidator validator, String url);
|
||||
|
||||
Set<String> fetchCanonicalResourceVersions(IResourceValidator validator, Object appContext, String url);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.hl7.fhir.r5.context;
|
||||
|
||||
import org.hl7.fhir.exceptions.FHIRException;
|
||||
import org.hl7.fhir.r5.model.CanonicalResource;
|
||||
import org.hl7.fhir.r5.model.PackageInformation;
|
||||
import org.hl7.fhir.r5.model.Parameters;
|
||||
import org.hl7.fhir.r5.model.Resource;
|
||||
|
@ -16,6 +17,8 @@ import net.sourceforge.plantuml.tim.stdlib.GetVariableValue;
|
|||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
@ -85,6 +88,11 @@ public class BaseWorkerContextTests {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Resource> List<T> fetchResourcesByUrl(Class<T> class_, String url) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
};
|
||||
baseWorkerContext.expParameters = new Parameters();
|
||||
return baseWorkerContext;
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package org.hl7.fhir.utilities;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
|
@ -171,4 +174,12 @@ public class CommaSeparatedStringBuilder {
|
|||
}
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
public static String join(String sep, EnumSet<? extends Enum> set) {
|
||||
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder(sep);
|
||||
for (Enum e : set) {
|
||||
b.append(e.toString());
|
||||
}
|
||||
return b.toString();
|
||||
}
|
||||
}
|
|
@ -94,52 +94,59 @@ public class ZipGenerator {
|
|||
}
|
||||
|
||||
public void addFolder(String actualDir, String statedDir, boolean omitIfExists) throws IOException {
|
||||
File fd = new CSFile(actualDir);
|
||||
String files[] = fd.list();
|
||||
for (String f : files) {
|
||||
if (new CSFile(Utilities.path(actualDir, f)).isDirectory())
|
||||
addFolder(Utilities.path(actualDir, f), Utilities.pathURL(statedDir, f), omitIfExists);
|
||||
else
|
||||
addFileName(Utilities.pathURL(statedDir, f), Utilities.path(actualDir, f), omitIfExists);
|
||||
}
|
||||
File fd = new CSFile(actualDir);
|
||||
String files[] = fd.list();
|
||||
for (String f : files) {
|
||||
if (!".DS_Store".equals(f)) {
|
||||
if (new CSFile(Utilities.path(actualDir, f)).isDirectory())
|
||||
addFolder(Utilities.path(actualDir, f), Utilities.pathURL(statedDir, f), omitIfExists);
|
||||
else
|
||||
addFileName(Utilities.pathURL(statedDir, f), Utilities.path(actualDir, f), omitIfExists);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addFolder(String actualDir, String statedDir, boolean omitIfExists, String noExt) throws IOException {
|
||||
File fd = new CSFile(actualDir);
|
||||
String files[] = fd.list();
|
||||
for (String f : files) {
|
||||
if (new CSFile(Utilities.path(actualDir, f)).isDirectory())
|
||||
addFolder(Utilities.path(actualDir, f), Utilities.pathURL(statedDir, f), omitIfExists, noExt);
|
||||
else if (noExt == null || !f.endsWith(noExt))
|
||||
addFileName(Utilities.pathURL(statedDir, f), Utilities.path(actualDir, f), omitIfExists);
|
||||
if (!".DS_Store".equals(f)) {
|
||||
if (new CSFile(Utilities.path(actualDir, f)).isDirectory())
|
||||
addFolder(Utilities.path(actualDir, f), Utilities.pathURL(statedDir, f), omitIfExists, noExt);
|
||||
else if (noExt == null || !f.endsWith(noExt))
|
||||
addFileName(Utilities.pathURL(statedDir, f), Utilities.path(actualDir, f), omitIfExists);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addFiles(String actualDir, String statedDir, String ext, String noExt) throws FileNotFoundException, IOException {
|
||||
byte data[] = new byte[BUFFER];
|
||||
statedDir = statedDir.replace("\\", "/");
|
||||
File f = new CSFile(actualDir);
|
||||
public void addFiles(String actualDir, String statedDir, String ext, String noExt) throws FileNotFoundException, IOException {
|
||||
byte data[] = new byte[BUFFER];
|
||||
statedDir = statedDir.replace("\\", "/");
|
||||
File f = new CSFile(actualDir);
|
||||
|
||||
String files[] = f.list();
|
||||
if (files == null) {
|
||||
String files[] = f.list();
|
||||
if (files == null) {
|
||||
System.out.println("no files found in "+f.getName());
|
||||
} else {
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if ( new CSFile(actualDir + files[i]).isFile() && ((ext == null || files[i].endsWith(ext)) && (noExt == null || !files[i].endsWith(noExt)))) {
|
||||
FileInputStream fi = new FileInputStream(actualDir + files[i]);
|
||||
BufferedInputStream origin = new BufferedInputStream(fi, BUFFER);
|
||||
ZipEntry entry = new ZipEntry(statedDir + files[i]);
|
||||
names.add(statedDir + files[i]);
|
||||
out.putNextEntry(entry);
|
||||
int count;
|
||||
while ((count = origin.read(data, 0, BUFFER)) != -1) {
|
||||
out.write(data, 0, count);
|
||||
}
|
||||
origin.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if (!".DS_Store".equals(files[i])) {
|
||||
String fn = Utilities.path(actualDir, files[i]);
|
||||
if ( new CSFile(fn).isFile() && ((ext == null || files[i].endsWith(ext)) && (noExt == null || !files[i].endsWith(noExt)))) {
|
||||
FileInputStream fi = new FileInputStream(fn);
|
||||
BufferedInputStream origin = new BufferedInputStream(fi, BUFFER);
|
||||
ZipEntry entry = new ZipEntry(statedDir + files[i]);
|
||||
names.add(statedDir + files[i]);
|
||||
out.putNextEntry(entry);
|
||||
int count;
|
||||
while ((count = origin.read(data, 0, BUFFER)) != -1) {
|
||||
out.write(data, 0, count);
|
||||
}
|
||||
origin.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addFilesFiltered(String actualDir, String statedDir, String ext, String[] noExt) throws FileNotFoundException, IOException {
|
||||
byte data[] = new byte[BUFFER];
|
||||
|
@ -148,28 +155,30 @@ public class ZipGenerator {
|
|||
|
||||
String files[] = f.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
if ( new CSFile(actualDir + files[i]).isFile() && ((ext == null || files[i].endsWith(ext)))) {
|
||||
boolean ok = true;
|
||||
for (String n : noExt) {
|
||||
ok = ok && !files[i].endsWith(n);
|
||||
}
|
||||
if (ok) {
|
||||
FileInputStream fi = new FileInputStream(actualDir + files[i]);
|
||||
BufferedInputStream origin = new BufferedInputStream(fi, BUFFER);
|
||||
ZipEntry entry = new ZipEntry(statedDir + files[i]);
|
||||
names.add(statedDir + files[i]);
|
||||
out.putNextEntry(entry);
|
||||
int count;
|
||||
while ((count = origin.read(data, 0, BUFFER)) != -1) {
|
||||
out.write(data, 0, count);
|
||||
if (!".DS_Store".equals(files[i])) {
|
||||
if ( new CSFile(actualDir + files[i]).isFile() && ((ext == null || files[i].endsWith(ext)))) {
|
||||
boolean ok = true;
|
||||
for (String n : noExt) {
|
||||
ok = ok && !files[i].endsWith(n);
|
||||
}
|
||||
if (ok) {
|
||||
FileInputStream fi = new FileInputStream(actualDir + files[i]);
|
||||
BufferedInputStream origin = new BufferedInputStream(fi, BUFFER);
|
||||
ZipEntry entry = new ZipEntry(statedDir + files[i]);
|
||||
names.add(statedDir + files[i]);
|
||||
out.putNextEntry(entry);
|
||||
int count;
|
||||
while ((count = origin.read(data, 0, BUFFER)) != -1) {
|
||||
out.write(data, 0, count);
|
||||
}
|
||||
origin.close();
|
||||
}
|
||||
origin.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addFileSource(String path, String cnt, boolean omitIfExists) throws IOException {
|
||||
public void addFileSource(String path, String cnt, boolean omitIfExists) throws IOException {
|
||||
File tmp = Utilities.createTempFile("tmp", ".tmp");
|
||||
TextFile.stringToFile(cnt, tmp.getAbsolutePath());
|
||||
addFileName(path, tmp.getAbsolutePath(), omitIfExists);
|
||||
|
|
|
@ -1060,6 +1060,44 @@ public class I18nConstants {
|
|||
public static final String UNABLE_TO_INFER_CODESYSTEM = "UNABLE_TO_INFER_CODESYSTEM";
|
||||
public static final String CODE_CASE_DIFFERENCE = "CODE_CASE_DIFFERENCE";
|
||||
public static final String ILLEGAL_PROPERTY = "ILLEGAL_PROPERTY";
|
||||
public static final String VALUESET_INCLUDE_SYSTEM_ABSOLUTE = "VALUESET_INCLUDE_SYSTEM_ABSOLUTE";
|
||||
public static final String VALUESET_INCLUDE_SYSTEM_ABSOLUTE_FRAG = "VALUESET_INCLUDE_SYSTEM_ABSOLUTE_FRAG";
|
||||
public static final String CODESYSTEM_CS_NO_VS_SUPPLEMENT1 = "CODESYSTEM_CS_NO_VS_SUPPLEMENT1";
|
||||
public static final String CODESYSTEM_CS_NO_VS_SUPPLEMENT2 = "CODESYSTEM_CS_NO_VS_SUPPLEMENT2";
|
||||
public static final String CODESYSTEM_CS_SUPP_NO_SUPP = "CODESYSTEM_CS_SUPP_NO_SUPP";
|
||||
public static final String VALUESET_INCLUDE_CS_CONTENT = "VALUESET_INCLUDE_CS_CONTENT";
|
||||
public static final String VALUESET_INCLUDE_CSVER_CONTENT = "VALUESET_INCLUDE_CSVER_CONTENT";
|
||||
public static final String VALUESET_INCLUDE_CS_SUPPLEMENT = "VALUESET_INCLUDE_CS_SUPPLEMENT";
|
||||
public static final String VALUESET_INCLUDE_CSVER_SUPPLEMENT = "VALUESET_INCLUDE_CSVER_SUPPLEMENT";
|
||||
public static final String CODESYSTEM_SUPP_NO_DISPLAY = "CODESYSTEM_SUPP_NO_DISPLAY";
|
||||
public static final String CODESYSTEM_NOT_CONTAINED = "CODESYSTEM_NOT_CONTAINED";
|
||||
public static final String CODESYSTEM_THO_CHECK = "CODESYSTEM_THO_CHECK";
|
||||
public static final String TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS = "TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS";
|
||||
public static final String CODESYSTEM_PROPERTY_DUPLICATE_URI = "CODESYSTEM_PROPERTY_DUPLICATE_URI";
|
||||
public static final String CODESYSTEM_PROPERTY_BAD_HL7_URI = "CODESYSTEM_PROPERTY_BAD_HL7_URI";
|
||||
public static final String CODESYSTEM_PROPERTY_SYNONYM_CHECK = "CODESYSTEM_PROPERTY_SYNONYM_CHECK";
|
||||
public static final String CODESYSTEM_PROPERTY_DUPLICATE_CODE = "CODESYSTEM_PROPERTY_DUPLICATE_CODE";
|
||||
public static final String CODESYSTEM_PROPERTY_URI_CODE_MISMATCH = "CODESYSTEM_PROPERTY_URI_CODE_MISMATCH";
|
||||
public static final String CODESYSTEM_PROPERTY_URI_TYPE_MISMATCH = "CODESYSTEM_PROPERTY_URI_TYPE_MISMATCH";
|
||||
public static final String CODESYSTEM_PROPERTY_UNKNOWN_CODE = "CODESYSTEM_PROPERTY_UNKNOWN_CODE";
|
||||
public static final String CODESYSTEM_PROPERTY_KNOWN_CODE_SUGGESTIVE = "CODESYSTEM_PROPERTY_KNOWN_CODE_SUGGESTIVE";
|
||||
public static final String CODESYSTEM_PROPERTY_CODE_TYPE_MISMATCH = "CODESYSTEM_PROPERTY_CODE_TYPE_MISMATCH";
|
||||
public static final String CODESYSTEM_PROPERTY_UNDEFINED = "CODESYSTEM_PROPERTY_UNDEFINED";
|
||||
public static final String CODESYSTEM_PROPERTY_NO_VALUE = "CODESYSTEM_PROPERTY_NO_VALUE";
|
||||
public static final String CODESYSTEM_PROPERTY_WRONG_TYPE = "CODESYSTEM_PROPERTY_WRONG_TYPE";
|
||||
public static final String CODESYSTEM_DESIGNATION_DISP_CLASH_NO_LANG = "CODESYSTEM_DESIGNATION_DISP_CLASH_NO_LANG";
|
||||
public static final String CODESYSTEM_DESIGNATION_DISP_CLASH_LANG = "CODESYSTEM_DESIGNATION_DISP_CLASH_LANG";
|
||||
public static final String VALUESET_UNKNOWN_FILTER_PROPERTY_NO_CS = "VALUESET_UNKNOWN_FILTER_PROPERTY_NO_CS";
|
||||
public static final String VALUESET_UNKNOWN_FILTER_PROPERTY = "VALUESET_UNKNOWN_FILTER_PROPERTY";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_BOOLEAN = "VALUESET_BAD_FILTER_VALUE_BOOLEAN";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_CODE = "VALUESET_BAD_FILTER_VALUE_CODE";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_DATETIME = "VALUESET_BAD_FILTER_VALUE_DATETIME";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_DECIMAL = "VALUESET_BAD_FILTER_VALUE_DECIMAL";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_INTEGER = "VALUESET_BAD_FILTER_VALUE_INTEGER";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_VALID_CODE = "VALUESET_BAD_FILTER_VALUE_VALID_CODE";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_CODED = "VALUESET_BAD_FILTER_VALUE_CODED";
|
||||
public static final String VALUESET_BAD_FILTER_VALUE_CODED_INVALID = "VALUESET_BAD_FILTER_VALUE_CODED_INVALID";
|
||||
public static final String VALUESET_BAD_FILTER_OP = "VALUESET_BAD_FILTER_OP";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -198,6 +198,14 @@ public abstract class XhtmlFluent {
|
|||
}
|
||||
}
|
||||
|
||||
public XhtmlNode imgT(String src, String alt) {
|
||||
if (alt == null) {
|
||||
return addTag("img").attribute("src", src).attribute("alt", ".");
|
||||
} else {
|
||||
return addTag("img").attribute("src", src).attribute("alt", alt).attribute("title", alt);
|
||||
}
|
||||
}
|
||||
|
||||
public XhtmlNode img(String src, String alt, String title) {
|
||||
return addTag("img").attribute("src", src).attribute("alt", alt).attribute("title", title);
|
||||
}
|
||||
|
|
|
@ -551,6 +551,8 @@ XHTML_URL_INVALID_CHARS_one = URL contains Invalid Character ({1})
|
|||
XHTML_URL_INVALID_CHARS_other = URL contains {0} Invalid Characters ({1})
|
||||
TERMINOLOGY_TX_SYSTEM_HTTPS = The system URL ''{0}'' wrongly starts with https: not http:
|
||||
CODESYSTEM_CS_NO_VS_NOTCOMPLETE = Review the All Codes Value Set - incomplete CodeSystems generally should not have an all codes value set specified
|
||||
CODESYSTEM_CS_NO_VS_SUPPLEMENT1 = CodeSystems supplements should not have an all codes value set specified, and if they do, it must match the base code system
|
||||
CODESYSTEM_CS_NO_VS_SUPPLEMENT2 = CodeSystems supplements should not have an all codes value set specified, and if they do, it must match the base code system, and this one does not (''{0}'')
|
||||
TYPE_SPECIFIC_CHECKS_DT_IDENTIFIER_IETF_SYSTEM_VALUE = if identifier.system is ''urn:ietf:rfc:3986'', then the identifier.value must be a full URI (e.g. start with a scheme), not ''{0}''
|
||||
TYPE_SPECIFIC_CHECKS_DT_ATT_SIZE_INVALID = Stated Attachment Size {0} is not valid
|
||||
TYPE_SPECIFIC_CHECKS_DT_ATT_SIZE_CORRECT = Stated Attachment Size {0} does not match actual attachment size {1}
|
||||
|
@ -1056,7 +1058,6 @@ VALUESET_CIRCULAR_REFERENCE = Found a circularity pointing to {0} processing Val
|
|||
VALUESET_SUPPLEMENT_MISSING_one = Required supplement not found: {1}
|
||||
VALUESET_SUPPLEMENT_MISSING_other = Required supplements not found: {1}
|
||||
CONCEPTMAP_VS_TOO_MANY_CODES = The concept map has too many codes to validate ({0})
|
||||
CONCEPTMAP_VS_CONCEPT_CODE_UNKNOWN_SYSTEM = The code ''{1}'' comes from the system {0} which could not be found, so it''s not known whether it''s valid in the value set ''{2}''
|
||||
CONCEPTMAP_VS_INVALID_CONCEPT_CODE = The code ''{1}'' in the system {0} is not valid in the value set ''{2}''
|
||||
CONCEPTMAP_VS_INVALID_CONCEPT_CODE_VER = The code ''{2}'' in the system {0} version {1} is not valid in the value set ''{3}''
|
||||
VALUESET_INC_TOO_MANY_CODES = The value set include has too many codes to validate ({0}), so each individual code has not been checked
|
||||
|
@ -1108,7 +1109,7 @@ Validation_VAL_Profile_Minimum_SLICE_other = Slice ''{3}'': minimum required = {
|
|||
FHIRPATH_UNKNOWN_EXTENSION = Reference to an unknown extension - double check that the URL ''{0}'' is correct
|
||||
Type_Specific_Checks_DT_XHTML_Resolve = Hyperlink ''{0}'' at ''{1}'' for ''{2}''' does not resolve
|
||||
Type_Specific_Checks_DT_XHTML_Resolve_Img = Image source ''{0}'' at ''{1}'' does not resolve
|
||||
TYPE_SPECIFIC_CHECKS_DT_XHTML_MULTIPLE_MATCHES = Hyperlink ''{0}'' at ''{1}'' for ''{2}''' resolves to multiple targets
|
||||
TYPE_SPECIFIC_CHECKS_DT_XHTML_MULTIPLE_MATCHES = Hyperlink ''{0}'' at ''{1}'' for ''{2}'' resolves to multiple targets ({3})
|
||||
CONTAINED_ORPHAN_DOM3 = The contained resource ''{0}'' is not referenced to from elsewhere in the containing resource nor does it refer to the containing resource (dom-3)
|
||||
VALUESET_INCLUDE_CS_NOT_CS = The include system ''{0}'' is a reference to a contained resource, but the contained resource with that id is not a CodeSystem, it's a {1}
|
||||
VALUESET_INCLUDE_CS_NOT_FOUND = No matching contained code system found for system ''{0}''
|
||||
|
@ -1118,3 +1119,40 @@ VALUESET_INCLUDE_CSVER_MULTI_FOUND = Multiple matching contained code systems fo
|
|||
CODE_CASE_DIFFERENCE = The code ''{0}'' differs from the correct code ''{1}'' by case. Although the code system ''{2}'' is case insensitive, implementers are strongly encouraged to use the correct case anyway
|
||||
SCT_NO_MRCM = Not validated against the Machine Readable Concept Model (MRCM)
|
||||
ILLEGAL_PROPERTY = The property ''{0}'' is invalid
|
||||
VALUESET_INCLUDE_SYSTEM_ABSOLUTE = URI values in ValueSet.compose.include.system must be absolute
|
||||
VALUESET_INCLUDE_SYSTEM_ABSOLUTE_FRAG = URI values in ValueSet.compose.include.system must be absolute. To reference a contained code system, use the full CodeSystem URL and reference it using the http://hl7.org/fhir/StructureDefinition/valueset-system extension
|
||||
CODESYSTEM_CS_SUPP_NO_SUPP = The code system is marked as a supplement, but it does not define what code system it supplements
|
||||
VALUESET_INCLUDE_CS_CONTENT = The value set references CodeSystem ''{0}'' which has status ''{1}''
|
||||
VALUESET_INCLUDE_CSVER_CONTENT = The value set references CodeSystem ''{0}'' version ''{2}'' which has status ''{1}''
|
||||
VALUESET_INCLUDE_CS_SUPPLEMENT = The value set references CodeSystem ''{0}'' which is a supplement. It must reference the underlying CodeSystem ''{1}'' and use the http://hl7.org/fhir/StructureDefinition/valueset-supplement extension for the supplement
|
||||
VALUESET_INCLUDE_CSVER_SUPPLEMENT = The value set references CodeSystem ''{0}'' version ''{2}'' which is a supplement. It must reference the underlying CodeSystem ''{1}'' and use the http://hl7.org/fhir/StructureDefinition/valueset-supplement extension for the supplement
|
||||
CODESYSTEM_SUPP_NO_DISPLAY = This display (''{0}'') differs from that defined by the base code system (''{1}''). Both displays claim to be 'the "primary designation" for the same language (''{2}''), and the correct interpretation of this is undefined
|
||||
CODESYSTEM_NOT_CONTAINED = CodeSystems are referred to directly from Coding.system, so it's generally best for them not to be contained resources
|
||||
CODESYSTEM_THO_CHECK = Most code systems defined in HL7 IGs will need to move to THO later during the process. Consider giving this code system a THO URL now (See https://confluence.hl7.org/display/TSMG/Terminology+Play+Book)
|
||||
TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS = There are multiple different potential matches for the url ''{0}''. It might be a good idea to fix to the correct version to reduce the likelihood of a wrong version being selected by an implementation/implementer. Using version ''{1}'', found versions: {2}
|
||||
ABSTRACT_CODE_NOT_ALLOWED = Code ''{0}#{1}'' is abstract, and not allowed in this context
|
||||
CODESYSTEM_PROPERTY_DUPLICATE_URI = A property is already defined with the URI ''{0}''
|
||||
CODESYSTEM_PROPERTY_BAD_HL7_URI = Unknown CodeSystem Property ''{0}''. If you are creating your own property, do not create it in the HL7 namespace
|
||||
CODESYSTEM_PROPERTY_SYNONYM_CHECK = The synonym ''{0}'' is not also defined in the code system. The Synonym property should only used to declare equivalence to other existing codes
|
||||
CODESYSTEM_PROPERTY_DUPLICATE_CODE = A property is already defined with the code ''{0}''
|
||||
CODESYSTEM_PROPERTY_URI_CODE_MISMATCH = The URI ''{0}'' is normally assigned the code ''{1}''. Using the code ''{2}'' will usually create confusion in ValueSet filters etc
|
||||
CODESYSTEM_PROPERTY_URI_TYPE_MISMATCH = Wrong type ''{2}'': The URI ''{0}'' identifies a property that has the type ''{1}''
|
||||
CODESYSTEM_PROPERTY_UNKNOWN_CODE = This property has only (''{0}'') a code and no URI, so it has no clearly defined meaning in the terminology ecosystem
|
||||
CODESYSTEM_PROPERTY_KNOWN_CODE_SUGGESTIVE = This property has only the standard code (''{0}'') but not the standard URI ''{1}'', so it has no clearly defined meaning in the terminology ecosystem
|
||||
CODESYSTEM_PROPERTY_CODE_TYPE_MISMATCH = Wrong type ''{2}'': The code ''{0}'' identifies a property that has the type ''{1}''
|
||||
CODESYSTEM_PROPERTY_UNDEFINED = The property ''{0}'' has no definition in CodeSystem.property. Many terminology tools won''t know what to do with it
|
||||
CODESYSTEM_PROPERTY_NO_VALUE = The property ''{0}'' has no value, and cannot be understoof
|
||||
CODESYSTEM_PROPERTY_WRONG_TYPE = The property ''{0}'' has the invalid type ''{1}'', when it is defined to have the type ''{2}''
|
||||
CODESYSTEM_DESIGNATION_DISP_CLASH_NO_LANG = The designation ''{0}'' has no use and no language, so is not differentiated from the base display (''{1}'')
|
||||
CODESYSTEM_DESIGNATION_DISP_CLASH_LANG = The designation ''{0}'' has no use and is in the same language (''{2}''), so is not differentiated from the base display (''{1}'')
|
||||
VALUESET_UNKNOWN_FILTER_PROPERTY = The property ''{0}'' is not known for the system ''{1}'', so may not be understood by the terminology ecosystem. Known properties for this system: {2}
|
||||
VALUESET_UNKNOWN_FILTER_PROPERTY_NO_CS = No definition can be found for the system {1}, and the property ''{0}'' is not a generally known property, so the property might not be valid, or understood by the terminology ecosystem. In case it's useful, the list of generally known properties for all systems is {2}
|
||||
VALUESET_BAD_FILTER_VALUE_BOOLEAN = The value for a filter based on property ''{0}'' must be either ''true'' or ''false'', not ''{1}''
|
||||
VALUESET_BAD_FILTER_VALUE_CODE = The value for a filter based on property ''{0}'' must be a valid code, not ''{1}''
|
||||
VALUESET_BAD_FILTER_VALUE_DATETIME = The value for a filter based on property ''{0}'' must be a valid date(/time), not ''{1}''
|
||||
VALUESET_BAD_FILTER_VALUE_DECIMAL = The value for a filter based on property ''{0}'' must be a decimal value, not ''{1}''
|
||||
VALUESET_BAD_FILTER_VALUE_INTEGER = The value for a filter based on property ''{0}'' must be integer value, not ''{1}''
|
||||
VALUESET_BAD_FILTER_VALUE_VALID_CODE = The value for a filter based on property ''{0}'' must be a valid code from the system ''{2}'', and ''{1}'' is not ({3})
|
||||
VALUESET_BAD_FILTER_VALUE_CODED = The value for a filter based on property ''{0}'' must be in the format system(|version)#code, not ''{1}''
|
||||
VALUESET_BAD_FILTER_VALUE_CODED_INVALID = The value for a filter based on property ''{0}'' is ''{1}'' which is not a valid code ({2})
|
||||
VALUESET_BAD_FILTER_OP = The operation ''{0}'' is not allowed for property ''{1}''. Allowed ops: {2}
|
||||
|
|
|
@ -67,6 +67,8 @@ import org.hl7.fhir.r5.terminologies.ValueSetUtilities;
|
|||
import org.hl7.fhir.r5.utils.ToolingExtensions;
|
||||
import org.hl7.fhir.r5.utils.XVerExtensionManager;
|
||||
import org.hl7.fhir.r5.utils.XVerExtensionManager.XVerExtensionStatus;
|
||||
import org.hl7.fhir.r5.utils.validation.IResourceValidator;
|
||||
import org.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher;
|
||||
import org.hl7.fhir.r5.utils.validation.ValidationContextCarrier.IValidationContextResourceLoader;
|
||||
import org.hl7.fhir.r5.utils.validation.constants.BestPracticeWarningLevel;
|
||||
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
|
||||
|
@ -177,7 +179,7 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
protected String sessionId = Utilities.makeUuidLC();
|
||||
protected List<UsageContext> usageContexts = new ArrayList<UsageContext>();
|
||||
protected ValidationOptions baseOptions = new ValidationOptions(FhirPublication.R5);
|
||||
|
||||
protected IValidatorResourceFetcher fetcher;
|
||||
|
||||
public BaseValidator(IWorkerContext context, XVerExtensionManager xverManager, boolean debug) {
|
||||
super();
|
||||
|
@ -210,6 +212,7 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
this.urlRegex = parent.urlRegex;
|
||||
this.usageContexts.addAll(parent.usageContexts);
|
||||
this.baseOptions = parent.baseOptions;
|
||||
this.fetcher = parent.fetcher;
|
||||
}
|
||||
|
||||
private boolean doingLevel(IssueSeverity error) {
|
||||
|
@ -1262,13 +1265,15 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
String[] refBaseParts = ref.substring(0, ref.indexOf("/_history/")).split("/");
|
||||
resourceType = refBaseParts[0];
|
||||
id = refBaseParts[1];
|
||||
targetUrl = base + resourceType+"/"+ id;
|
||||
} else if (base.startsWith("urn")) {
|
||||
resourceType = ref.split("/")[0];
|
||||
id = ref.split("/")[1];
|
||||
} else
|
||||
targetUrl = base + id;
|
||||
} else {
|
||||
id = ref;
|
||||
|
||||
targetUrl = base + id;
|
||||
targetUrl = base + id;
|
||||
}
|
||||
}
|
||||
|
||||
List<Element> entries = new ArrayList<Element>();
|
||||
|
@ -1621,4 +1626,6 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
private boolean isContext(Coding use, Coding value, UsageContext usage) {
|
||||
return usage.getValue() instanceof Coding && context.subsumes(baseOptions, usage.getCode(), use) && context.subsumes(baseOptions, (Coding) usage.getValue(), value);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -14,9 +14,11 @@ import java.util.Arrays;
|
|||
import java.util.Date;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.fhir.ucum.UcumEssenceService;
|
||||
|
@ -1194,7 +1196,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||
|
||||
|
||||
@Override
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, String url) throws URISyntaxException {
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, Object appContext, String url) throws URISyntaxException {
|
||||
Resource res = context.fetchResource(Resource.class, url);
|
||||
if (res != null) {
|
||||
if (res instanceof CanonicalResource) {
|
||||
|
@ -1203,7 +1205,7 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||
return null;
|
||||
}
|
||||
}
|
||||
return fetcher != null ? fetcher.fetchCanonicalResource(validator, url) : null;
|
||||
return fetcher != null ? fetcher.fetchCanonicalResource(validator, appContext, url) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1234,4 +1236,19 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||
return EnumSet.allOf(ElementValidationAction.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> fetchCanonicalResourceVersions(IResourceValidator validator, Object appContext, String url) {
|
||||
Set<String> res = new HashSet<>();
|
||||
for (Resource r : context.fetchResourcesByUrl(Resource.class, url)) {
|
||||
if (r instanceof CanonicalResource) {
|
||||
CanonicalResource cr = (CanonicalResource) r;
|
||||
res.add(cr.hasVersion() ? cr.getVersion() : "{{unversioned}}");
|
||||
}
|
||||
}
|
||||
if (fetcher != null) {
|
||||
res.addAll(fetcher.fetchCanonicalResourceVersions(validator, appContext, url));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,9 +6,11 @@ import java.net.URISyntaxException;
|
|||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hl7.fhir.convertors.txClient.TerminologyClientFactory;
|
||||
import org.hl7.fhir.exceptions.FHIRException;
|
||||
|
@ -272,7 +274,7 @@ public class StandAloneValidatorFetcher implements IValidatorResourceFetcher, IV
|
|||
}
|
||||
|
||||
@Override
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, String url) throws URISyntaxException {
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, Object appContext, String url) throws URISyntaxException {
|
||||
if (url.contains("|")) {
|
||||
url = url.substring(0, url.indexOf("|"));
|
||||
}
|
||||
|
@ -327,4 +329,9 @@ public class StandAloneValidatorFetcher implements IValidatorResourceFetcher, IV
|
|||
return EnumSet.allOf(CodedContentValidationAction.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> fetchCanonicalResourceVersions(IResourceValidator validator, Object appContext, String url) {
|
||||
return new HashSet<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -584,7 +584,6 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
private boolean noBindingMsgSuppressed;
|
||||
private Map<String, Element> fetchCache = new HashMap<>();
|
||||
private HashMap<Element, ResourceValidationTracker> resourceTracker = new HashMap<>();
|
||||
private IValidatorResourceFetcher fetcher;
|
||||
private IValidationPolicyAdvisor policyAdvisor;
|
||||
long time = 0;
|
||||
long start = 0;
|
||||
|
@ -673,14 +672,6 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
return this;
|
||||
}
|
||||
|
||||
public IValidatorResourceFetcher getFetcher() {
|
||||
return this.fetcher;
|
||||
}
|
||||
|
||||
public IResourceValidator setFetcher(IValidatorResourceFetcher value) {
|
||||
this.fetcher = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IValidationPolicyAdvisor getPolicyAdvisor() {
|
||||
|
@ -3118,7 +3109,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
r = loadContainedResource(errors, path, valContext.getRootResource(), url.substring(1), Resource.class);
|
||||
}
|
||||
if (r == null) {
|
||||
r = fetcher.fetchCanonicalResource(this, url);
|
||||
r = fetcher.fetchCanonicalResource(this, valContext.getAppContext(), url);
|
||||
}
|
||||
if (r == null) {
|
||||
r = this.context.fetchResource(Resource.class, url);
|
||||
|
@ -3129,6 +3120,15 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
if (rp == ReferenceValidationPolicy.CHECK_VALID) {
|
||||
// todo....
|
||||
}
|
||||
// we resolved one, but if there's no version, check if the reference is potentially ambiguous
|
||||
if (!url.contains("|") && r instanceof CanonicalResource) {
|
||||
if (!Utilities.existsInList(context.getBase().getPath(), "ImplementationGuide.dependsOn.uri", "ConceptMap.group.source", "ConceptMap.group.target")) {
|
||||
// ImplementationGuide.dependsOn.version is mandatory, and ConceptMap is checked in the ConceptMap validator
|
||||
Set<String> possibleVersions = fetcher.fetchCanonicalResourceVersions(this, valContext.getAppContext(), url);
|
||||
warning(errors, NO_RULE_DATE, IssueType.INVALID, e.line(), e.col(), path, possibleVersions.size() <= 1, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS,
|
||||
url, ((CanonicalResource) r).getVersion(), CommaSeparatedStringBuilder.join(", ", Utilities.sorted(possibleVersions)));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ok = false;
|
||||
}
|
||||
|
@ -3341,11 +3341,12 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
if (!Utilities.noString(href) && href.startsWith("#") && !href.equals("#")) {
|
||||
String ref = href.substring(1);
|
||||
valContext.getInternalRefs().add(ref);
|
||||
int count = countTargetMatches(resource, ref, true);
|
||||
Set<String> refs = new HashSet<>();
|
||||
int count = countTargetMatches(resource, ref, true, "$", refs);
|
||||
if (count == 0) {
|
||||
rule(errors, NO_RULE_DATE, IssueType.INVALID, e.line(), e.col(), path, false, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_XHTML_RESOLVE, href, xpath, node.allText());
|
||||
} else if (count > 1) {
|
||||
warning(errors, NO_RULE_DATE, IssueType.INVALID, e.line(), e.col(), path, false, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_XHTML_MULTIPLE_MATCHES, href, xpath, node.allText());
|
||||
warning(errors, NO_RULE_DATE, IssueType.INVALID, e.line(), e.col(), path, false, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_XHTML_MULTIPLE_MATCHES, href, xpath, node.allText(), CommaSeparatedStringBuilder.join(", ", refs));
|
||||
}
|
||||
} else {
|
||||
// we can't validate at this point. Come back and revisit this some time in the future
|
||||
|
@ -3360,24 +3361,25 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
|
||||
|
||||
protected int countTargetMatches(Element element, String fragment, boolean checkBundle) {
|
||||
protected int countTargetMatches(Element element, String fragment, boolean checkBundle, String path,Set<String> refs) {
|
||||
int count = 0;
|
||||
if (fragment.equals(element.getIdBase())) {
|
||||
count++;
|
||||
refs.add(path+"/id");
|
||||
}
|
||||
if (element.getXhtml() != null) {
|
||||
count = count + countTargetMatches(element.getXhtml(), fragment);
|
||||
count = count + countTargetMatches(element.getXhtml(), fragment, path, refs);
|
||||
}
|
||||
if (element.hasChildren()) {
|
||||
for (Element child : element.getChildren()) {
|
||||
count = count + countTargetMatches(child, fragment, false);
|
||||
count = count + countTargetMatches(child, fragment, false, path+"/"+child.getName(), refs);
|
||||
}
|
||||
}
|
||||
if (count == 0 && checkBundle) {
|
||||
Element e = element.getParentForValidator();
|
||||
while (e != null) {
|
||||
if (e.fhirType().equals("Bundle")) {
|
||||
return countTargetMatches(e, fragment, false);
|
||||
return countTargetMatches(e, fragment, false, path+"/..", refs);
|
||||
}
|
||||
e = e.getParentForValidator();
|
||||
}
|
||||
|
@ -3385,17 +3387,19 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
return count;
|
||||
}
|
||||
|
||||
private int countTargetMatches(XhtmlNode node, String fragment) {
|
||||
private int countTargetMatches(XhtmlNode node, String fragment, String path,Set<String> refs) {
|
||||
int count = 0;
|
||||
if (fragment.equals(node.getAttribute("id"))) {
|
||||
count++;
|
||||
refs.add(path+"/@id");
|
||||
}
|
||||
if ("a".equals(node.getName()) && fragment.equals(node.getAttribute("name"))) {
|
||||
count++;
|
||||
refs.add(path+"/@name");
|
||||
}
|
||||
if (node.hasChildren()) {
|
||||
for (XhtmlNode child : node.getChildNodes()) {
|
||||
count = count + countTargetMatches(child, fragment);
|
||||
count = count + countTargetMatches(child, fragment, path+"/"+child.getName(), refs);
|
||||
}
|
||||
}
|
||||
return count;
|
||||
|
@ -5461,7 +5465,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
} else if (!fetcher.fetchesCanonicalResource(this, profile.primitiveValue())) {
|
||||
warning(errors, NO_RULE_DATE, IssueType.STRUCTURE, element.line(), element.col(), stack.getLiteralPath() + ".meta.profile[" + i + "]", false, I18nConstants.VALIDATION_VAL_PROFILE_UNKNOWN_NOT_POLICY, profile.primitiveValue());
|
||||
} else {
|
||||
sd = lookupProfileReference(errors, element, stack, i, profile, sd);
|
||||
sd = lookupProfileReference(valContext, errors, element, stack, i, profile, sd);
|
||||
}
|
||||
}
|
||||
if (sd != null) {
|
||||
|
@ -5528,7 +5532,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
return ok;
|
||||
}
|
||||
|
||||
private StructureDefinition lookupProfileReference(List<ValidationMessage> errors, Element element, NodeStack stack,
|
||||
private StructureDefinition lookupProfileReference(ValidationContext valContext, List<ValidationMessage> errors, Element element, NodeStack stack,
|
||||
int i, Element profile, StructureDefinition sd) {
|
||||
String url = profile.primitiveValue();
|
||||
CanonicalResourceLookupResult cr = crLookups.get(url);
|
||||
|
@ -5540,7 +5544,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
} else {
|
||||
try {
|
||||
sd = (StructureDefinition) fetcher.fetchCanonicalResource(this, url);
|
||||
sd = (StructureDefinition) fetcher.fetchCanonicalResource(this, valContext.getAppContext(), url);
|
||||
crLookups.put(url, new CanonicalResourceLookupResult(sd));
|
||||
} catch (Exception e) {
|
||||
if (STACK_TRACE) { e.printStackTrace(); }
|
||||
|
@ -5687,9 +5691,9 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
} else if (element.getType().equals("CapabilityStatement")) {
|
||||
return validateCapabilityStatement(errors, element, stack) && ok;
|
||||
} else if (element.getType().equals("CodeSystem")) {
|
||||
return new CodeSystemValidator(this).validateCodeSystem(errors, element, stack, baseOptions.withLanguage(stack.getWorkingLang())) && ok;
|
||||
return new CodeSystemValidator(this).validateCodeSystem(valContext, errors, element, stack, baseOptions.withLanguage(stack.getWorkingLang())) && ok;
|
||||
} else if (element.getType().equals("ConceptMap")) {
|
||||
return new ConceptMapValidator(this).validateConceptMap(errors, element, stack, baseOptions.withLanguage(stack.getWorkingLang())) && ok;
|
||||
return new ConceptMapValidator(this).validateConceptMap(valContext, errors, element, stack, baseOptions.withLanguage(stack.getWorkingLang())) && ok;
|
||||
} else if (element.getType().equals("SearchParameter")) {
|
||||
return new SearchParameterValidator(this, fpe).validateSearchParameter(errors, element, stack) && ok;
|
||||
} else if (element.getType().equals("StructureDefinition")) {
|
||||
|
@ -5697,7 +5701,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
} else if (element.getType().equals("StructureMap")) {
|
||||
return new StructureMapValidator(this, fpe, profileUtilities).validateStructureMap(errors, element, stack) && ok;
|
||||
} else if (element.getType().equals("ValueSet")) {
|
||||
return new ValueSetValidator(this).validateValueSet(errors, element, stack) && ok;
|
||||
return new ValueSetValidator(this).validateValueSet(valContext, errors, element, stack) && ok;
|
||||
} else if ("http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition".equals(element.getProperty().getStructure().getUrl())) {
|
||||
if (element.getNativeObject() != null && element.getNativeObject() instanceof JsonObject) {
|
||||
JsonObject json = (JsonObject) element.getNativeObject();
|
||||
|
@ -5720,6 +5724,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
String pub = element.getNamedChildValue("publisher", false);
|
||||
Base wgT = element.getExtensionValue(ToolingExtensions.EXT_WORKGROUP);
|
||||
String wg = wgT == null ? null : wgT.primitiveValue();
|
||||
String url = element.getNamedChildValue("url");
|
||||
|
||||
if (contained && wg == null) {
|
||||
boolean ok = true;
|
||||
|
@ -5746,7 +5751,6 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
List<String> urls = new ArrayList<>();
|
||||
for (Element c : element.getChildren("contact")) {
|
||||
for (Element t : c.getChildren("telecom")) {
|
||||
|
@ -5756,7 +5760,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
}
|
||||
|
||||
if (rule(errors, "2023-09-15", IssueType.BUSINESSRULE, element.line(), element.col(), stack.getLiteralPath(), wg != null, I18nConstants.VALIDATION_HL7_WG_NEEDED, ToolingExtensions.EXT_WORKGROUP)) {
|
||||
if (rule(errors, "2023-09-15", IssueType.BUSINESSRULE, element.line(), element.col(), stack.getLiteralPath(), wg != null && !url.contains("http://hl7.org/fhir/sid"), I18nConstants.VALIDATION_HL7_WG_NEEDED, ToolingExtensions.EXT_WORKGROUP)) {
|
||||
HL7WorkGroup wgd = HL7WorkGroups.find(wg);
|
||||
if (rule(errors, "2023-09-15", IssueType.BUSINESSRULE, element.line(), element.col(), stack.getLiteralPath(), wgd != null, I18nConstants.VALIDATION_HL7_WG_UNKNOWN, wg)) {
|
||||
String rpub = "HL7 International / "+wgd.getName();
|
||||
|
@ -7726,4 +7730,12 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
return this;
|
||||
}
|
||||
|
||||
public IValidatorResourceFetcher getFetcher() {
|
||||
return this.fetcher;
|
||||
}
|
||||
|
||||
public IResourceValidator setFetcher(IValidatorResourceFetcher value) {
|
||||
this.fetcher = value;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -851,7 +851,10 @@ public class BundleValidator extends BaseValidator {
|
|||
if (ref != null && !ref.startsWith("#") && !hasReference(ref, references))
|
||||
references.add(new StringWithSource(ref, child, true, isNLLink(start)));
|
||||
}
|
||||
findReferences(child, references);
|
||||
// don't walk into a sub-bundle
|
||||
if (!"Bundle".equals(child.fhirType())) {
|
||||
findReferences(child, references);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,26 +1,89 @@
|
|||
package org.hl7.fhir.validation.instance.type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hl7.fhir.exceptions.FHIRException;
|
||||
import org.hl7.fhir.r5.elementmodel.Element;
|
||||
import org.hl7.fhir.r5.model.CodeSystem;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.ConceptDefinitionComponent;
|
||||
import org.hl7.fhir.r5.model.ValueSet;
|
||||
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.i18n.I18nConstants;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
|
||||
import org.hl7.fhir.utilities.validation.ValidationOptions;
|
||||
import org.hl7.fhir.validation.BaseValidator;
|
||||
import org.hl7.fhir.validation.instance.type.CodeSystemValidator.KnownProperty;
|
||||
import org.hl7.fhir.validation.instance.type.CodeSystemValidator.PropertyDef;
|
||||
import org.hl7.fhir.validation.instance.utils.NodeStack;
|
||||
import org.hl7.fhir.validation.instance.utils.ValidationContext;
|
||||
|
||||
public class CodeSystemValidator extends BaseValidator {
|
||||
|
||||
public enum KnownProperty {
|
||||
Status, Inactive, EffectiveDate, DeprecationDate, RetirementDate, NotSelectable, Parent, Child, PartOf, Synonym, Comment, ItemWeight;
|
||||
|
||||
String getType() {
|
||||
switch (this) {
|
||||
case Child: return "code";
|
||||
case Comment: return "string";
|
||||
case DeprecationDate: return "dateTime";
|
||||
case EffectiveDate: return "dateTime";
|
||||
case Inactive: return "boolean";
|
||||
case ItemWeight: return "decimal";
|
||||
case NotSelectable: return "boolean";
|
||||
case Parent: return "code";
|
||||
case PartOf: return "code";
|
||||
case RetirementDate: return "dateTime";
|
||||
case Status: return "code";
|
||||
case Synonym: return "code";
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
String getCode() {
|
||||
return Utilities.uncapitalize(this.toString());
|
||||
}
|
||||
|
||||
String getUri() {
|
||||
return "http://hl7.org/fhir/concept-properties#"+ getCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class PropertyDef {
|
||||
private String uri;
|
||||
private String code;
|
||||
private String type;
|
||||
protected PropertyDef(String uri, String code, String type) {
|
||||
super();
|
||||
this.uri = uri;
|
||||
this.code = code;
|
||||
this.type = type;
|
||||
}
|
||||
public String getUri() {
|
||||
return uri;
|
||||
}
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public CodeSystemValidator(BaseValidator parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
public boolean validateCodeSystem(List<ValidationMessage> errors, Element cs, NodeStack stack, ValidationOptions options) {
|
||||
public boolean validateCodeSystem(ValidationContext valContext, List<ValidationMessage> errors, Element cs, NodeStack stack, ValidationOptions options) {
|
||||
boolean ok = true;
|
||||
String url = cs.getNamedChildValue("url", false);
|
||||
String content = cs.getNamedChildValue("content", false);
|
||||
|
@ -28,12 +91,26 @@ public class CodeSystemValidator extends BaseValidator {
|
|||
String hierarchyMeaning = cs.getNamedChildValue("hierarchyMeaning", false);
|
||||
String supp = cs.getNamedChildValue("supplements", false);
|
||||
int count = countConcepts(cs);
|
||||
CodeSystem csB = null;
|
||||
|
||||
metaChecks(errors, cs, stack, url, content, caseSensitive, hierarchyMeaning, !Utilities.noString(supp), count, supp);
|
||||
|
||||
String vsu = cs.getNamedChildValue("valueSet", false);
|
||||
if (!Utilities.noString(vsu)) {
|
||||
hint(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), "complete".equals(content), I18nConstants.CODESYSTEM_CS_NO_VS_NOTCOMPLETE);
|
||||
if ("supplement".equals(content)) {
|
||||
csB = context.fetchCodeSystem(supp);
|
||||
if (csB != null) {
|
||||
if (csB.hasValueSet()) {
|
||||
warning(errors, "2024-03-06", IssueType.BUSINESSRULE, stack.getLiteralPath(), vsu.equals(vsu), I18nConstants.CODESYSTEM_CS_NO_VS_SUPPLEMENT2, csB.getValueSet());
|
||||
} else {
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_CS_NO_VS_SUPPLEMENT1);
|
||||
}
|
||||
} else {
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), "complete".equals(content), I18nConstants.CODESYSTEM_CS_NO_VS_NOTCOMPLETE);
|
||||
}
|
||||
} else {
|
||||
hint(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), "complete".equals(content), I18nConstants.CODESYSTEM_CS_NO_VS_NOTCOMPLETE);
|
||||
}
|
||||
ValueSet vs;
|
||||
try {
|
||||
vs = context.fetchResourceWithException(ValueSet.class, vsu);
|
||||
|
@ -61,31 +138,292 @@ public class CodeSystemValidator extends BaseValidator {
|
|||
}
|
||||
} // todo... try getting the value set the other way...
|
||||
|
||||
if (supp != null) {
|
||||
if (context.supportsSystem(supp, options.getFhirVersion())) {
|
||||
List<Element> concepts = cs.getChildrenByName("concept");
|
||||
int ce = 0;
|
||||
for (Element concept : concepts) {
|
||||
NodeStack nstack = stack.push(concept, ce, null, null);
|
||||
if (ce == 0) {
|
||||
rule(errors, "2023-08-15", IssueType.INVALID, nstack, !"not-present".equals(content), I18nConstants.CODESYSTEM_CS_COUNT_NO_CONTENT_ALLOWED);
|
||||
if ("supplement".equals(content) || supp != null) {
|
||||
if (rule(errors, "2024-03-06", IssueType.BUSINESSRULE, stack.getLiteralPath(), !Utilities.noString(supp), I18nConstants.CODESYSTEM_CS_SUPP_NO_SUPP)) {
|
||||
if (context.supportsSystem(supp, options.getFhirVersion())) {
|
||||
List<Element> concepts = cs.getChildrenByName("concept");
|
||||
int ce = 0;
|
||||
for (Element concept : concepts) {
|
||||
NodeStack nstack = stack.push(concept, ce, null, null);
|
||||
if (ce == 0) {
|
||||
rule(errors, "2023-08-15", IssueType.INVALID, nstack, !"not-present".equals(content), I18nConstants.CODESYSTEM_CS_COUNT_NO_CONTENT_ALLOWED);
|
||||
}
|
||||
ok = validateSupplementConcept(errors, concept, nstack, supp, options) && ok;
|
||||
ce++;
|
||||
}
|
||||
} else {
|
||||
if (cs.hasChildren("concept")) {
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_CS_SUPP_CANT_CHECK, supp);
|
||||
}
|
||||
ok = validateSupplementConcept(errors, concept, nstack, supp, options) && ok;
|
||||
ce++;
|
||||
}
|
||||
} else {
|
||||
if (cs.hasChildren("concept")) {
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_CS_SUPP_CANT_CHECK, supp);
|
||||
}
|
||||
} else {
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!stack.isContained()) {
|
||||
ok = checkShareableCodeSystem(errors, cs, stack) && ok;
|
||||
} else {
|
||||
// we approve of contained code systems in two circumstances:
|
||||
// * inside a questionnaire for a code system only used by that questionnaire
|
||||
// * inside a supplement, for creating properties in the supplement// otherwise, we put a hint on it that this is probably a bad idea
|
||||
boolean isInQ = valContext.getRootResource() != null && valContext.getRootResource().fhirType().equals("Questionnaire");
|
||||
boolean isSuppProp = valContext.getRootResource() != null && valContext.getRootResource().fhirType().equals("CodeSystem"); // todo add more checks
|
||||
hint(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), !isInQ && !isSuppProp, I18nConstants.CODESYSTEM_NOT_CONTAINED);
|
||||
}
|
||||
|
||||
Map<String, PropertyDef> properties = new HashMap<>();
|
||||
List<Element> propertyElements = cs.getChildrenByName("property");
|
||||
int i = 0;
|
||||
for (Element propertyElement : propertyElements) {
|
||||
ok = checkPropertyDefinition(errors, cs, stack.push(propertyElement, i, null, null), "true".equals(caseSensitive), hierarchyMeaning, csB, propertyElement, properties) && ok;
|
||||
i++;
|
||||
}
|
||||
|
||||
Set<String> codes = new HashSet<>();
|
||||
|
||||
List<Element> concepts = cs.getChildrenByName("concept");
|
||||
i = 0;
|
||||
for (Element concept : concepts) {
|
||||
ok = checkConcept(errors, cs, stack.push(concept, i, null, null), "true".equals(caseSensitive), hierarchyMeaning, csB, concept, codes, properties) && ok;
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
for (Element concept : concepts) {
|
||||
ok = checkConceptProps(errors, cs, stack.push(concept, i, null, null), "true".equals(caseSensitive), hierarchyMeaning, csB, concept, codes, properties) && ok;
|
||||
i++;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
private boolean checkPropertyDefinition(List<ValidationMessage> errors, Element cs, NodeStack stack, boolean equals, String hierarchyMeaning, CodeSystem csB, Element property, Map<String, PropertyDef> properties) {
|
||||
boolean ok = true;
|
||||
String uri = property.getNamedChildValue("uri");
|
||||
String code = property.getNamedChildValue("code");
|
||||
String type = property.getNamedChildValue("type");
|
||||
PropertyDef pd = new PropertyDef(uri, code, type);
|
||||
KnownProperty ukp = null;
|
||||
KnownProperty ckp = null;
|
||||
|
||||
if (uri != null) {
|
||||
if (rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), !properties.containsKey(uri), I18nConstants.CODESYSTEM_PROPERTY_DUPLICATE_URI, uri)) {
|
||||
properties.put(uri, pd);
|
||||
} else {
|
||||
ok = false;
|
||||
}
|
||||
if (uri.contains("hl7.org/fhir")) {
|
||||
switch (uri) {
|
||||
case "http://hl7.org/fhir/concept-properties#status" :
|
||||
ukp = KnownProperty.Status;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#inactive" :
|
||||
ukp = KnownProperty.Inactive;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#effectiveDate" :
|
||||
ukp = KnownProperty.EffectiveDate;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#deprecationDate" :
|
||||
ukp = KnownProperty.DeprecationDate;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#retirementDate" :
|
||||
ukp = KnownProperty.RetirementDate;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#notSelectable" :
|
||||
ukp = KnownProperty.NotSelectable;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#parent" :
|
||||
ukp = KnownProperty.Parent;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#child" :
|
||||
ukp = KnownProperty.Child;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#partOf" :
|
||||
ukp = KnownProperty.PartOf;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#synonym" :
|
||||
ukp = KnownProperty.Synonym;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#comment" :
|
||||
ukp = KnownProperty.Comment;
|
||||
break;
|
||||
case "http://hl7.org/fhir/concept-properties#itemWeight" :
|
||||
ukp = KnownProperty.ItemWeight;
|
||||
break;
|
||||
default:
|
||||
ok = false;
|
||||
rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_PROPERTY_BAD_HL7_URI, uri);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (code != null) {
|
||||
if (rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), !properties.containsKey(code), I18nConstants.CODESYSTEM_PROPERTY_DUPLICATE_CODE, code)) {
|
||||
properties.put(code, pd);
|
||||
} else {
|
||||
ok = false;
|
||||
}
|
||||
switch (code) {
|
||||
case "status" :
|
||||
ckp = KnownProperty.Status;
|
||||
break;
|
||||
case "inactive" :
|
||||
ckp = KnownProperty.Inactive;
|
||||
break;
|
||||
case "effectiveDate" :
|
||||
ckp = KnownProperty.EffectiveDate;
|
||||
break;
|
||||
case "deprecationDate" :
|
||||
ckp = KnownProperty.DeprecationDate;
|
||||
break;
|
||||
case "retirementDate" :
|
||||
ckp = KnownProperty.RetirementDate;
|
||||
break;
|
||||
case "notSelectable" :
|
||||
ckp = KnownProperty.NotSelectable;
|
||||
break;
|
||||
case "parent" :
|
||||
ckp = KnownProperty.Parent;
|
||||
break;
|
||||
case "child" :
|
||||
ckp = KnownProperty.Child;
|
||||
break;
|
||||
case "partOf" :
|
||||
ckp = KnownProperty.PartOf;
|
||||
break;
|
||||
case "synonym" :
|
||||
ckp = KnownProperty.Synonym;
|
||||
break;
|
||||
case "comment" :
|
||||
ckp = KnownProperty.Comment;
|
||||
break;
|
||||
case "itemWeight" :
|
||||
ckp = KnownProperty.ItemWeight;
|
||||
break;
|
||||
default:
|
||||
// no rules around codes...
|
||||
}
|
||||
}
|
||||
if (ukp != null) {
|
||||
ok = rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), ckp == null || ckp == ukp, I18nConstants.CODESYSTEM_PROPERTY_URI_CODE_MISMATCH, uri, ukp.getCode(), code) && ok;
|
||||
if (type != null) {
|
||||
ok = rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), type.equals(ukp.getType()), I18nConstants.CODESYSTEM_PROPERTY_URI_TYPE_MISMATCH, uri, ukp.getType(),type) && ok;
|
||||
}
|
||||
}
|
||||
if (uri == null) {
|
||||
if (ckp == null) {
|
||||
hint(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_PROPERTY_UNKNOWN_CODE, code);
|
||||
} else {
|
||||
warning(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_PROPERTY_KNOWN_CODE_SUGGESTIVE, code, ckp.getUri());
|
||||
if (type != null) {
|
||||
warning(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), type.equals(ckp.getType()), I18nConstants.CODESYSTEM_PROPERTY_CODE_TYPE_MISMATCH, code, ckp.getType(), type);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean checkConcept(List<ValidationMessage> errors, Element cs, NodeStack stack, boolean caseSensitive, String hierarchyMeaning, CodeSystem csB, Element concept, Set<String> codes, Map<String, PropertyDef> properties) {
|
||||
boolean ok = true;
|
||||
String code = concept.getNamedChildValue("code");
|
||||
String display = concept.getNamedChildValue("display");
|
||||
|
||||
if (csB != null && !Utilities.noString(display)) {
|
||||
ConceptDefinitionComponent b = CodeSystemUtilities.findCode(csB.getConcept(), code);
|
||||
if (b != null && !b.getDisplay().equalsIgnoreCase(display)) {
|
||||
String lang = cs.getNamedChildValue("language");
|
||||
if ((lang == null && !csB.hasLanguage()) ||
|
||||
csB.getLanguage().equals(lang)) {
|
||||
// nothing new language wise, and the display doesn't match
|
||||
hint(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), false, I18nConstants.CODESYSTEM_SUPP_NO_DISPLAY, display, b.getDisplay(), lang == null? "undefined" : lang);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<Element> designations = concept.getChildrenByName("designation");
|
||||
int i = 0;
|
||||
for (Element designation : designations) {
|
||||
ok = checkDesignation(errors, cs, stack.push(designation, i, null, null), concept, designation) && ok;
|
||||
i++;
|
||||
}
|
||||
|
||||
List<Element> concepts = concept.getChildrenByName("concept");
|
||||
i = 0;
|
||||
for (Element child : concepts) {
|
||||
ok = checkConcept(errors, cs, stack.push(concept, i, null, null), caseSensitive, hierarchyMeaning, csB, child, codes, properties) && ok;
|
||||
i++;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean checkConceptProps(List<ValidationMessage> errors, Element cs, NodeStack stack, boolean caseSensitive, String hierarchyMeaning, CodeSystem csB, Element concept, Set<String> codes, Map<String, PropertyDef> properties) {
|
||||
boolean ok = true;
|
||||
|
||||
List<Element> propertyElements = concept.getChildrenByName("property");
|
||||
int i = 0;
|
||||
for (Element propertyElement : propertyElements) {
|
||||
ok = checkPropertyValue(errors, cs, stack.push(propertyElement, i, null, null), propertyElement, properties, codes) && ok;
|
||||
i++;
|
||||
}
|
||||
|
||||
List<Element> concepts = concept.getChildrenByName("concept");
|
||||
i = 0;
|
||||
for (Element child : concepts) {
|
||||
ok = checkConceptProps(errors, cs, stack.push(concept, i, null, null), caseSensitive, hierarchyMeaning, csB, child, codes, properties) && ok;
|
||||
i++;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean checkDesignation(List<ValidationMessage> errors, Element cs, NodeStack stack, Element concept, Element designation) {
|
||||
boolean ok = true;
|
||||
|
||||
String rlang = cs.getNamedChildValue("language");
|
||||
String display = concept.getNamedChildValue("display");
|
||||
String lang = designation.getNamedChildValue("language");
|
||||
List<Element> uses = new ArrayList<Element>();
|
||||
designation.getNamedChildren("additionalUse", uses);
|
||||
Element use = designation.getNamedChild("use");
|
||||
if (use != null) {
|
||||
uses.add(0, use);
|
||||
}
|
||||
String value = designation.getNamedChildValue("value");
|
||||
|
||||
if (uses.isEmpty()) {
|
||||
// if we have no uses, we're kind of implying that it's the base display, so it should be the same
|
||||
if (rlang == null && lang == null) {
|
||||
ok = rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), display == null || display.equals(value), I18nConstants.CODESYSTEM_DESIGNATION_DISP_CLASH_NO_LANG, value, display) && ok;
|
||||
} else if (rlang != null && ((lang == null) || rlang.equals(lang))) {
|
||||
ok = rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), display == null || display.equals(value), I18nConstants.CODESYSTEM_DESIGNATION_DISP_CLASH_LANG, value, display, rlang) && ok;
|
||||
}
|
||||
} else {
|
||||
// .... do we care?
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean checkPropertyValue(List<ValidationMessage> errors, Element cs, NodeStack stack, Element property, Map<String, PropertyDef> properties, Set<String> codes) {
|
||||
boolean ok = true;
|
||||
|
||||
String code = property.getNamedChildValue("code");
|
||||
Element value = property.getNamedChild("value");
|
||||
if (code != null) {
|
||||
PropertyDef defn = properties.get(code);
|
||||
if (rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), defn != null, I18nConstants.CODESYSTEM_PROPERTY_UNDEFINED, code) &&
|
||||
rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), value != null, I18nConstants.CODESYSTEM_PROPERTY_NO_VALUE, code) &&
|
||||
rule(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), value.fhirType().equals(defn.type), I18nConstants.CODESYSTEM_PROPERTY_WRONG_TYPE, code, value.fhirType(), defn.type)) {
|
||||
// nothing?
|
||||
} else {
|
||||
ok = false;
|
||||
}
|
||||
if ("synonym".equals(code)) {
|
||||
String vcode = value.isPrimitive() ? value.primitiveValue() : null;
|
||||
warning(errors, "2024-03-06", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), codes.contains(vcode), I18nConstants.CODESYSTEM_PROPERTY_SYNONYM_CHECK, vcode);
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean checkShareableCodeSystem(List<ValidationMessage> errors, Element cs, NodeStack stack) {
|
||||
if (parent.isForPublication()) {
|
||||
|
@ -121,6 +459,9 @@ public class CodeSystemValidator extends BaseValidator {
|
|||
}
|
||||
|
||||
private void metaChecks(List<ValidationMessage> errors, Element cs, NodeStack stack, String url, String content, String caseSensitive, String hierarchyMeaning, boolean isSupplement, int count, String supp) {
|
||||
if (forPublication && (url.contains("hl7.org"))) {
|
||||
hint(errors, "2024-03-07", IssueType.BUSINESSRULE, cs.line(), cs.col(), stack.getLiteralPath(), url.contains("terminology.hl7.org") || url.contains("hl7.org/cda/stds/core"), I18nConstants.CODESYSTEM_THO_CHECK);
|
||||
}
|
||||
if (isSupplement) {
|
||||
if (!"supplement".equals(content)) {
|
||||
NodeStack s = stack.push(cs.getNamedChild("content", false), -1, null, null);
|
||||
|
|
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hl7.fhir.r5.elementmodel.Element;
|
||||
import org.hl7.fhir.r5.model.CodeSystem;
|
||||
|
@ -17,6 +18,7 @@ import org.hl7.fhir.r5.terminologies.utilities.CodingValidationRequest;
|
|||
import org.hl7.fhir.r5.terminologies.utilities.TerminologyServiceErrorClass;
|
||||
import org.hl7.fhir.r5.terminologies.utilities.ValidationResult;
|
||||
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.i18n.I18nConstants;
|
||||
import org.hl7.fhir.utilities.validation.ValidationMessage;
|
||||
|
@ -24,6 +26,7 @@ import org.hl7.fhir.utilities.validation.ValidationMessage.IssueType;
|
|||
import org.hl7.fhir.utilities.validation.ValidationOptions;
|
||||
import org.hl7.fhir.validation.BaseValidator;
|
||||
import org.hl7.fhir.validation.instance.utils.NodeStack;
|
||||
import org.hl7.fhir.validation.instance.utils.ValidationContext;
|
||||
|
||||
|
||||
public class ConceptMapValidator extends BaseValidator {
|
||||
|
@ -109,7 +112,7 @@ public class ConceptMapValidator extends BaseValidator {
|
|||
super(parent);
|
||||
}
|
||||
|
||||
public boolean validateConceptMap(List<ValidationMessage> errors, Element cm, NodeStack stack, ValidationOptions options) {
|
||||
public boolean validateConceptMap(ValidationContext valContext, List<ValidationMessage> errors, Element cm, NodeStack stack, ValidationOptions options) {
|
||||
boolean ok = true;
|
||||
Map<String, PropertyDefinition> props = new HashMap<>();
|
||||
Map<String, String> attribs = new HashMap<>();
|
||||
|
@ -147,7 +150,7 @@ public class ConceptMapValidator extends BaseValidator {
|
|||
List<Element> groups = cm.getChildrenByName("group");
|
||||
int ci = 0;
|
||||
for (Element group : groups) {
|
||||
ok = validateGroup(errors, group, stack.push(group, ci, null, null), props, attribs, options, sourceScope, targetScope) && ok;
|
||||
ok = validateGroup(valContext, errors, group, stack.push(group, ci, null, null), props, attribs, options, sourceScope, targetScope) && ok;
|
||||
ci++;
|
||||
}
|
||||
|
||||
|
@ -213,7 +216,7 @@ public class ConceptMapValidator extends BaseValidator {
|
|||
return null;
|
||||
}
|
||||
|
||||
private boolean validateGroup(List<ValidationMessage> errors, Element grp, NodeStack stack, Map<String, PropertyDefinition> props, Map<String, String> attribs, ValidationOptions options, VSReference sourceScope, VSReference targetScope) {
|
||||
private boolean validateGroup(ValidationContext valContext, List<ValidationMessage> errors, Element grp, NodeStack stack, Map<String, PropertyDefinition> props, Map<String, String> attribs, ValidationOptions options, VSReference sourceScope, VSReference targetScope) {
|
||||
boolean ok = true;
|
||||
GroupContext ctxt = new GroupContext();
|
||||
ctxt.sourceScope = sourceScope;
|
||||
|
@ -229,6 +232,11 @@ public class ConceptMapValidator extends BaseValidator {
|
|||
} else {
|
||||
warning(errors, "2023-03-05", IssueType.NOTFOUND, grp.line(), grp.col(), stack.push(e, -1, null, null).getLiteralPath(), sourceScope != null, I18nConstants.CONCEPTMAP_GROUP_SOURCE_UNKNOWN, e.getValue());
|
||||
}
|
||||
if (ctxt.source.version == null && ctxt.source.cs != null && !CodeSystemUtilities.isExemptFromMultipleVersionChecking(ctxt.source.url)) {
|
||||
Set<String> possibleVersions = fetcher.fetchCanonicalResourceVersions(null, valContext.getAppContext(), ctxt.source.url);
|
||||
warning(errors, NO_RULE_DATE, IssueType.INVALID, grp.line(), grp.col(), stack.getLiteralPath(), possibleVersions.size() <= 1, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS,
|
||||
ctxt.source.url, ctxt.source.cs.getVersion(), CommaSeparatedStringBuilder.join(", ", Utilities.sorted(possibleVersions)));
|
||||
}
|
||||
}
|
||||
e = grp.getNamedChild("target", false);
|
||||
if (warning(errors, "2023-03-05", IssueType.REQUIRED, grp.line(), grp.col(), stack.getLiteralPath(), e != null, I18nConstants.CONCEPTMAP_GROUP_TARGET_MISSING)) {
|
||||
|
@ -241,6 +249,11 @@ public class ConceptMapValidator extends BaseValidator {
|
|||
warning(errors, "2023-03-05", IssueType.NOTFOUND, grp.line(), grp.col(), stack.push(e, -1, null, null).getLiteralPath(), targetScope != null, I18nConstants.CONCEPTMAP_GROUP_TARGET_UNKNOWN, e.getValue());
|
||||
|
||||
}
|
||||
if (ctxt.target.version == null && ctxt.target.cs != null && !CodeSystemUtilities.isExemptFromMultipleVersionChecking(ctxt.target.url)) {
|
||||
Set<String> possibleVersions = fetcher.fetchCanonicalResourceVersions(null, valContext.getAppContext(), ctxt.target.url);
|
||||
warning(errors, NO_RULE_DATE, IssueType.INVALID, grp.line(), grp.col(), stack.getLiteralPath(), possibleVersions.size() <= 1, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS,
|
||||
ctxt.target.url, ctxt.target.cs.getVersion(), CommaSeparatedStringBuilder.join(", ", Utilities.sorted(possibleVersions)));
|
||||
}
|
||||
}
|
||||
List<Element> elements = grp.getChildrenByName("element");
|
||||
int ci = 0;
|
||||
|
|
|
@ -1,15 +1,25 @@
|
|||
package org.hl7.fhir.validation.instance.type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hl7.fhir.r5.model.CodeSystem;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.CodeSystemFilterComponent;
|
||||
import org.hl7.fhir.r5.model.CodeSystem.PropertyComponent;
|
||||
import org.hl7.fhir.r5.elementmodel.Element;
|
||||
import org.hl7.fhir.r5.model.Coding;
|
||||
import org.hl7.fhir.r5.model.Enumeration;
|
||||
import org.hl7.fhir.r5.model.Enumerations.FilterOperator;
|
||||
import org.hl7.fhir.r5.model.Resource;
|
||||
import org.hl7.fhir.r5.model.ValueSet;
|
||||
import org.hl7.fhir.r5.terminologies.CodeSystemUtilities;
|
||||
import org.hl7.fhir.r5.terminologies.utilities.CodingValidationRequest;
|
||||
import org.hl7.fhir.r5.terminologies.utilities.TerminologyServiceErrorClass;
|
||||
import org.hl7.fhir.r5.terminologies.utilities.ValidationResult;
|
||||
import org.hl7.fhir.utilities.CommaSeparatedStringBuilder;
|
||||
import org.hl7.fhir.utilities.Utilities;
|
||||
import org.hl7.fhir.utilities.VersionUtilities;
|
||||
import org.hl7.fhir.utilities.i18n.I18nConstants;
|
||||
|
@ -21,12 +31,73 @@ import org.hl7.fhir.validation.codesystem.CodeSystemChecker;
|
|||
import org.hl7.fhir.validation.codesystem.GeneralCodeSystemChecker;
|
||||
import org.hl7.fhir.validation.codesystem.SnomedCTChecker;
|
||||
import org.hl7.fhir.validation.instance.InstanceValidator;
|
||||
import org.hl7.fhir.validation.instance.type.ValueSetValidator.PropertyOperation;
|
||||
import org.hl7.fhir.validation.instance.type.ValueSetValidator.PropertyValidationRules;
|
||||
import org.hl7.fhir.validation.instance.utils.NodeStack;
|
||||
import org.hl7.fhir.validation.instance.utils.ValidationContext;
|
||||
|
||||
public class ValueSetValidator extends BaseValidator {
|
||||
public enum PropertyOperation {
|
||||
Equals, IsA, DescendentOf, IsNotA, RegEx, In, NotIn, Generalizes, ChildOf, DescendentLeaf, Exists;
|
||||
|
||||
public String toString() {
|
||||
switch (this) {
|
||||
case ChildOf: return "child-of";
|
||||
case DescendentLeaf: return "descendent-leaf";
|
||||
case DescendentOf: return "descendent-of";
|
||||
case Equals: return "=";
|
||||
case Exists: return "exists";
|
||||
case Generalizes: return "generalizes";
|
||||
case In: return "in";
|
||||
case IsA: return "is-a";
|
||||
case IsNotA: return "is-not-a";
|
||||
case NotIn: return "not-in";
|
||||
case RegEx: return "regex";
|
||||
default: return "?";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class PropertyValidationRules {
|
||||
boolean repeating;
|
||||
PropertyFilterType type;
|
||||
EnumSet<PropertyOperation> ops;
|
||||
protected PropertyValidationRules(boolean repeating, PropertyFilterType type, PropertyOperation... ops) {
|
||||
super();
|
||||
this.repeating = repeating;
|
||||
this.type = type;
|
||||
this.ops = EnumSet.noneOf(PropertyOperation.class);
|
||||
for (PropertyOperation op : ops) {
|
||||
this.ops.add(op);
|
||||
}
|
||||
}
|
||||
public PropertyValidationRules(boolean repeating, PropertyFilterType type, EnumSet<PropertyOperation> ops) {
|
||||
super();
|
||||
this.repeating = repeating;
|
||||
this.type = type;
|
||||
this.ops = ops;
|
||||
}
|
||||
|
||||
public boolean isRepeating() {
|
||||
return repeating;
|
||||
}
|
||||
public PropertyFilterType getType() {
|
||||
return type;
|
||||
}
|
||||
public EnumSet<PropertyOperation> getOps() {
|
||||
return ops;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public enum PropertyFilterType {
|
||||
Boolean, Integer, Decimal, Code, DateTime, ValidCode, Coding
|
||||
}
|
||||
|
||||
private static final int TOO_MANY_CODES_TO_VALIDATE = 1000;
|
||||
|
||||
|
||||
private CodeSystemChecker getSystemValidator(String system, List<ValidationMessage> errors) {
|
||||
if (system == null) {
|
||||
return new GeneralCodeSystemChecker(context, xverManager, debug, errors);
|
||||
|
@ -36,7 +107,7 @@ public class ValueSetValidator extends BaseValidator {
|
|||
default: return new GeneralCodeSystemChecker(context, xverManager, debug, errors);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class VSCodingValidationRequest extends CodingValidationRequest {
|
||||
|
||||
private NodeStack stack;
|
||||
|
@ -49,20 +120,20 @@ public class ValueSetValidator extends BaseValidator {
|
|||
public NodeStack getStack() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public ValueSetValidator(InstanceValidator parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
public boolean validateValueSet(List<ValidationMessage> errors, Element vs, NodeStack stack) {
|
||||
|
||||
public boolean validateValueSet(ValidationContext valContext, List<ValidationMessage> errors, Element vs, NodeStack stack) {
|
||||
boolean ok = true;
|
||||
if (!VersionUtilities.isR2Ver(context.getVersion())) {
|
||||
List<Element> composes = vs.getChildrenByName("compose");
|
||||
int cc = 0;
|
||||
for (Element compose : composes) {
|
||||
ok = validateValueSetCompose(errors, compose, stack.push(compose, composes.size() > 1 ? cc : -1, null, null), vs.getNamedChildValue("url", false), "retired".equals(vs.getNamedChildValue("url", false)), vs) & ok;
|
||||
ok = validateValueSetCompose(valContext, errors, compose, stack.push(compose, composes.size() > 1 ? cc : -1, null, null), vs.getNamedChildValue("url", false), "retired".equals(vs.getNamedChildValue("url", false)), vs) & ok;
|
||||
cc++;
|
||||
}
|
||||
}
|
||||
|
@ -76,46 +147,46 @@ public class ValueSetValidator extends BaseValidator {
|
|||
if (parent.isForPublication()) {
|
||||
if (isHL7(vs)) {
|
||||
boolean ok = true;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("url", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "url") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("version", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "version") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("title", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "title") && ok;
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("name", false), I18nConstants.VALUESET_SHAREABLE_EXTRA_MISSING_HL7, "name");
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("status", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "status") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("experimental", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "experimental") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("description", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "description") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("url", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "url") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("version", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "version") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("title", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "title") && ok;
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("name", false), I18nConstants.VALUESET_SHAREABLE_EXTRA_MISSING_HL7, "name");
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("status", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "status") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("experimental", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "experimental") && ok;
|
||||
ok = rule(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("description", false), I18nConstants.VALUESET_SHAREABLE_MISSING_HL7, "description") && ok;
|
||||
return ok;
|
||||
} else {
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("url", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "url");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("version", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "version");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("title", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "title");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("name", false), I18nConstants.VALUESET_SHAREABLE_EXTRA_MISSING, "name");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("status", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "status");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("experimental", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "experimental");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, vs.line(), vs.col(), stack.getLiteralPath(), vs.hasChild("description", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "description");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("url", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "url");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("version", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "version");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("title", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "title");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("name", false), I18nConstants.VALUESET_SHAREABLE_EXTRA_MISSING, "name");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("status", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "status");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("experimental", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "experimental");
|
||||
warning(errors, NO_RULE_DATE, IssueType.REQUIRED, stack, vs.hasChild("description", false), I18nConstants.VALUESET_SHAREABLE_MISSING, "description");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private boolean validateValueSetCompose(List<ValidationMessage> errors, Element compose, NodeStack stack, String vsid, boolean retired, Element vsSrc) {
|
||||
private boolean validateValueSetCompose(ValidationContext valContext, List<ValidationMessage> errors, Element compose, NodeStack stack, String vsid, boolean retired, Element vsSrc) {
|
||||
boolean ok = true;
|
||||
List<Element> includes = compose.getChildrenByName("include");
|
||||
int ci = 0;
|
||||
for (Element include : includes) {
|
||||
ok = validateValueSetInclude(errors, include, stack.push(include, ci, null, null), vsid, retired, vsSrc) && ok;
|
||||
ok = validateValueSetInclude(valContext, errors, include, stack.push(include, ci, null, null), vsid, retired, vsSrc) && ok;
|
||||
ci++;
|
||||
}
|
||||
List<Element> excludes = compose.getChildrenByName("exclude");
|
||||
int ce = 0;
|
||||
for (Element exclude : excludes) {
|
||||
ok = validateValueSetInclude(errors, exclude, stack.push(exclude, ce, null, null), vsid, retired, vsSrc) && ok;
|
||||
ok = validateValueSetInclude(valContext, errors, exclude, stack.push(exclude, ce, null, null), vsid, retired, vsSrc) && ok;
|
||||
ce++;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean validateValueSetInclude(List<ValidationMessage> errors, Element include, NodeStack stack, String vsid, boolean retired, Element vsSrc) {
|
||||
|
||||
private boolean validateValueSetInclude(ValidationContext valContext, List<ValidationMessage> errors, Element include, NodeStack stack, String vsid, boolean retired, Element vsSrc) {
|
||||
boolean ok = true;
|
||||
String system = include.getChildValue("system");
|
||||
String version = include.getChildValue("version");
|
||||
|
@ -139,32 +210,61 @@ public class ValueSetValidator extends BaseValidator {
|
|||
i++;
|
||||
}
|
||||
if (valuesets.size() > 1) {
|
||||
warning(errors, NO_RULE_DATE, IssueType.INFORMATIONAL, stack.getLiteralPath(), false, I18nConstants.VALUESET_IMPORT_UNION_INTERSECTION);
|
||||
warning(errors, NO_RULE_DATE, IssueType.INFORMATIONAL, stack, false, I18nConstants.VALUESET_IMPORT_UNION_INTERSECTION);
|
||||
}
|
||||
if (system != null && system.startsWith("#")) {
|
||||
List<Element> cs = new ArrayList<>();
|
||||
for (Element contained : vsSrc.getChildrenByName("contained")) {
|
||||
if (("#"+contained.getIdBase()).equals(system)) {
|
||||
if (rule(errors, "2024-02-10", IssueType.INVALID, stack.getLiteralPath(), "CodeSystem".equals(contained.fhirType()), I18nConstants.VALUESET_INCLUDE_CS_NOT_CS, system, contained.fhirType())) {
|
||||
if (version == null || version.equals(contained.getChildValue("version"))) {
|
||||
cs.add(contained);
|
||||
}
|
||||
} else {
|
||||
ok = false;
|
||||
if (system != null) {
|
||||
rule(errors, "2024-03-06", IssueType.INVALID, stack, Utilities.isAbsoluteUrl(system), system.startsWith("#") ? I18nConstants.VALUESET_INCLUDE_SYSTEM_ABSOLUTE_FRAG : I18nConstants.VALUESET_INCLUDE_SYSTEM_ABSOLUTE, system);
|
||||
if (system.startsWith("#")) {
|
||||
List<Element> cs = new ArrayList<>();
|
||||
for (Element contained : vsSrc.getChildrenByName("contained")) {
|
||||
if (("#"+contained.getIdBase()).equals(system)) {
|
||||
ok = false; // see absolute check above.
|
||||
|
||||
if (rule(errors, "2024-02-10", IssueType.INVALID, stack, "CodeSystem".equals(contained.fhirType()), I18nConstants.VALUESET_INCLUDE_CS_NOT_CS, system, contained.fhirType())) {
|
||||
if (version == null || version.equals(contained.getChildValue("version"))) {
|
||||
cs.add(contained);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cs.isEmpty()) {
|
||||
ok = rule(errors, "2024-02-10", IssueType.INVALID, stack, false, version == null ? I18nConstants.VALUESET_INCLUDE_CS_NOT_FOUND : I18nConstants.VALUESET_INCLUDE_CSVER_NOT_FOUND, system, version) && ok;
|
||||
} else {
|
||||
ok = rule(errors, "2024-02-10", IssueType.INVALID, stack, cs.size() == 1, version == null ? I18nConstants.VALUESET_INCLUDE_CS_MULTI_FOUND : I18nConstants.VALUESET_INCLUDE_CSVER_MULTI_FOUND, system, version) && ok;
|
||||
}
|
||||
}
|
||||
if (cs.isEmpty()) {
|
||||
ok = rule(errors, "2024-02-10", IssueType.INVALID, stack.getLiteralPath(), false, version == null ? I18nConstants.VALUESET_INCLUDE_CS_NOT_FOUND : I18nConstants.VALUESET_INCLUDE_CSVER_NOT_FOUND, system, version) && ok;
|
||||
} else {
|
||||
ok = rule(errors, "2024-02-10", IssueType.INVALID, stack.getLiteralPath(), cs.size() == 1, version == null ? I18nConstants.VALUESET_INCLUDE_CS_MULTI_FOUND : I18nConstants.VALUESET_INCLUDE_CSVER_MULTI_FOUND, system, version) && ok;
|
||||
if (version == null) {
|
||||
CodeSystem cs = context.fetchCodeSystem(system);
|
||||
if (cs != null && !CodeSystemUtilities.isExemptFromMultipleVersionChecking(system)) {
|
||||
Set<String> possibleVersions = fetcher.fetchCanonicalResourceVersions(null, valContext.getAppContext(), system);
|
||||
warning(errors, NO_RULE_DATE, IssueType.INVALID, stack, possibleVersions.size() <= 1, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_CANONICAL_MULTIPLE_POSSIBLE_VERSIONS,
|
||||
system, cs.getVersion(), CommaSeparatedStringBuilder.join(", ", Utilities.sorted(possibleVersions)));
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Element> concepts = include.getChildrenByName("concept");
|
||||
List<Element> filters = include.getChildrenByName("filter");
|
||||
|
||||
CodeSystemChecker slv = getSystemValidator(system, errors);
|
||||
CodeSystem cs = null;
|
||||
if (!Utilities.noString(system)) {
|
||||
cs = context.fetchCodeSystem(system, version);
|
||||
if (cs != null) { // if it's null, we can't analyse this
|
||||
switch (cs.getContent()) {
|
||||
case EXAMPLE:
|
||||
warning(errors, "2024-03-06", IssueType.INVALID, stack, false, version == null ? I18nConstants.VALUESET_INCLUDE_CS_CONTENT : I18nConstants.VALUESET_INCLUDE_CSVER_CONTENT, system, cs.getContent().toCode(), version);
|
||||
break;
|
||||
case FRAGMENT:
|
||||
hint(errors, "2024-03-06", IssueType.INVALID, stack, false, version == null ? I18nConstants.VALUESET_INCLUDE_CS_CONTENT : I18nConstants.VALUESET_INCLUDE_CSVER_CONTENT, system, cs.getContent().toCode(), version);
|
||||
break;
|
||||
case SUPPLEMENT:
|
||||
ok = rule(errors, "2024-03-06", IssueType.INVALID, stack, false, version == null ? I18nConstants.VALUESET_INCLUDE_CS_SUPPLEMENT : I18nConstants.VALUESET_INCLUDE_CSVER_SUPPLEMENT, system, cs.getSupplements(), version) && ok;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
boolean systemOk = true;
|
||||
int cc = 0;
|
||||
List<VSCodingValidationRequest> batch = new ArrayList<>();
|
||||
|
@ -181,7 +281,7 @@ public class ValueSetValidator extends BaseValidator {
|
|||
}
|
||||
if (((InstanceValidator) parent).isValidateValueSetCodesOnTxServer() && batch.size() > 0 & !context.isNoTerminologyServer()) {
|
||||
if (batch.size() > TOO_MANY_CODES_TO_VALIDATE) {
|
||||
ok = hint(errors, "2023-09-06", IssueType.BUSINESSRULE, stack.getLiteralPath(), false, I18nConstants.VALUESET_INC_TOO_MANY_CODES, batch.size()) && ok;
|
||||
ok = hint(errors, "2023-09-06", IssueType.BUSINESSRULE, stack, false, I18nConstants.VALUESET_INC_TOO_MANY_CODES, batch.size()) && ok;
|
||||
} else {
|
||||
long t = System.currentTimeMillis();
|
||||
if (parent.isDebug()) {
|
||||
|
@ -209,14 +309,12 @@ public class ValueSetValidator extends BaseValidator {
|
|||
|
||||
int cf = 0;
|
||||
for (Element filter : filters) {
|
||||
if (systemOk && !validateValueSetIncludeFilter(errors, include, stack.push(filter, cf, null, null), system, version, slv)) {
|
||||
systemOk = false;
|
||||
}
|
||||
ok = validateValueSetIncludeFilter(errors, filter, stack.push(filter, cf, null, null), system, version, cs, slv) & ok;
|
||||
cf++;
|
||||
}
|
||||
slv.finish(include, stack);
|
||||
} else {
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), filters.size() == 0 && concepts.size() == 0, I18nConstants.VALUESET_NO_SYSTEM_WARNING);
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack, filters.size() == 0 && concepts.size() == 0, I18nConstants.VALUESET_NO_SYSTEM_WARNING);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
@ -226,7 +324,7 @@ public class ValueSetValidator extends BaseValidator {
|
|||
String code = concept.getChildValue("code");
|
||||
String display = concept.getChildValue("display");
|
||||
slv.checkConcept(code, display);
|
||||
|
||||
|
||||
if (version == null) {
|
||||
ValidationResult vv = context.validateCode(ValidationOptions.defaults(), new Coding(system, code, null), null);
|
||||
if (vv.getErrorClass() == TerminologyServiceErrorClass.CODESYSTEM_UNSUPPORTED) {
|
||||
|
@ -242,9 +340,9 @@ public class ValueSetValidator extends BaseValidator {
|
|||
return false;
|
||||
} else {
|
||||
boolean ok = vv.isOk();
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), ok, I18nConstants.VALUESET_INCLUDE_INVALID_CONCEPT_CODE, system, code);
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack, ok, I18nConstants.VALUESET_INCLUDE_INVALID_CONCEPT_CODE, system, code);
|
||||
if (vv.getMessage() != null) {
|
||||
hint(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), false, vv.getMessage());
|
||||
hint(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack, false, vv.getMessage());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -254,9 +352,9 @@ public class ValueSetValidator extends BaseValidator {
|
|||
return false;
|
||||
} else {
|
||||
boolean ok = vv.isOk();
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), ok, I18nConstants.VALUESET_INCLUDE_INVALID_CONCEPT_CODE_VER, system, version, code);
|
||||
warning(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack, ok, I18nConstants.VALUESET_INCLUDE_INVALID_CONCEPT_CODE_VER, system, version, code);
|
||||
if (vv.getMessage() != null) {
|
||||
hint(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack.getLiteralPath(), false, vv.getMessage());
|
||||
hint(errors, NO_RULE_DATE, IssueType.BUSINESSRULE, stack, false, vv.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -267,19 +365,282 @@ public class ValueSetValidator extends BaseValidator {
|
|||
String code = concept.getChildValue("code");
|
||||
String display = concept.getChildValue("display");
|
||||
slv.checkConcept(code, display);
|
||||
|
||||
|
||||
Coding c = new Coding(system, code, null);
|
||||
if (version != null) {
|
||||
c.setVersion(version);
|
||||
c.setVersion(version);
|
||||
}
|
||||
return new VSCodingValidationRequest(stack, c);
|
||||
}
|
||||
|
||||
private boolean validateValueSetIncludeFilter(List<ValidationMessage> errors, Element filter, NodeStack push, String system, String version, CodeSystemChecker slv) {
|
||||
//
|
||||
// String display = concept.getChildValue("display");
|
||||
// slv.checkConcept(code, display);
|
||||
private boolean validateValueSetIncludeFilter(List<ValidationMessage> errors, Element filter, NodeStack stack, String system, String version, CodeSystem cs, CodeSystemChecker slv) {
|
||||
boolean ok = true;
|
||||
String property = filter.getChildValue("property");
|
||||
String op = filter.getChildValue("op");
|
||||
String value = filter.getChildValue("value");
|
||||
|
||||
if (property != null) {
|
||||
List<String> knownNames = new ArrayList<>();
|
||||
knownNames.add("concept");
|
||||
knownNames.add("code");
|
||||
knownNames.add("status");
|
||||
knownNames.add("inactive");
|
||||
knownNames.add("effectiveDate");
|
||||
knownNames.add("deprecationDate");
|
||||
knownNames.add("retirementDate");
|
||||
knownNames.add("notSelectable");
|
||||
if (cs == null || cs.hasHierarchyMeaning()) {
|
||||
knownNames.add("parent");
|
||||
knownNames.add("child");
|
||||
knownNames.add("partOf");
|
||||
}
|
||||
knownNames.add("synonym");
|
||||
knownNames.add("comment");
|
||||
knownNames.add("itemWeight");
|
||||
if (cs != null) {
|
||||
for (CodeSystemFilterComponent f : cs.getFilter()) {
|
||||
addName(knownNames, f.getCode());
|
||||
}
|
||||
for (PropertyComponent p : cs.getProperty()) {
|
||||
addName(knownNames, p.getCode());
|
||||
}
|
||||
}
|
||||
for (String s : getSystemKnownNames(system)) {
|
||||
addName(knownNames, s);
|
||||
}
|
||||
boolean pok = false;
|
||||
if (cs == null) {
|
||||
pok = hint(errors, "2024-03-09", IssueType.INVALID, stack, knownNames.contains(property), I18nConstants.VALUESET_UNKNOWN_FILTER_PROPERTY_NO_CS, property, system, CommaSeparatedStringBuilder.join(",", knownNames));
|
||||
} else {
|
||||
pok = warning(errors, "2024-03-09", IssueType.INVALID, stack, knownNames.contains(property), I18nConstants.VALUESET_UNKNOWN_FILTER_PROPERTY, property, system, CommaSeparatedStringBuilder.join(",", knownNames));
|
||||
}
|
||||
if (pok) {
|
||||
PropertyValidationRules rules = rulesForFilter(system, cs, property);
|
||||
if (rules != null) {
|
||||
if (!rules.getOps().isEmpty()) {
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack, opInSet(op, rules.getOps()), I18nConstants.VALUESET_BAD_FILTER_OP, op, property, CommaSeparatedStringBuilder.join(",", rules.getOps())) && ok;
|
||||
}
|
||||
|
||||
if ("exists".equals(op)) {
|
||||
ok = checkFilterValue(errors, stack, system, version, ok, property, value, PropertyFilterType.Boolean) && ok;
|
||||
} else if (rules.isRepeating()) {
|
||||
for (String v : value.split("\\,")) {
|
||||
ok = checkFilterValue(errors, stack, system, version, ok, property, v, rules.getType()) && ok;
|
||||
}
|
||||
} else {
|
||||
ok = checkFilterValue(errors, stack, system, version, ok, property, value, rules.getType()) && ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
private boolean opInSet(String op, EnumSet<PropertyOperation> ops) {
|
||||
switch (op) {
|
||||
case "=": return ops.contains(PropertyOperation.Equals);
|
||||
case "is-a": return ops.contains(PropertyOperation.IsA);
|
||||
case "descendent-of": return ops.contains(PropertyOperation.DescendentOf);
|
||||
case "is-not-a": return ops.contains(PropertyOperation.IsNotA);
|
||||
case "regex": return ops.contains(PropertyOperation.RegEx);
|
||||
case "in": return ops.contains(PropertyOperation.In);
|
||||
case "not-in": return ops.contains(PropertyOperation.NotIn);
|
||||
case "generalizes": return ops.contains(PropertyOperation.Generalizes);
|
||||
case "child-of": return ops.contains(PropertyOperation.ChildOf);
|
||||
case "descendent-leaf": return ops.contains(PropertyOperation.DescendentLeaf);
|
||||
case "exists": return ops.contains(PropertyOperation.Exists);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkFilterValue(List<ValidationMessage> errors, NodeStack stack, String system, String version,boolean ok, String property, String value, PropertyFilterType type) {
|
||||
if (type != null) {
|
||||
switch (type) {
|
||||
case Boolean:
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack,
|
||||
Utilities.existsInList(value, "true", "false"),
|
||||
I18nConstants.VALUESET_BAD_FILTER_VALUE_BOOLEAN, property, value) && ok;
|
||||
break;
|
||||
case Code:
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack,
|
||||
value.trim().equals(value),
|
||||
I18nConstants.VALUESET_BAD_FILTER_VALUE_CODE, property, value) && ok;
|
||||
break;
|
||||
case DateTime:
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack.getLiteralPath(),
|
||||
value.matches("([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1])(T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\\.[0-9]+)?(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?)?)?)?"),
|
||||
I18nConstants.VALUESET_BAD_FILTER_VALUE_DATETIME, property, value) && ok;
|
||||
break;
|
||||
case Decimal:
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack.getLiteralPath(),
|
||||
Utilities.isDecimal(value, true),
|
||||
I18nConstants.VALUESET_BAD_FILTER_VALUE_DECIMAL, property, value) && ok;
|
||||
break;
|
||||
case Integer:
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack.getLiteralPath(),
|
||||
Utilities.isInteger(value),
|
||||
I18nConstants.VALUESET_BAD_FILTER_VALUE_INTEGER, property, value) && ok;
|
||||
break;
|
||||
case ValidCode :
|
||||
ValidationResult vr = context.validateCode(baseOptions, system, version, value, null);
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack.getLiteralPath(),
|
||||
vr.isOk(),
|
||||
I18nConstants.VALUESET_BAD_FILTER_VALUE_VALID_CODE, property, value, system, vr.getMessage()) && ok;
|
||||
break;
|
||||
case Coding :
|
||||
Coding code = Coding.fromLiteral(value);
|
||||
if (code == null) {
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack, false, I18nConstants.VALUESET_BAD_FILTER_VALUE_CODED, property, value) && ok;
|
||||
} else {
|
||||
vr = context.validateCode(baseOptions, code, null);
|
||||
ok = rule(errors, "2024-03-09", IssueType.INVALID, stack, vr.isOk(), I18nConstants.VALUESET_BAD_FILTER_VALUE_CODED_INVALID, property, value, vr.getMessage()) && ok;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
private PropertyValidationRules rulesForFilter(String system, CodeSystem cs, String property) {
|
||||
var ops = EnumSet.noneOf(PropertyOperation.class);
|
||||
|
||||
return true;
|
||||
if (cs != null) {
|
||||
|
||||
for (CodeSystemFilterComponent f : cs.getFilter()) {
|
||||
if (property.equals(f.getCode())) {
|
||||
for (Enumeration<FilterOperator> op : f.getOperator()) {
|
||||
ops.add(toOp(op));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (PropertyComponent p : cs.getProperty()) {
|
||||
if (property.equals(p.getCode())) {
|
||||
if (p.getType() != null) {
|
||||
switch (p.getType()) {
|
||||
case BOOLEAN: return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
case CODE: return new PropertyValidationRules(false, PropertyFilterType.ValidCode, ops);
|
||||
case CODING: return new PropertyValidationRules(false, PropertyFilterType.Coding, ops);
|
||||
case DATETIME: return new PropertyValidationRules(false, PropertyFilterType.DateTime, ops);
|
||||
case DECIMAL: return new PropertyValidationRules(false, PropertyFilterType.Decimal, ops);
|
||||
case INTEGER: return new PropertyValidationRules(false, PropertyFilterType.Integer, ops);
|
||||
case STRING: return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (property) {
|
||||
case "concept" : return new PropertyValidationRules(false, PropertyFilterType.ValidCode, addToOps(ops, PropertyOperation.Equals, PropertyOperation.In, PropertyOperation.IsA, PropertyOperation.DescendentOf, PropertyOperation.DescendentLeaf, PropertyOperation.IsNotA, PropertyOperation.NotIn));
|
||||
case "code" : return new PropertyValidationRules(false, PropertyFilterType.ValidCode, addToOps(ops, PropertyOperation.Equals, PropertyOperation.RegEx));
|
||||
case "status" : return new PropertyValidationRules(false, PropertyFilterType.Code, ops);
|
||||
case "inactive" : return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
case "effectiveDate" : return new PropertyValidationRules(false, PropertyFilterType.DateTime, ops);
|
||||
case "deprecationDate" : return new PropertyValidationRules(false, PropertyFilterType.DateTime, ops);
|
||||
case "retirementDate" : return new PropertyValidationRules(false, PropertyFilterType.DateTime, ops);
|
||||
case "notSelectable" : return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
case "parent" : return new PropertyValidationRules(false, PropertyFilterType.ValidCode, ops);
|
||||
case "child" : return new PropertyValidationRules(false, PropertyFilterType.ValidCode, ops);
|
||||
case "partOf" : return new PropertyValidationRules(false, PropertyFilterType.ValidCode, ops);
|
||||
case "synonym" : return new PropertyValidationRules(false, PropertyFilterType.Code, ops);
|
||||
case "comment" : return null;
|
||||
case "itemWeight" : return new PropertyValidationRules(false, PropertyFilterType.Decimal, ops);
|
||||
}
|
||||
switch (system) {
|
||||
case "http://loinc.org" :
|
||||
if (Utilities.existsInList(property, "copyright", "STATUS", "CLASS", "CONSUMER_NAME", "ORDER_OBS", "DOCUMENT_SECTION")) {
|
||||
return new PropertyValidationRules(false, PropertyFilterType.Code);
|
||||
} else if ("CLASSTYPE".equals(property)) {
|
||||
return new PropertyValidationRules(false, PropertyFilterType.Integer, addToOps(ops, PropertyOperation.Equals, PropertyOperation.In));
|
||||
} else {
|
||||
return new PropertyValidationRules(false, PropertyFilterType.ValidCode, addToOps(ops, PropertyOperation.Equals, PropertyOperation.In));
|
||||
}
|
||||
case "http://snomed.info/sct":
|
||||
switch (property) {
|
||||
case "constraint": return null; // for now
|
||||
case "expressions": return new PropertyValidationRules(false, PropertyFilterType.Boolean, addToOps(ops, PropertyOperation.Equals, PropertyOperation.In));
|
||||
default:
|
||||
return new PropertyValidationRules(false, PropertyFilterType.ValidCode, addToOps(ops, PropertyOperation.Equals, PropertyOperation.In));
|
||||
}
|
||||
case "http://www.nlm.nih.gov/research/umls/rxnorm" : return new PropertyValidationRules(false, PropertyFilterType.Code, ops);
|
||||
case "http://unitsofmeasure.org" : return new PropertyValidationRules(false, PropertyFilterType.Code, ops);
|
||||
case "http://www.ama-assn.org/go/cpt" :
|
||||
switch (property) {
|
||||
case "modifier": return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
case "kind" : return new PropertyValidationRules(true, PropertyFilterType.Code, ops); // for now
|
||||
case "modified": return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
case "code" : return null;
|
||||
case "telemedicine": return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
case "orthopox" : return new PropertyValidationRules(false, PropertyFilterType.Boolean, ops);
|
||||
}
|
||||
}
|
||||
if (ops != null) {
|
||||
return new PropertyValidationRules(false, null, ops);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private EnumSet<PropertyOperation> addToOps(EnumSet<PropertyOperation> set, PropertyOperation... ops) {
|
||||
for (PropertyOperation op : ops) {
|
||||
set.add(op);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
private PropertyOperation toOp(Enumeration<FilterOperator> op) {
|
||||
switch (op.getValue()) {
|
||||
case CHILDOF: return PropertyOperation.ChildOf;
|
||||
case DESCENDENTLEAF: return PropertyOperation.DescendentLeaf;
|
||||
case DESCENDENTOF: return PropertyOperation.DescendentOf;
|
||||
case EQUAL: return PropertyOperation.Equals;
|
||||
case EXISTS: return PropertyOperation.Exists;
|
||||
case GENERALIZES: return PropertyOperation.Generalizes;
|
||||
case IN: return PropertyOperation.In;
|
||||
case ISA: return PropertyOperation.IsA;
|
||||
case ISNOTA: return PropertyOperation.IsNotA;
|
||||
case NOTIN: return PropertyOperation.NotIn;
|
||||
case REGEX: return PropertyOperation.RegEx;
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void addName(List<String> knownNames, String code) {
|
||||
if (code != null && !knownNames.contains(code)) {
|
||||
knownNames.add(code);
|
||||
}
|
||||
}
|
||||
|
||||
private String[] getSystemKnownNames(String system) {
|
||||
switch (system) {
|
||||
case "http://loinc.org" : return new String[] {"parent", "ancestor", "copyright", "STATUS", "COMPONENT", "PROPERTY", "TIME_ASPCT", "SYSTEM", "SCALE_TYP", "METHOD_TYP", "CLASS", "CONSUMER_NAME", "CLASSTYPE", "ORDER_OBS", "DOCUMENT_SECTION"};
|
||||
|
||||
case "http://snomed.info/sct": return new String[] { "constraint", "expressions", "410662002", "42752001", "47429007", "116676008", "116686009", "118168003", "118169006", "118170007", "118171006", "127489000", "131195008",
|
||||
"246075003", "246090004", "246093002", "246112005", "246454002", "246456000", "246501002", "246513007", "246514001", "255234002", "260507000",
|
||||
"260686004", "260870009", "263502005", "272741003", "288556008", "363589002", "363698007", "363699004", "363700003", "363701004", "363702006",
|
||||
"363703001", "363704007", "363705008", "363709002", "363710007", "363713009", "363714003", "370129005", "370130000", "370131001", "370132008",
|
||||
"370133003", "370134009", "370135005", "371881003", "405813007", "405814001", "405815000", "405816004", "408729009", "408730004", "408731000",
|
||||
"408732007", "410675002", "411116001", "418775008", "419066007", "424226004", "424244007", "424361007", "424876005", "425391005", "609096000",
|
||||
"704319004", "704320005", "704321009", "704322002", "704323007", "704324001", "704325000", "704326004", "704327008", "704346009", "704347000",
|
||||
"704647008", "718497002", "719715003", "719722006", "726542003", "726633004", "732943007", "732945000", "732947008", "733722007", "733725009",
|
||||
"733928003", "733930001", "733931002", "733932009", "733933004", "734136001", "734137005", "736472000", "736473005", "736474004", "736475003",
|
||||
"736476002", "736518005", "738774007", "762705008", "762706009", "762949000", "762951001", "763032000", "766939001", "774081006", "774158006",
|
||||
"774159003", "774160008", "774163005", "827081001", "836358009", "840560000", "860779006", "860781008", "1003703000", "1003735000", "1142135004",
|
||||
"1142136003", "1142137007", "1142138002", "1142139005", "1142140007", "1142141006", "1142142004", "1142143009", "1148793005", "1148965004",
|
||||
"1148967007", "1148968002", "1148969005", "1149366004", "1149367008", "1230370004", "320091000221107" };
|
||||
// list from http://tx.fhir.org/r4/ValueSet/$expand?url=http://snomed.info/sct?fhir_vs=isa/410662002
|
||||
|
||||
case "http://www.nlm.nih.gov/research/umls/rxnorm" : return new String[] { "STY", "SAB", "TTY", "SY", "SIB", "RN", "PAR", "CHD", "RB", "RO", "IN", "PIN", "MIN", "BN", "SCD", "SBD", "GPCK", "BPCK", "SCDC", "SCDF", "SCDFP", "SCDG", "SCDGP", "SBDC", "SBDF", "SBDFP", "SBDG", "DF", "DFG" };
|
||||
case "http://unitsofmeasure.org" : return new String[] { "property", "canonical" };
|
||||
case "http://www.ama-assn.org/go/cpt" : return new String[] { "modifier", "kind", "modified", "code", "telemedicine", "orthopox" };
|
||||
case "urn:ietf:bcp:47" : return new String[] {"language", "region", "script", "variant", "extension", "ext-lang", "private-use" };
|
||||
default: return new String[] { };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -449,7 +449,7 @@ public class R4R5MapTester implements IValidatorResourceFetcher {
|
|||
}
|
||||
|
||||
@Override
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, String url) throws URISyntaxException {
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, Object appContext, String url) throws URISyntaxException {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -458,4 +458,9 @@ public class R4R5MapTester implements IValidatorResourceFetcher {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> fetchCanonicalResourceVersions(IResourceValidator validator, Object appContext, String url) {
|
||||
return new HashSet<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,9 +13,11 @@ import java.util.Collections;
|
|||
import java.util.Comparator;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.NotImplementedException;
|
||||
|
@ -832,7 +834,7 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
|
|||
}
|
||||
|
||||
@Override
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, String url) {
|
||||
public CanonicalResource fetchCanonicalResource(IResourceValidator validator, Object appContext, String url) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -867,4 +869,9 @@ public class ValidationTests implements IEvaluationContext, IValidatorResourceFe
|
|||
StructureDefinition structure, ElementDefinition element, String path) {
|
||||
return EnumSet.allOf(ElementValidationAction.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> fetchCanonicalResourceVersions(IResourceValidator validator, Object appContext, String url) {
|
||||
return new HashSet<>();
|
||||
}
|
||||
}
|
|
@ -1,8 +1,4 @@
|
|||
{
|
||||
"http://somewhere/something-else" : null,
|
||||
"http://loinc.org/vs/LL715-4" : null,
|
||||
"http://hl7.org/fhir/us/vrdr/ValueSet/vrdr-PlaceOfDeath" : null,
|
||||
"http://somewhere/something" : null,
|
||||
"https://fhir.infoway-inforoute.ca/ValueSet/issuetype|20190415" : null,
|
||||
"https://fhir.infoway-inforoute.ca/ValueSet/issueseverity|20190415" : null
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,44 +1,4 @@
|
|||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://acme.org/devices/clinical-codes",
|
||||
"code" : "body-weight",
|
||||
"display" : "Body Weight"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"false", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"false", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"code" : "body-weight",
|
||||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://acme.org/devices/clinical-codes' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r2",
|
||||
"unknown-systems" : "http://acme.org/devices/clinical-codes",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r2"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
"details" : {
|
||||
"coding" : [{
|
||||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "not-found"
|
||||
}],
|
||||
"text" : "A definition for CodeSystem 'http://acme.org/devices/clinical-codes' could not be found, so the code cannot be validated"
|
||||
},
|
||||
"location" : ["Coding.system"]
|
||||
}]
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://acme.org/devices/clinical-codes",
|
||||
"code" : "body-weight",
|
||||
|
@ -79,3 +39,43 @@ v: {
|
|||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://acme.org/devices/clinical-codes",
|
||||
"code" : "body-weight",
|
||||
"display" : "Body Weight"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"false", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"false", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"code" : "body-weight",
|
||||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://acme.org/devices/clinical-codes' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://tx-dev.fhir.org/r2",
|
||||
"unknown-systems" : "http://acme.org/devices/clinical-codes",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r2"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
"details" : {
|
||||
"coding" : [{
|
||||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "not-found"
|
||||
}],
|
||||
"text" : "A definition for CodeSystem 'http://acme.org/devices/clinical-codes' could not be found, so the code cannot be validated"
|
||||
},
|
||||
"location" : ["Coding.system"]
|
||||
}]
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[servers]
|
||||
local.fhir.org.r2 = http://local.fhir.org/r2
|
||||
tx-dev.fhir.org.r2 = http://tx-dev.fhir.org/r2
|
||||
|
||||
|
|
|
@ -1,27 +1,4 @@
|
|||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"code" : "27113001",
|
||||
"display" : "Body weight"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"false", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"false", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"display" : "Body weight",
|
||||
"code" : "27113001",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r2",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"code" : "27113001",
|
||||
|
@ -37,7 +14,30 @@ v: {
|
|||
"display" : "Body weight",
|
||||
"code" : "27113001",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r2",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"code" : "27113001",
|
||||
"display" : "Body weight"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"false", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"false", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"display" : "Body weight",
|
||||
"code" : "27113001",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r2",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "[lb_av]"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"true", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"false", "profile": {
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"true", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"true", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
|
@ -14,7 +14,7 @@ v: {
|
|||
"code" : "[lb_av]",
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"version" : "2.0.1",
|
||||
"server" : "http://local.fhir.org/r2",
|
||||
"server" : "http://tx-dev.fhir.org/r2",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ v: {
|
|||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "[lb_av]"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"true", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"true", "profile": {
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"true", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"false", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,4 +1,3 @@
|
|||
[servers]
|
||||
local.fhir.org.r3 = http://local.fhir.org/r3
|
||||
tx-dev.fhir.org.r3 = http://tx-dev.fhir.org/r3
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -12,7 +12,7 @@ v: {
|
|||
"display" : "Finnish",
|
||||
"code" : "fi",
|
||||
"system" : "urn:ietf:bcp:47",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -34,7 +34,7 @@ v: {
|
|||
"code" : "d",
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"version" : "2.0.1",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -62,7 +62,7 @@ v: {
|
|||
"display" : "image/jpg",
|
||||
"code" : "image/jpg",
|
||||
"system" : "urn:ietf:bcp:13",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -90,7 +90,7 @@ v: {
|
|||
"display" : "image/jpg",
|
||||
"code" : "image/jpg",
|
||||
"system" : "urn:ietf:bcp:13",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -118,7 +118,7 @@ v: {
|
|||
"display" : "application/pdf",
|
||||
"code" : "application/pdf",
|
||||
"system" : "urn:ietf:bcp:13",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -146,7 +146,7 @@ v: {
|
|||
"display" : "application/pdf",
|
||||
"code" : "application/pdf",
|
||||
"system" : "urn:ietf:bcp:13",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -167,7 +167,7 @@ v: {
|
|||
"display" : "German (Switzerland)",
|
||||
"code" : "de-CH",
|
||||
"system" : "urn:ietf:bcp:47",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -191,14 +191,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode' could not be found, so the code cannot be validated; The provided code 'http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode#urn:ihe:iti:xds:2017:mimeTypeSufficient ('MimeType sufficient')' was not found in the value set 'http://hl7.org/fhir/ValueSet/formatcodes|20150326'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
@ -215,7 +215,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -249,7 +249,7 @@ v: {
|
|||
"code" : "US",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -270,7 +270,7 @@ v: {
|
|||
"display" : "English",
|
||||
"code" : "en",
|
||||
"system" : "urn:ietf:bcp:47",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://acme.org' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://acme.org",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://acme.org/not-snomed' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://acme.org/not-snomed",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org/system' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://example.org/system",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://mydomain.org/fhir/cs/mydomain' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://mydomain.org/fhir/cs/mydomain",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://myownsystem.info/sct' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://myownsystem.info/sct",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://spms.min-saude.pt/valueset-list-empty-reason' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://spms.min-saude.pt/valueset-list-empty-reason",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://spms.min-saude.pt/valueset-list' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "http://spms.min-saude.pt/valueset-list",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'https://fhir.hl7.org.uk/STU3/CodeSystem/CareConnect-NHSNumberVerificationStatus-1' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "https://fhir.hl7.org.uk/STU3/CodeSystem/CareConnect-NHSNumberVerificationStatus-1",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,7 +14,7 @@ v: {
|
|||
"code" : "NL",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -38,7 +38,7 @@ v: {
|
|||
"code" : "NL",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -62,7 +62,7 @@ v: {
|
|||
"code" : "NL",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -85,7 +85,7 @@ v: {
|
|||
"code" : "NL",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -108,7 +108,7 @@ v: {
|
|||
"code" : "NL",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -132,7 +132,7 @@ v: {
|
|||
"code" : "NL",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -156,7 +156,7 @@ v: {
|
|||
"code" : "US",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -179,7 +179,7 @@ v: {
|
|||
"code" : "US",
|
||||
"system" : "urn:iso:std:iso:3166",
|
||||
"version" : "2018",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
[servers]
|
||||
local.fhir.org.r3 = http://local.fhir.org/r3
|
||||
tx-dev.fhir.org.r3 = http://tx-dev.fhir.org/r3
|
||||
|
||||
|
|
|
@ -1,4 +1,27 @@
|
|||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"code" : "27113001",
|
||||
"display" : "Body weight"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"false", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"true", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"display" : "Body weight",
|
||||
"code" : "27113001",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"code" : "66493003"
|
||||
|
@ -13,8 +36,9 @@ v: {
|
|||
"display" : "Product containing theophylline (medicinal product)",
|
||||
"code" : "66493003",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -36,8 +60,9 @@ v: {
|
|||
"display" : "Oral administration of treatment",
|
||||
"code" : "394899003",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -61,13 +86,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'Laboratory test finding (finding)' for http://snomed.info/sct#118246004. Valid display is one of 4 choices: 'Laboratory test finding', 'Laboratory test observations', 'Laboratory test result' or 'Laboratory test finding (navigational concept)' (for the language(s) '--')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -102,13 +128,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'Chemistry' for http://snomed.info/sct#275711006. Valid display is one of 2 choices: 'Serum chemistry test' or 'Serum chemistry test (procedure)' (for the language(s) '--')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -141,8 +168,9 @@ v: {
|
|||
"display" : "Above reference range",
|
||||
"code" : "281302008",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -164,8 +192,9 @@ v: {
|
|||
"display" : "Record artifact (record artifact)",
|
||||
"code" : "419891008",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -187,8 +216,9 @@ v: {
|
|||
"display" : "Clinical procedure report",
|
||||
"code" : "371525003",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -210,8 +240,9 @@ v: {
|
|||
"display" : "Normal",
|
||||
"code" : "17621005",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -233,8 +264,9 @@ v: {
|
|||
"display" : "Military health institution (environment)",
|
||||
"code" : "722172003",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -256,8 +288,9 @@ v: {
|
|||
"display" : "General surgery (qualifier value)",
|
||||
"code" : "394609007",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -279,8 +312,9 @@ v: {
|
|||
"display" : "Procedure",
|
||||
"code" : "71388002",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -301,15 +335,16 @@ v: {
|
|||
v: {
|
||||
"code" : "823681000000100",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '823681000000100' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '823681000000100' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -318,7 +353,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '823681000000100' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '823681000000100' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -341,15 +376,16 @@ v: {
|
|||
v: {
|
||||
"code" : "886921000000105",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '886921000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '886921000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -358,7 +394,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '886921000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '886921000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -381,15 +417,16 @@ v: {
|
|||
v: {
|
||||
"code" : "1077881000000105",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '1077881000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '1077881000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -398,7 +435,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '1077881000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '1077881000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -421,15 +458,16 @@ v: {
|
|||
v: {
|
||||
"code" : "887181000000106",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '887181000000106' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '887181000000106' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -438,7 +476,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '887181000000106' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '887181000000106' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -461,15 +499,16 @@ v: {
|
|||
v: {
|
||||
"code" : "887161000000102",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '887161000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '887161000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -478,7 +517,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '887161000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '887161000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -501,15 +540,16 @@ v: {
|
|||
v: {
|
||||
"code" : "1052891000000108",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '1052891000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '1052891000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -518,7 +558,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '1052891000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '1052891000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -541,15 +581,16 @@ v: {
|
|||
v: {
|
||||
"code" : "715851000000102",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '715851000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '715851000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -558,7 +599,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '715851000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '715851000000102' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -581,15 +622,16 @@ v: {
|
|||
v: {
|
||||
"code" : "717121000000105",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '717121000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '717121000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -598,7 +640,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '717121000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '717121000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -621,15 +663,16 @@ v: {
|
|||
v: {
|
||||
"code" : "933361000000108",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '933361000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '933361000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -638,7 +681,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '933361000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '933361000000108' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -661,15 +704,16 @@ v: {
|
|||
v: {
|
||||
"code" : "887171000000109",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '887171000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '887171000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -678,7 +722,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '887171000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '887171000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -701,15 +745,16 @@ v: {
|
|||
v: {
|
||||
"code" : "887201000000105",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '887201000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '887201000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -718,7 +763,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '887201000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '887201000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -741,15 +786,16 @@ v: {
|
|||
v: {
|
||||
"code" : "1052951000000105",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '1052951000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '1052951000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -758,7 +804,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '1052951000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '1052951000000105' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -781,15 +827,16 @@ v: {
|
|||
v: {
|
||||
"code" : "886731000000109",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '886731000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '886731000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -798,7 +845,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '886731000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '886731000000109' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -821,15 +868,16 @@ v: {
|
|||
v: {
|
||||
"code" : "887231000000104",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '887231000000104' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '887231000000104' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -838,7 +886,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '887231000000104' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '887231000000104' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -861,15 +909,16 @@ v: {
|
|||
v: {
|
||||
"code" : "9290701000001101",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '9290701000001101' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '9290701000001101' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -878,7 +927,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '9290701000001101' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '9290701000001101' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["CodeableConcept.coding[0].code"],
|
||||
"expression" : ["CodeableConcept.coding[0].code"]
|
||||
|
@ -902,8 +951,9 @@ v: {
|
|||
"display" : "Procedure carried out on subject (situation)",
|
||||
"code" : "443938003",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -925,8 +975,9 @@ v: {
|
|||
"display" : "Normal",
|
||||
"code" : "17621005",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -947,8 +998,9 @@ v: {
|
|||
"display" : "Urinalysis",
|
||||
"code" : "27171005",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -969,8 +1021,9 @@ v: {
|
|||
"display" : "Steady",
|
||||
"code" : "55011004",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -999,8 +1052,9 @@ v: {
|
|||
"display" : "Steady",
|
||||
"code" : "55011004",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20240201",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -1020,15 +1074,16 @@ v: {
|
|||
v: {
|
||||
"code" : "11181000146103",
|
||||
"severity" : "error",
|
||||
"error" : "Unknown code '11181000146103' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'",
|
||||
"error" : "Unknown code '11181000146103' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -1037,7 +1092,7 @@ v: {
|
|||
"system" : "http://hl7.org/fhir/tools/CodeSystem/tx-issue-type",
|
||||
"code" : "invalid-code"
|
||||
}],
|
||||
"text" : "Unknown code '11181000146103' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20230901'"
|
||||
"text" : "Unknown code '11181000146103' in the CodeSystem 'http://snomed.info/sct' version 'http://snomed.info/sct/900000000000207008/version/20240201'"
|
||||
},
|
||||
"location" : ["Coding.code"],
|
||||
"expression" : ["Coding.code"]
|
||||
|
@ -1046,27 +1101,3 @@ v: {
|
|||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://snomed.info/sct",
|
||||
"code" : "27113001",
|
||||
"display" : "Body weight"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"false", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"true", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"display" : "Body weight",
|
||||
"code" : "27113001",
|
||||
"system" : "http://snomed.info/sct",
|
||||
"version" : "http://snomed.info/sct/900000000000207008/version/20230901",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
|
|
|
@ -1,4 +1,26 @@
|
|||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "[lb_av]"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"true", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"true", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"display" : "[lb_av]",
|
||||
"code" : "[lb_av]",
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"version" : "2.0.1",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "L/min"
|
||||
|
@ -14,7 +36,8 @@ v: {
|
|||
"code" : "L/min",
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"version" : "2.0.1",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
@ -36,13 +59,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Unknown code '21612-7' in the CodeSystem 'http://unitsofmeasure.org' version '2.0.1'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -59,7 +83,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "information",
|
||||
"code" : "code-invalid",
|
||||
|
@ -92,13 +116,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Unknown code 'tbl' in the CodeSystem 'http://unitsofmeasure.org' version '2.0.1'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -115,7 +140,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "information",
|
||||
"code" : "code-invalid",
|
||||
|
@ -148,28 +173,6 @@ v: {
|
|||
"code" : "mmol/L",
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"version" : "2.0.1",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
}
|
||||
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "[lb_av]"
|
||||
}, "valueSet" :null, "langs":"", "useServer":"true", "useClient":"true", "guessSystem":"false", "activeOnly":"false", "membershipOnly":"false", "displayWarningMode":"false", "versionFlexible":"true", "profile": {
|
||||
"resourceType" : "Parameters",
|
||||
"parameter" : [{
|
||||
"name" : "profile-url",
|
||||
"valueString" : "http://hl7.org/fhir/ExpansionProfile/dc8fd4bc-091a-424a-8a3b-6198ef146891"
|
||||
}]
|
||||
}}####
|
||||
v: {
|
||||
"display" : "[lb_av]",
|
||||
"code" : "[lb_av]",
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"version" : "2.0.1",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'urn:oid:1.2.840.10008.2.16.4' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r3",
|
||||
"server" : "http://tx-dev.fhir.org/r3",
|
||||
"unknown-systems" : "urn:oid:1.2.840.10008.2.16.4",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r3"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r3"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,7 +5,7 @@
|
|||
"version" : "2.0.0",
|
||||
"name" : "FHIR Reference Server Teminology Capability Statement",
|
||||
"status" : "active",
|
||||
"date" : "2024-02-12T05:12:58.733Z",
|
||||
"date" : "2024-03-06T00:57:50.217Z",
|
||||
"contact" : [{
|
||||
"telecom" : [{
|
||||
"system" : "other",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"code" : "150456",
|
||||
"system" : "urn:iso:std:iso:11073:10101",
|
||||
"version" : "2023-04-26",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "information",
|
||||
"code" : "business-rule",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'Location' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "Location",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
@ -38,7 +38,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "The Coding references a value set, not a code system ('http://hl7.org/fhir/ValueSet/icd-10')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "The Coding references a value set, not a code system ('http://hl7.org/fhir/ValueSet/measure-type')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "The Coding references a value set, not a code system ('http://hl7.org/fhir/ValueSet/participant-role')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -16,14 +16,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://terminology.hl7.org/CodeSystem/condition-clinical' version '0.5.0' could not be found, so the code cannot be validated. Valid versions: [2.0.0,4.0.1]",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://terminology.hl7.org/CodeSystem/condition-clinical|0.5.0",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -56,7 +56,7 @@ v: {
|
|||
"code" : "active",
|
||||
"system" : "http://terminology.hl7.org/CodeSystem/condition-clinical",
|
||||
"version" : "2.0.0",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -81,14 +81,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://terminology.hl7.org/CodeSystem/condition-clinical' version '0.5.0' could not be found, so the code cannot be validated. Valid versions: [2.0.0,4.0.1]; Unable to check whether the code is in the value set 'http://hl7.org/fhir/ValueSet/condition-clinical|4.0.1' because the code system http://terminology.hl7.org/CodeSystem/condition-clinical|0.5.0 was not found",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://terminology.hl7.org/CodeSystem/condition-clinical|0.5.0",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
@ -105,7 +105,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -16,14 +16,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'SARS-COV-2 (COVID-19) vaccine, mRNA, spike protein, LNP, preservative free, 100 mcg/0.5mL dose' for http://hl7.org/fhir/sid/cvx#207. Valid display is 'COVID-19, mRNA, LNP-S, PF, 100 mcg/0.5mL dose or 50 mcg/0.25mL dose' (for the language(s) '--')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -58,14 +58,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'X SARS-COV-2 (COVID-19) vaccine, mRNA, spike protein, LNP, preservative free, 100 mcg/0.5mL dose' for http://hl7.org/fhir/sid/cvx#207. Valid display is 'COVID-19, mRNA, LNP-S, PF, 100 mcg/0.5mL dose or 50 mcg/0.25mL dose' (for the language(s) '--')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -100,14 +100,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'SARS-COV-2 (COVID-19) vaccine, mRNA, spike protein, LNP, preservative free, 30 mcg/0.3mL dose' for http://hl7.org/fhir/sid/cvx#208. Valid display is 'COVID-19, mRNA, LNP-S, PF, 30 mcg/0.3 mL dose' (for the language(s) 'en-NZ')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -141,7 +141,7 @@ v: {
|
|||
"code" : "141",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -166,14 +166,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'diphtheria, tetanus toxoids and acellular pertussis vaccine' for http://hl7.org/fhir/sid/cvx#20. Valid display is 'DTaP' (for the language(s) 'en-NZ')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -208,14 +208,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'tetanus and diphtheria toxoids, not adsorbed, for adult use' for http://hl7.org/fhir/sid/cvx#138. Valid display is 'Td (adult)' (for the language(s) 'en-NZ')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -250,14 +250,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'pneumococcal conjugate vaccine, 13 valent' for http://hl7.org/fhir/sid/cvx#133. Valid display is 'Pneumococcal conjugate PCV 13' (for the language(s) 'en-NZ')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -291,7 +291,7 @@ v: {
|
|||
"code" : "208",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -315,7 +315,7 @@ v: {
|
|||
"code" : "141",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -339,7 +339,7 @@ v: {
|
|||
"code" : "20",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -363,7 +363,7 @@ v: {
|
|||
"code" : "138",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -387,7 +387,7 @@ v: {
|
|||
"code" : "133",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -410,7 +410,7 @@ v: {
|
|||
"code" : "208",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -433,7 +433,7 @@ v: {
|
|||
"code" : "208",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -456,14 +456,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Unknown code '209' in the CodeSystem 'http://hl7.org/fhir/sid/cvx' version '20231214'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -496,14 +496,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "The provided code 'http://hl7.org/fhir/sid/cvx#209' was not found in the value set 'http://hl7.org/fhir/uv/shc-vaccination/ValueSet/vaccine-cvx|0.6.2'; Unknown code '209' in the CodeSystem 'http://hl7.org/fhir/sid/cvx' version '20231214'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -520,7 +520,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -553,7 +553,7 @@ v: {
|
|||
"code" : "210",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -576,7 +576,7 @@ v: {
|
|||
"code" : "207",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -599,7 +599,7 @@ v: {
|
|||
"code" : "210",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -622,7 +622,7 @@ v: {
|
|||
"code" : "207",
|
||||
"system" : "http://hl7.org/fhir/sid/cvx",
|
||||
"version" : "20231214",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://acme.org/obs-codes' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://acme.org/obs-codes",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -54,14 +54,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://acme.org/obs-codes' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://acme.org/obs-codes",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://example.org",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org/fhir/animal-breed' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://example.org/fhir/animal-breed",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org/fhir/us/spl/CodeSystem/codesystem-organizationTypes' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://example.org/fhir/us/spl/CodeSystem/codesystem-organizationTypes",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org/mySystem' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://example.org/mySystem",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org/profile2' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://example.org/profile2",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://example.org/profile3' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://example.org/profile3",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ask' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ask",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -56,14 +56,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ask' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ask",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -97,14 +97,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ask' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ask",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -138,14 +138,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ask' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ask",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -179,14 +179,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ask' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ask",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -220,14 +220,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ask' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ask",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.de/CodeSystem/ifa/pzn' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.de/CodeSystem/ifa/pzn",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.mimic.mit.edu/CodeSystem/admission-type' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.mimic.mit.edu/CodeSystem/admission-type",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -13,14 +13,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.mimic.mit.edu/CodeSystem/admit-source' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.mimic.mit.edu/CodeSystem/admit-source",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -13,14 +13,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.mimic.mit.edu/CodeSystem/discharge-dispostion' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.mimic.mit.edu/CodeSystem/discharge-dispostion",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fhir.whatever.com/codes/AllergyClinicalStatus' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fhir.whatever.com/codes/AllergyClinicalStatus",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCInctrMedRoute' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCInctrMedRoute",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCMedTiming' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCMedTiming",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCModality' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCModality",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCOrderAbbreviation' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCOrderAbbreviation",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCOrderSchedule' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCOrderSchedule",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCOrderSubType' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCOrderSubType",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://fkcfhir.org/fhir/CodeSystem/FMCOrderType' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://fkcfhir.org/fhir/CodeSystem/FMCOrderType",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -16,14 +16,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'Foreign Facility's United States Agent' for http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#C73330. Valid display is 'UNITED STATES AGENT' (for the language(s) '--')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -56,7 +56,7 @@ v: {
|
|||
"display" : "MANUFACTURE",
|
||||
"code" : "C43360",
|
||||
"system" : "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -79,7 +79,7 @@ v: {
|
|||
"display" : "Manufactures human prescription drug products",
|
||||
"code" : "C106643",
|
||||
"system" : "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -16,14 +16,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Wrong Display Name 'General Practice' for http://nucc.org/provider-taxonomy#208D00000X. Valid display is 'General Practice Physician' (for the language(s) '--')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
@ -56,7 +56,7 @@ v: {
|
|||
"code" : "208D00000X",
|
||||
"system" : "http://nucc.org/provider-taxonomy",
|
||||
"version" : "22.1",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -15,7 +15,7 @@ v: {
|
|||
"code" : "20049000",
|
||||
"system" : "http://standardterms.edqm.eu",
|
||||
"version" : "5 March 2019",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://terminology.gene.com/fhir/usix/uapi/CodeSystem/uapi-product-name' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://terminology.gene.com/fhir/usix/uapi/CodeSystem/uapi-product-name",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://terminology.gene.com/fhir/usix/uapi/CodeSystem/uapi-sr-type' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://terminology.gene.com/fhir/usix/uapi/CodeSystem/uapi-sr-type",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "The Coding references a value set, not a code system ('http://terminology.hl7.org/ValueSet/v3-ServiceDeliveryLocationRoleType')",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "invalid",
|
||||
|
|
|
@ -14,7 +14,7 @@ v: {
|
|||
"code" : "NC_000019.8:g.1171707G>A",
|
||||
"system" : "http://varnomen.hgvs.org",
|
||||
"version" : "2.0",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -37,7 +37,7 @@ v: {
|
|||
"code" : "NC_000019.8:g.1171707G>A",
|
||||
"system" : "http://varnomen.hgvs.org",
|
||||
"version" : "2.0",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -60,7 +60,7 @@ v: {
|
|||
"code" : "NC_000019.8:g.1171707G>A",
|
||||
"system" : "http://varnomen.hgvs.org",
|
||||
"version" : "2.0",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -83,14 +83,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Unknown code 'NC_000019.8:g.1171707G>AXXX' in the CodeSystem 'http://varnomen.hgvs.org' version '2.0'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -123,14 +123,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "The provided code 'http://varnomen.hgvs.org#NC_000019.8:g.1171707G>AXXX' was not found in the value set 'http://hl7.org/fhir/us/mcode/ValueSet/mcode-hgvs-vs--0|1.0.0'; Unknown code 'NC_000019.8:g.1171707G>AXXX' in the CodeSystem 'http://varnomen.hgvs.org' version '2.0'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
@ -147,7 +147,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
|
|
@ -15,7 +15,7 @@ v: {
|
|||
"code" : "210965D",
|
||||
"system" : "http://www.ada.org/snodent",
|
||||
"version" : "2.1.0",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -14,7 +14,7 @@ v: {
|
|||
"code" : "99234",
|
||||
"system" : "http://www.ama-assn.org/go/cpt",
|
||||
"version" : "2023",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://www.genenames.org/geneId' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://www.genenames.org/geneId",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'http://www.ncbi.nlm.nih.gov/clinvar' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://www.ncbi.nlm.nih.gov/clinvar",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -54,14 +54,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'http://www.ncbi.nlm.nih.gov/clinvar' could not be found, so the code cannot be validated; Unable to check whether the code is in the value set 'http://hl7.org/fhir/us/mcode/ValueSet/mcode-clinvar-vs--0|1.0.0' because the code system http://www.ncbi.nlm.nih.gov/clinvar| was not found",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "http://www.ncbi.nlm.nih.gov/clinvar",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
@ -78,7 +78,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'https://fhir.hl7.org.uk/CodeSystem/UKCore-SDSJobRoleName' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "https://fhir.hl7.org.uk/CodeSystem/UKCore-SDSJobRoleName",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'https://hl7.fi/fhir/finnish-base-profiles/CodeSystem/SecurityLabelCS' could not be found, so the code cannot be validated; The provided code 'https://hl7.fi/fhir/finnish-base-profiles/CodeSystem/SecurityLabelCS#TURVAKIELTO' was not found in the value set 'http://hl7.org/fhir/ValueSet/security-labels|4.0.1'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "https://hl7.fi/fhir/finnish-base-profiles/CodeSystem/SecurityLabelCS",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "information",
|
||||
"code" : "business-rule",
|
||||
|
@ -36,7 +36,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
@ -53,7 +53,7 @@ v: {
|
|||
{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
|
|
@ -15,14 +15,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'https://mednet.swiss/fhir/CodeSystem/mni-obs-bloodGroup' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "https://mednet.swiss/fhir/CodeSystem/mni-obs-bloodGroup",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "warning",
|
||||
"error" : "A definition for CodeSystem 'https://mednet.swiss/fhir/productNumber' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "https://mednet.swiss/fhir/productNumber",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "warning",
|
||||
"code" : "not-found",
|
||||
|
@ -54,14 +54,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "A definition for CodeSystem 'https://mednet.swiss/fhir/productNumber' could not be found, so the code cannot be validated",
|
||||
"class" : "CODESYSTEM_UNSUPPORTED",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "https://mednet.swiss/fhir/productNumber",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "not-found",
|
||||
|
|
|
@ -15,7 +15,7 @@ v: {
|
|||
"code" : "1258-3",
|
||||
"system" : "https://www.cdc.gov/nhsn/cdaportal/terminology/codesystem/hsloc.html",
|
||||
"version" : "2022",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -14,7 +14,7 @@ v: {
|
|||
"code" : "COVAST",
|
||||
"system" : "https://www.humanservices.gov.au/organisations/health-professionals/enablers/air-vaccine-code-formats",
|
||||
"version" : "20210222",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
@ -37,7 +37,7 @@ v: {
|
|||
"code" : "COVAST",
|
||||
"system" : "https://www.humanservices.gov.au/organisations/health-professionals/enablers/air-vaccine-code-formats",
|
||||
"version" : "20210222",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome"
|
||||
|
|
|
@ -14,14 +14,14 @@ v: {
|
|||
"severity" : "error",
|
||||
"error" : "Unknown code 'E10.3211+TT1.2' in the CodeSystem 'http://hl7.org/fhir/sid/icd-10-cm' version '2024'",
|
||||
"class" : "UNKNOWN",
|
||||
"server" : "http://local.fhir.org/r4",
|
||||
"server" : "http://tx-dev.fhir.org/r4",
|
||||
"unknown-systems" : "",
|
||||
"issues" : {
|
||||
"resourceType" : "OperationOutcome",
|
||||
"issue" : [{
|
||||
"extension" : [{
|
||||
"url" : "http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-server",
|
||||
"valueUrl" : "http://local.fhir.org/r4"
|
||||
"valueUrl" : "http://tx-dev.fhir.org/r4"
|
||||
}],
|
||||
"severity" : "error",
|
||||
"code" : "code-invalid",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue