Skip to content

Commit 3890584

Browse files
BuchiNycalmwalija
andauthored
Link encounter with task (#93)
* Link encounter with task * Update FhirCarePlanGenerator.kt * Code refactor * Bug fix: call asReference on encounterReference * Update QuestionnaireViewModel.kt * removed taskID --------- Co-authored-by: Comfort Mwalija <calmwalija@gmail.com>
1 parent cb14a25 commit 3890584

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

android/engine/src/main/java/org/smartregister/fhircore/engine/task/FhirCarePlanGenerator.kt

+8-1
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@ import org.hl7.fhir.r4.model.IdType
2929
import org.hl7.fhir.r4.model.Parameters
3030
import org.hl7.fhir.r4.model.PlanDefinition
3131
import org.hl7.fhir.r4.model.Resource
32+
import org.hl7.fhir.r4.model.ResourceType
3233
import org.hl7.fhir.r4.model.StructureMap
3334
import org.hl7.fhir.r4.model.Task
3435
import org.hl7.fhir.r4.utils.FHIRPathEngine
3536
import org.hl7.fhir.r4.utils.StructureMapUtilities
3637
import org.smartregister.fhircore.engine.data.local.DefaultRepository
38+
import org.smartregister.fhircore.engine.util.extension.asReference
3739
import org.smartregister.fhircore.engine.util.extension.encodeResourceToString
3840
import org.smartregister.fhircore.engine.util.extension.getCarePlanId
3941
import org.smartregister.fhircore.engine.util.extension.taskStatusToCarePlanActivityStatus
@@ -133,12 +135,17 @@ constructor(val fhirEngine: FhirEngine, val transformSupportServices: TransformS
133135
}
134136
}
135137

136-
suspend fun completeTask(id: String, encounterStatus: EncounterStatus?) {
138+
suspend fun completeTask(
139+
id: String,
140+
encounterStatus: EncounterStatus?,
141+
encounterReference: String,
142+
) {
137143
val resourcesToUpdate = mutableListOf<Resource>()
138144
val task =
139145
fhirEngine.get<Task>(id).apply {
140146
this.status = encounterStatusToTaskStatus(encounterStatus)
141147
this.lastModified = Date()
148+
this.encounter = encounterReference.asReference(ResourceType.Encounter)
142149
}
143150
resourcesToUpdate.add(task)
144151
val carePlanId = task.getCarePlanId()

android/engine/src/main/java/org/smartregister/fhircore/engine/ui/questionnaire/QuestionnaireViewModel.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -459,12 +459,12 @@ constructor(
459459

460460
private suspend fun updateCarePlanAndTask(extras: List<Resource>, backReference: String?) {
461461
if (backReference != null && backReference != "notify") {
462-
extras.forEach {
463-
if (it is Encounter) {
464-
fhirCarePlanGenerator.completeTask(
465-
backReference.asReference(ResourceType.Task).extractId(),
466-
it.status,
467-
)
462+
extras.forEach { resource ->
463+
if (resource is Encounter) {
464+
val taskReference = backReference.asReference(ResourceType.Task).extractId()
465+
val encounterStatus = resource.status
466+
val encounterReference = resource.logicalId.removePrefix("#")
467+
fhirCarePlanGenerator.completeTask(taskReference, encounterStatus, encounterReference)
468468
}
469469
}
470470
}

0 commit comments

Comments
 (0)