mirror of
https://github.com/hapifhir/org.hl7.fhir.core.git
synced 2025-02-13 08:14:46 +00:00
Improved error message when code not in value set
This commit is contained in:
parent
e0c1273346
commit
9d53b738df
@ -1165,13 +1165,13 @@ public abstract class BaseWorkerContext extends I18nBase implements IWorkerConte
|
|||||||
if (p.getName().equals("result")) {
|
if (p.getName().equals("result")) {
|
||||||
ok = ((BooleanType) p.getValue()).getValue().booleanValue();
|
ok = ((BooleanType) p.getValue()).getValue().booleanValue();
|
||||||
} else if (p.getName().equals("message")) {
|
} else if (p.getName().equals("message")) {
|
||||||
message = ((StringType) p.getValue()).getValue();
|
message = p.getValue().primitiveValue();
|
||||||
} else if (p.getName().equals("display")) {
|
} else if (p.getName().equals("display")) {
|
||||||
display = ((StringType) p.getValue()).getValue();
|
display = p.getValue().primitiveValue();
|
||||||
} else if (p.getName().equals("system")) {
|
} else if (p.getName().equals("system")) {
|
||||||
system = ((StringType) p.getValue()).getValue();
|
system = p.getValue().primitiveValue();
|
||||||
} else if (p.getName().equals("code")) {
|
} else if (p.getName().equals("code")) {
|
||||||
code = ((StringType) p.getValue()).getValue();
|
code = p.getValue().primitiveValue();
|
||||||
} else if (p.getName().equals("cause")) {
|
} else if (p.getName().equals("cause")) {
|
||||||
try {
|
try {
|
||||||
IssueType it = IssueType.fromCode(((StringType) p.getValue()).getValue());
|
IssueType it = IssueType.fromCode(((StringType) p.getValue()).getValue());
|
||||||
|
@ -144,7 +144,9 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
}
|
}
|
||||||
if (valueset != null && options.getValueSetMode() != ValueSetMode.NO_MEMBERSHIP_CHECK) {
|
if (valueset != null && options.getValueSetMode() != ValueSetMode.NO_MEMBERSHIP_CHECK) {
|
||||||
Boolean result = false;
|
Boolean result = false;
|
||||||
|
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder(",", " and ");
|
||||||
for (Coding c : code.getCoding()) {
|
for (Coding c : code.getCoding()) {
|
||||||
|
b.append(c.toString());
|
||||||
Boolean ok = codeInValueSet(c.getSystem(), c.getCode(), warnings);
|
Boolean ok = codeInValueSet(c.getSystem(), c.getCode(), warnings);
|
||||||
if (ok == null && result == false) {
|
if (ok == null && result == false) {
|
||||||
result = null;
|
result = null;
|
||||||
@ -153,9 +155,9 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
warnings.add(0, context.formatMessage(I18nConstants.UNABLE_TO_CHECK_IF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl()));
|
warnings.add(0, context.formatMessage(I18nConstants.UNABLE_TO_CHECK_IF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), b.toString()));
|
||||||
} else if (!result) {
|
} else if (!result) {
|
||||||
errors.add(0, context.formatMessagePlural(code.getCoding().size(), I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl()));
|
errors.add(0, context.formatMessagePlural(code.getCoding().size(), I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), b.toString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (errors.size() > 0) {
|
if (errors.size() > 0) {
|
||||||
|
@ -208,7 +208,10 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
Coding foundCoding = null;
|
Coding foundCoding = null;
|
||||||
if (valueset != null && options.getValueSetMode() != ValueSetMode.NO_MEMBERSHIP_CHECK) {
|
if (valueset != null && options.getValueSetMode() != ValueSetMode.NO_MEMBERSHIP_CHECK) {
|
||||||
Boolean result = false;
|
Boolean result = false;
|
||||||
|
CommaSeparatedStringBuilder b = new CommaSeparatedStringBuilder(",", " and ");
|
||||||
|
|
||||||
for (Coding c : code.getCoding()) {
|
for (Coding c : code.getCoding()) {
|
||||||
|
b.append(c.toString());
|
||||||
Boolean ok = codeInValueSet(c.getSystem(), c.getVersion(), c.getCode(), info);
|
Boolean ok = codeInValueSet(c.getSystem(), c.getVersion(), c.getCode(), info);
|
||||||
if (ok == null && result == false) {
|
if (ok == null && result == false) {
|
||||||
result = null;
|
result = null;
|
||||||
@ -218,10 +221,10 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
String msg = context.formatMessage(I18nConstants.UNABLE_TO_CHECK_IF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl());
|
String msg = context.formatMessage(I18nConstants.UNABLE_TO_CHECK_IF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), b.toString());
|
||||||
info.getIssues().addAll(makeIssue(IssueSeverity.WARNING, IssueType.INVALID, path, msg));
|
info.getIssues().addAll(makeIssue(IssueSeverity.WARNING, IssueType.INVALID, path, msg));
|
||||||
} else if (!result) {
|
} else if (!result) {
|
||||||
String msg = context.formatMessagePlural(code.getCoding().size(), I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl());
|
String msg = context.formatMessagePlural(code.getCoding().size(), I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), b.toString());
|
||||||
info.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
info.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -372,7 +375,7 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
if (valueset == null) {
|
if (valueset == null) {
|
||||||
throw new VSCheckerException(warningMessage, issues);
|
throw new VSCheckerException(warningMessage, issues);
|
||||||
} else {
|
} else {
|
||||||
String msg = context.formatMessagePlural(1, I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl());
|
String msg = context.formatMessagePlural(1, I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), code.toString());
|
||||||
issues.addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
issues.addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
||||||
throw new VSCheckerException(warningMessage+"; "+msg, issues);
|
throw new VSCheckerException(warningMessage+"; "+msg, issues);
|
||||||
}
|
}
|
||||||
@ -440,7 +443,7 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
res.setMessage("Not in value set "+valueset.getUrl()+": "+info.summary()).setSeverity(IssueSeverity.ERROR);
|
res.setMessage("Not in value set "+valueset.getUrl()+": "+info.summary()).setSeverity(IssueSeverity.ERROR);
|
||||||
res.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, res.getMessage()));
|
res.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, res.getMessage()));
|
||||||
} else {
|
} else {
|
||||||
String msg = context.formatMessagePlural(1, I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl());
|
String msg = context.formatMessagePlural(1, I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), code.toString());
|
||||||
res.setMessage(msg).setSeverity(IssueSeverity.ERROR);
|
res.setMessage(msg).setSeverity(IssueSeverity.ERROR);
|
||||||
res.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
res.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
||||||
res.setDefinition(null);
|
res.setDefinition(null);
|
||||||
@ -459,7 +462,7 @@ public class ValueSetCheckerSimple extends ValueSetWorker implements ValueSetChe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((res != null && !res.isOk())) {
|
} else if ((res != null && !res.isOk())) {
|
||||||
String msg = context.formatMessagePlural(1, I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl());
|
String msg = context.formatMessagePlural(1, I18nConstants.NONE_OF_THE_PROVIDED_CODES_ARE_IN_THE_VALUE_SET_, valueset.getUrl(), code.toString());
|
||||||
res.setMessage(res.getMessage()+"; "+msg);
|
res.setMessage(res.getMessage()+"; "+msg);
|
||||||
res.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
res.getIssues().addAll(makeIssue(IssueSeverity.ERROR, IssueType.INVALID, path, msg));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user