Merge pull request #1572 from hapifhir/2024-03-gg-tx-improvements

2024 03 gg tx improvements
This commit is contained in:
Grahame Grieve 2024-03-11 06:10:45 +11:00 committed by GitHub
commit 27bf474d7e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
152 changed files with 4236 additions and 27950 deletions

View File

@ -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;
}
}

View File

@ -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

View File

@ -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
*

View File

@ -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()) ;

View File

@ -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);

View File

@ -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");

View File

@ -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");
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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();

View File

@ -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());

View File

@ -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

View File

@ -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);
}

View File

@ -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;

View File

@ -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();
}
}

View File

@ -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);

View File

@ -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";
}

View File

@ -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);
}

View File

@ -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}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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<>();
}
}

View File

@ -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;
}
}

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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[] { };
}
}
}

View File

@ -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<>();
}
}

View File

@ -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<>();
}
}

View File

@ -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
}

View File

@ -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"]
}]
}
}
-------------------------------------------------------------------------------------

View File

@ -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

View File

@ -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" : {

View File

@ -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",

View File

@ -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

View File

@ -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"

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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"

View File

@ -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

View File

@ -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"
}
}
-------------------------------------------------------------------------------------

View File

@ -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" : {

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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"

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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"

View File

@ -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"

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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",

View File

@ -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"

View File

@ -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"

View File

@ -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