mirror of
https://github.com/hapifhir/hapi-fhir.git
synced 2025-02-08 22:14:50 +00:00
Added more information to the error message about misplaced QuestionnaireResponseItem
This commit is contained in:
parent
074e812162
commit
c86ae90c4d
@ -2743,7 +2743,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateQuestionannaireResponseItems(Questionnaire qsrc, List<QuestionnaireItemComponent> qItems, List<ValidationMessage> errors, Element element, NodeStack stack, boolean inProgress, Element questionnaireResponseRoot) {
|
private void validateQuestionannaireResponseItems(Questionnaire qsrc, List<QuestionnaireItemComponent> qItems, List<ValidationMessage> errors, Element element, NodeStack stack, boolean inProgress, Element questionnaireResponseRoot) {
|
||||||
List<Element> items = new ArrayList<Element>();
|
List<Element> items = new ArrayList<Element>();
|
||||||
element.getNamedChildren("item", items);
|
element.getNamedChildren("item", items);
|
||||||
@ -2757,7 +2757,7 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||||||
if (index == -1) {
|
if (index == -1) {
|
||||||
QuestionnaireItemComponent qItem = findQuestionnaireItem(qsrc, linkId);
|
QuestionnaireItemComponent qItem = findQuestionnaireItem(qsrc, linkId);
|
||||||
if (qItem != null) {
|
if (qItem != null) {
|
||||||
rule(errors, IssueType.STRUCTURE, item.line(), item.col(), stack.getLiteralPath(), index > -1, "Structural Error: item is in the wrong place");
|
rule(errors, IssueType.STRUCTURE, item.line(), item.col(), stack.getLiteralPath(), index > -1, misplacedItemError(qItem));
|
||||||
NodeStack ns = stack.push(item, -1, null, null);
|
NodeStack ns = stack.push(item, -1, null, null);
|
||||||
validateQuestionannaireResponseItem(qsrc, qItem, errors, item, ns, inProgress, questionnaireResponseRoot);
|
validateQuestionannaireResponseItem(qsrc, qItem, errors, item, ns, inProgress, questionnaireResponseRoot);
|
||||||
}
|
}
|
||||||
@ -2768,11 +2768,9 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||||||
{
|
{
|
||||||
rule(errors, IssueType.STRUCTURE, item.line(), item.col(), stack.getLiteralPath(), index >= lastIndex, "Structural Error: items are out of order");
|
rule(errors, IssueType.STRUCTURE, item.line(), item.col(), stack.getLiteralPath(), index >= lastIndex, "Structural Error: items are out of order");
|
||||||
lastIndex = index;
|
lastIndex = index;
|
||||||
List<Element> mapItem = map.get(linkId);
|
|
||||||
if (mapItem == null) {
|
List<Element> mapItem = map.computeIfAbsent(linkId, key -> new ArrayList<>());
|
||||||
mapItem = new ArrayList<Element>();
|
|
||||||
map.put(linkId, mapItem);
|
|
||||||
}
|
|
||||||
mapItem.add(item);
|
mapItem.add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2793,6 +2791,13 @@ public class InstanceValidator extends BaseValidator implements IResourceValidat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String misplacedItemError(QuestionnaireItemComponent qItem) {
|
||||||
|
return qItem.hasLinkId() ?
|
||||||
|
String.format("Structural Error: item with linkid %s is in the wrong place", qItem.getLinkId())
|
||||||
|
:
|
||||||
|
"Structural Error: item is in the wrong place";
|
||||||
|
}
|
||||||
|
|
||||||
private void validateQuestionnaireResponseItemQuantity( List<ValidationMessage> errors, Element answer, NodeStack stack) {
|
private void validateQuestionnaireResponseItemQuantity( List<ValidationMessage> errors, Element answer, NodeStack stack) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -454,6 +454,9 @@ public class QuestionnaireResponseValidatorDstu3Test {
|
|||||||
ValidationResult errors = myVal.validateWithResult(qr);
|
ValidationResult errors = myVal.validateWithResult(qr);
|
||||||
|
|
||||||
assertThat(errors.toString(), Matchers.not(containsString("No issues")));
|
assertThat(errors.toString(), Matchers.not(containsString("No issues")));
|
||||||
|
assertTrue("Must contain structural error about misplaced link1 item",
|
||||||
|
errors.getMessages().stream().filter(vm -> vm.getMessage().contains("Structural Error"))
|
||||||
|
.anyMatch(vm -> vm.getMessage().contains("link1")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
x
Reference in New Issue
Block a user