Fix to use derived element cardinality not element base cardinality when elementdefinition-json-name is present
This commit is contained in:
parent
6b0175ed38
commit
31764fc016
|
@ -504,7 +504,7 @@ public class JsonParser extends ParserBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (property.isList()) {
|
if (property.isJsonList()) {
|
||||||
logError(errors, ValidationMessage.NO_RULE_DATE, line(e), col(e), npath, IssueType.INVALID, context.formatMessage(I18nConstants.THIS_PROPERTY_MUST_BE_AN_ARRAY_NOT_, describe(e), name, path), IssueSeverity.ERROR);
|
logError(errors, ValidationMessage.NO_RULE_DATE, line(e), col(e), npath, IssueType.INVALID, context.formatMessage(I18nConstants.THIS_PROPERTY_MUST_BE_AN_ARRAY_NOT_, describe(e), name, path), IssueSeverity.ERROR);
|
||||||
}
|
}
|
||||||
parseChildComplexInstance(errors, npath, fpath, element, property, name, e, null, null, null);
|
parseChildComplexInstance(errors, npath, fpath, element, property, name, e, null, null, null);
|
||||||
|
@ -611,7 +611,7 @@ public class JsonParser extends ParserBase {
|
||||||
logError(errors, "2022-11-26", line(main.getValue()), col(main.getValue()), path, IssueType.INVALID, context.formatMessage(I18nConstants.JSON_PROPERTY_VALUE_NO_QUOTES, main.getName(), main.getValue().asString()), IssueSeverity.ERROR);
|
logError(errors, "2022-11-26", line(main.getValue()), col(main.getValue()), path, IssueType.INVALID, context.formatMessage(I18nConstants.JSON_PROPERTY_VALUE_NO_QUOTES, main.getName(), main.getValue().asString()), IssueSeverity.ERROR);
|
||||||
}
|
}
|
||||||
if (main != null || fork != null) {
|
if (main != null || fork != null) {
|
||||||
if (property.isList()) {
|
if (property.isJsonList()) {
|
||||||
boolean ok = true;
|
boolean ok = true;
|
||||||
if (!(main == null || main.getValue() instanceof JsonArray)) {
|
if (!(main == null || main.getValue() instanceof JsonArray)) {
|
||||||
logError(errors, ValidationMessage.NO_RULE_DATE, line(main.getValue()), col(main.getValue()), npath, IssueType.INVALID, context.formatMessage(I18nConstants.THIS_PROPERTY_MUST_BE_AN_ARRAY_NOT_, describe(main.getValue()), name, path), IssueSeverity.ERROR);
|
logError(errors, ValidationMessage.NO_RULE_DATE, line(main.getValue()), col(main.getValue()), npath, IssueType.INVALID, context.formatMessage(I18nConstants.THIS_PROPERTY_MUST_BE_AN_ARRAY_NOT_, describe(main.getValue()), name, path), IssueSeverity.ERROR);
|
||||||
|
|
|
@ -304,6 +304,19 @@ public class Property {
|
||||||
return !"1".equals(definition.getBase().hasMax() ? definition.getBase().getMax() : definition.getMax());
|
return !"1".equals(definition.getBase().hasMax() ? definition.getBase().getMax() : definition.getMax());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This handles a very special case: An extension used with json extensions in CDS hooks,
|
||||||
|
* where the extension definition, not the base, decides whether it's an array or not
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public boolean isJsonList() {
|
||||||
|
if (definition.hasExtension("http://hl7.org/fhir/tools/StructureDefinition/elementdefinition-json-name")) {
|
||||||
|
return !"1".equals(definition.getMax());
|
||||||
|
} else {
|
||||||
|
return !"1".equals(definition.getBase().hasMax() ? definition.getBase().getMax() : definition.getMax());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isBaseList() {
|
public boolean isBaseList() {
|
||||||
return !"1".equals(definition.getBase().getMax());
|
return !"1".equals(definition.getBase().getMax());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue