diff --git a/CHANGELOG.md b/CHANGELOG.md index 2839738f3b4..d60ff886d04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ ### Fixes - Fix crash when displaying large statin risk percentage text +- Fix visibility for static statin nudge ## 2025.04.07 diff --git a/app/src/main/java/org/simple/clinic/summary/PatientSummaryUpdate.kt b/app/src/main/java/org/simple/clinic/summary/PatientSummaryUpdate.kt index edad60f74ab..d08eebe9874 100644 --- a/app/src/main/java/org/simple/clinic/summary/PatientSummaryUpdate.kt +++ b/app/src/main/java/org/simple/clinic/summary/PatientSummaryUpdate.kt @@ -123,12 +123,62 @@ class PatientSummaryUpdate( return when { isLabBasedStatinNudgeEnabled -> labBasedStatinNudge(event, model) isNonLabBasedStatinNudgeEnabled -> nonLabBasedStatinNudge(event, model) + isPatientStatinNudgeV1Enabled -> staticStatinNudge(event, model) else -> { throw IllegalArgumentException("Unknown case, statin prescription check info is unhandled") } } } + private fun staticStatinNudge( + event: StatinPrescriptionCheckInfoLoaded, + model: PatientSummaryModel + ): Next { + val hasHadStroke = event.medicalHistory.hasHadStroke == Yes + val hasHadHeartAttack = event.medicalHistory.hasHadHeartAttack == Yes + val hasDiabetes = event.medicalHistory.diagnosedWithDiabetes == Yes + + val hasCVD = hasHadStroke || hasHadHeartAttack + val areStatinsPrescribedAlready = event.prescriptions.any { it.name.contains("statin", ignoreCase = true) } + val canPrescribeStatin = event.isPatientDead.not() && + event.wasBPMeasuredWithin90Days && + areStatinsPrescribedAlready.not() + + return when { + hasCVD -> { + val updatedModel = model.updateStatinInfo( + StatinInfo( + canShowStatinNudge = canPrescribeStatin, + hasCVD = true + ) + ) + + next(updatedModel) + } + + hasDiabetes && event.age >= minAgeForStatin -> { + val updatedModel = model.updateStatinInfo( + StatinInfo( + canShowStatinNudge = canPrescribeStatin, + hasDiabetes = true + ) + ) + + next(updatedModel) + } + + else -> { + val updatedModel = model.updateStatinInfo( + StatinInfo( + canShowStatinNudge = false, + hasCVD = false + ) + ) + next(updatedModel) + } + } + } + private fun labBasedStatinNudge( event: StatinPrescriptionCheckInfoLoaded, model: PatientSummaryModel