fixed missed replaces
This commit is contained in:
parent
306efd21ac
commit
277d22fad6
|
@ -143,9 +143,10 @@ public interface IResourceValidator {
|
||||||
|
|
||||||
public boolean isShowMessagesFromReferences();
|
public boolean isShowMessagesFromReferences();
|
||||||
public void setShowMessagesFromReferences(boolean value);
|
public void setShowMessagesFromReferences(boolean value);
|
||||||
|
|
||||||
public String getValidationLanguage();
|
//FIXME: don't need that, gets never used?
|
||||||
public void setValidationLanguage(String value);
|
// public String getValidationLanguage();
|
||||||
|
// public void setValidationLanguage(String value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* It's common to see references such as Patient/234234 - these usually mean a reference to a Patient resource.
|
* It's common to see references such as Patient/234234 - these usually mean a reference to a Patient resource.
|
||||||
|
|
|
@ -26,7 +26,6 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.text.MessageFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -34,7 +33,6 @@ import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -199,17 +197,17 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FunctionDetails resolveFunction(String functionName) {
|
public FunctionDetails resolveFunction(String functionName) {
|
||||||
throw new Error(formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESRESOLVEFUNCTION_, functionName));
|
throw new Error(context.formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESRESOLVEFUNCTION_, functionName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TypeDetails checkFunction(Object appContext, String functionName, List<TypeDetails> parameters) throws PathEngineException {
|
public TypeDetails checkFunction(Object appContext, String functionName, List<TypeDetails> parameters) throws PathEngineException {
|
||||||
throw new Error(formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESCHECKFUNCTION));
|
throw new Error(context.formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESCHECKFUNCTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Base> executeFunction(Object appContext, String functionName, List<List<Base>> parameters) {
|
public List<Base> executeFunction(Object appContext, String functionName, List<List<Base>> parameters) {
|
||||||
throw new Error(formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESEXECUTEFUNCTION));
|
throw new Error(context.formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESEXECUTEFUNCTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -242,7 +240,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
throw new FHIRException(e);
|
throw new FHIRException(e);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw new Error(formatMessage(I18nConstants.NOT_DONE_YET__RESOLVE__LOCALLY_2, url));
|
throw new Error(context.formatMessage(I18nConstants.NOT_DONE_YET__RESOLVE__LOCALLY_2, url));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +269,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
ValidatorHostContext ctxt = (ValidatorHostContext) appContext;
|
ValidatorHostContext ctxt = (ValidatorHostContext) appContext;
|
||||||
StructureDefinition sd = context.fetchResource(StructureDefinition.class, url);
|
StructureDefinition sd = context.fetchResource(StructureDefinition.class, url);
|
||||||
if (sd == null) {
|
if (sd == null) {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNABLE_TO_RESOLVE_, url));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_, url));
|
||||||
}
|
}
|
||||||
InstanceValidator self = InstanceValidator.this;
|
InstanceValidator self = InstanceValidator.this;
|
||||||
List<ValidationMessage> valerrors = new ArrayList<ValidationMessage>();
|
List<ValidationMessage> valerrors = new ArrayList<ValidationMessage>();
|
||||||
|
@ -287,10 +285,10 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (e.isResource()) {
|
if (e.isResource()) {
|
||||||
self.validateResource(new ValidatorHostContext(ctxt.getAppContext(), e), valerrors, e, e, sd, IdStatus.OPTIONAL, new NodeStack(e));
|
self.validateResource(new ValidatorHostContext(ctxt.getAppContext(), e), valerrors, e, e, sd, IdStatus.OPTIONAL, new NodeStack(e));
|
||||||
} else {
|
} else {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.NOT_SUPPORTED_YET));
|
throw new FHIRException(context.formatMessage(I18nConstants.NOT_SUPPORTED_YET));
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
throw new NotImplementedException(formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESCONFORMSTOPROFILE_WHEN_ITEM_IS_NOT_AN_ELEMENT));
|
throw new NotImplementedException(context.formatMessage(I18nConstants.NOT_DONE_YET_VALIDATORHOSTSERVICESCONFORMSTOPROFILE_WHEN_ITEM_IS_NOT_AN_ELEMENT));
|
||||||
boolean ok = true;
|
boolean ok = true;
|
||||||
List<ValidationMessage> record = new ArrayList<>();
|
List<ValidationMessage> record = new ArrayList<>();
|
||||||
for (ValidationMessage v : valerrors) {
|
for (ValidationMessage v : valerrors) {
|
||||||
|
@ -314,7 +312,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (r instanceof ValueSet)
|
if (r instanceof ValueSet)
|
||||||
return (ValueSet) r;
|
return (ValueSet) r;
|
||||||
else
|
else
|
||||||
throw new FHIRException(formatMessage(I18nConstants.REFERENCE__REFERS_TO_A__NOT_A_VALUESET, url, r.fhirType()));
|
throw new FHIRException(context.formatMessage(I18nConstants.REFERENCE__REFERS_TO_A__NOT_A_VALUESET, url, r.fhirType()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -377,7 +375,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
super(theContext);
|
super(theContext);
|
||||||
this.context = theContext;
|
this.context = theContext;
|
||||||
this.externalHostServices = hostServices;
|
this.externalHostServices = hostServices;
|
||||||
this.profileUtilities = new ProfileUtilities(theContext, null, null, getI18Nmessages());
|
this.profileUtilities = new ProfileUtilities(theContext, null, null);
|
||||||
fpe = new FHIRPathEngine(context);
|
fpe = new FHIRPathEngine(context);
|
||||||
validatorServices = new ValidatorHostServices();
|
validatorServices = new ValidatorHostServices();
|
||||||
fpe.setHostServices(validatorServices);
|
fpe.setHostServices(validatorServices);
|
||||||
|
@ -517,7 +515,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
private StructureDefinition getSpecifiedProfile(String profile) {
|
private StructureDefinition getSpecifiedProfile(String profile) {
|
||||||
StructureDefinition sd = context.fetchResource(StructureDefinition.class, profile);
|
StructureDefinition sd = context.fetchResource(StructureDefinition.class, profile);
|
||||||
if (sd == null) {
|
if (sd == null) {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNABLE_TO_LOCATE_THE_PROFILE__IN_ORDER_TO_VALIDATE_AGAINST_IT, profile));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_LOCATE_THE_PROFILE__IN_ORDER_TO_VALIDATE_AGAINST_IT, profile));
|
||||||
}
|
}
|
||||||
return sd;
|
return sd;
|
||||||
}
|
}
|
||||||
|
@ -1570,7 +1568,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
ok = true;
|
ok = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
throw new Error(formatMessage(I18nConstants.UNRECOGNISED_EXTENSION_CONTEXT_, ctxt.getTypeElement().asStringValue()));
|
throw new Error(context.formatMessage(I18nConstants.UNRECOGNISED_EXTENSION_CONTEXT_, ctxt.getTypeElement().asStringValue()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
|
@ -2097,7 +2095,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (we == null) {
|
if (we == null) {
|
||||||
if (fetcher == null) {
|
if (fetcher == null) {
|
||||||
if (!refType.equals("contained"))
|
if (!refType.equals("contained"))
|
||||||
throw new FHIRException(formatMessage(I18nConstants.RESOURCE_RESOLUTION_SERVICES_NOT_PROVIDED));
|
throw new FHIRException(context.formatMessage(I18nConstants.RESOURCE_RESOLUTION_SERVICES_NOT_PROVIDED));
|
||||||
} else {
|
} else {
|
||||||
Element ext = null;
|
Element ext = null;
|
||||||
if (fetchCache.containsKey(ref)) {
|
if (fetchCache.containsKey(ref)) {
|
||||||
|
@ -2193,7 +2191,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
rule(errors, IssueType.STRUCTURE, element.line(), element.col(), path, areAllBaseProfiles(profiles), I18nConstants.REFERENCE_REF_CANTMATCHCHOICE, ref, asList(type.getTargetProfile()));
|
rule(errors, IssueType.STRUCTURE, element.line(), element.col(), path, areAllBaseProfiles(profiles), I18nConstants.REFERENCE_REF_CANTMATCHCHOICE, ref, asList(type.getTargetProfile()));
|
||||||
for (StructureDefinition sd : badProfiles.keySet()) {
|
for (StructureDefinition sd : badProfiles.keySet()) {
|
||||||
slicingHint(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false,
|
slicingHint(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false,
|
||||||
formatMessage(I18nConstants.DETAILS_FOR__MATCHING_AGAINST_PROFILE_, ref, sd.getUrl()), errorSummaryForSlicingAsHtml(badProfiles.get(sd)));
|
context.formatMessage(I18nConstants.DETAILS_FOR__MATCHING_AGAINST_PROFILE_, ref, sd.getUrl()), errorSummaryForSlicingAsHtml(badProfiles.get(sd)));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rule(errors, IssueType.STRUCTURE, element.line(), element.col(), path, profiles.size() == 1, I18nConstants.REFERENCE_REF_CANTMATCHCHOICE, ref, asList(type.getTargetProfile()));
|
rule(errors, IssueType.STRUCTURE, element.line(), element.col(), path, profiles.size() == 1, I18nConstants.REFERENCE_REF_CANTMATCHCHOICE, ref, asList(type.getTargetProfile()));
|
||||||
|
@ -2209,7 +2207,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (!isShowMessagesFromReferences()) {
|
if (!isShowMessagesFromReferences()) {
|
||||||
warning(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false, I18nConstants.REFERENCE_REF_MULTIPLEMATCHES, ref, asListByUrl(goodProfiles.keySet()));
|
warning(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false, I18nConstants.REFERENCE_REF_MULTIPLEMATCHES, ref, asListByUrl(goodProfiles.keySet()));
|
||||||
for (StructureDefinition sd : badProfiles.keySet()) {
|
for (StructureDefinition sd : badProfiles.keySet()) {
|
||||||
slicingHint(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false, formatMessage(I18nConstants.DETAILS_FOR__MATCHING_AGAINST_PROFILE_, ref, sd.getUrl()), errorSummaryForSlicingAsHtml(badProfiles.get(sd)));
|
slicingHint(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false, context.formatMessage(I18nConstants.DETAILS_FOR__MATCHING_AGAINST_PROFILE_, ref, sd.getUrl()), errorSummaryForSlicingAsHtml(badProfiles.get(sd)));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
warning(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false, I18nConstants.REFERENCE_REF_MULTIPLEMATCHES, ref, asListByUrl(goodProfiles.keySet()));
|
warning(errors, IssueType.STRUCTURE, element.line(), element.col(), path, false, I18nConstants.REFERENCE_REF_MULTIPLEMATCHES, ref, asListByUrl(goodProfiles.keySet()));
|
||||||
|
@ -2483,7 +2481,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
String id = p.hasExtension(ToolingExtensions.EXT_PROFILE_ELEMENT) ? p.getExtensionString(ToolingExtensions.EXT_PROFILE_ELEMENT) : null;
|
String id = p.hasExtension(ToolingExtensions.EXT_PROFILE_ELEMENT) ? p.getExtensionString(ToolingExtensions.EXT_PROFILE_ELEMENT) : null;
|
||||||
StructureDefinition sd = context.fetchResource(StructureDefinition.class, p.getValue());
|
StructureDefinition sd = context.fetchResource(StructureDefinition.class, p.getValue());
|
||||||
if (sd == null)
|
if (sd == null)
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNABLE_TO_RESOLVE_PROFILE_, p));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_PROFILE_, p));
|
||||||
profile = sd;
|
profile = sd;
|
||||||
if (id == null)
|
if (id == null)
|
||||||
element = sd.getSnapshot().getElementFirstRep();
|
element = sd.getSnapshot().getElementFirstRep();
|
||||||
|
@ -2494,7 +2492,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
element = t;
|
element = t;
|
||||||
}
|
}
|
||||||
if (element == null)
|
if (element == null)
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNABLE_TO_RESOLVE_ELEMENT__IN_PROFILE_, id, p));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_ELEMENT__IN_PROFILE_, id, p));
|
||||||
}
|
}
|
||||||
expr = fpe.parse(fixExpr(discriminator));
|
expr = fpe.parse(fixExpr(discriminator));
|
||||||
t2 = System.nanoTime();
|
t2 = System.nanoTime();
|
||||||
|
@ -2645,20 +2643,20 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (focus.fhirType().equals("Reference") && d.equals("reference")) {
|
if (focus.fhirType().equals("Reference") && d.equals("reference")) {
|
||||||
String url = focus.getChildValue("reference");
|
String url = focus.getChildValue("reference");
|
||||||
if (Utilities.noString(url))
|
if (Utilities.noString(url))
|
||||||
throw new FHIRException(formatMessage(I18nConstants.NO_REFERENCE_RESOLVING_DISCRIMINATOR__FROM_, discriminator, element.getProperty().getName()));
|
throw new FHIRException(context.formatMessage(I18nConstants.NO_REFERENCE_RESOLVING_DISCRIMINATOR__FROM_, discriminator, element.getProperty().getName()));
|
||||||
// Note that we use the passed in stack here. This might be a problem if the discriminator is deep enough?
|
// Note that we use the passed in stack here. This might be a problem if the discriminator is deep enough?
|
||||||
Element target = resolve(appContext, url, stack, errors, p);
|
Element target = resolve(appContext, url, stack, errors, p);
|
||||||
if (target == null)
|
if (target == null)
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNABLE_TO_FIND_RESOURCE__AT__RESOLVING_DISCRIMINATOR__FROM_, url, d, discriminator, element.getProperty().getName()));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_FIND_RESOURCE__AT__RESOLVING_DISCRIMINATOR__FROM_, url, d, discriminator, element.getProperty().getName()));
|
||||||
focus = target;
|
focus = target;
|
||||||
} else if (d.equals("value") && focus.isPrimitive()) {
|
} else if (d.equals("value") && focus.isPrimitive()) {
|
||||||
return focus;
|
return focus;
|
||||||
} else {
|
} else {
|
||||||
List<Element> children = focus.getChildren(d);
|
List<Element> children = focus.getChildren(d);
|
||||||
if (children.isEmpty())
|
if (children.isEmpty())
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNABLE_TO_FIND__RESOLVING_DISCRIMINATOR__FROM_, d, discriminator, element.getProperty().getName()));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_FIND__RESOLVING_DISCRIMINATOR__FROM_, d, discriminator, element.getProperty().getName()));
|
||||||
if (children.size() > 1)
|
if (children.size() > 1)
|
||||||
throw new FHIRException(formatMessage(I18nConstants.FOUND__ITEMS_FOR__RESOLVING_DISCRIMINATOR__FROM_, Integer.toString(children.size()), d, discriminator, element.getProperty().getName()));
|
throw new FHIRException(context.formatMessage(I18nConstants.FOUND__ITEMS_FOR__RESOLVING_DISCRIMINATOR__FROM_, Integer.toString(children.size()), d, discriminator, element.getProperty().getName()));
|
||||||
focus = children.get(0);
|
focus = children.get(0);
|
||||||
p = p + "." + d;
|
p = p + "." + d;
|
||||||
}
|
}
|
||||||
|
@ -3083,23 +3081,23 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
discriminator = discriminator.substring(0, discriminator.indexOf('['));
|
discriminator = discriminator.substring(0, discriminator.indexOf('['));
|
||||||
type = criteriaElement.getType().get(0).getWorkingCode();
|
type = criteriaElement.getType().get(0).getWorkingCode();
|
||||||
} else if (criteriaElement.getType().size() > 1) {
|
} else if (criteriaElement.getType().size() > 1) {
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_MULTIPLE_TYPES_, discriminator, ed.getId(), profile.getUrl(), criteriaElement.typeSummary()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_MULTIPLE_TYPES_, discriminator, ed.getId(), profile.getUrl(), criteriaElement.typeSummary()));
|
||||||
} else
|
} else
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_NO_TYPES, discriminator, ed.getId(), profile.getUrl()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_NO_TYPES, discriminator, ed.getId(), profile.getUrl()));
|
||||||
if (discriminator.isEmpty())
|
if (discriminator.isEmpty())
|
||||||
expression.append(" and $this is " + type);
|
expression.append(" and $this is " + type);
|
||||||
else
|
else
|
||||||
expression.append(" and " + discriminator + " is " + type);
|
expression.append(" and " + discriminator + " is " + type);
|
||||||
} else if (s.getType() == DiscriminatorType.PROFILE) {
|
} else if (s.getType() == DiscriminatorType.PROFILE) {
|
||||||
if (criteriaElement.getType().size() == 0) {
|
if (criteriaElement.getType().size() == 0) {
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
||||||
}
|
}
|
||||||
if (criteriaElement.getType().size() != 1) {
|
if (criteriaElement.getType().size() != 1) {
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_ONLY_ONE_TYPE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_ONLY_ONE_TYPE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
||||||
}
|
}
|
||||||
List<CanonicalType> list = discriminator.endsWith(".resolve()") || discriminator.equals("resolve()") ? criteriaElement.getType().get(0).getTargetProfile() : criteriaElement.getType().get(0).getProfile();
|
List<CanonicalType> list = discriminator.endsWith(".resolve()") || discriminator.equals("resolve()") ? criteriaElement.getType().get(0).getTargetProfile() : criteriaElement.getType().get(0).getProfile();
|
||||||
if (list.size() == 0) {
|
if (list.size() == 0) {
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE_WITH_A_PROFILE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE_WITH_A_PROFILE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
||||||
} else if (list.size() > 1) {
|
} else if (list.size() > 1) {
|
||||||
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder(" or ");
|
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder(" or ");
|
||||||
for (CanonicalType c : list) {
|
for (CanonicalType c : list) {
|
||||||
|
@ -3115,7 +3113,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
else if (criteriaElement.hasMax() && criteriaElement.getMax().equals("0"))
|
else if (criteriaElement.hasMax() && criteriaElement.getMax().equals("0"))
|
||||||
expression.append(" and (" + discriminator + ".exists().not())");
|
expression.append(" and (" + discriminator + ".exists().not())");
|
||||||
else
|
else
|
||||||
throw new FHIRException(formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_ELEMENT_EXISTENCE_BUT_SLICE__NEITHER_SETS_MIN1_OR_MAX0, discriminator, ed.getId()));
|
throw new FHIRException(context.formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_ELEMENT_EXISTENCE_BUT_SLICE__NEITHER_SETS_MIN1_OR_MAX0, discriminator, ed.getId()));
|
||||||
} else if (criteriaElement.hasFixed()) {
|
} else if (criteriaElement.hasFixed()) {
|
||||||
buildFixedExpression(ed, expression, discriminator, criteriaElement);
|
buildFixedExpression(ed, expression, discriminator, criteriaElement);
|
||||||
} else if (criteriaElement.hasPattern()) {
|
} else if (criteriaElement.hasPattern()) {
|
||||||
|
@ -3133,15 +3131,15 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
}
|
}
|
||||||
if (!anyFound) {
|
if (!anyFound) {
|
||||||
if (slicer.getSlicing().getDiscriminator().size() > 1)
|
if (slicer.getSlicing().getDiscriminator().size() > 1)
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.COULD_NOT_MATCH_ANY_DISCRIMINATORS__FOR_SLICE__IN_PROFILE___NONE_OF_THE_DISCRIMINATOR__HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS, discriminators, ed.getId(), profile.getUrl(), discriminators));
|
throw new DefinitionException(context.formatMessage(I18nConstants.COULD_NOT_MATCH_ANY_DISCRIMINATORS__FOR_SLICE__IN_PROFILE___NONE_OF_THE_DISCRIMINATOR__HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS, discriminators, ed.getId(), profile.getUrl(), discriminators));
|
||||||
else
|
else
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.COULD_NOT_MATCH_DISCRIMINATOR__FOR_SLICE__IN_PROFILE___THE_DISCRIMINATOR__DOES_NOT_HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS, discriminators, ed.getId(), profile.getUrl(), discriminators));
|
throw new DefinitionException(context.formatMessage(I18nConstants.COULD_NOT_MATCH_DISCRIMINATOR__FOR_SLICE__IN_PROFILE___THE_DISCRIMINATOR__DOES_NOT_HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS, discriminators, ed.getId(), profile.getUrl(), discriminators));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
n = fpe.parse(fixExpr(expression.toString()));
|
n = fpe.parse(fixExpr(expression.toString()));
|
||||||
} catch (FHIRLexerException e) {
|
} catch (FHIRLexerException e) {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.PROBLEM_PROCESSING_EXPRESSION__IN_PROFILE__PATH__, expression, profile.getUrl(), path, e.getMessage()));
|
throw new FHIRException(context.formatMessage(I18nConstants.PROBLEM_PROCESSING_EXPRESSION__IN_PROFILE__PATH__, expression, profile.getUrl(), path, e.getMessage()));
|
||||||
}
|
}
|
||||||
fpeTime = fpeTime + (System.nanoTime() - t);
|
fpeTime = fpeTime + (System.nanoTime() - t);
|
||||||
ed.setUserData("slice.expression.cache", n);
|
ed.setUserData("slice.expression.cache", n);
|
||||||
|
@ -3150,11 +3148,11 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
ValidatorHostContext shc = hostContext.forSlicing();
|
ValidatorHostContext shc = hostContext.forSlicing();
|
||||||
boolean pass = evaluateSlicingExpression(shc, element, path, profile, n);
|
boolean pass = evaluateSlicingExpression(shc, element, path, profile, n);
|
||||||
if (!pass) {
|
if (!pass) {
|
||||||
slicingHint(sliceInfo, IssueType.STRUCTURE, element.line(), element.col(), path, false, (formatMessage(I18nConstants.DOES_NOT_MATCH_SLICE_, ed.getSliceName())), "discriminator = " + Utilities.escapeXml(n.toString()));
|
slicingHint(sliceInfo, IssueType.STRUCTURE, element.line(), element.col(), path, false, (context.formatMessage(I18nConstants.DOES_NOT_MATCH_SLICE_, ed.getSliceName())), "discriminator = " + Utilities.escapeXml(n.toString()));
|
||||||
for (String url : shc.getSliceRecords().keySet()) {
|
for (String url : shc.getSliceRecords().keySet()) {
|
||||||
slicingHint(sliceInfo, IssueType.STRUCTURE, element.line(), element.col(), path, false,
|
slicingHint(sliceInfo, IssueType.STRUCTURE, element.line(), element.col(), path, false,
|
||||||
formatMessage(I18nConstants.DETAILS_FOR__MATCHING_AGAINST_PROFILE_, stack.getLiteralPath(), url),
|
context.formatMessage(I18nConstants.DETAILS_FOR__MATCHING_AGAINST_PROFILE_, stack.getLiteralPath(), url),
|
||||||
formatMessage(I18nConstants.PROFILE__DOES_NOT_MATCH_FOR__BECAUSE_OF_THE_FOLLOWING_PROFILE_ISSUES__,
|
context.formatMessage(I18nConstants.PROFILE__DOES_NOT_MATCH_FOR__BECAUSE_OF_THE_FOLLOWING_PROFILE_ISSUES__,
|
||||||
url,
|
url,
|
||||||
stack.getLiteralPath(), errorSummaryForSlicingAsHtml(shc.getSliceRecords().get(url))));
|
stack.getLiteralPath(), errorSummaryForSlicingAsHtml(shc.getSliceRecords().get(url))));
|
||||||
}
|
}
|
||||||
|
@ -3172,7 +3170,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
msg = fpe.forLog();
|
msg = fpe.forLog();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
throw new FHIRException(formatMessage(I18nConstants.PROBLEM_EVALUATING_SLICING_EXPRESSION_FOR_ELEMENT_IN_PROFILE__PATH__FHIRPATH___, profile.getUrl(), path, n, ex.getMessage()));
|
throw new FHIRException(context.formatMessage(I18nConstants.PROBLEM_EVALUATING_SLICING_EXPRESSION_FOR_ELEMENT_IN_PROFILE__PATH__FHIRPATH___, profile.getUrl(), path, n, ex.getMessage()));
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
@ -3192,14 +3190,14 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
expression.append(" and ");
|
expression.append(" and ");
|
||||||
buildIdentifierExpression(ed, expression, discriminator, ii);
|
buildIdentifierExpression(ed, expression, discriminator, ii);
|
||||||
} else {
|
} else {
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_FIXED_PATTERN_TYPE_FOR_DISCRIMINATOR_FOR_SLICE__, discriminator, ed.getId(), pattern.getClass().getName()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_FIXED_PATTERN_TYPE_FOR_DISCRIMINATOR_FOR_SLICE__, discriminator, ed.getId(), pattern.getClass().getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildIdentifierExpression(ElementDefinition ed, StringBuilder expression, String discriminator, Identifier ii)
|
private void buildIdentifierExpression(ElementDefinition ed, StringBuilder expression, String discriminator, Identifier ii)
|
||||||
throws DefinitionException {
|
throws DefinitionException {
|
||||||
if (ii.hasExtension())
|
if (ii.hasExtension())
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_IDENTIFIER_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_IDENTIFIER_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
expression.append(discriminator + ".where(");
|
expression.append(discriminator + ".where(");
|
||||||
if (ii.hasSystem()) {
|
if (ii.hasSystem()) {
|
||||||
|
@ -3233,15 +3231,15 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
private void buildCodeableConceptExpression(ElementDefinition ed, StringBuilder expression, String discriminator, CodeableConcept cc)
|
private void buildCodeableConceptExpression(ElementDefinition ed, StringBuilder expression, String discriminator, CodeableConcept cc)
|
||||||
throws DefinitionException {
|
throws DefinitionException {
|
||||||
if (cc.hasText())
|
if (cc.hasText())
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__USING_TEXT__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__USING_TEXT__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
||||||
if (!cc.hasCoding())
|
if (!cc.hasCoding())
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__MUST_HAVE_AT_LEAST_ONE_CODING__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__MUST_HAVE_AT_LEAST_ONE_CODING__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
||||||
if (cc.hasExtension())
|
if (cc.hasExtension())
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
||||||
boolean firstCoding = true;
|
boolean firstCoding = true;
|
||||||
for (Coding c : cc.getCoding()) {
|
for (Coding c : cc.getCoding()) {
|
||||||
if (c.hasExtension())
|
if (c.hasExtension())
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
||||||
if (firstCoding) firstCoding = false;
|
if (firstCoding) firstCoding = false;
|
||||||
else expression.append(" and ");
|
else expression.append(" and ");
|
||||||
expression.append(discriminator + ".coding.where(");
|
expression.append(discriminator + ".coding.where(");
|
||||||
|
@ -3272,7 +3270,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
private void buildCodingExpression(ElementDefinition ed, StringBuilder expression, String discriminator, Coding c)
|
private void buildCodingExpression(ElementDefinition ed, StringBuilder expression, String discriminator, Coding c)
|
||||||
throws DefinitionException {
|
throws DefinitionException {
|
||||||
if (c.hasExtension())
|
if (c.hasExtension())
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_CODEABLECONCEPT_PATTERN__EXTENSIONS_ARE_NOT_ALLOWED__FOR_DISCRIMINATOR_FOR_SLICE_, discriminator, ed.getId()));
|
||||||
expression.append(discriminator + ".where(");
|
expression.append(discriminator + ".where(");
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
if (c.hasSystem()) {
|
if (c.hasSystem()) {
|
||||||
|
@ -3328,7 +3326,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
} else if (fixed instanceof BooleanType) {
|
} else if (fixed instanceof BooleanType) {
|
||||||
expression.append(((BooleanType) fixed).asStringValue());
|
expression.append(((BooleanType) fixed).asStringValue());
|
||||||
} else
|
} else
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNSUPPORTED_FIXED_VALUE_TYPE_FOR_DISCRIMINATOR_FOR_SLICE__, discriminator, ed.getId(), fixed.getClass().getName()));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNSUPPORTED_FIXED_VALUE_TYPE_FOR_DISCRIMINATOR_FOR_SLICE__, discriminator, ed.getId(), fixed.getClass().getName()));
|
||||||
expression.append(" in " + discriminator + ")");
|
expression.append(" in " + discriminator + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3690,7 +3688,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
byte[] json = bs.toByteArray();
|
byte[] json = bs.toByteArray();
|
||||||
switch (v) {
|
switch (v) {
|
||||||
case DSTU1:
|
case DSTU1:
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNSUPPORTED_VERSION_R1));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNSUPPORTED_VERSION_R1));
|
||||||
case DSTU2:
|
case DSTU2:
|
||||||
org.hl7.fhir.dstu2.model.Resource r2 = new org.hl7.fhir.dstu2.formats.JsonParser().parse(json);
|
org.hl7.fhir.dstu2.model.Resource r2 = new org.hl7.fhir.dstu2.formats.JsonParser().parse(json);
|
||||||
Resource r5 = VersionConvertor_10_50.convertResource(r2);
|
Resource r5 = VersionConvertor_10_50.convertResource(r2);
|
||||||
|
@ -4632,7 +4630,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
else
|
else
|
||||||
dt = this.context.fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/" + actualType);
|
dt = this.context.fetchResource(StructureDefinition.class, "http://hl7.org/fhir/StructureDefinition/" + actualType);
|
||||||
if (dt == null)
|
if (dt == null)
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNABLE_TO_RESOLVE_ACTUAL_TYPE_, actualType));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_ACTUAL_TYPE_, actualType));
|
||||||
trackUsage(dt, hostContext, element);
|
trackUsage(dt, hostContext, element);
|
||||||
|
|
||||||
childDefinitions = profileUtilities.getChildMap(dt, dt.getSnapshot().getElement().get(0));
|
childDefinitions = profileUtilities.getChildMap(dt, dt.getSnapshot().getElement().get(0));
|
||||||
|
@ -4990,7 +4988,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
String errorContext = "profile " + profile.getUrl();
|
String errorContext = "profile " + profile.getUrl();
|
||||||
if (!resource.getChildValue("id").isEmpty())
|
if (!resource.getChildValue("id").isEmpty())
|
||||||
errorContext += "; instance " + resource.getChildValue("id");
|
errorContext += "; instance " + resource.getChildValue("id");
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.SLICE_ENCOUNTERED_MIDWAY_THROUGH_SET_PATH___ID___, slicer.getPath(), slicer.getId(), errorContext));
|
throw new DefinitionException(context.formatMessage(I18nConstants.SLICE_ENCOUNTERED_MIDWAY_THROUGH_SET_PATH___ID___, slicer.getPath(), slicer.getId(), errorContext));
|
||||||
}
|
}
|
||||||
slicer = ed;
|
slicer = ed;
|
||||||
process = false;
|
process = false;
|
||||||
|
@ -5016,9 +5014,9 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (ei.definition.getSlicing().getRules().equals(ElementDefinition.SlicingRules.OPEN) ||
|
if (ei.definition.getSlicing().getRules().equals(ElementDefinition.SlicingRules.OPEN) ||
|
||||||
ei.definition.getSlicing().getRules().equals(ElementDefinition.SlicingRules.OPENATEND) && true /* TODO: replace "true" with condition to check that this element is at "end" */) {
|
ei.definition.getSlicing().getRules().equals(ElementDefinition.SlicingRules.OPENATEND) && true /* TODO: replace "true" with condition to check that this element is at "end" */) {
|
||||||
slicingHint(errors, IssueType.INFORMATIONAL, ei.line(), ei.col(), ei.getPath(), false,
|
slicingHint(errors, IssueType.INFORMATIONAL, ei.line(), ei.col(), ei.getPath(), false,
|
||||||
formatMessage(I18nConstants.THIS_ELEMENT_DOES_NOT_MATCH_ANY_KNOWN_SLICE_,
|
context.formatMessage(I18nConstants.THIS_ELEMENT_DOES_NOT_MATCH_ANY_KNOWN_SLICE_,
|
||||||
profile == null ? "" : " defined in the profile " + profile.getUrl()),
|
profile == null ? "" : " defined in the profile " + profile.getUrl()),
|
||||||
formatMessage(I18nConstants.THIS_ELEMENT_DOES_NOT_MATCH_ANY_KNOWN_SLICE_, profile == null ? "" : I18nConstants.DEFINED_IN_THE_PROFILE + profile.getUrl()) + errorSummaryForSlicingAsHtml(ei.sliceInfo));
|
context.formatMessage(I18nConstants.THIS_ELEMENT_DOES_NOT_MATCH_ANY_KNOWN_SLICE_, profile == null ? "" : I18nConstants.DEFINED_IN_THE_PROFILE + profile.getUrl()) + errorSummaryForSlicingAsHtml(ei.sliceInfo));
|
||||||
} else if (ei.definition.getSlicing().getRules().equals(ElementDefinition.SlicingRules.CLOSED)) {
|
} else if (ei.definition.getSlicing().getRules().equals(ElementDefinition.SlicingRules.CLOSED)) {
|
||||||
rule(errors, IssueType.INVALID, ei.line(), ei.col(), ei.getPath(), false, I18nConstants.VALIDATION_VAL_PROFILE_NOTSLICE, (profile == null ? "" : " defined in the profile " + profile.getUrl()), errorSummaryForSlicing(ei.sliceInfo));
|
rule(errors, IssueType.INVALID, ei.line(), ei.col(), ei.getPath(), false, I18nConstants.VALIDATION_VAL_PROFILE_NOTSLICE, (profile == null ? "" : " defined in the profile " + profile.getUrl()), errorSummaryForSlicing(ei.sliceInfo));
|
||||||
}
|
}
|
||||||
|
@ -5116,7 +5114,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
if (tail.equals(t.getId()))
|
if (tail.equals(t.getId()))
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
throw new DefinitionException(formatMessage(I18nConstants.UNABLE_TO_FIND_ELEMENT_WITH_ID_, tail));
|
throw new DefinitionException(context.formatMessage(I18nConstants.UNABLE_TO_FIND_ELEMENT_WITH_ID_, tail));
|
||||||
}
|
}
|
||||||
|
|
||||||
private IdStatus idStatusForEntry(Element ep, ElementInfo ei) {
|
private IdStatus idStatusForEntry(Element ep, ElementInfo ei) {
|
||||||
|
@ -5203,7 +5201,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
try {
|
try {
|
||||||
n = fpe.parse(fixExpr(inv.getExpression()));
|
n = fpe.parse(fixExpr(inv.getExpression()));
|
||||||
} catch (FHIRLexerException e) {
|
} catch (FHIRLexerException e) {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.PROBLEM_PROCESSING_EXPRESSION__IN_PROFILE__PATH__, inv.getExpression(), profile.getUrl(), path, e.getMessage()));
|
throw new FHIRException(context.formatMessage(I18nConstants.PROBLEM_PROCESSING_EXPRESSION__IN_PROFILE__PATH__, inv.getExpression(), profile.getUrl(), path, e.getMessage()));
|
||||||
}
|
}
|
||||||
fpeTime = fpeTime + (System.nanoTime() - t);
|
fpeTime = fpeTime + (System.nanoTime() - t);
|
||||||
inv.setUserData("validator.expression.cache", n);
|
inv.setUserData("validator.expression.cache", n);
|
||||||
|
@ -5342,9 +5340,9 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
||||||
checkFixedValue(msgs, "{virtual}", value, criteria.getFixed(), profile.getUrl(), "value", null);
|
checkFixedValue(msgs, "{virtual}", value, criteria.getFixed(), profile.getUrl(), "value", null);
|
||||||
return msgs.size() == 0;
|
return msgs.size() == 0;
|
||||||
} else if (criteria.hasBinding() && criteria.getBinding().getStrength() == BindingStrength.REQUIRED && criteria.getBinding().hasValueSet()) {
|
} else if (criteria.hasBinding() && criteria.getBinding().getStrength() == BindingStrength.REQUIRED && criteria.getBinding().hasValueSet()) {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNABLE_TO_RESOLVE_SLICE_MATCHING__SLICE_MATCHING_BY_VALUE_SET_NOT_DONE));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_SLICE_MATCHING__SLICE_MATCHING_BY_VALUE_SET_NOT_DONE));
|
||||||
} else {
|
} else {
|
||||||
throw new FHIRException(formatMessage(I18nConstants.UNABLE_TO_RESOLVE_SLICE_MATCHING__NO_FIXED_VALUE_OR_REQUIRED_VALUE_SET));
|
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_SLICE_MATCHING__NO_FIXED_VALUE_OR_REQUIRED_VALUE_SET));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue