From 393ad27b53711158733b348ae9db1d03d1be37dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=E2=89=A1ZRS?= <12814349+LZRS@users.noreply.github.com> Date: Mon, 9 Dec 2024 12:38:45 +0300 Subject: [PATCH] Validate QuestionnaireItem.Group with repeats as repeating group Instead of just as group Fixes #2752 --- .../QuestionnaireResponseValidator.kt | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt index 616549caf7..9cfd635fa9 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/validation/QuestionnaireResponseValidator.kt @@ -151,10 +151,12 @@ object QuestionnaireResponseValidator { questionnaireResponseItemValidator: QuestionnaireResponseItemValidator, linkIdToValidationResultMap: MutableMap>, ): Map> { - when (checkNotNull(questionnaireItem.type) { "Questionnaire item must have type" }) { - Questionnaire.QuestionnaireItemType.DISPLAY, - Questionnaire.QuestionnaireItemType.NULL, -> Unit - Questionnaire.QuestionnaireItemType.GROUP -> + checkNotNull(questionnaireItem.type) { "Questionnaire item must have type" } + when { + questionnaireItem.type == Questionnaire.QuestionnaireItemType.DISPLAY || + questionnaireItem.type == Questionnaire.QuestionnaireItemType.NULL -> Unit + questionnaireItem.type == Questionnaire.QuestionnaireItemType.GROUP && + !questionnaireItem.repeats -> // Nested items under group // http://www.hl7.org/fhir/questionnaireresponse-definitions.html#QuestionnaireResponse.item.item validateQuestionnaireResponseItems( @@ -262,10 +264,13 @@ object QuestionnaireResponseValidator { questionnaireItem: Questionnaire.QuestionnaireItemComponent, questionnaireResponseItem: QuestionnaireResponse.QuestionnaireResponseItemComponent, ) { - when (checkNotNull(questionnaireItem.type) { "Questionnaire item must have type" }) { - Questionnaire.QuestionnaireItemType.DISPLAY, - Questionnaire.QuestionnaireItemType.NULL, -> Unit - Questionnaire.QuestionnaireItemType.GROUP -> + checkNotNull(questionnaireItem.type) { "Questionnaire item must have type" } + + when { + questionnaireItem.type == Questionnaire.QuestionnaireItemType.DISPLAY || + questionnaireItem.type == Questionnaire.QuestionnaireItemType.NULL -> Unit + questionnaireItem.type == Questionnaire.QuestionnaireItemType.GROUP && + !questionnaireItem.repeats -> // Nested items under group // http://www.hl7.org/fhir/questionnaireresponse-definitions.html#QuestionnaireResponse.item.item checkQuestionnaireResponseItems(questionnaireItem.item, questionnaireResponseItem.item)