fixes for plural messages for i18n
This commit is contained in:
parent
cf111ac919
commit
b187d289b6
|
@ -554,6 +554,7 @@ public interface IWorkerContext {
|
|||
void setLocale(Locale locale);
|
||||
|
||||
String formatMessage(String theMessage, Object... theMessageArguments);
|
||||
String formatMessagePL(Integer pl, String theMessage, Object... theMessageArguments);
|
||||
|
||||
void setValidationMessageLanguage(Locale locale);
|
||||
|
||||
|
|
|
@ -386,7 +386,7 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||
}
|
||||
}
|
||||
}
|
||||
return new ValidationResult(IssueSeverity.WARNING, context.formatMessage(I18nConstants.DISPLAY_NAME_FOR__SHOULD_BE_ONE_OF__INSTEAD_OF_, code.getSystem(), code.getCode(), b.toString(), code.getDisplay()), code.getSystem(), cc);
|
||||
return new ValidationResult(IssueSeverity.WARNING, context.formatMessagePL(b.count(), I18nConstants.DISPLAY_NAME_FOR__SHOULD_BE_ONE_OF__INSTEAD_OF_PLURAL, code.getSystem(), code.getCode(), b.toString(), code.getDisplay()), code.getSystem(), cc);
|
||||
}
|
||||
|
||||
private ConceptReferenceComponent findValueSetRef(String system, String code) {
|
||||
|
|
|
@ -577,6 +577,10 @@ public class FHIRPathEngine {
|
|||
return executeType(new ExecutionTypeContext(appContext, resourceType, types, types), types, expr, true);
|
||||
}
|
||||
|
||||
private FHIRException makeExceptionPL(Integer num, ExpressionNode holder, String constName, Object... args) {
|
||||
return makeException(holder, constName, args);
|
||||
}
|
||||
|
||||
private FHIRException makeException(ExpressionNode holder, String constName, Object... args) {
|
||||
String fmt = worker.formatMessage(constName, args);
|
||||
if (location != null) {
|
||||
|
@ -2482,13 +2486,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "+");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "+");
|
||||
}
|
||||
if (!left.get(0).isPrimitive()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "+", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "+");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "+");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !((left.get(0).isDateTime() || "0".equals(left.get(0).primitiveValue()) || left.get(0).hasType("Quantity")) && right.get(0).hasType("Quantity"))) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "+", right.get(0).fhirType());
|
||||
|
@ -2569,13 +2573,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "*");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "*");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !(left.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "*", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "*");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "*");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !(right.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "*", right.get(0).fhirType());
|
||||
|
@ -2608,13 +2612,13 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> opConcatenate(List<Base> left, List<Base> right, ExpressionNode expr) throws PathEngineException {
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "&");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "&");
|
||||
}
|
||||
if (left.size() > 0 && !left.get(0).hasType(FHIR_TYPES_STRING)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "&", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "&");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "&");
|
||||
}
|
||||
if (right.size() > 0 && !right.get(0).hasType(FHIR_TYPES_STRING)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "&", right.get(0).fhirType());
|
||||
|
@ -2741,13 +2745,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "-");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "-");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !left.get(0).hasType("Quantity")) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "-", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "-");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "-");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !((left.get(0).isDateTime() || "0".equals(left.get(0).primitiveValue()) || left.get(0).hasType("Quantity")) && right.get(0).hasType("Quantity"))) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "-", right.get(0).fhirType());
|
||||
|
@ -2780,13 +2784,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "/");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "/");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !(left.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "/", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "/");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "/");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !(right.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "/", right.get(0).fhirType());
|
||||
|
@ -2826,13 +2830,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "div");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "div");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !(left.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "div", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "div");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "div");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !(right.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "div", right.get(0).fhirType());
|
||||
|
@ -2866,13 +2870,13 @@ public class FHIRPathEngine {
|
|||
if (left.size() == 0 || right.size() == 0) {
|
||||
return new ArrayList<Base>();
|
||||
} if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "mod");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "mod");
|
||||
}
|
||||
if (!left.get(0).isPrimitive()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "mod", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "mod");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "mod");
|
||||
}
|
||||
if (!right.get(0).isPrimitive()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "mod", right.get(0).fhirType());
|
||||
|
@ -3607,7 +3611,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcSqrt(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "sqrt", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "sqrt", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3627,7 +3631,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcAbs(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "abs", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "abs", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3650,7 +3654,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcCeiling(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ceiling", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ceiling", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3668,7 +3672,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcFloor(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "floor", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "floor", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3691,7 +3695,7 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (focus.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "exp", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "exp", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3712,7 +3716,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLn(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ln", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ln", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3732,7 +3736,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLog(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "log", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "log", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3760,7 +3764,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcPower(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "power", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "power", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3784,7 +3788,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcTruncate(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "truncate", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "truncate", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3802,7 +3806,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLowBoundary(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "lowBoundary", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "lowBoundary", focus.size());
|
||||
}
|
||||
int precision = 0;
|
||||
if (expr.getParameters().size() > 0) {
|
||||
|
@ -3832,7 +3836,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcHighBoundary(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
}
|
||||
int precision = 0;
|
||||
if (expr.getParameters().size() > 0) {
|
||||
|
@ -3862,7 +3866,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcPrecision(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3880,7 +3884,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcRound(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "round", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "round", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -5790,13 +5794,13 @@ public class FHIRPathEngine {
|
|||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_NO_TYPE, element.getElement().getId());
|
||||
}
|
||||
if (element.getTypes().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES, element.getElement().getId());
|
||||
throw makeExceptionPL(element.getTypes().size(), expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES_PLURAL, element.getElement().getId());
|
||||
}
|
||||
if (!element.getTypes().get(0).hasTarget()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_NOT_REFERENCE, element.getElement().getId(), element.getElement().getType().get(0).getCode()+")");
|
||||
}
|
||||
if (element.getTypes().get(0).getTargetProfile().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET, element.getElement().getId());
|
||||
throw makeExceptionPL(element.getTypes().get(0).getTargetProfile().size(), expr, I18nConstants.FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET_PLURAL, element.getElement().getId());
|
||||
}
|
||||
sd = worker.fetchResource(StructureDefinition.class, element.getTypes().get(0).getTargetProfile().get(0).getValue());
|
||||
if (sd == null) {
|
||||
|
@ -5893,10 +5897,10 @@ public class FHIRPathEngine {
|
|||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_NOTYPE, ed.getElement().getId());
|
||||
}
|
||||
if (ed.getTypes().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES, ed.getElement().getId());
|
||||
throw makeExceptionPL(ed.getTypes().size(), expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES_PLURAL, ed.getElement().getId());
|
||||
}
|
||||
if (ed.getTypes().get(0).getProfile().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES, ed.getElement().getId());
|
||||
throw makeExceptionPL(ed.getTypes().get(0).getProfile().size(), expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES_PLURAL, ed.getElement().getId());
|
||||
}
|
||||
if (ed.getTypes().get(0).hasProfile()) {
|
||||
return worker.fetchResource(StructureDefinition.class, ed.getTypes().get(0).getProfile().get(0).getValue());
|
||||
|
|
|
@ -638,6 +638,7 @@ public interface IWorkerContext {
|
|||
* @return
|
||||
*/
|
||||
String formatMessage(String theMessage, Object... theMessageArguments);
|
||||
String formatMessagePL(Integer pluralNum, String theMessage, Object... theMessageArguments);
|
||||
|
||||
/**
|
||||
* Validation of a code - consult the terminology infrstructure and/or service
|
||||
|
|
|
@ -412,7 +412,7 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||
}
|
||||
}
|
||||
}
|
||||
return new ValidationResult(IssueSeverity.WARNING, context.formatMessage(I18nConstants.DISPLAY_NAME_FOR__SHOULD_BE_ONE_OF__INSTEAD_OF_, code.getSystem(), code.getCode(), b.toString(), code.getDisplay()), code.getSystem(), cc);
|
||||
return new ValidationResult(IssueSeverity.WARNING, context.formatMessagePL(b.count(), I18nConstants.DISPLAY_NAME_FOR__SHOULD_BE_ONE_OF__INSTEAD_OF_PLURAL, code.getSystem(), code.getCode(), b.toString(), code.getDisplay()), code.getSystem(), cc);
|
||||
}
|
||||
|
||||
private ConceptReferenceComponent findValueSetRef(String system, String code) {
|
||||
|
@ -471,7 +471,7 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||
}
|
||||
for (ConceptSetComponent inc : valueset.getCompose().getInclude()) {
|
||||
if (inc.hasValueSet()) {
|
||||
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_SYSTEM__VALUE_SET_HAS_IMPORTS));
|
||||
throw new FHIRException(context.formatMessagePL(inc.getValueSet().size(), I18nConstants.UNABLE_TO_RESOLVE_SYSTEM__VALUE_SET_HAS_IMPORTS));
|
||||
}
|
||||
if (!inc.hasSystem()) {
|
||||
throw new FHIRException(context.formatMessage(I18nConstants.UNABLE_TO_RESOLVE_SYSTEM__VALUE_SET_HAS_INCLUDE_WITH_NO_SYSTEM));
|
||||
|
|
|
@ -579,6 +579,18 @@ public class FHIRPathEngine {
|
|||
return executeType(new ExecutionTypeContext(appContext, resourceType, types, types), types, expr, true);
|
||||
}
|
||||
|
||||
private FHIRException makeExceptionPL(Integer num, ExpressionNode holder, String constName, Object... args) {
|
||||
String fmt = worker.formatMessagePL(num, constName, args);
|
||||
if (location != null) {
|
||||
fmt = fmt + " "+worker.formatMessagePL(num, I18nConstants.FHIRPATH_LOCATION, location);
|
||||
}
|
||||
if (holder != null) {
|
||||
return new PathEngineException(fmt, holder.getStart(), holder.toString());
|
||||
} else {
|
||||
return new PathEngineException(fmt);
|
||||
}
|
||||
}
|
||||
|
||||
private FHIRException makeException(ExpressionNode holder, String constName, Object... args) {
|
||||
String fmt = worker.formatMessage(constName, args);
|
||||
if (location != null) {
|
||||
|
@ -2484,13 +2496,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "+");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "+");
|
||||
}
|
||||
if (!left.get(0).isPrimitive()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "+", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "+");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "+");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !((left.get(0).isDateTime() || "0".equals(left.get(0).primitiveValue()) || left.get(0).hasType("Quantity")) && right.get(0).hasType("Quantity"))) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "+", right.get(0).fhirType());
|
||||
|
@ -2571,13 +2583,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "*");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "*");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !(left.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "*", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "*");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "*");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !(right.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "*", right.get(0).fhirType());
|
||||
|
@ -2610,13 +2622,13 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> opConcatenate(List<Base> left, List<Base> right, ExpressionNode expr) throws PathEngineException {
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "&");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "&");
|
||||
}
|
||||
if (left.size() > 0 && !left.get(0).hasType(FHIR_TYPES_STRING)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "&", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "&");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "&");
|
||||
}
|
||||
if (right.size() > 0 && !right.get(0).hasType(FHIR_TYPES_STRING)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "&", right.get(0).fhirType());
|
||||
|
@ -2743,13 +2755,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "-");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "-");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !left.get(0).hasType("Quantity")) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "-", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "-");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "-");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !((left.get(0).isDateTime() || "0".equals(left.get(0).primitiveValue()) || left.get(0).hasType("Quantity")) && right.get(0).hasType("Quantity"))) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "-", right.get(0).fhirType());
|
||||
|
@ -2782,13 +2794,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "/");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "/");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !(left.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "/", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "/");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "/");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !(right.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "/", right.get(0).fhirType());
|
||||
|
@ -2828,13 +2840,13 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "div");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "div");
|
||||
}
|
||||
if (!left.get(0).isPrimitive() && !(left.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "div", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "div");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "div");
|
||||
}
|
||||
if (!right.get(0).isPrimitive() && !(right.get(0) instanceof Quantity)) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "div", right.get(0).fhirType());
|
||||
|
@ -2868,13 +2880,13 @@ public class FHIRPathEngine {
|
|||
if (left.size() == 0 || right.size() == 0) {
|
||||
return new ArrayList<Base>();
|
||||
} if (left.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "mod");
|
||||
throw makeExceptionPL(left.size(), expr, I18nConstants.FHIRPATH_LEFT_VALUE_PLURAL, "mod");
|
||||
}
|
||||
if (!left.get(0).isPrimitive()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_LEFT_VALUE_WRONG_TYPE, "mod", left.get(0).fhirType());
|
||||
}
|
||||
if (right.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "mod");
|
||||
throw makeExceptionPL(right.size(), expr, I18nConstants.FHIRPATH_RIGHT_VALUE_PLURAL, "mod");
|
||||
}
|
||||
if (!right.get(0).isPrimitive()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RIGHT_VALUE_WRONG_TYPE, "mod", right.get(0).fhirType());
|
||||
|
@ -3609,7 +3621,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcSqrt(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "sqrt", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "sqrt", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3629,7 +3641,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcAbs(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "abs", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "abs", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3652,7 +3664,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcCeiling(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ceiling", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ceiling", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3670,7 +3682,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcFloor(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "floor", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "floor", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3693,7 +3705,7 @@ public class FHIRPathEngine {
|
|||
return new ArrayList<Base>();
|
||||
}
|
||||
if (focus.size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "exp", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "exp", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3714,7 +3726,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLn(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ln", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "ln", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3734,7 +3746,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLog(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "log", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "log", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3762,7 +3774,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcPower(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "power", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "power", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3786,7 +3798,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcTruncate(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "truncate", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "truncate", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3804,7 +3816,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcLowBoundary(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "lowBoundary", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "lowBoundary", focus.size());
|
||||
}
|
||||
int precision = 0;
|
||||
if (expr.getParameters().size() > 0) {
|
||||
|
@ -3834,7 +3846,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcHighBoundary(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
}
|
||||
int precision = 0;
|
||||
if (expr.getParameters().size() > 0) {
|
||||
|
@ -3864,7 +3876,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcPrecision(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "highBoundary", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -3882,7 +3894,7 @@ public class FHIRPathEngine {
|
|||
|
||||
private List<Base> funcRound(ExecutionContext context, List<Base> focus, ExpressionNode expr) {
|
||||
if (focus.size() != 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "round", focus.size());
|
||||
throw makeExceptionPL(focus.size(), expr, I18nConstants.FHIRPATH_FOCUS_PLURAL, "round", focus.size());
|
||||
}
|
||||
Base base = focus.get(0);
|
||||
List<Base> result = new ArrayList<Base>();
|
||||
|
@ -5792,13 +5804,13 @@ public class FHIRPathEngine {
|
|||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_NO_TYPE, element.getElement().getId());
|
||||
}
|
||||
if (element.getTypes().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES, element.getElement().getId());
|
||||
throw makeExceptionPL(element.getTypes().size(), expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES_PLURAL, element.getElement().getId());
|
||||
}
|
||||
if (!element.getTypes().get(0).hasTarget()) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_RESOLVE_NOT_REFERENCE, element.getElement().getId(), element.getElement().getType().get(0).getCode()+")");
|
||||
}
|
||||
if (element.getTypes().get(0).getTargetProfile().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET, element.getElement().getId());
|
||||
throw makeExceptionPL(element.getTypes().get(0).getTargetProfile().size(), expr, I18nConstants.FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET_PLURAL, element.getElement().getId());
|
||||
}
|
||||
sd = worker.fetchResource(StructureDefinition.class, element.getTypes().get(0).getTargetProfile().get(0).getValue());
|
||||
if (sd == null) {
|
||||
|
@ -5895,10 +5907,10 @@ public class FHIRPathEngine {
|
|||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_NOTYPE, ed.getElement().getId());
|
||||
}
|
||||
if (ed.getTypes().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES, ed.getElement().getId());
|
||||
throw makeExceptionPL(ed.getTypes().size(), expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES_PLURAL, ed.getElement().getId());
|
||||
}
|
||||
if (ed.getTypes().get(0).getProfile().size() > 1) {
|
||||
throw makeException(expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES, ed.getElement().getId());
|
||||
throw makeExceptionPL(ed.getTypes().get(0).getProfile().size(), expr, I18nConstants.FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES_PLURAL, ed.getElement().getId());
|
||||
}
|
||||
if (ed.getTypes().get(0).hasProfile()) {
|
||||
return worker.fetchResource(StructureDefinition.class, ed.getTypes().get(0).getProfile().get(0).getValue());
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package org.hl7.fhir.r5.utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/*
|
||||
Copyright (c) 2011+, HL7, Inc.
|
||||
All rights reserved.
|
||||
|
@ -33,6 +35,7 @@ package org.hl7.fhir.r5.utils;
|
|||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hl7.fhir.r5.model.Bundle;
|
||||
import org.hl7.fhir.r5.model.Bundle.BundleEntryComponent;
|
||||
|
@ -160,4 +163,21 @@ public class ResourceUtilities {
|
|||
return new Locale(l);
|
||||
}
|
||||
}
|
||||
|
||||
public static String listUrls(List<? extends CanonicalResource> list) {
|
||||
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder();
|
||||
for (CanonicalResource t : list) {
|
||||
b.append(t.getVUrl());
|
||||
}
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
public static String listStrings(Set<String> set) {
|
||||
List<String> list = Utilities.sorted(set);
|
||||
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder();
|
||||
for (String s : list) {
|
||||
b.append(s);
|
||||
}
|
||||
return b.toString();
|
||||
}
|
||||
}
|
|
@ -63,6 +63,13 @@ public abstract class I18nBase {
|
|||
* @return The formatted, internationalized, {@link String}
|
||||
*/
|
||||
public String formatMessage(String theMessage, Object... theMessageArguments) {
|
||||
if (theMessage.endsWith("_PLURAL")) {
|
||||
throw new Error("I18n error: Plural Message called in non-plural mode");
|
||||
}
|
||||
return formatMessageP(theMessage, theMessageArguments);
|
||||
}
|
||||
|
||||
private String formatMessageP(String theMessage, Object... theMessageArguments) {
|
||||
String message = theMessage;
|
||||
if (messageExistsForLocale(theMessage, (theMessageArguments != null && theMessageArguments.length > 0))) {
|
||||
if (Objects.nonNull(theMessageArguments) && theMessageArguments.length > 0) {
|
||||
|
@ -73,6 +80,17 @@ public abstract class I18nBase {
|
|||
}
|
||||
return message;
|
||||
}
|
||||
public String formatMessagePL(Integer plural, String theMessage, Object... theMessageArguments) {
|
||||
if (!theMessage.endsWith("_PLURAL")) {
|
||||
throw new Error("I18n error: Non-plural Message called in plural mode");
|
||||
}
|
||||
Object[] args = new Object[theMessageArguments.length+1];
|
||||
args[0] = plural;
|
||||
for (int i = 0; i < theMessageArguments.length; i++) {
|
||||
args[i+1] = theMessageArguments[i];
|
||||
}
|
||||
return formatMessageP(theMessage, args);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the corresponding {@link ResourceBundle} for the passed in {@link Locale}.
|
||||
|
|
|
@ -28,13 +28,13 @@ public class I18nConstants {
|
|||
public static final String BUNDLE_BUNDLE_ENTRY_FULLURL_REQUIRED = "BUNDLE_BUNDLE_ENTRY_FULLURL_REQUIRED";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_NOPROFILE_EXPL = "Bundle_BUNDLE_Entry_NoProfile_EXPL";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_NOPROFILE_TYPE = "Bundle_BUNDLE_Entry_NoProfile_TYPE";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES = "BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_PLURAL = "BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_PLURAL";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_NOTFOUND = "Bundle_BUNDLE_Entry_NotFound";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_ORPHAN = "Bundle_BUNDLE_Entry_Orphan";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_REVERSE = "BUNDLE_BUNDLE_ENTRY_REVERSE";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_TYPE = "Bundle_BUNDLE_Entry_Type";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_TYPE2 = "Bundle_BUNDLE_Entry_Type2";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_TYPE3 = "Bundle_BUNDLE_Entry_Type3";
|
||||
public static final String BUNDLE_BUNDLE_ENTRY_TYPE3_PLURAL = "Bundle_BUNDLE_Entry_Type3_PLURAL";
|
||||
public static final String BUNDLE_BUNDLE_FULLURL_MISSING = "Bundle_BUNDLE_FullUrl_Missing";
|
||||
public static final String BUNDLE_BUNDLE_FULLURL_NEEDVERSION = "Bundle_BUNDLE_FullUrl_NeedVersion";
|
||||
public static final String BUNDLE_BUNDLE_MULTIPLEMATCHES = "Bundle_BUNDLE_MultipleMatches";
|
||||
|
@ -57,7 +57,7 @@ public class I18nConstants {
|
|||
public static final String CODE_FOUND_IN_EXPANSION_HOWEVER_ = "Code_found_in_expansion_however_";
|
||||
public static final String CODING_HAS_NO_SYSTEM__CANNOT_VALIDATE = "Coding_has_no_system__cannot_validate";
|
||||
public static final String CONTAINED_RESOURCE_DOES_NOT_APPEAR_TO_BE_A_FHIR_RESOURCE_UNKNOWN_NAME_ = "Contained_resource_does_not_appear_to_be_a_FHIR_resource_unknown_name_";
|
||||
public static final String COULD_NOT_MATCH_ANY_DISCRIMINATORS__FOR_SLICE__IN_PROFILE___NONE_OF_THE_DISCRIMINATOR__HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS = "Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions";
|
||||
public static final String COULD_NOT_MATCH_ANY_DISCRIMINATORS__FOR_SLICE__IN_PROFILE___NONE_OF_THE_DISCRIMINATOR__HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS_PLURAL = "Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions_PLURAL";
|
||||
public static final String COULD_NOT_MATCH_DISCRIMINATOR__FOR_SLICE__IN_PROFILE___THE_DISCRIMINATOR__DOES_NOT_HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS = "Could_not_match_discriminator__for_slice__in_profile___the_discriminator__does_not_have_fixed_value_binding_or_existence_assertions";
|
||||
public static final String DEFINED_IN_THE_PROFILE = "defined_in_the_profile";
|
||||
public static final String DELIMITED_VERSIONS_HAVE_EXACT_MATCH_FOR_DELIMITER____VS_ = "Delimited_versions_have_exact_match_for_delimiter____vs_";
|
||||
|
@ -69,10 +69,10 @@ public class I18nConstants {
|
|||
public static final String DIFFERENTIAL_DOES_NOT_HAVE_A_SLICE__B_OF_____IN_PROFILE_ = "Differential_does_not_have_a_slice__b_of_____in_profile_";
|
||||
public static final String DIFFERENTIAL_WALKS_INTO____BUT_THE_BASE_DOES_NOT_AND_THERE_IS_NOT_A_SINGLE_FIXED_TYPE_THE_TYPE_IS__THIS_IS_NOT_HANDLED_YET = "Differential_walks_into____but_the_base_does_not_and_there_is_not_a_single_fixed_type_The_type_is__This_is_not_handled_yet";
|
||||
public static final String DISCRIMINATOR__IS_BASED_ON_ELEMENT_EXISTENCE_BUT_SLICE__NEITHER_SETS_MIN1_OR_MAX0 = "Discriminator__is_based_on_element_existence_but_slice__neither_sets_min1_or_max0";
|
||||
public static final String DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_MULTIPLE_TYPES_ = "Discriminator__is_based_on_type_but_slice__in__has_multiple_types_";
|
||||
public static final String DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_MULTIPLE_TYPES_PLURAL = "Discriminator__is_based_on_type_but_slice__in__has_multiple_types_PLURAL";
|
||||
public static final String DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_NO_TYPES = "Discriminator__is_based_on_type_but_slice__in__has_no_types";
|
||||
public static final String DISCRIMINATOR_BAD_PATH = "DISCRIMINATOR_BAD_PATH";
|
||||
public static final String DISPLAY_NAME_FOR__SHOULD_BE_ONE_OF__INSTEAD_OF_ = "Display_Name_for__should_be_one_of__instead_of_";
|
||||
public static final String DISPLAY_NAME_FOR__SHOULD_BE_ONE_OF__INSTEAD_OF_PLURAL = "Display_Name_for__should_be_one_of__instead_of_PLURAL";
|
||||
public static final String DOCUMENT = "documentmsg";
|
||||
public static final String DOCUMENT_DATE_REQUIRED = "Bundle_Document_Date_Missing";
|
||||
public static final String DOCUMENT_DATE_REQUIRED_HTML = "Bundle_Document_Date_Missing_html";
|
||||
|
@ -144,12 +144,12 @@ public class I18nConstants {
|
|||
public static final String FHIRPATH_DISCRIMINATOR_BAD_SYNTAX_GROUP = "FHIRPATH_DISCRIMINATOR_BAD_SYNTAX_GROUP";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_CANT_FIND = "FHIRPATH_DISCRIMINATOR_CANT_FIND";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_CANT_FIND_EXTENSION = "FHIRPATH_DISCRIMINATOR_CANT_FIND_EXTENSION";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES = "FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES = "FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES_PLURAL = "FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES_PLURAL";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES_PLURAL = "FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES_PLURAL";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_NAME_ALREADY_SLICED = "FHIRPATH_DISCRIMINATOR_NAME_ALREADY_SLICED";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_NOTYPE = "FHIRPATH_DISCRIMINATOR_NOTYPE";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_NO_CODE = "FHIRPATH_DISCRIMINATOR_NO_CODE";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES = "FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES_PLURAL = "FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES_PLURAL";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_RESOLVE_NOT_REFERENCE = "FHIRPATH_DISCRIMINATOR_RESOLVE_NOT_REFERENCE";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_RESOLVE_NO_TYPE = "FHIRPATH_DISCRIMINATOR_RESOLVE_NO_TYPE";
|
||||
public static final String FHIRPATH_DISCRIMINATOR_THIS_CANNOT_FIND = "FHIRPATH_DISCRIMINATOR_THIS_CANNOT_FIND";
|
||||
|
@ -170,7 +170,7 @@ public class I18nConstants {
|
|||
public static final String FHIRPATH_PRIMITIVE_ONLY = "FHIRPATH_PRIMITIVE_ONLY";
|
||||
public static final String FHIRPATH_REFERENCE_ONLY = "FHIRPATH_ORDERED_ONLY";
|
||||
public static final String FHIRPATH_RESOLVE_DISCRIMINATOR_CANT_FIND = "FHIRPATH_RESOLVE_DISCRIMINATOR_CANT_FIND";
|
||||
public static final String FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET = "FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET";
|
||||
public static final String FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET_PLURAL = "FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET_PLURAL";
|
||||
public static final String FHIRPATH_RIGHT_VALUE_PLURAL = "FHIRPATH_RIGHT_VALUE_PLURAL";
|
||||
public static final String FHIRPATH_RIGHT_VALUE_WRONG_TYPE = "FHIRPATH_RIGHT_VALUE_WRONG_TYPE";
|
||||
public static final String FHIRPATH_STRING_ORD_ONLY = "FHIRPATH_STRING_ORD_ONLY";
|
||||
|
@ -247,6 +247,7 @@ public class I18nConstants {
|
|||
public static final String MEASURE_M_LIB_UNKNOWN = "MEASURE_M_LIB_UNKNOWN";
|
||||
public static final String MEASURE_M_NO_GROUPS = "MEASURE_M_NO_GROUPS";
|
||||
public static final String META_RES_SECURITY_DUPLICATE = "Meta_RES_Security_Duplicate";
|
||||
public static final String MULTIPLE_LOGICAL_MODELS_PLURAL = "MULTIPLE_LOGICAL_MODELS_PLURAL";
|
||||
public static final String MUSTSUPPORT_VAL_MUSTSUPPORT = "MustSupport_VAL_MustSupport";
|
||||
public static final String NAMED_ITEMS_ARE_OUT_OF_ORDER_IN_THE_SLICE = "Named_items_are_out_of_order_in_the_slice";
|
||||
public static final String NEEDS_A_SNAPSHOT = "needs_a_snapshot";
|
||||
|
@ -287,7 +288,7 @@ public class I18nConstants {
|
|||
public static final String PROBLEM_PROCESSING_EXPRESSION__IN_PROFILE__PATH__ = "Problem_processing_expression__in_profile__path__";
|
||||
public static final String PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE_WITH_A_PROFILE__IN_PROFILE_ = "Profile_based_discriminators_must_have_a_type_with_a_profile__in_profile_";
|
||||
public static final String PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE__IN_PROFILE_ = "Profile_based_discriminators_must_have_a_type__in_profile_";
|
||||
public static final String PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_ONLY_ONE_TYPE__IN_PROFILE_ = "Profile_based_discriminators_must_have_only_one_type__in_profile_";
|
||||
public static final String PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_ONLY_ONE_TYPE__IN_PROFILE_PLURAL = "Profile_based_discriminators_must_have_only_one_type__in_profile_PLURAL";
|
||||
public static final String PROFILE_EXT_NOT_HERE = "Profile_EXT_Not_Here";
|
||||
public static final String PROFILE_VAL_MISSINGELEMENT = "Profile_VAL_MissingElement";
|
||||
public static final String PROFILE_VAL_NOTALLOWED = "Profile_VAL_NotAllowed";
|
||||
|
@ -322,13 +323,13 @@ public class I18nConstants {
|
|||
public static final String QUESTIONNAIRE_QR_ITEM_NOTIME = "Questionnaire_QR_Item_NoTime";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_NOTYPE = "Questionnaire_QR_Item_NoType";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_ONLYONEA = "Questionnaire_QR_Item_OnlyOneA";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_ONLYONEI = "Questionnaire_QR_Item_OnlyOneI";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_ONLYONEI_PLURAL = "Questionnaire_QR_Item_OnlyOneI_PLURAL";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_ORDER = "Questionnaire_QR_Item_Order";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_STRINGNOOPTIONS = "Questionnaire_QR_Item_StringNoOptions";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_TEXT = "Questionnaire_QR_Item_Text";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_TIMENOOPTIONS = "Questionnaire_QR_Item_TimeNoOptions";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_WRONGTYPE = "Questionnaire_QR_Item_WrongType";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_WRONGTYPE2 = "Questionnaire_QR_Item_WrongType2";
|
||||
public static final String QUESTIONNAIRE_QR_ITEM_WRONGTYPE_PLURAL = "Questionnaire_QR_Item_WrongType_PLURAL";
|
||||
public static final String QUESTIONNAIRE_QR_Q_NONE = "Questionnaire_QR_Q_None";
|
||||
public static final String QUESTIONNAIRE_QR_Q_NOTFOUND = "Questionnaire_QR_Q_NotFound";
|
||||
public static final String QUESTIONNAIRE_Q_ENABLEWHEN_AFTER = "Questionnaire_Q_EnableWhen_After";
|
||||
|
@ -600,11 +601,11 @@ public class I18nConstants {
|
|||
public static final String VALIDATION_VAL_ILLEGAL_TYPE_CONSTRAINT = "VALIDATION_VAL_ILLEGAL_TYPE_CONSTRAINT";
|
||||
public static final String VALIDATION_VAL_NOTYPE = "Validation_VAL_NoType";
|
||||
public static final String VALIDATION_VAL_PROFILE_MATCHMULTIPLE = "Validation_VAL_Profile_MatchMultiple";
|
||||
public static final String VALIDATION_VAL_PROFILE_MAXIMUM = "Validation_VAL_Profile_Maximum";
|
||||
public static final String VALIDATION_VAL_PROFILE_MINIMUM = "Validation_VAL_Profile_Minimum";
|
||||
public static final String VALIDATION_VAL_PROFILE_MULTIPLEMATCHES = "Validation_VAL_Profile_MultipleMatches";
|
||||
public static final String VALIDATION_VAL_PROFILE_NOCHECKMAX = "Validation_VAL_Profile_NoCheckMax";
|
||||
public static final String VALIDATION_VAL_PROFILE_NOCHECKMIN = "Validation_VAL_Profile_NoCheckMin";
|
||||
public static final String VALIDATION_VAL_PROFILE_MAXIMUM_PLURAL = "Validation_VAL_Profile_Maximum_PLURAL";
|
||||
public static final String VALIDATION_VAL_PROFILE_MINIMUM_PLURAL = "Validation_VAL_Profile_Minimum_PLURAL";
|
||||
public static final String VALIDATION_VAL_PROFILE_MULTIPLEMATCHES_PLURAL = "Validation_VAL_Profile_MultipleMatches_PLURAL";
|
||||
public static final String VALIDATION_VAL_PROFILE_NOCHECKMAX_PLURAL = "Validation_VAL_Profile_NoCheckMax_PLURAL";
|
||||
public static final String VALIDATION_VAL_PROFILE_NOCHECKMIN_PLURAL = "Validation_VAL_Profile_NoCheckMin_PLURAL";
|
||||
public static final String VALIDATION_VAL_PROFILE_NODEFINITION = "Validation_VAL_Profile_NoDefinition";
|
||||
public static final String VALIDATION_VAL_PROFILE_NOMATCH = "Validation_VAL_Profile_NoMatch";
|
||||
public static final String VALIDATION_VAL_PROFILE_NOSNAPSHOT = "Validation_VAL_Profile_NoSnapshot";
|
||||
|
@ -656,7 +657,7 @@ public class I18nConstants {
|
|||
public static final String WRONG_TYPE_FOR_RESOURCE = "Wrong_type_for_resource";
|
||||
public static final String XHTML_URL_EMPTY = "XHTML_URL_EMPTY";
|
||||
public static final String XHTML_URL_INVALID = "XHTML_URL_INVALID";
|
||||
public static final String XHTML_URL_INVALID_CHARS = "XHTML_URL_INVALID_CHARS";
|
||||
public static final String XHTML_URL_INVALID_CHARS_PLURAL = "XHTML_URL_INVALID_CHARS_PLURAL";
|
||||
public static final String XHTML_URL_DATA_NO_DATA = "XHTML_URL_DATA_NO_DATA";
|
||||
public static final String XHTML_URL_DATA_DATA_INVALID_COMMA = "XHTML_URL_DATA_DATA_INVALID_COMMA";
|
||||
public static final String XHTML_URL_DATA_DATA_INVALID = "XHTML_URL_DATA_DATA_INVALID";
|
||||
|
|
|
@ -16,7 +16,7 @@ Bundle_BUNDLE_Entry_Orphan = Entry {0} isn''t reachable by traversing from first
|
|||
BUNDLE_BUNDLE_ENTRY_REVERSE = Entry {0} isn''t reachable by traversing forwards from first Bundle entry, and isn''t a resource type that is typically used that way - check this is not missed somewhere
|
||||
Bundle_BUNDLE_Entry_Type = The type ''{0}'' is not valid - no resources allowed here (allowed = {1})
|
||||
Bundle_BUNDLE_Entry_Type2 = The type ''{0}'' is not valid - must be {1} (allowed = {2})
|
||||
Bundle_BUNDLE_Entry_Type3 = The type ''{0}'' is not valid - must be one of {1}
|
||||
Bundle_BUNDLE_Entry_Type3_PLURAL = The type ''{1}'' is not valid - must be one of {0} types: {2}
|
||||
Bundle_BUNDLE_FullUrl_Missing = Relative Reference appears inside Bundle whose entry is missing a fullUrl
|
||||
Bundle_BUNDLE_FullUrl_NeedVersion = Entries matching fullURL {0} should declare meta/versionId because there are version-specific references
|
||||
Bundle_BUNDLE_MultipleMatches = Multiple matches in bundle for reference {0}
|
||||
|
@ -94,13 +94,13 @@ Questionnaire_QR_Item_NotEnabled = Item has answer (2), even though it is not en
|
|||
Questionnaire_QR_Item_NotEnabled2 = Item has answer, even though it is not enabled (item id = ''{0}'')
|
||||
Questionnaire_QR_Item_NotFound = LinkId ''{0}'' not found in questionnaire
|
||||
Questionnaire_QR_Item_OnlyOneA = Only one response answer item with this linkId allowed
|
||||
Questionnaire_QR_Item_OnlyOneI = Only one response item with this linkId allowed - {0}
|
||||
Questionnaire_QR_Item_OnlyOneI_PLURAL = Only one response item with the linkId {1} allowed - found {0} items
|
||||
Questionnaire_QR_Item_Order = Structural Error: items are out of order
|
||||
Questionnaire_QR_Item_StringNoOptions = Cannot validate string answer option because no option list is provided
|
||||
Questionnaire_QR_Item_Text = If text exists, it must match the questionnaire definition for linkId {0}
|
||||
Questionnaire_QR_Item_TimeNoOptions = Cannot validate time answer option because no option list is provided
|
||||
Questionnaire_QR_Item_WrongType = Answer value must be of type {0}
|
||||
Questionnaire_QR_Item_WrongType2 = Answer value must be one of the types {0}
|
||||
Questionnaire_QR_Item_WrongType_PLURAL = Answer value must be one of the {0} types {1}
|
||||
Questionnaire_QR_Q_None = No questionnaire is identified, so no validation can be performed against the base questionnaire
|
||||
Questionnaire_QR_Q_NotFound = The questionnaire ''{0}'' could not be resolved, so no validation can be performed against the base questionnaire
|
||||
Questionnaire_Q_EnableWhen_After = The target of this enableWhen rule ({0}) comes after the question itself
|
||||
|
@ -222,11 +222,11 @@ Validation_VAL_Content_Unknown = Unrecognised Content {0}
|
|||
Validation_VAL_NoType = Unknown type {0}
|
||||
Validation_VAL_Profile_MatchMultiple = Profile {0}, Element matches more than one slice - {1}, {2}
|
||||
// for the next 4 messages, the available parameters are: 0: profile url, 1: ed.path, 2: ed.id, 3: ed.sliceName, 4: ed.label, 5: element.path, 6: ed.min and optionally 7: actual count
|
||||
Validation_VAL_Profile_Maximum = {2}: max allowed = {6}, but found {7} (from {0})
|
||||
Validation_VAL_Profile_Minimum = {2}: minimum required = {6}, but only found {7} (from {0})
|
||||
Validation_VAL_Profile_NoCheckMax = {2}: Unable to check max allowed ({1}) due to lack of slicing validation (from {0})
|
||||
Validation_VAL_Profile_NoCheckMin = {2}: Unable to check minimum required ({1}) due to lack of slicing validation (from {0})
|
||||
Validation_VAL_Profile_MultipleMatches = Found multiple matching profiles among choices: {0}
|
||||
Validation_VAL_Profile_Maximum_PLURAL = {3}: max allowed = {7}, but found {0} (from {1})
|
||||
Validation_VAL_Profile_Minimum_PLURAL = {3}: minimum required = {7}, but only found {0} (from {1})
|
||||
Validation_VAL_Profile_NoCheckMax_PLURAL = {3}: Found {0} matches, but unable to check max allowed ({2}) due to lack of slicing validation (from {1})
|
||||
Validation_VAL_Profile_NoCheckMin_PLURAL = {3}: Found {0} matches, but unable to check minimum required ({2}) due to lack of slicing validation (from {1})
|
||||
Validation_VAL_Profile_MultipleMatches_PLURAL = Found multiple matching profiles among {0} choices: {1}
|
||||
Validation_VAL_Profile_NoDefinition = No definition found for resource type ''{0}''
|
||||
Validation_VAL_Profile_NoMatch = Unable to find a match for the specified profile among choices: {0}
|
||||
Validation_VAL_Profile_NoSnapshot = StructureDefinition {0} has no snapshot - validation is against the snapshot, so it must be provided
|
||||
|
@ -266,13 +266,13 @@ Unsupported_Identifier_pattern__extensions_are_not_allowed__for_discriminator_fo
|
|||
Unsupported_fixed_pattern_type_for_discriminator_for_slice__ = Unsupported fixed pattern type for discriminator ({0}) for slice {1}: {2}
|
||||
Problem_evaluating_slicing_expression_for_element_in_profile__path__fhirPath___ = Problem evaluating slicing expression for element in profile {0} path {1} (fhirPath = {2}): {3}
|
||||
Could_not_match_discriminator__for_slice__in_profile___the_discriminator__does_not_have_fixed_value_binding_or_existence_assertions = Could not match discriminator ({0}) for slice {1} in profile {2} - the discriminator {3} does not have fixed value, binding or existence assertions
|
||||
Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions = Could not match any discriminators ({0}) for slice {1} in profile {2} - None of the discriminator {3} have fixed value, binding or existence assertions
|
||||
Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions_PLURAL = Could not match any discriminators ({1}) for slice {2} in profile {3} - None of the {0} discriminators {4} have fixed value, binding or existence assertions
|
||||
Discriminator__is_based_on_element_existence_but_slice__neither_sets_min1_or_max0 = Discriminator ({0}) is based on element existence, but slice {1} neither sets min>=1 or max=0
|
||||
Profile_based_discriminators_must_have_a_type_with_a_profile__in_profile_ = Profile based discriminators must have a type with a profile ({0} in profile {1})
|
||||
Profile_based_discriminators_must_have_only_one_type__in_profile_ = Profile based discriminators must have only one type ({0} in profile {1})
|
||||
Profile_based_discriminators_must_have_only_one_type__in_profile_PLURAL = Profile based discriminators must have only one type ({1} in profile {2}) but found {0} types
|
||||
Profile_based_discriminators_must_have_a_type__in_profile_ = Profile based discriminators must have a type ({0} in profile {1})
|
||||
Discriminator__is_based_on_type_but_slice__in__has_no_types = Discriminator ({0}) is based on type, but slice {1} in {2} has no types
|
||||
Discriminator__is_based_on_type_but_slice__in__has_multiple_types_ = Discriminator ({0}) is based on type, but slice {1} in {2} has multiple types: {3}
|
||||
Discriminator__is_based_on_type_but_slice__in__has_multiple_types_PLURAL = Discriminator ({1}) is based on type, but slice {2} in {3} has {0} types: {4}
|
||||
Found__items_for__resolving_discriminator__from_ = Found {0} items for {1} resolving discriminator {2} from {3}
|
||||
Unable_to_find__resolving_discriminator__from_ = Unable to find {0} resolving discriminator {1} from {2}
|
||||
Unable_to_find_resource__at__resolving_discriminator__from_ = Unable to find resource {0} at {1} resolving discriminator {2} from {3}
|
||||
|
@ -441,7 +441,7 @@ Version_mismatch_The_context_has_version__loaded_and_the_new_content_being_loade
|
|||
Error_reading__from_package__ = Error reading {0} from package {1}#{2}: {3}
|
||||
Error_parsing_ = Error parsing {0}:{1}
|
||||
Unable_to_connect_to_terminology_server_Use_parameter_tx_na_tun_run_without_using_terminology_services_to_validate_LOINC_SNOMED_ICDX_etc_Error__ = Unable to connect to terminology server. Use parameter ''-tx n/a'' to run without using terminology services to validate LOINC, SNOMED, ICD-X etc. Error = {0}
|
||||
Display_Name_for__should_be_one_of__instead_of_ = Display Name for {0}#{1} should be one of ''{2}'' instead of ''{3}''
|
||||
Display_Name_for__should_be_one_of__instead_of_PLURAL = Display Name for {1}#{2} should be one of {0} choices from ''{3}'', not ''{4}''
|
||||
Unknown_Code__in_ = Unknown Code {0} in {1}
|
||||
UNKNOWN_CODE__IN_FRAGMENT = Unknown Code {0} in {1} - note that the code system is labelled as a fragment, so the code may be valid in some other fragment
|
||||
Code_found_in_expansion_however_ = Code found in expansion, however: {0}
|
||||
|
@ -461,7 +461,7 @@ documentmsg = (document)
|
|||
xml_attr_value_invalid = The XML Attribute {0} has an illegal character
|
||||
xml_encoding_invalid = The XML encoding is invalid (must be UTF-8)
|
||||
xml_stated_encoding_invalid = The XML encoding stated in the header is invalid (must be ''UTF-8'' if stated)
|
||||
XHTML_URL_INVALID = The URL is not valid because ''({1})'' : {0}
|
||||
XHTML_URL_INVALID = The URL is not valid because ''({1})'': {0}
|
||||
MEASURE_MR_GRP_NO_CODE = Group should have a code that matches the group definition in the measure
|
||||
MEASURE_MR_GRP_UNK_CODE = The code for this group has no match in the measure definition
|
||||
MEASURE_MR_GRP_DUPL_CODE = The code for this group is duplicated with another group
|
||||
|
@ -507,7 +507,7 @@ MEASURE_M_CRITERIA_CQL_NO_ELM = Error in {0}: No compiled version of CQL found
|
|||
MEASURE_M_CRITERIA_CQL_ELM_NOT_VALID = = Error in {0}: Compiled version of CQL is not valid
|
||||
MEASURE_M_CRITERIA_CQL_NOT_FOUND = The function {1} does not exist in the library {0}
|
||||
XHTML_URL_EMPTY = URL is empty
|
||||
XHTML_URL_INVALID_CHARS = URL contains Invalid Characters ({0})
|
||||
XHTML_URL_INVALID_CHARS_PLURAL = 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
|
||||
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)
|
||||
|
@ -559,9 +559,9 @@ FHIRPATH_UNKNOWN_NAME = Error evaluating FHIRPath expression: The name {0} is no
|
|||
FHIRPATH_UNKNOWN_CONSTANT = Error evaluating FHIRPath expression: Invalid FHIR Constant {0}
|
||||
FHIRPATH_CANNOT_USE = Error evaluating FHIRPath expression: Cannot use {0} in this context because {1}
|
||||
FHIRPATH_CANT_COMPARE = Error evaluating FHIRPath expression: Unable to compare values of type {0} and {1}
|
||||
FHIRPATH_LEFT_VALUE_PLURAL = Error evaluating FHIRPath expression: left operand to {0} has more than one value
|
||||
FHIRPATH_LEFT_VALUE_PLURAL = Error evaluating FHIRPath expression: left operand to {1} can only have 1 value, but has {0} values
|
||||
FHIRPATH_LEFT_VALUE_WRONG_TYPE = Error evaluating FHIRPath expression: left operand to {0} has the wrong type {1}
|
||||
FHIRPATH_RIGHT_VALUE_PLURAL = Error evaluating FHIRPath expression: right operand to {0} has more than one value
|
||||
FHIRPATH_RIGHT_VALUE_PLURAL = Error evaluating FHIRPath expression: right operand to {1} can only have 1 value, but has {0} values
|
||||
FHIRPATH_RIGHT_VALUE_WRONG_TYPE = Error evaluating FHIRPath expression: right operand to {0} has the wrong type {1}
|
||||
FHIRPATH_OP_INCOMPATIBLE = Error evaluating FHIRPath expression {0}: left and right operand have incompatible or illegal types ({1}, {2})
|
||||
FHIRPATH_HO_HOST_SERVICES = Internal Error evaluating FHIRPath expression: No host services are provided ({0})
|
||||
|
@ -579,9 +579,9 @@ FHIRPATH_NO_TYPE = Error evaluating FHIRPath expression: The type ''{0}'' is unk
|
|||
FHIRPATH_DISCRIMINATOR_NAME_ALREADY_SLICED = Error in discriminator at {0}: found a sliced element while resolving the fixed value for one of the slices
|
||||
FHIRPATH_DISCRIMINATOR_THIS_CANNOT_FIND = Problem with use of resolve() - profile {0} on {1} could not be resolved
|
||||
FHIRPATH_DISCRIMINATOR_RESOLVE_NO_TYPE = illegal use of resolve() in discriminator - no type on element {0}
|
||||
FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES = illegal use of resolve() in discriminator - Multiple possible types on {0}
|
||||
FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES_PLURAL = Illegal use of resolve() in discriminator - {0} possible types on {1} (can only be one)
|
||||
FHIRPATH_DISCRIMINATOR_RESOLVE_NOT_REFERENCE = illegal use of resolve() in discriminator - type on {0} is not Reference {1}
|
||||
FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET = illegal use of resolve() in discriminator - Multiple possible target type profiles on {0}
|
||||
FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET_PLURAL = illegal use of resolve() in discriminator - {0} possible target type profiles on {1} (can only be one)
|
||||
FHIRPATH_RESOLVE_DISCRIMINATOR_CANT_FIND = Problem with use of resolve() - profile {0} on {1} could not be resolved
|
||||
FHIRPATH_DISCRIMINATOR_TYPE_NONE = illegal use of ofType() in discriminator - no type on element {0}
|
||||
FHIRPATH_DISCRIMINATOR_TYPE_MULTIPLE = illegal use of ofType() in discriminator - Multiple possible types on {0}
|
||||
|
@ -592,8 +592,8 @@ FHIRPATH_DISCRIMINATOR_BAD_SYNTAX_CONST = illegal expression syntax in discrimin
|
|||
FHIRPATH_DISCRIMINATOR_CANT_FIND = Unable to resolve discriminator in definitions: {0} in profile {1} on element {2}, looking in profile {3}
|
||||
FHIRPATH_DISCRIMINATOR_CANT_FIND_EXTENSION = Unable to resolve discriminator {0} on {2} found in the definitions because the extension {1} wasn''t found in the profile {3}
|
||||
FHIRPATH_DISCRIMINATOR_NOTYPE = Error in discriminator at {0}: no children, no type
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES = Error in discriminator at {0}: no children, multiple types
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES = Error in discriminator at {0}: no children, multiple type profiles
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES_PLURAL = Error in discriminator at {1}: no children, {0} types
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES_PLURAL = Error in discriminator at {1}: no children, {0} type profiles
|
||||
FHIRPATH_UNABLE_BOOLEAN = Unable to evaluate as a boolean: {0}
|
||||
XHTML_XHTML_DOCTYPE_ILLEGAL = Malformed XHTML: Found a DocType declaration, and these are not allowed (XXE security vulnerability protection)
|
||||
PACKAGE_VERSION_MISMATCH = FHIR Version mismatch in package {0}: version is {2} but must be {1} (path: {3})
|
||||
|
@ -603,7 +603,7 @@ SD_MUST_HAVE_DERIVATION = StructureDefinition {0} must have a derivation, since
|
|||
VALIDATION_VAL_PROFILE_OTHER_VERSION = Profile is for a different version of FHIR ({0}) so has been ignored
|
||||
VALIDATION_VAL_PROFILE_THIS_VERSION_OK = Profile for this version of FHIR - all OK
|
||||
VALIDATION_VAL_PROFILE_THIS_VERSION_OTHER = Profile is for this version of FHIR, but is an invalid type {0}
|
||||
BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES = Multiple profiles found for {0} resource. This is not supported at this time. (Type {1}: {2})
|
||||
BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_PLURAL = {0} profiles found for {1} resource. More than one is not supported at this time. (Type {2}: {3})
|
||||
RENDER_BUNDLE_HEADER_ROOT = Bundle {0} of type {1}
|
||||
RENDER_BUNDLE_HEADER_ENTRY = Entry {0}
|
||||
RENDER_BUNDLE_HEADER_ENTRY_URL = Entry {0} - Full URL = {1}
|
||||
|
@ -635,7 +635,7 @@ FHIRPATH_BAD_DATE = Unable to parse Date {0}
|
|||
FHIRPATH_NUMERICAL_ONLY = Error evaluating FHIRPath expression: The function {0} can only be used on integer, decimal or Quantity but found {1}
|
||||
FHIRPATH_DECIMAL_ONLY = Error evaluating FHIRPath expression: The function {0} can only be used on a decimal but found {1}
|
||||
FHIRPATH_CONTINUOUS_ONLY= Error evaluating FHIRPath expression: The function {0} can only be used on a decimal or date type but found {1}
|
||||
FHIRPATH_FOCUS_PLURAL = Error evaluating FHIRPath expression: focus for {0} has more than one value
|
||||
FHIRPATH_FOCUS_PLURAL = Error evaluating FHIRPath expression: focus for {0} can only have one value, but has {0} values
|
||||
REFERENCE_REF_SUSPICIOUS = The syntax of the reference ''{0}'' looks incorrect, and it should be checked
|
||||
TYPE_SPECIFIC_CHECKS_DT_QTY_NO_ANNOTATIONS = UCUM Codes that contain human readable annotations like {0} can be misleading. Best Practice is not to use annotations in the UCUM code, and rather to make sure that Quantity.unit is correctly human readable
|
||||
XHTML_XHTML_ELEMENT_ILLEGAL_IN_PARA = Illegal element name inside in a paragraph in the XHTML (''{0}'')
|
||||
|
@ -751,4 +751,5 @@ TYPE_SPECIFIER_ABSTRACT_TYPE = The Type specifier {1} specified an abstract typ
|
|||
TYPE_SPECIFIER_NM_ILLEGAL_TYPE = No Type specifier matched, and the underlying type {0} is not valid
|
||||
TYPE_SPECIFIER_NM_ABSTRACT_TYPE = No Type specifier matched, and the underlying type {0} is not abstract
|
||||
ELEMENT_CANNOT_BE_NULL = The element is not allowed to be 'null'
|
||||
MULTIPLE_LOGICAL_MODELS_PLURAL={0} Logical Models found in supplied profiles, so unable to parse logical model (can only be one, found {1})
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ Bundle_BUNDLE_Entry_NotFound="{0}" konnte nicht in bundle ({1}) gefunden werden
|
|||
Bundle_BUNDLE_Entry_Orphan=Entry {0} ist nicht durch Traversierung, vom ersten Bundle-Entry ausgehend, erreichbar
|
||||
Bundle_BUNDLE_Entry_Type=Der type "{0}" ist nicht g\u00fcltig - hier sind keine Ressourcen erlaubt
|
||||
Bundle_BUNDLE_Entry_Type2=Der type "{0}" ist nicht g\u00fcltig - muss {1} sein
|
||||
Bundle_BUNDLE_Entry_Type3=Der type "{0}" ist nicht g\u00fcltig - muss einer von {1} sein
|
||||
Bundle_BUNDLE_Entry_Type3_PLURAL=Der type "{1}" ist nicht g\u00fcltig - muss einer von {2} sein
|
||||
Bundle_BUNDLE_FullUrl_Missing=Es besteht eine relative Reference innerhalb des Bundle, dessen Eintrag eine fullUrl fehlt
|
||||
Bundle_BUNDLE_FullUrl_NeedVersion=Eintr\u00e4ge, die mit fullURL {0} \u00fcbereinstimmen, sollten meta/versionId deklarieren, da versionsspezifische Referenzen vorhanden sind.
|
||||
Bundle_BUNDLE_MultipleMatches=Mehrere \u00dcbereinstimmungen im Bundle f\u00fcr reference {0}
|
||||
|
@ -88,13 +88,13 @@ Questionnaire_QR_Item_NotEnabled=Item hat Antwort (2), auch wenn es nicht aktivi
|
|||
Questionnaire_QR_Item_NotEnabled2=Item besitzt eine answer, auch wenn es nicht aktiviert ist (Element-ID = "{0}")
|
||||
Questionnaire_QR_Item_NotFound=LinkId "{0}" im questionnaire nicht gefunden
|
||||
Questionnaire_QR_Item_OnlyOneA=Nur ein Antwortelement mit dieser LinkId zul\u00e4ssig
|
||||
Questionnaire_QR_Item_OnlyOneI=Nur ein Antwortelement mit dieser LinkId erlaubt - {0}
|
||||
Questionnaire_QR_Item_OnlyOneI_PLURAL=Nur ein Antwortelement mit dieser LinkId erlaubt - {1}
|
||||
Questionnaire_QR_Item_Order=Struktureller Fehler: Elemente in falscher Reihenfolge
|
||||
Questionnaire_QR_Item_StringNoOptions=String answer option kann nicht validiert werden, da keine Optionsliste bereitgestellt wird
|
||||
Questionnaire_QR_Item_Text=Wenn Text vorhanden ist, muss er mit der Fragebogen-Definition f\u00fcr linkId {0} \u00fcbereinstimmen.
|
||||
Questionnaire_QR_Item_TimeNoOptions=Kann die time answer option nicht validieren, weil keine Optionsliste zur Verf\u00fcgung steht
|
||||
Questionnaire_QR_Item_WrongType=Answer value muss vom Typ {0} sein.
|
||||
Questionnaire_QR_Item_WrongType2=Answer value muss einer der Typen {0} sein
|
||||
Questionnaire_QR_Item_WrongType_PLURAL=Answer value muss einer der Typen {1} sein
|
||||
Questionnaire_QR_Q_None=Es konnte kein passendes questionnaire identifiziert werden, so dass keine Validierung gegen den Basisfragebogen durchgef\u00fchrt werden kann.
|
||||
Questionnaire_QR_Q_NotFound=Der Fragebogen "{0}" konnte nicht gefunden werden, so dass keine Validierung gegen den Basisfragebogen durchgef\u00fchrt werden kann.
|
||||
Questionnaire_Q_EnableWhen_After=Das Ziel dieser enableWhen-Regel ({0}) kommt nach der Frage selbst
|
||||
|
@ -208,11 +208,11 @@ Validation_BUNDLE_Message=Der erste Eintrag in einer Nachricht muss ein MessageH
|
|||
Validation_VAL_Content_Unknown=Unerkannter Inhalt {0}
|
||||
Validation_VAL_NoType=Unbekannter Typ {0}
|
||||
Validation_VAL_Profile_MatchMultiple=Profil {0}, Element stimmt mit mehr als einem Slice \u00fcberein - {1}, {2}
|
||||
Validation_VAL_Profile_Maximum={0}: maximal erlaubt = {1}, aber gefunden {2}
|
||||
Validation_VAL_Profile_Minimum={2}: mindestens erforderlich = {6}, aber nur gefunden {7}
|
||||
Validation_VAL_Profile_MultipleMatches=Es wurden mehrere passende Profile unter den Auswahlm\u00f6glichkeiten gefunden: {0}
|
||||
Validation_VAL_Profile_NoCheckMax={0}: Kann die maximal zul\u00e4ssige Anzahl ({1}) aufgrund fehlender Slicing-Validierung nicht \u00fcberpr\u00fcfen.
|
||||
Validation_VAL_Profile_NoCheckMin={0}": Kann das erforderliche Minimum ({1}) aufgrund fehlender Slicing-Validierung nicht \u00fcberpr\u00fcfen
|
||||
Validation_VAL_Profile_Maximum_PLURAL={3}: maximal erlaubt = {7}, aber gefunden {0}
|
||||
Validation_VAL_Profile_Minimum_PLURAL={3}: mindestens erforderlich = {7}, aber nur gefunden {0}
|
||||
Validation_VAL_Profile_MultipleMatches_PLURAL=Es wurden mehrere passende Profile unter den Auswahlm\u00f6glichkeiten gefunden: {1}
|
||||
Validation_VAL_Profile_NoCheckMax_PLURAL={1}: Kann die maximal zul\u00e4ssige Anzahl ({1}) aufgrund fehlender Slicing-Validierung nicht \u00fcberpr\u00fcfen.
|
||||
Validation_VAL_Profile_NoCheckMin_PLURAL={1}": Kann das erforderliche Minimum ({1}) aufgrund fehlender Slicing-Validierung nicht \u00fcberpr\u00fcfen
|
||||
Validation_VAL_Profile_NoDefinition=Keine Definition f\u00fcr Ressourcentyp "{0}" gefunden
|
||||
Validation_VAL_Profile_NoMatch=Es ist nicht m\u00f6glich, ein passendes Profil unter den Kandidaten zu finden: {0}
|
||||
Validation_VAL_Profile_NoSnapshot=StructureDefinition hat keinen Snapshot - die Validierung erfolgt gegen den Snapshot, daher muss dieser bereitgestellt werden
|
||||
|
@ -247,13 +247,13 @@ Unsupported_Identifier_pattern__extensions_are_not_allowed__for_discriminator_fo
|
|||
Unsupported_fixed_pattern_type_for_discriminator_for_slice__=Nicht unterst\u00fctzter fixed Pattern Type f\u00fcr Diskriminator({0}) f\u00fcr Slice {1}: {2}
|
||||
Problem_evaluating_slicing_expression_for_element_in_profile__path__fhirPath___=Problem bei der Auswertung des Slicing-Ausdrucks f\u00fcr Element im Profil {0} Pfad {1} (fhirPfad = {2}): {3}
|
||||
Could_not_match_discriminator__for_slice__in_profile___the_discriminator__does_not_have_fixed_value_binding_or_existence_assertions=Konnte nicht mit dem Diskriminator ({0}) f\u00fcr Slice {1} in Profil {2} \u00fcbereinstimmen - der Diskriminator {3} hat keinen fixed Value, kein Binding oder existence assertions
|
||||
Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions=Konnte keinen Diskriminator ({0}) f\u00fcr Slice {1} im Profil {2} zuordnen - Keiner der Diskriminatoren {3} hat einen fixed value, eine Binding oder existence assertions
|
||||
Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions_PLURAL=Konnte keinen Diskriminator ({1}) f\u00fcr Slice {2} im Profil {3} zuordnen - Keiner der Diskriminatoren {4} hat einen fixed value, eine Binding oder existence assertions
|
||||
Discriminator__is_based_on_element_existence_but_slice__neither_sets_min1_or_max0=Der Diskriminator ({0}) basiert auf der Existenz von Elementen, aber Slice {1} setzt weder min>=1 noch max=0
|
||||
Profile_based_discriminators_must_have_a_type_with_a_profile__in_profile_=Profilbasierte Diskriminatoren m\u00fcssen einen Typ mit einem Profil ({0} im Profil {1}) haben.
|
||||
Profile_based_discriminators_must_have_only_one_type__in_profile_=Profilbasierte Diskriminatoren d\u00fcrfen nur einen Typ ({0} im Profil {1}) haben.
|
||||
Profile_based_discriminators_must_have_only_one_type__in_profile_PLURAL=Profilbasierte Diskriminatoren d\u00fcrfen nur einen Typ ({1} im Profil {2}) haben.
|
||||
Profile_based_discriminators_must_have_a_type__in_profile_=Profilbasierte Diskriminatoren m\u00fcssen einen Typ ({0} im Profil {1}) haben.
|
||||
Discriminator__is_based_on_type_but_slice__in__has_no_types=Der Diskriminator ({0}) basiert auf dem Typ, aber das Slice {1} in {2} hat keine Typen
|
||||
Discriminator__is_based_on_type_but_slice__in__has_multiple_types_=Der Diskriminator ({0}) basiert auf dem Typ, aber das Slice {1} in {2} hat mehrere Typen: {3}
|
||||
Discriminator__is_based_on_type_but_slice__in__has_multiple_types_PLURAL=Der Diskriminator ({1}) basiert auf dem Typ, aber das Slice {2} in {3} hat mehrere Typen: {4}
|
||||
Found__items_for__resolving_discriminator__from_={0} Elemente f\u00fcr {1} gefunden welche mit Diskriminators {2} von {3} \u00fcbereinstimmen
|
||||
Unable_to_find__resolving_discriminator__from_=Kann keinen {0} aufl\u00f6senden Diskriminator {1} von {2} finden
|
||||
Unable_to_find_resource__at__resolving_discriminator__from_=Ressource {0} bei {1} nicht auffindbar, Diskriminator {2} von {3}
|
||||
|
@ -416,7 +416,7 @@ Version_mismatch_The_context_has_version__loaded_and_the_new_content_being_loade
|
|||
Error_reading__from_package__=Fehler beim Lesen {0} aus dem Paket {1}#{2}: {3}
|
||||
Error_parsing_=Fehler beim Parsen {0}:{1}
|
||||
Unable_to_connect_to_terminology_server_Use_parameter_tx_na_tun_run_without_using_terminology_services_to_validate_LOINC_SNOMED_ICDX_etc_Error__=Keine Verbindung zum Terminologieserver m\u00f6glich. Verwenden Sie den Parameter ''-tx n/a'' um ohne Verwendung von Terminologiediensten zu laufen welche LOINC, SNOMED, ICD-X usw. zu validieren. Fehler = {0}
|
||||
Display_Name_for__should_be_one_of__instead_of_=Der Displayname f\u00fcr {0}#{1} sollte einer von ''{2}'' anstelle von ''{3}'' sein.
|
||||
Display_Name_for__should_be_one_of__instead_of_PLURAL=Der Displayname f\u00fcr {1}#{2} sollte einer von ''{3}'' anstelle von ''{4}'' sein.
|
||||
Unknown_Code__in_=Unbekannter Code {0} in {1}
|
||||
Code_found_in_expansion_however_=Code in der Erweiterung gefunden, jedoch: {0}
|
||||
None_of_the_provided_codes_are_in_the_value_set_=Keiner der bereitgestellten Codes ist im ValueSet {0}
|
||||
|
|
|
@ -13,7 +13,7 @@ Bundle_BUNDLE_Entry_NotFound = Kan ''{0}'' niet vinden in de bundle ({1})
|
|||
Bundle_BUNDLE_Entry_Orphan = Entry {0} is niet bereikbaar via een referentie vanuit de eerste Bundle entry
|
||||
Bundle_BUNDLE_Entry_Type = Het type ''{0}'' is niet geldig - hier zijn resources toegestaan (toegestaan = {1})
|
||||
Bundle_BUNDLE_Entry_Type2 = Het type ''{0}'' is niet geldig - moet zijn {1} (toegestaan = {2})
|
||||
Bundle_BUNDLE_Entry_Type3 = The type ''{0}'' is niet geldig - moet een zijn van {1}
|
||||
Bundle_BUNDLE_Entry_Type3_PLURAL = The type ''{1}'' is niet geldig - moet een zijn van {2}
|
||||
Bundle_BUNDLE_FullUrl_Missing = Relatieve reference in Bundle waarvan de entry een fullUrl mist
|
||||
Bundle_BUNDLE_FullUrl_NeedVersion = Entries die overeenkomen met fullURL {0} moeten meta/versionId bevatten omdat er versie-specifieke references zijn
|
||||
Bundle_BUNDLE_MultipleMatches = Meerdere overeenkomsten in Bundle voor reference {0}
|
||||
|
@ -89,13 +89,13 @@ Questionnaire_QR_Item_NotEnabled = Item heeft een antwoord (2), terwijl deze nie
|
|||
Questionnaire_QR_Item_NotEnabled2 = Item heeft een antwoord, terwijl deze niet actief is (item id = ''{0}'')
|
||||
Questionnaire_QR_Item_NotFound = LinkId ''{0}'' niet gevonden in questionnaire
|
||||
Questionnaire_QR_Item_OnlyOneA = Er is slechts een antwoorditem toegestaan bij dit linkId
|
||||
Questionnaire_QR_Item_OnlyOneI = Er is slechts een item toegestaan bij dit linkId - {0}
|
||||
Questionnaire_QR_Item_OnlyOneI_PLURAL = Er is slechts een item toegestaan bij dit linkId - {1}
|
||||
Questionnaire_QR_Item_Order = Structuurfout: items staan niet in de juiste volgorde
|
||||
Questionnaire_QR_Item_StringNoOptions = Kan string-antwoord niet valideren omdat er geen optielijst is gespecificeerd
|
||||
Questionnaire_QR_Item_Text = Als text bestaat, dan moet dit een questionnaire-definitie bevatten voor linkId {0}
|
||||
Questionnaire_QR_Item_TimeNoOptions = Kan tijd-antwoord niet valideren omdat er geen optielijst is gespecificeerd
|
||||
Questionnaire_QR_Item_WrongType = Antwoord moet type {0} hebben
|
||||
Questionnaire_QR_Item_WrongType2 = Antwoord moet een van de types {0} hebben
|
||||
Questionnaire_QR_Item_WrongType_PLURAL = Antwoord moet een van de types {1} hebben
|
||||
Questionnaire_QR_Q_None = Er is geen questionnaire gedentificeerd, dus validatie tegen de questionnaire is niet mogelijk
|
||||
Questionnaire_QR_Q_NotFound = De questionnaire ''{0}'' is niet gevonden, dus validatie tegen de questionnaire is niet mogelijk
|
||||
Questionnaire_Q_EnableWhen_After = Het doel van deze enableWhen regel ({0}) komt pas na deze vraag
|
||||
|
@ -213,11 +213,11 @@ Validation_VAL_Content_Unknown = Niet-herkende content {0}
|
|||
Validation_VAL_NoType = Onbekend type {0}
|
||||
Validation_VAL_Profile_MatchMultiple = Profiel {0}, element komt overeen met meer dan een slice - {1}, {2}
|
||||
# for the next 4 messages, the available parameters are: 0: profile url, 1: ed.path, 2: ed.id, 3: ed.sliceName, 4: ed.label, 5: element.path, 6: ed.min and optionally 7: actual count
|
||||
Validation_VAL_Profile_Maximum = {2}: max toegestaan = {6}, maar gevonden {7} (uit {0})
|
||||
Validation_VAL_Profile_Minimum = {2}: minimum vereist = {6}, maar gevonden {7} (uit {0})
|
||||
Validation_VAL_Profile_NoCheckMax = {2}: Kan max toegestaan niet controleren ({1}) vanwege missende slicing-validatie (uit {0})
|
||||
Validation_VAL_Profile_NoCheckMin = {2}: Kan min toegestaan niet controleren ({1}) vanwege missende slicing-validatie (uit {0})
|
||||
Validation_VAL_Profile_MultipleMatches = Meerdere overeenkomende profielen gevonden in de opties: {0}
|
||||
Validation_VAL_Profile_Maximum_PLURAL = {3}: max toegestaan = {7}, maar gevonden {0} (uit {1})
|
||||
Validation_VAL_Profile_Minimum_PLURAL = {3}: minimum vereist = {7}, maar gevonden {0} (uit {1})
|
||||
Validation_VAL_Profile_NoCheckMax_PLURAL = {3}: Kan max toegestaan niet controleren ({2}) vanwege missende slicing-validatie (uit {1})
|
||||
Validation_VAL_Profile_NoCheckMin_PLURAL = {3}: Kan min toegestaan niet controleren ({2}) vanwege missende slicing-validatie (uit {1})
|
||||
Validation_VAL_Profile_MultipleMatches_PLURAL = Meerdere overeenkomende profielen gevonden in de opties: {1}
|
||||
Validation_VAL_Profile_NoDefinition = Geen definitie gevonden voor resourcetype ''{0}''
|
||||
Validation_VAL_Profile_NoMatch = Kan geen overeenkomstig profiel vinden in de opties: {0}
|
||||
Validation_VAL_Profile_NoSnapshot = StructureDefinition heeft geen snapshot - validatie is tegen de snapshot, dus deze is verplicht
|
||||
|
@ -256,13 +256,13 @@ Unsupported_Identifier_pattern__extensions_are_not_allowed__for_discriminator_fo
|
|||
Unsupported_fixed_pattern_type_for_discriminator_for_slice__ = Niet-ondersteund vast patroontype voor discriminator ({0}) voor slice {1}: {2}
|
||||
Problem_evaluating_slicing_expression_for_element_in_profile__path__fhirPath___ = Probleem bij controle van slicing-expressie voor element in profiel {0} pad {1} (fhirPath = {2}): {3}
|
||||
Could_not_match_discriminator__for_slice__in_profile___the_discriminator__does_not_have_fixed_value_binding_or_existence_assertions = Kan geen overeenkomende discriminator ({0}) bepalen voor slice {1} in profiel {2} - de discriminator {3} heeft geen vaste waarde, binding of aanwezigheidverplichtingen
|
||||
Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions = Kan geen overeenkomende discriminators ({0}) bepalen voor slice {1} in profiel {2} - Geen van de discriminators {3} hebben een vaste waarde, binding of aanwezigheidverplichtingen
|
||||
Could_not_match_any_discriminators__for_slice__in_profile___None_of_the_discriminator__have_fixed_value_binding_or_existence_assertions_PLURAL = Kan geen overeenkomende discriminators ({1}) bepalen voor slice {2} in profiel {3} - Geen van de discriminators {4} hebben een vaste waarde, binding of aanwezigheidverplichtingen
|
||||
Discriminator__is_based_on_element_existence_but_slice__neither_sets_min1_or_max0 = Discriminator ({0}) is gebaseerd op elementaanwezigheid, maar slice {1} heeft geen min>=1 of max=0
|
||||
Profile_based_discriminators_must_have_a_type_with_a_profile__in_profile_ = Profiel-gebaseerde discriminators moeten een type hebben met een profiel ({0} in profiel {1})
|
||||
Profile_based_discriminators_must_have_only_one_type__in_profile_ = Profiel-gebaseerde discriminators moeten slechts een type bevatten ({0} in profile {1})
|
||||
Profile_based_discriminators_must_have_only_one_type__in_profile_PLURAL = Profiel-gebaseerde discriminators moeten slechts een type bevatten ({1} in profile {2})
|
||||
Profile_based_discriminators_must_have_a_type__in_profile_ = Profiel-gebaseerde discriminators moeten een type hebben ({0} in profile {1})
|
||||
Discriminator__is_based_on_type_but_slice__in__has_no_types = Discriminator ({0}) is gebaseerd op type, maar slice {1} in {2} heeft geen typen
|
||||
Discriminator__is_based_on_type_but_slice__in__has_multiple_types_ = Discriminator ({0}) is gebaseerd op type, maar slice {1} in {2} heeft meerdere typen: {3}
|
||||
Discriminator__is_based_on_type_but_slice__in__has_multiple_types_PLURAL = Discriminator ({1}) is gebaseerd op type, maar slice {2} in {3} heeft meerdere typen: {4}
|
||||
Found__items_for__resolving_discriminator__from_ = {0} items gevonden voor {1} bij controle van discriminator {2} van {3}
|
||||
Unable_to_find__resolving_discriminator__from_ = Kan {0} niet vinden bij controle van discriminator {1} van {2}
|
||||
Unable_to_find_resource__at__resolving_discriminator__from_ = Kan resource {0} niet vinden in {1} bij controle van discriminator {2} van {3}
|
||||
|
@ -425,7 +425,7 @@ Version_mismatch_The_context_has_version__loaded_and_the_new_content_being_loade
|
|||
Error_reading__from_package__ = Fout bij lezen {0} uit package {1}#{2}: {3}
|
||||
Error_parsing_ = Fout bij verwerken {0}:{1}
|
||||
Unable_to_connect_to_terminology_server_Use_parameter_tx_na_tun_run_without_using_terminology_services_to_validate_LOINC_SNOMED_ICDX_etc_Error__ = Kan niet verbinden met terminologieserver. Gebruik parameter ''-tx n/a'' om te starten zonder terminologieservices voor validatie van LOINC, SNOMED, ICD-X etc. Fout = {0}
|
||||
Display_Name_for__should_be_one_of__instead_of_ = Weergavenaam voor {0}#{1} zou een van ''{2}'' moeten zijn in plaats van ''{3}''
|
||||
Display_Name_for__should_be_one_of__instead_of_PLURAL = Weergavenaam voor {1}#{2} zou een van ''{3}'' moeten zijn in plaats van ''{4}''
|
||||
Unknown_Code__in_ = Onbekende code {0} in {1}
|
||||
UNKNOWN_CODE__IN_FRAGMENT = Onbekende code {0} in {1} - merk op dat het codesysteem is gemarkeerd als fragment, waardoor mogelijk geldig is in een ander fragment
|
||||
Code_found_in_expansion_however_ = Code gevonden in expansion, echter: {0}
|
||||
|
@ -490,7 +490,7 @@ MEASURE_M_CRITERIA_CQL_NO_ELM = Fout in {0}: Geen gecompileerde versie van CQL g
|
|||
MEASURE_M_CRITERIA_CQL_ELM_NOT_VALID = = Fout in {0}: Gecompileerde versie van CQL is niet geldig
|
||||
MEASURE_M_CRITERIA_CQL_NOT_FOUND = De functie {1} bestaat niet in de bibliotheek {0}
|
||||
XHTML_URL_EMPTY = URL is leeg
|
||||
XHTML_URL_INVALID_CHARS = URL bevat ongeldige tekens ({0})
|
||||
XHTML_URL_INVALID_CHARS_PLURAL = URL bevat ongeldige tekens ({1})
|
||||
TERMINOLOGY_TX_SYSTEM_HTTPS = De system URL ''{0}'' begint onterecht met https: in plaats van http:
|
||||
CODESYSTEM_CS_NO_VS_NOTCOMPLETE = Review de ''alle codes'' ValueSet - incomplete CodeSystems moeten generiek geen waardelijst voor ''alle codes'' specificeren
|
||||
TYPE_SPECIFIC_CHECKS_DT_IDENTIFIER_IETF_SYSTEM_VALUE = als identifier.system ''urn:ietf:rfc:3986'' is, dan moet de identifier.value een volledige URI zijn (dus beginnen met een scheme)
|
||||
|
@ -539,9 +539,9 @@ FHIRPATH_UNKNOWN_NAME = Fout bij evalueren FHIRPath expressie: De naam {0} is ni
|
|||
FHIRPATH_UNKNOWN_CONSTANT = Fout bij evalueren FHIRPath expressie: Ongeldige FHIR constante {0}
|
||||
FHIRPATH_CANNOT_USE = Fout bij evalueren FHIRPath expressie: Kan {0} niet gebruiken in deze context omdat {1}
|
||||
FHIRPATH_CANT_COMPARE = Fout bij evalueren FHIRPath expressie: Kan geen waarden vergelijken van type {0} en {1}
|
||||
FHIRPATH_LEFT_VALUE_PLURAL = Fout bij evalueren FHIRPath expressie: linker operandus van {0} heeft meer dan een waarde
|
||||
FHIRPATH_LEFT_VALUE_PLURAL = Fout bij evalueren FHIRPath expressie: linker operandus van {1} heeft meer dan een waarde
|
||||
FHIRPATH_LEFT_VALUE_WRONG_TYPE = Fout bij evalueren FHIRPath expressie: linker operandus van {0} heeft het verkeerde type {1}
|
||||
FHIRPATH_RIGHT_VALUE_PLURAL = Fout bij evalueren FHIRPath expressie: rechter operandus van {0} heeft meer dan een waarde
|
||||
FHIRPATH_RIGHT_VALUE_PLURAL = Fout bij evalueren FHIRPath expressie: rechter operandus van {1} heeft meer dan een waarde
|
||||
FHIRPATH_RIGHT_VALUE_WRONG_TYPE = Fout bij evalueren FHIRPath expressie: rechter operandus van {0} heeft het verkeerde type {1}
|
||||
FHIRPATH_OP_INCOMPATIBLE = Fout bij evalueren FHIRPath expressie {0}: linker en rechter operandus hebben incompatibele of ongeldige typen ({1}, {2})
|
||||
FHIRPATH_HO_HOST_SERVICES = Interne fout bij evalueren FHIRPath expressie: er zijn geen host services gespecificeerd ({0})
|
||||
|
@ -560,7 +560,7 @@ FHIRPATH_DISCRIMINATOR_THIS_CANNOT_FIND = Probleem in gebruik van resolve() - pr
|
|||
FHIRPATH_DISCRIMINATOR_RESOLVE_NO_TYPE = onjuist gebruik van resolve() in discriminator - geen type op element {0}
|
||||
FHIRPATH_DISCRIMINATOR_RESOLVE_MULTIPLE_TYPES = onjuist gebruik van resolve() in discriminator - Meerdere mogelijke typen op {0}
|
||||
FHIRPATH_DISCRIMINATOR_RESOLVE_NOT_REFERENCE = onjuist gebruik van resolve() in discriminator - Type op {0} is niet Reference {1}
|
||||
FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET = onjuist gebruik van resolve() in discriminator - Meerdere mogelijke doelprofielen op {0}
|
||||
FHIRPATH_RESOLVE_DISCRIMINATOR_NO_TARGET_PLURAL = onjuist gebruik van resolve() in discriminator - Meerdere mogelijke doelprofielen op {1}
|
||||
FHIRPATH_RESOLVE_DISCRIMINATOR_CANT_FIND = Probleem met gebruik van resolve() - profiel {0} op {1} is niet gevonden
|
||||
FHIRPATH_DISCRIMINATOR_TYPE_NONE = onjuist gebruik van ofType() in discriminator - geen type op element {0}
|
||||
FHIRPATH_DISCRIMINATOR_TYPE_MULTIPLE = onjuist gebruik van ofType() in discriminator - Meerdere mogelijke typen op {0}
|
||||
|
@ -570,8 +570,8 @@ FHIRPATH_DISCRIMINATOR_BAD_SYNTAX_GROUP = onjuiste expressiesyntax in discrimina
|
|||
FHIRPATH_DISCRIMINATOR_BAD_SYNTAX_CONST = onjuiste expressiesyntax in discriminator (const)
|
||||
FHIRPATH_DISCRIMINATOR_CANT_FIND = Kan discriminator niet vinden in definities: {0}
|
||||
FHIRPATH_DISCRIMINATOR_NOTYPE = Fout in discriminator bij {0}: geen onderliggende elementen, geen type
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES = Fout in discriminator bij {0}: geen onderliggende elementen, meerdere typen
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES = Fout in discriminator bij {0}: geen onderliggende elementen, meerdere typeprofielen
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_TYPES_PLURAL = Fout in discriminator bij {1}: geen onderliggende elementen, meerdere typen
|
||||
FHIRPATH_DISCRIMINATOR_MULTIPLE_PROFILES_PLURAL = Fout in discriminator bij {1}: geen onderliggende elementen, meerdere typeprofielen
|
||||
FHIRPATH_UNABLE_BOOLEAN = Kan niet verwerken als een boolean: {0}
|
||||
XHTML_XHTML_DOCTYPE_ILLEGAL = Misvormde XHTML: DocType declaratie gevonden en deze zijn niet toegestaan (bescherming tegen XXE veiligheidsrisico)
|
||||
PACKAGE_VERSION_MISMATCH = FHIR-versie incorrect in package {0}: versie is {2} moet moet zijn {1} (pad: {3})
|
||||
|
@ -581,7 +581,7 @@ SD_MUST_HAVE_DERIVATION = StructureDefinition {0} moet een derivation bevatten,
|
|||
VALIDATION_VAL_PROFILE_OTHER_VERSION = Profiel is voor een andere versie van FHIR ({0}) dus wordt genegeerd
|
||||
VALIDATION_VAL_PROFILE_THIS_VERSION_OK = Profiel voor deze versie van FHIR - alles in orde
|
||||
VALIDATION_VAL_PROFILE_THIS_VERSION_OTHER = Profiel is voor deze versie van FHIR, maar heeft een onjuist type {0}
|
||||
BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES = Meerdere profielen gevonden voor contained resource. Dit wordt momenteel niet ondersteund. (Type {0}: {1})
|
||||
BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_PLURAL = Meerdere profielen gevonden voor contained resource. Dit wordt momenteel niet ondersteund. (Type {2}: {3})
|
||||
RENDER_BUNDLE_HEADER_ROOT = Bundle {0} van type {1}
|
||||
RENDER_BUNDLE_HEADER_ENTRY = Entry {0}
|
||||
RENDER_BUNDLE_HEADER_ENTRY_URL = Entry {0} - Full URL = {1}
|
||||
|
@ -608,7 +608,7 @@ TERMINOLOGY_TX_SYSTEM_WRONG_BUILD = De codesysteemverwijzing {0} is incorrect -
|
|||
FHIRPATH_BAD_DATE = Kan Date {0} niet verwerken
|
||||
FHIRPATH_NUMERICAL_ONLY = Fout bij evalueren FHIRPath expressie: De functie {0} kan alleen worden gebruikt met integer, decimal of Quantity maar gevonden {1}
|
||||
FHIRPATH_DECIMAL_ONLY = Fout bij evalueren FHIRPath expressie: De functie {0} kan alleen worden gebruikt met decimal maar gevonden {1}
|
||||
FHIRPATH_FOCUS_PLURAL = Fout bij evalueren FHIRPath expressie: focus voor {0} heeft meer dan een waarde
|
||||
FHIRPATH_FOCUS_PLURAL = Fout bij evalueren FHIRPath expressie: focus voor {1} heeft meer dan een waarde
|
||||
REFERENCE_REF_SUSPICIOUS = De syntax van de reference ''{0}'' oogt incorrect en moeten worden gecontroleerd
|
||||
TYPE_SPECIFIC_CHECKS_DT_QTY_NO_ANNOTATIONS = UCUM-codes met menselijk leesbare annotaties zoals {0} kunnen misleidend zijn. Aanbevolen is om geen annotaties in de UCUM-code te gebruiken en in plaats daarvan te zorgen dat Quantity.unit goed leesbaar is
|
||||
XHTML_XHTML_ELEMENT_ILLEGAL_IN_PARA = Ongeldige elementnaam binnen een paragraph in de XHTML (''{0}'')
|
||||
|
|
|
@ -320,6 +320,14 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
return thePass;
|
||||
}
|
||||
|
||||
protected boolean hintPL(List<ValidationMessage> errors, IssueType type, int line, int col, String path, boolean thePass, int num, String theMessage, Object... theMessageArguments) {
|
||||
if (!thePass && doingHints()) {
|
||||
String message = context.formatMessagePL(num, theMessage, theMessageArguments);
|
||||
addValidationMessage(errors, type, line, col, path, message, IssueSeverity.INFORMATION, theMessage);
|
||||
}
|
||||
return thePass;
|
||||
}
|
||||
|
||||
protected ValidationMessage signpost(List<ValidationMessage> errors, IssueType type, int line, int col, String path, String theMessage, Object... theMessageArguments) {
|
||||
String message = context.formatMessage(theMessage, theMessageArguments);
|
||||
return addValidationMessage(errors, type, line, col, path, message, IssueSeverity.INFORMATION, theMessage).setSignpost(true);
|
||||
|
@ -379,6 +387,14 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
return thePass;
|
||||
}
|
||||
|
||||
protected boolean rulePL(List<ValidationMessage> errors, IssueType type, int line, int col, String path, boolean thePass, int num, String theMessage, Object... theMessageArguments) {
|
||||
if (!thePass && doingErrors()) {
|
||||
String message = context.formatMessagePL(num, theMessage, theMessageArguments);
|
||||
addValidationMessage(errors, type, line, col, path, message, IssueSeverity.ERROR, theMessage);
|
||||
}
|
||||
return thePass;
|
||||
}
|
||||
|
||||
protected boolean txRule(List<ValidationMessage> errors, String txLink, IssueType type, int line, int col, String path, boolean thePass, String theMessage, Object... theMessageArguments) {
|
||||
if (!thePass && doingErrors()) {
|
||||
String message = context.formatMessage(theMessage, theMessageArguments);
|
||||
|
@ -438,6 +454,14 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
return thePass;
|
||||
}
|
||||
|
||||
protected boolean rulePL(List<ValidationMessage> errors, IssueType type, String path, boolean thePass, int num, String theMessage, Object... theMessageArguments) {
|
||||
if (!thePass && doingErrors()) {
|
||||
String message = context.formatMessagePL(num, theMessage, theMessageArguments);
|
||||
addValidationMessage(errors, type, -1, -1, path, message, IssueSeverity.ERROR, theMessage);
|
||||
}
|
||||
return thePass;
|
||||
}
|
||||
|
||||
public boolean rule(List<ValidationMessage> errors, Source source, IssueType type, String path, boolean thePass, String msg) {
|
||||
if (!thePass && doingErrors()) {
|
||||
addValidationMessage(errors, type, -1, -1, path, msg, IssueSeverity.ERROR, source, null);
|
||||
|
@ -506,6 +530,16 @@ public class BaseValidator implements IValidationContextResourceLoader {
|
|||
|
||||
}
|
||||
|
||||
protected boolean warningPL(List<ValidationMessage> errors, IssueType type, int line, int col, String path, boolean thePass, int num, String msg, Object... theMessageArguments) {
|
||||
if (!thePass && doingWarnings()) {
|
||||
String nmsg = context.formatMessagePL(num, msg, theMessageArguments);
|
||||
IssueSeverity severity = IssueSeverity.WARNING;
|
||||
addValidationMessage(errors, type, line, col, path, nmsg, severity, msg);
|
||||
}
|
||||
return thePass;
|
||||
|
||||
}
|
||||
|
||||
protected ValidationMessage addValidationMessage(List<ValidationMessage> errors, IssueType type, int line, int col, String path, String msg, IssueSeverity theSeverity, String id) {
|
||||
Source source = this.source;
|
||||
return addValidationMessage(errors, type, line, col, path, msg, theSeverity, source, id);
|
||||
|
|
|
@ -148,6 +148,7 @@ import org.hl7.fhir.r5.utils.FHIRLexer.FHIRLexerException;
|
|||
import org.hl7.fhir.r5.utils.FHIRPathEngine;
|
||||
import org.hl7.fhir.r5.utils.FHIRPathEngine.IEvaluationContext;
|
||||
import org.hl7.fhir.r5.utils.FHIRPathEngine.TypedElementDefinition;
|
||||
import org.hl7.fhir.r5.utils.ResourceUtilities;
|
||||
import org.hl7.fhir.r5.utils.ToolingExtensions;
|
||||
import org.hl7.fhir.r5.utils.XVerExtensionManager;
|
||||
import org.hl7.fhir.r5.utils.validation.BundleValidationRule;
|
||||
|
@ -661,18 +662,20 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
@Override
|
||||
public org.hl7.fhir.r5.elementmodel.Element validate(Object appContext, List<ValidationMessage> errors, InputStream stream, FhirFormat format, List<StructureDefinition> profiles) throws FHIRException {
|
||||
ParserBase parser = Manager.makeParser(context, format);
|
||||
List<StructureDefinition> logicals = new ArrayList<>();
|
||||
for (StructureDefinition sd : profiles) {
|
||||
if (sd.getKind() == StructureDefinitionKind.LOGICAL) {
|
||||
if (parser.hasLogical()) {
|
||||
rule(errors, IssueType.BUSINESSRULE, "Configuration", false, "Multiple Logical Models found in supplied profiles: "+sd.getUrl()+" & "+parser.getLogical().getUrl());
|
||||
return null;
|
||||
} else {
|
||||
parser.setLogical(sd);
|
||||
}
|
||||
logicals.add(sd);
|
||||
}
|
||||
}
|
||||
if (parser instanceof XmlParser)
|
||||
if (logicals.size() > 0) {
|
||||
if (rulePL(errors, IssueType.BUSINESSRULE, "Configuration", logicals.size() == 1, logicals.size(), I18nConstants.MULTIPLE_LOGICAL_MODELS_PLURAL, ResourceUtilities.listUrls(logicals))) {
|
||||
parser.setLogical(logicals.get(0));
|
||||
}
|
||||
}
|
||||
if (parser instanceof XmlParser) {
|
||||
((XmlParser) parser).setAllowXsiLocation(allowXsiLocation);
|
||||
}
|
||||
parser.setupValidation(ValidationPolicy.EVERYTHING, errors);
|
||||
long t = System.nanoTime();
|
||||
List<NamedElement> list = null;
|
||||
|
@ -1220,9 +1223,9 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
bindingsOk = false;
|
||||
if (vr.getErrorClass() != null && vr.getErrorClass() == TerminologyServiceErrorClass.NOSERVICE) {
|
||||
if (binding.getStrength() == BindingStrength.REQUIRED || (binding.getStrength() == BindingStrength.EXTENSIBLE && binding.hasExtension(ToolingExtensions.EXT_MAX_VALUESET))) {
|
||||
hint(errors, IssueType.CODEINVALID, element.line(), element.col(), path, false, I18nConstants.TERMINOLOGY_TX_NOSVC_BOUND_REQ, describeReference(binding.getValueSet()));
|
||||
txHint(errors, vr.getTxLink(), IssueType.CODEINVALID, element.line(), element.col(), path, false, I18nConstants.TERMINOLOGY_TX_NOSVC_BOUND_REQ, describeReference(binding.getValueSet()));
|
||||
} else if (binding.getStrength() == BindingStrength.EXTENSIBLE) {
|
||||
hint(errors, IssueType.CODEINVALID, element.line(), element.col(), path, false, I18nConstants.TERMINOLOGY_TX_NOSVC_BOUND_EXT, describeReference(binding.getValueSet()));
|
||||
txHint(errors, vr.getTxLink(), IssueType.CODEINVALID, element.line(), element.col(), path, false, I18nConstants.TERMINOLOGY_TX_NOSVC_BOUND_EXT, describeReference(binding.getValueSet()));
|
||||
}
|
||||
} else if (vr.getErrorClass() != null && vr.getErrorClass().isInfrastructure()) {
|
||||
if (binding.getStrength() == BindingStrength.REQUIRED)
|
||||
|
@ -2458,7 +2461,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
i++;
|
||||
}
|
||||
if (i < raw.length()-1 ) {
|
||||
ok = !warningOrError(htmlInMarkdownCheck == HtmlInMarkdownCheck.ERROR, errors, IssueType.INVALID, e.line(), e.col(), path, false, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_MARKDOWN_HTML, raw.subSequence(i, i+2)) && ok;
|
||||
ok = warningOrError(htmlInMarkdownCheck == HtmlInMarkdownCheck.ERROR, errors, IssueType.INVALID, e.line(), e.col(), path, false, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_MARKDOWN_HTML, raw.subSequence(i, i+2)) && ok;
|
||||
} else {
|
||||
ok = warningOrError(htmlInMarkdownCheck == HtmlInMarkdownCheck.ERROR, errors, IssueType.INVALID, e.line(), e.col(), path, false, I18nConstants.TYPE_SPECIFIC_CHECKS_DT_MARKDOWN_HTML, raw) && ok;
|
||||
}
|
||||
|
@ -2811,15 +2814,17 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
return null;
|
||||
} else {
|
||||
Set<Character> invalidChars = new HashSet<>();
|
||||
int c = 0;
|
||||
for (char ch : value.toCharArray()) {
|
||||
if (!(Character.isDigit(ch) || Character.isAlphabetic(ch) || Utilities.existsInList(ch, ';', '?', ':', '@', '&', '=', '+', '$', '.', ',', '/', '%', '-', '_', '~', '#', '[', ']', '!', '\'', '(', ')', '*', '|' ))) {
|
||||
c++;
|
||||
invalidChars.add(ch);
|
||||
}
|
||||
}
|
||||
if (invalidChars.isEmpty()) {
|
||||
return null;
|
||||
} else {
|
||||
return context.formatMessage(I18nConstants.XHTML_URL_INVALID_CHARS, invalidChars.toString());
|
||||
return context.formatMessagePL(c, I18nConstants.XHTML_URL_INVALID_CHARS_PLURAL, invalidChars.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4237,7 +4242,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
throw new DefinitionException(context.formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_NO_TYPES, discriminator, ed.getId(), profile.getUrl()));
|
||||
}
|
||||
} else if (criteriaElement.getType().size() > 1) {
|
||||
throw new DefinitionException(context.formatMessage(I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_MULTIPLE_TYPES_, discriminator, ed.getId(), profile.getUrl(), criteriaElement.typeSummary()));
|
||||
throw new DefinitionException(context.formatMessagePL(criteriaElement.getType().size(), I18nConstants.DISCRIMINATOR__IS_BASED_ON_TYPE_BUT_SLICE__IN__HAS_MULTIPLE_TYPES_PLURAL, discriminator, ed.getId(), profile.getUrl(), criteriaElement.typeSummary()));
|
||||
} else
|
||||
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()) {
|
||||
|
@ -4250,7 +4255,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
throw new DefinitionException(context.formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_A_TYPE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
||||
}
|
||||
if (criteriaElement.getType().size() != 1) {
|
||||
throw new DefinitionException(context.formatMessage(I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_ONLY_ONE_TYPE__IN_PROFILE_, criteriaElement.getId(), profile.getUrl()));
|
||||
throw new DefinitionException(context.formatMessagePL(criteriaElement.getType().size(), I18nConstants.PROFILE_BASED_DISCRIMINATORS_MUST_HAVE_ONLY_ONE_TYPE__IN_PROFILE_PLURAL, criteriaElement.getId(), profile.getUrl()));
|
||||
}
|
||||
List<CanonicalType> list = discriminator.endsWith(".resolve()") || discriminator.equals("resolve()") ? criteriaElement.getType().get(0).getTargetProfile() : criteriaElement.getType().get(0).getProfile();
|
||||
if (list.size() == 0) {
|
||||
|
@ -4289,7 +4294,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
if (!anyFound) {
|
||||
if (slicer.getSlicing().getDiscriminator().size() > 1)
|
||||
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));
|
||||
throw new DefinitionException(context.formatMessagePL(slicer.getSlicing().getDiscriminator().size(), I18nConstants.COULD_NOT_MATCH_ANY_DISCRIMINATORS__FOR_SLICE__IN_PROFILE___NONE_OF_THE_DISCRIMINATOR__HAVE_FIXED_VALUE_BINDING_OR_EXISTENCE_ASSERTIONS_PLURAL, discriminators, ed.getId(), profile.getUrl(), discriminators));
|
||||
else
|
||||
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));
|
||||
}
|
||||
|
@ -5093,8 +5098,8 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
for (CanonicalType u : typeForResource.getProfile()) {
|
||||
b.append(u.asStringValue());
|
||||
}
|
||||
ok = rule(errors, IssueType.INVALID, element.line(), element.col(), stack.getLiteralPath(),
|
||||
false, I18nConstants.BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES, special.toHuman(), typeForResource.getCode(), b.toString()) && ok;
|
||||
ok = rulePL(errors, IssueType.INVALID, element.line(), element.col(), stack.getLiteralPath(),
|
||||
false, typeForResource.getProfile().size(), I18nConstants.BUNDLE_BUNDLE_ENTRY_MULTIPLE_PROFILES_PLURAL, special.toHuman(), typeForResource.getCode(), b.toString()) && ok;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -5108,9 +5113,10 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
if (types.size() == 1) {
|
||||
ok = rule(errors, IssueType.INFORMATIONAL, element.line(), element.col(), stack.getLiteralPath(),
|
||||
false, I18nConstants.BUNDLE_BUNDLE_ENTRY_TYPE2, resourceName, types.get(0)) && ok;
|
||||
|
||||
} else {
|
||||
ok = rule(errors, IssueType.INFORMATIONAL, element.line(), element.col(), stack.getLiteralPath(),
|
||||
false, I18nConstants.BUNDLE_BUNDLE_ENTRY_TYPE3, resourceName, types) && ok;
|
||||
ok = rulePL(errors, IssueType.INFORMATIONAL, element.line(), element.col(), stack.getLiteralPath(),
|
||||
false, types.size(), I18nConstants.BUNDLE_BUNDLE_ENTRY_TYPE3_PLURAL, resourceName, types) && ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5519,7 +5525,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
}
|
||||
} else {
|
||||
warning(errors, IssueType.STRUCTURE, ei.line(), ei.col(), ei.getPath(), false, I18nConstants.VALIDATION_VAL_PROFILE_MULTIPLEMATCHES, StringUtils.join("; ", goodProfiles.keySet()));
|
||||
warningPL(errors, IssueType.STRUCTURE, ei.line(), ei.col(), ei.getPath(), false, goodProfiles.size(), I18nConstants.VALIDATION_VAL_PROFILE_MULTIPLEMATCHES_PLURAL, ResourceUtilities.listStrings(goodProfiles.keySet()));
|
||||
for (String m : goodProfiles.keySet()) {
|
||||
p = this.context.fetchResource(StructureDefinition.class, m);
|
||||
for (ValidationMessage message : goodProfiles.get(m)) {
|
||||
|
@ -5658,18 +5664,18 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||
}
|
||||
if (ed.getMin() > 0) {
|
||||
if (problematicPaths.contains(ed.getPath()))
|
||||
hint(errors, IssueType.NOTSUPPORTED, element.line(), element.col(), stack.getLiteralPath(), count >= ed.getMin(), I18nConstants.VALIDATION_VAL_PROFILE_NOCHECKMIN, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), Integer.toString(ed.getMin()));
|
||||
hintPL(errors, IssueType.NOTSUPPORTED, element.line(), element.col(), stack.getLiteralPath(), count >= ed.getMin(), count, I18nConstants.VALIDATION_VAL_PROFILE_NOCHECKMIN_PLURAL, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), Integer.toString(ed.getMin()));
|
||||
else {
|
||||
if (count < ed.getMin()) {
|
||||
ok = rule(errors, IssueType.STRUCTURE, element.line(), element.col(), stack.getLiteralPath(), false, I18nConstants.VALIDATION_VAL_PROFILE_MINIMUM, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), Integer.toString(ed.getMin()), Integer.toString(count)) && ok;
|
||||
ok = rulePL(errors, IssueType.STRUCTURE, element.line(), element.col(), stack.getLiteralPath(), false, count, I18nConstants.VALIDATION_VAL_PROFILE_MINIMUM_PLURAL, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), Integer.toString(ed.getMin())) && ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ed.hasMax() && !ed.getMax().equals("*")) {
|
||||
if (problematicPaths.contains(ed.getPath()))
|
||||
hint(errors, IssueType.NOTSUPPORTED, element.line(), element.col(), stack.getLiteralPath(), count <= Integer.parseInt(ed.getMax()), I18nConstants.VALIDATION_VAL_PROFILE_NOCHECKMAX, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), ed.getMax());
|
||||
hintPL(errors, IssueType.NOTSUPPORTED, element.line(), element.col(), stack.getLiteralPath(), count <= Integer.parseInt(ed.getMax()), count, I18nConstants.VALIDATION_VAL_PROFILE_NOCHECKMAX_PLURAL, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), ed.getMax());
|
||||
else if (count > Integer.parseInt(ed.getMax())) {
|
||||
ok = rule(errors, IssueType.STRUCTURE, element.line(), element.col(), stack.getLiteralPath(), false, I18nConstants.VALIDATION_VAL_PROFILE_MAXIMUM, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), ed.getMax(), Integer.toString(count)) && ok;
|
||||
ok = rulePL(errors, IssueType.STRUCTURE, element.line(), element.col(), stack.getLiteralPath(), false, count, I18nConstants.VALIDATION_VAL_PROFILE_MAXIMUM_PLURAL, profile.getUrl(), ed.getPath(), ed.getId(), ed.getSliceName(),ed.getLabel(), stack.getLiteralPath(), ed.getMax(), Integer.toString(count)) && ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -402,7 +402,7 @@ public class QuestionnaireValidator extends BaseValidator {
|
|||
private boolean validateQuestionnaireResponseItem(ValidatorHostContext hostcontext, QuestionnaireWithContext qsrc, QuestionnaireItemComponent qItem, List<ValidationMessage> errors, List<ElementWithIndex> elements, NodeStack stack, boolean inProgress, Element questionnaireResponseRoot, QStack qstack) {
|
||||
boolean ok = true;
|
||||
if (elements.size() > 1) {
|
||||
ok = rule(errors, IssueType.INVALID, elements.get(1).getElement().line(), elements.get(1).getElement().col(), stack.getLiteralPath(), qItem.getRepeats(), I18nConstants.QUESTIONNAIRE_QR_ITEM_ONLYONEI, qItem.getLinkId()) && ok;
|
||||
ok = rulePL(errors, IssueType.INVALID, elements.get(1).getElement().line(), elements.get(1).getElement().col(), stack.getLiteralPath(), qItem.getRepeats(), elements.size(), I18nConstants.QUESTIONNAIRE_QR_ITEM_ONLYONEI_PLURAL, qItem.getLinkId()) && ok;
|
||||
}
|
||||
for (ElementWithIndex element : elements) {
|
||||
NodeStack ns = stack.push(element.getElement(), element.getIndex(), null, null);
|
||||
|
@ -521,7 +521,7 @@ public class QuestionnaireValidator extends BaseValidator {
|
|||
if (types.length == 1)
|
||||
ok.see(rule(errors, IssueType.STRUCTURE, values.get(0).line(), values.get(0).col(), ns.getLiteralPath(), false, I18nConstants.QUESTIONNAIRE_QR_ITEM_WRONGTYPE, types[0]));
|
||||
else
|
||||
ok.see(rule(errors, IssueType.STRUCTURE, values.get(0).line(), values.get(0).col(), ns.getLiteralPath(), false, I18nConstants.QUESTIONNAIRE_QR_ITEM_WRONGTYPE2, l.toString()));
|
||||
ok.see(rulePL(errors, IssueType.STRUCTURE, values.get(0).line(), values.get(0).col(), ns.getLiteralPath(), false, types.length, I18nConstants.QUESTIONNAIRE_QR_ITEM_WRONGTYPE_PLURAL, l.toString()));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -1977,3 +1977,188 @@ v: {
|
|||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "59408-5",
|
||||
"display" : "O2 % BldC Oximetry"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood by Pulse oximetry",
|
||||
"code" : "59408-5",
|
||||
"system" : "http://loinc.org",
|
||||
"severity" : "warning",
|
||||
"error" : "The display \"O2 % BldC Oximetry\" is not a valid display for the code {http://loinc.org}59408-5 - should be one of ['Oxygen saturation in Arterial blood by Pulse oximetry', 'SaO2 % BldA PulseOx', '', 'O2 SaO2' (pl-PL), 'saturacja krwi tlenem' (pl-PL), 'MFr O2' (zh-CN), 'tO2' (zh-CN), '总氧' (zh-CN), '氧气 SaO2 动脉血 动脉血O2饱和度 可用数量表示的' (zh-CN), '定量性' (zh-CN), '数值型' (zh-CN), '数量型' (zh-CN), '连续数值型标尺 时刻' (zh-CN), '随机' (zh-CN), '随意' (zh-CN), '瞬间 肺部测量指标与呼吸机管理 脉搏血氧测定法' (zh-CN), '脉搏血氧定量' (zh-CN), '脉搏血氧测定' (zh-CN), '脉搏血氧仪 血氧测定法 饱和 饱和状态 饱和程度' (zh-CN), 'O2-Sättigung' (de-DE), 'Frazione di massa Gestione ventilazione polmonare Punto nel tempo (episodio) Sangue arterioso' (it-IT), 'Oksijen doymuşluğu' (tr-TR), 'Количественный Кровь артериальная Массовая доля Насыщение кислородом Оксигемометрия' (ru-RU), 'Гемоксиметрия Точка во времени' (ru-RU), 'Момент' (ru-RU), 'O2 SatO2' (fr-BE)] (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "2708-6",
|
||||
"display" : "Oxygen saturation in Arterial blood"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood",
|
||||
"code" : "2708-6",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3150-0",
|
||||
"display" : "Inhaled Oxygen Concentration"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen concentration",
|
||||
"code" : "3150-0",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3151-8",
|
||||
"display" : "Flow Rate"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen flow rate",
|
||||
"code" : "3151-8",
|
||||
"system" : "http://loinc.org",
|
||||
"severity" : "warning",
|
||||
"error" : "The display \"Flow Rate\" is not a valid display for the code {http://loinc.org}3151-8 - should be one of ['Inhaled oxygen flow rate', 'Inhaled O2 flow rate', '', 'O2' (zh-CN), 'tO2' (zh-CN), '总氧' (zh-CN), '氧气 体积速率(单位时间)' (zh-CN), '单位时间内体积的变化速率' (zh-CN), '流量 可用数量表示的' (zh-CN), '定量性' (zh-CN), '数值型' (zh-CN), '数量型' (zh-CN), '连续数值型标尺 吸入气' (zh-CN), '吸入气体' (zh-CN), '吸入的空气 所吸入的氧' (zh-CN), '已吸入的氧气 时刻' (zh-CN), '随机' (zh-CN), '随意' (zh-CN), '瞬间 气 气体类 空气' (zh-CN), 'Inhaled O2' (pt-BR), 'vRate' (pt-BR), 'Volume rate' (pt-BR), 'Flow' (pt-BR), 'Point in time' (pt-BR), 'Random' (pt-BR), 'IhG' (pt-BR), 'Inhaled Gas' (pt-BR), 'Inspired' (pt-BR), 'Quantitative' (pt-BR), 'QNT' (pt-BR), 'Quant' (pt-BR), 'Quan' (pt-BR), 'Gases' (pt-BR), 'Clinico Gas inalati Punto nel tempo (episodio) Tasso di Volume' (it-IT), 'Количественный Объемная скорость Точка во времени' (ru-RU), 'Момент' (ru-RU), 'ingeademde O2' (nl-NL), 'O2-Zufuhr' (de-AT)] (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "59408-5"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs--0", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood by Pulse oximetry",
|
||||
"code" : "59408-5",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "2708-6"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs--0", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"severity" : "error",
|
||||
"error" : "The code provided (http://loinc.org#2708-6) is not valid (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "2708-6"
|
||||
}, "url": "http://hl7.org/fhir/ValueSet/observation-vitalsignresult--0", "version": "4.0.1", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood",
|
||||
"code" : "2708-6",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "59408-5",
|
||||
"display" : "O2 % BldC Oximetry"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"NO_MEMBERSHIP_CHECK", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood by Pulse oximetry",
|
||||
"code" : "59408-5",
|
||||
"system" : "http://loinc.org",
|
||||
"severity" : "warning",
|
||||
"error" : "The display \"O2 % BldC Oximetry\" is not a valid display for the code {http://loinc.org}59408-5 - should be one of ['Oxygen saturation in Arterial blood by Pulse oximetry', 'SaO2 % BldA PulseOx', '', 'O2 SaO2' (pl-PL), 'saturacja krwi tlenem' (pl-PL), 'MFr O2' (zh-CN), 'tO2' (zh-CN), '总氧' (zh-CN), '氧气 SaO2 动脉血 动脉血O2饱和度 可用数量表示的' (zh-CN), '定量性' (zh-CN), '数值型' (zh-CN), '数量型' (zh-CN), '连续数值型标尺 时刻' (zh-CN), '随机' (zh-CN), '随意' (zh-CN), '瞬间 肺部测量指标与呼吸机管理 脉搏血氧测定法' (zh-CN), '脉搏血氧定量' (zh-CN), '脉搏血氧测定' (zh-CN), '脉搏血氧仪 血氧测定法 饱和 饱和状态 饱和程度' (zh-CN), 'O2-Sättigung' (de-DE), 'Frazione di massa Gestione ventilazione polmonare Punto nel tempo (episodio) Sangue arterioso' (it-IT), 'Oksijen doymuşluğu' (tr-TR), 'Количественный Кровь артериальная Массовая доля Насыщение кислородом Оксигемометрия' (ru-RU), 'Гемоксиметрия Точка во времени' (ru-RU), 'Момент' (ru-RU), 'O2 SatO2' (fr-BE)] (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "2708-6",
|
||||
"display" : "Oxygen saturation in Arterial blood"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"NO_MEMBERSHIP_CHECK", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood",
|
||||
"code" : "2708-6",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "59408-5"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood by Pulse oximetry",
|
||||
"code" : "59408-5",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "2708-6"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Oxygen saturation in Arterial blood",
|
||||
"code" : "2708-6",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3150-0"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs--0", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen concentration",
|
||||
"code" : "3150-0",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3150-0",
|
||||
"display" : "Inhaled Oxygen Concentration"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"NO_MEMBERSHIP_CHECK", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen concentration",
|
||||
"code" : "3150-0",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3150-0"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen concentration",
|
||||
"code" : "3150-0",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3151-8"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs--0", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen flow rate",
|
||||
"code" : "3151-8",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3151-8",
|
||||
"display" : "Flow Rate"
|
||||
}, "url": "http://hl7.org/fhir/us/core/ValueSet/us-core-vital-signs", "version": "4.0.0", "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"NO_MEMBERSHIP_CHECK", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen flow rate",
|
||||
"code" : "3151-8",
|
||||
"system" : "http://loinc.org",
|
||||
"severity" : "warning",
|
||||
"error" : "The display \"Flow Rate\" is not a valid display for the code {http://loinc.org}3151-8 - should be one of ['Inhaled oxygen flow rate', 'Inhaled O2 flow rate', '', 'O2' (zh-CN), 'tO2' (zh-CN), '总氧' (zh-CN), '氧气 体积速率(单位时间)' (zh-CN), '单位时间内体积的变化速率' (zh-CN), '流量 可用数量表示的' (zh-CN), '定量性' (zh-CN), '数值型' (zh-CN), '数量型' (zh-CN), '连续数值型标尺 吸入气' (zh-CN), '吸入气体' (zh-CN), '吸入的空气 所吸入的氧' (zh-CN), '已吸入的氧气 时刻' (zh-CN), '随机' (zh-CN), '随意' (zh-CN), '瞬间 气 气体类 空气' (zh-CN), 'Inhaled O2' (pt-BR), 'vRate' (pt-BR), 'Volume rate' (pt-BR), 'Flow' (pt-BR), 'Point in time' (pt-BR), 'Random' (pt-BR), 'IhG' (pt-BR), 'Inhaled Gas' (pt-BR), 'Inspired' (pt-BR), 'Quantitative' (pt-BR), 'QNT' (pt-BR), 'Quant' (pt-BR), 'Quan' (pt-BR), 'Gases' (pt-BR), 'Clinico Gas inalati Punto nel tempo (episodio) Tasso di Volume' (it-IT), 'Количественный Объемная скорость Точка во времени' (ru-RU), 'Момент' (ru-RU), 'ingeademde O2' (nl-NL), 'O2-Zufuhr' (de-AT)] (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://loinc.org",
|
||||
"code" : "3151-8"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "Inhaled oxygen flow rate",
|
||||
"code" : "3151-8",
|
||||
"system" : "http://loinc.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
|
|
|
@ -225,3 +225,32 @@ v: {
|
|||
"system" : "http://unitsofmeasure.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "L/min"
|
||||
}, "valueSet" :null, "lang":"null", "useServer":"true", "useClient":"true", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "L/min",
|
||||
"code" : "L/min",
|
||||
"system" : "http://unitsofmeasure.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "%"
|
||||
}, "url": "http://hl7.org/fhir/ValueSet/ucum-vitals-common--0", "version": "4.0.1", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"display" : "percent",
|
||||
"code" : "%",
|
||||
"system" : "http://unitsofmeasure.org"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
{"code" : {
|
||||
"system" : "http://unitsofmeasure.org",
|
||||
"code" : "L/min"
|
||||
}, "url": "http://hl7.org/fhir/ValueSet/ucum-vitals-common--0", "version": "4.0.1", "lang":"null", "useServer":"true", "useClient":"false", "guessSystem":"false", "valueSetMode":"ALL_CHECKS", "versionFlexible":"false"}####
|
||||
v: {
|
||||
"severity" : "error",
|
||||
"error" : "The code provided (http://unitsofmeasure.org#L/min) is not valid (from http://tx.fhir.org/r4)"
|
||||
}
|
||||
-------------------------------------------------------------------------------------
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -19,7 +19,7 @@
|
|||
|
||||
<properties>
|
||||
<hapi_fhir_version>5.4.0</hapi_fhir_version>
|
||||
<validator_test_case_version>1.1.120</validator_test_case_version>
|
||||
<validator_test_case_version>1.1.121-SNAPSHOT</validator_test_case_version>
|
||||
<junit_jupiter_version>5.7.1</junit_jupiter_version>
|
||||
<junit_platform_launcher_version>1.8.2</junit_platform_launcher_version>
|
||||
<maven_surefire_version>3.0.0-M5</maven_surefire_version>
|
||||
|
|
Loading…
Reference in New Issue