diff --git a/android/engine/src/main/java/org/smartregister/fhircore/engine/task/FhirCarePlanGenerator.kt b/android/engine/src/main/java/org/smartregister/fhircore/engine/task/FhirCarePlanGenerator.kt index 21d5365c1b..195d733fed 100644 --- a/android/engine/src/main/java/org/smartregister/fhircore/engine/task/FhirCarePlanGenerator.kt +++ b/android/engine/src/main/java/org/smartregister/fhircore/engine/task/FhirCarePlanGenerator.kt @@ -29,11 +29,13 @@ import org.hl7.fhir.r4.model.IdType import org.hl7.fhir.r4.model.Parameters import org.hl7.fhir.r4.model.PlanDefinition import org.hl7.fhir.r4.model.Resource +import org.hl7.fhir.r4.model.ResourceType import org.hl7.fhir.r4.model.StructureMap import org.hl7.fhir.r4.model.Task import org.hl7.fhir.r4.utils.FHIRPathEngine import org.hl7.fhir.r4.utils.StructureMapUtilities import org.smartregister.fhircore.engine.data.local.DefaultRepository +import org.smartregister.fhircore.engine.util.extension.asReference import org.smartregister.fhircore.engine.util.extension.encodeResourceToString import org.smartregister.fhircore.engine.util.extension.getCarePlanId import org.smartregister.fhircore.engine.util.extension.taskStatusToCarePlanActivityStatus @@ -133,12 +135,17 @@ constructor(val fhirEngine: FhirEngine, val transformSupportServices: TransformS } } - suspend fun completeTask(id: String, encounterStatus: EncounterStatus?) { + suspend fun completeTask( + id: String, + encounterStatus: EncounterStatus?, + encounterReference: String, + ) { val resourcesToUpdate = mutableListOf() val task = fhirEngine.get(id).apply { this.status = encounterStatusToTaskStatus(encounterStatus) this.lastModified = Date() + this.encounter = encounterReference.asReference(ResourceType.Encounter) } resourcesToUpdate.add(task) val carePlanId = task.getCarePlanId() diff --git a/android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireViewModel.kt b/android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireViewModel.kt index 2a97320048..c8d6a159da 100644 --- a/android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireViewModel.kt +++ b/android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireViewModel.kt @@ -459,12 +459,12 @@ constructor( private suspend fun updateCarePlanAndTask(extras: List, backReference: String?) { if (backReference != null && backReference != "notify") { - extras.forEach { - if (it is Encounter) { - fhirCarePlanGenerator.completeTask( - backReference.asReference(ResourceType.Task).extractId(), - it.status, - ) + extras.forEach { resource -> + if (resource is Encounter) { + val taskReference = backReference.asReference(ResourceType.Task).extractId() + val encounterStatus = resource.status + val encounterReference = resource.logicalId.removePrefix("#") + fhirCarePlanGenerator.completeTask(taskReference, encounterStatus, encounterReference) } } }