From b995ea1867694f13fde4145e7ffe1779f7d79529 Mon Sep 17 00:00:00 2001 From: AdityaKBhadragond14 Date: Wed, 13 Sep 2023 12:48:47 +0530 Subject: [PATCH] unpackRepeatedGroups fix. --- .../extensions/MoreQuestionnaireResponses.kt | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/datacapture/src/main/java/com/google/android/fhir/datacapture/extensions/MoreQuestionnaireResponses.kt b/datacapture/src/main/java/com/google/android/fhir/datacapture/extensions/MoreQuestionnaireResponses.kt index 974ffe2723..9b1ac45427 100644 --- a/datacapture/src/main/java/com/google/android/fhir/datacapture/extensions/MoreQuestionnaireResponses.kt +++ b/datacapture/src/main/java/com/google/android/fhir/datacapture/extensions/MoreQuestionnaireResponses.kt @@ -100,22 +100,26 @@ private fun unpackRepeatedGroups( questionnaireItem: Questionnaire.QuestionnaireItemComponent, questionnaireResponseItem: QuestionnaireResponse.QuestionnaireResponseItemComponent ): List { - questionnaireResponseItem.item = - unpackRepeatedGroups(questionnaireItem.item, questionnaireResponseItem.item) - questionnaireResponseItem.answer.forEach { - it.item = unpackRepeatedGroups(questionnaireItem.item, it.item) - } - return if (questionnaireItem.type == Questionnaire.QuestionnaireItemType.GROUP && - questionnaireItem.repeats - ) { - questionnaireResponseItem.answer.map { - QuestionnaireResponse.QuestionnaireResponseItemComponent().apply { - linkId = questionnaireItem.linkId - text = questionnaireItem.localizedTextSpanned?.toString() - item = it.item + if (questionnaireResponseItem.hasAnswer()) { + questionnaireResponseItem.item = + unpackRepeatedGroups(questionnaireItem.item, questionnaireResponseItem.item) + questionnaireResponseItem.answer.forEach { + it.item = unpackRepeatedGroups(questionnaireItem.item, it.item) + } + return if (questionnaireItem.type == Questionnaire.QuestionnaireItemType.GROUP && + questionnaireItem.repeats + ) { + questionnaireResponseItem.answer.map { + QuestionnaireResponse.QuestionnaireResponseItemComponent().apply { + linkId = questionnaireItem.linkId + text = questionnaireItem.localizedTextSpanned?.toString() + item = it.item + } } + } else { + listOf(questionnaireResponseItem) } } else { - listOf(questionnaireResponseItem) + return listOf(questionnaireResponseItem) } }