Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ constructor(
subjectId = resourceId,
subjectType = ResourceType.Patient,
subjectParam = CarePlan.SUBJECT
)
),
conditions = patient.activeConditions()
)
}

Expand All @@ -151,6 +152,11 @@ constructor(
internal suspend fun Patient.isBreastfeeding() =
patientConditions(this.logicalId).activelyBreastfeeding()

internal suspend fun Patient.activeConditions() =
patientConditions(this.logicalId).filter { condition ->
condition.clinicalStatus.coding.any { it.code == "active" }
}

internal suspend fun patientConditions(patientId: String) =
defaultRepository.searchResourceFor<Condition>(
subjectId = patientId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ sealed class ProfileData(open val logicalId: String, open val name: String) {
val chwAssigned: Reference,
val healthStatus: HealthStatus,
val phoneContacts: List<String> = listOf(),
val showIdentifierInProfile: Boolean = false
val showIdentifierInProfile: Boolean = false,
val conditions: List<Condition> = emptyList()
) : ProfileData(logicalId = logicalId, name = name)
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ package org.smartregister.fhircore.quest.ui.patient.profile
import android.content.Context
import androidx.navigation.NavHostController
import org.hl7.fhir.r4.model.CarePlan
import org.hl7.fhir.r4.model.Condition
import org.hl7.fhir.r4.model.Resource
import org.smartregister.fhircore.engine.util.extension.asBaseResources
import org.smartregister.fhircore.quest.ui.shared.models.PatientProfileViewSection

sealed class PatientProfileEvent {
Expand All @@ -34,12 +37,18 @@ sealed class PatientProfileEvent {
val taskFormId: String,
val taskId: String,
val patientId: String,
val carePlans: ArrayList<CarePlan>? = null
val carePlans: ArrayList<CarePlan>? = null,
val patientConditions: List<Condition> = emptyList()
) : PatientProfileEvent() {
fun getActiveCarePlans(): ArrayList<CarePlan> {
if (carePlans.isNullOrEmpty()) return ArrayList()
return carePlans.filter { it.status.equals(CarePlan.CarePlanStatus.ACTIVE) } as ArrayList
}

fun getActivePopulationResources(): ArrayList<Resource> {
val resources = getActiveCarePlans().asBaseResources() + patientConditions
return ArrayList(resources)
}
}

data class OverflowMenuClick(
Expand All @@ -48,11 +57,17 @@ sealed class PatientProfileEvent {
val menuId: Int,
val patientId: String,
val familyId: String? = null,
val carePlans: ArrayList<CarePlan>? = null
val carePlans: ArrayList<CarePlan>? = null,
val patientConditions: List<Condition> = emptyList()
) : PatientProfileEvent() {
fun getActiveCarePlans(): ArrayList<CarePlan> {
if (carePlans.isNullOrEmpty()) return ArrayList()
return carePlans.filter { it.status.equals(CarePlan.CarePlanStatus.ACTIVE) } as ArrayList
}

fun getActivePopulationResources(): ArrayList<Resource> {
val resources = getActiveCarePlans().asBaseResources() + patientConditions
return ArrayList(resources)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@ fun PatientProfileScreen(
it.id,
profileViewData.logicalId,
familyId,
carePlans = profileViewData.carePlans as ArrayList<CarePlan>
carePlans = profileViewData.carePlans as ArrayList<CarePlan>,
patientConditions = profileViewData.conditions
)
)
},
Expand Down Expand Up @@ -169,7 +170,8 @@ fun PatientProfileScreen(
taskFormId = taskFormId,
taskId = taskId,
patientId = profileViewData.logicalId,
carePlans = profileViewData.carePlans as ArrayList<CarePlan>
carePlans = profileViewData.carePlans as ArrayList<CarePlan>,
patientConditions = profileViewData.conditions
)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import org.smartregister.fhircore.engine.domain.model.HealthStatus
import org.smartregister.fhircore.engine.domain.model.ProfileData
import org.smartregister.fhircore.engine.ui.questionnaire.QuestionnaireActivity
import org.smartregister.fhircore.engine.ui.questionnaire.QuestionnaireType
import org.smartregister.fhircore.engine.util.extension.asBaseResources
import org.smartregister.fhircore.engine.util.extension.asReference
import org.smartregister.fhircore.engine.util.extension.launchQuestionnaire
import org.smartregister.fhircore.engine.util.extension.launchQuestionnaireForResult
Expand Down Expand Up @@ -156,21 +155,21 @@ constructor(
questionnaireId = VIRAL_LOAD_RESULTS_FORM,
clientIdentifier = event.patientId,
questionnaireType = QuestionnaireType.DEFAULT,
populationResources = event.getActiveCarePlans().asBaseResources()
populationResources = event.getActivePopulationResources()
)
R.id.hiv_test_and_results ->
event.context.launchQuestionnaire<QuestionnaireActivity>(
questionnaireId = HIV_TEST_AND_RESULTS_FORM,
clientIdentifier = event.patientId,
questionnaireType = QuestionnaireType.DEFAULT,
populationResources = event.getActiveCarePlans().asBaseResources()
populationResources = event.getActivePopulationResources()
)
R.id.hiv_test_and_next_appointment ->
event.context.launchQuestionnaire<QuestionnaireActivity>(
questionnaireId = HIV_TEST_AND_NEXT_APPOINTMENT_FORM,
clientIdentifier = event.patientId,
questionnaireType = QuestionnaireType.DEFAULT,
populationResources = event.getActiveCarePlans().asBaseResources()
populationResources = event.getActivePopulationResources()
)
R.id.remove_hiv_patient ->
event.context.launchQuestionnaire<HivPatientQuestionnaireActivity>(
Expand All @@ -185,7 +184,7 @@ constructor(
questionnaireId = event.taskFormId,
clientIdentifier = event.patientId,
backReference = event.taskId.asReference(ResourceType.Task).reference,
populationResources = event.getActiveCarePlans().asBaseResources()
populationResources = event.getActivePopulationResources()
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package org.smartregister.fhircore.quest.ui.shared.models

import org.hl7.fhir.r4.model.CarePlan
import org.hl7.fhir.r4.model.Condition
import org.smartregister.fhircore.engine.domain.model.FormButtonData
import org.smartregister.fhircore.quest.ui.family.profile.model.FamilyMemberViewState

Expand All @@ -42,7 +43,8 @@ sealed class ProfileViewData(
val address: String = "",
val identifierKey: String = "",
val showIdentifierInProfile: Boolean = false,
val carePlans: List<CarePlan> = emptyList()
val carePlans: List<CarePlan> = emptyList(),
val conditions: List<Condition> = emptyList()
) : ProfileViewData(name = name, logicalId = logicalId, identifier = identifier)

data class FamilyProfileViewData(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class ProfileViewDataMapper @Inject constructor(@ApplicationContext val context:
identifierKey = inputModel.healthStatus.retrieveDisplayIdentifierKey(),
showIdentifierInProfile = inputModel.showIdentifierInProfile,
showListsHighlights = false,
conditions = inputModel.conditions,
carePlans = inputModel.services,
tasks =
inputModel.tasks.sortedWith(compareBy<Task> { it.description }).map {
Expand Down