Skip to content

Commit d639eec

Browse files
Merge pull request #5589 from simpledotorg/master
2 parents 5493c72 + cb908db commit d639eec

File tree

26 files changed

+131
-229
lines changed

26 files changed

+131
-229
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44

55
### Internal
66
- Bump AGP to v8.12.2
7-
- Bump Lint to v31.12.0
7+
- Bump Lint to v31.13.0
88
- Bump Kotlin to v2.2.0
99
- Bump KSP to v2.2.0-2.0.2
10-
- Bump dagger to v2.57
10+
- Bump dagger to v2.57.1
1111
- Bump okhttp to v5.1.0
1212
- Bump retrofit to v3.0.0
1313
- Bump sqlcipher to v4.10.0

app/src/main/java/org/simple/clinic/medicalhistory/newentry/NewMedicalHistoryScreen.kt

Lines changed: 23 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.view.View.GONE
88
import android.view.View.VISIBLE
99
import android.view.ViewGroup
1010
import androidx.appcompat.app.AppCompatActivity
11+
import androidx.compose.foundation.layout.Arrangement
1112
import androidx.compose.foundation.layout.Column
1213
import androidx.compose.foundation.layout.fillMaxWidth
1314
import androidx.compose.foundation.layout.padding
@@ -37,14 +38,13 @@ import org.simple.clinic.medicalhistory.Answer
3738
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion
3839
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.DiagnosedWithDiabetes
3940
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.DiagnosedWithHypertension
40-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.HasHadAHeartAttack
41-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.HasHadAKidneyDisease
42-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.HasHadAStroke
4341
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.IsOnDiabetesTreatment
4442
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.IsOnHypertensionTreatment
43+
import org.simple.clinic.medicalhistory.OngoingMedicalHistoryEntry
4544
import org.simple.clinic.medicalhistory.SelectDiagnosisErrorDialog
4645
import org.simple.clinic.medicalhistory.SelectOngoingDiabetesTreatmentErrorDialog
4746
import org.simple.clinic.medicalhistory.SelectOngoingHypertensionTreatmentErrorDialog
47+
import org.simple.clinic.medicalhistory.ui.HistoryContainer
4848
import org.simple.clinic.medicalhistory.ui.TobaccoQuestion
4949
import org.simple.clinic.navigation.v2.Router
5050
import org.simple.clinic.navigation.v2.ScreenKey
@@ -98,28 +98,16 @@ class NewMedicalHistoryScreen : BaseScreen<
9898
private val nextButton
9999
get() = binding.nextButton
100100

101-
private val heartAttackQuestionView
102-
get() = binding.heartAttackQuestionView
103-
104-
private val strokeQuestionView
105-
get() = binding.strokeQuestionView
106-
107-
private val kidneyDiseaseQuestionView
108-
get() = binding.kidneyDiseaseQuestionView
109-
110-
private val diabetesQuestionView
111-
get() = binding.diabetesQuestionView
112-
113101
private val hypertensionDiagnosis
114102
get() = binding.hypertensionDiagnosis
115103

116104
private val diabetesDiagnosis
117105
get() = binding.diabetesDiagnosis
118106

119107
private var showSmokerQuestion by mutableStateOf(false)
120-
private var isSmoking by mutableStateOf<Answer>(Answer.Unanswered)
121108
private var showSmokelessTobaccoQuestion by mutableStateOf(false)
122-
private var isUsingSmokelessTobacco by mutableStateOf<Answer>(Answer.Unanswered)
109+
private var showDiabetesQuestion by mutableStateOf(false)
110+
private var ongoingMedicalHistoryEntry by mutableStateOf<OngoingMedicalHistoryEntry?>(null)
123111

124112
private val composeView
125113
get() = binding.composeView
@@ -183,13 +171,23 @@ class NewMedicalHistoryScreen : BaseScreen<
183171
SimpleTheme {
184172
Column(
185173
modifier = Modifier
186-
.fillMaxWidth()
187-
.padding(dimensionResource(R.dimen.spacing_8)),
174+
.fillMaxWidth()
175+
.padding(dimensionResource(R.dimen.spacing_8)),
176+
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.spacing_8))
188177
) {
178+
HistoryContainer(
179+
heartAttackAnswer = ongoingMedicalHistoryEntry?.hasHadHeartAttack,
180+
strokeAnswer = ongoingMedicalHistoryEntry?.hasHadStroke,
181+
kidneyAnswer = ongoingMedicalHistoryEntry?.hasHadKidneyDisease,
182+
diabetesAnswer = ongoingMedicalHistoryEntry?.hasDiabetes,
183+
showDiabetesQuestion = showDiabetesQuestion,
184+
) { question, answer ->
185+
hotEvents.onNext(NewMedicalHistoryAnswerToggled(question, answer))
186+
}
189187
if (showSmokerQuestion) {
190188
TobaccoQuestion(
191-
isSmokingAnswer = isSmoking,
192-
isUsingSmokelessTobaccoAnswer = isUsingSmokelessTobacco,
189+
isSmokingAnswer = ongoingMedicalHistoryEntry?.isSmoking,
190+
isUsingSmokelessTobaccoAnswer = ongoingMedicalHistoryEntry?.isUsingSmokelessTobacco,
193191
showSmokelessTobaccoQuestion = showSmokelessTobaccoQuestion,
194192
) { question, answer ->
195193
hotEvents.onNext(NewMedicalHistoryAnswerToggled(question, answer))
@@ -213,26 +211,8 @@ class NewMedicalHistoryScreen : BaseScreen<
213211
toolbar.title = patientName
214212
}
215213

216-
override fun renderAnswerForQuestion(question: MedicalHistoryQuestion, answer: Answer) {
217-
val view = when (question) {
218-
HasHadAHeartAttack -> heartAttackQuestionView
219-
HasHadAStroke -> strokeQuestionView
220-
HasHadAKidneyDisease -> kidneyDiseaseQuestionView
221-
DiagnosedWithDiabetes -> diabetesQuestionView
222-
else -> null
223-
}
224-
225-
view?.render(question, answer) { questionForView, newAnswer ->
226-
hotEvents.onNext(NewMedicalHistoryAnswerToggled(questionForView, newAnswer))
227-
}
228-
229-
if (question == MedicalHistoryQuestion.IsSmoking) {
230-
isSmoking = answer
231-
}
232-
233-
if (question == MedicalHistoryQuestion.IsUsingSmokelessTobacco) {
234-
isUsingSmokelessTobacco = answer
235-
}
214+
override fun populateOngoingMedicalHistoryEntry(ongoingMedicalHistoryEntry: OngoingMedicalHistoryEntry) {
215+
this.ongoingMedicalHistoryEntry = ongoingMedicalHistoryEntry
236216
}
237217

238218
override fun showDiabetesDiagnosisView() {
@@ -244,14 +224,11 @@ class NewMedicalHistoryScreen : BaseScreen<
244224
}
245225

246226
override fun hideDiabetesHistorySection() {
247-
diabetesQuestionView.visibility = GONE
248-
kidneyDiseaseQuestionView.hideDivider()
227+
showDiabetesQuestion = false
249228
}
250229

251230
override fun showDiabetesHistorySection() {
252-
diabetesQuestionView.visibility = VISIBLE
253-
kidneyDiseaseQuestionView.showDivider()
254-
diabetesQuestionView.hideDivider()
231+
showDiabetesQuestion = true
255232
}
256233

257234
override fun renderDiagnosisAnswer(question: MedicalHistoryQuestion, answer: Answer) {

app/src/main/java/org/simple/clinic/medicalhistory/newentry/NewMedicalHistoryUi.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package org.simple.clinic.medicalhistory.newentry
22

33
import org.simple.clinic.medicalhistory.Answer
44
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion
5+
import org.simple.clinic.medicalhistory.OngoingMedicalHistoryEntry
56

67
interface NewMedicalHistoryUi {
78
fun setPatientName(patientName: String)
8-
fun renderAnswerForQuestion(question: MedicalHistoryQuestion, answer: Answer)
9+
fun populateOngoingMedicalHistoryEntry(ongoingMedicalHistoryEntry: OngoingMedicalHistoryEntry)
910
fun renderDiagnosisAnswer(question: MedicalHistoryQuestion, answer: Answer)
1011
fun showDiabetesDiagnosisView()
1112
fun hideDiabetesDiagnosisView()

app/src/main/java/org/simple/clinic/medicalhistory/newentry/NewMedicalHistoryUiRenderer.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,6 @@ package org.simple.clinic.medicalhistory.newentry
22

33
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.DiagnosedWithDiabetes
44
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.DiagnosedWithHypertension
5-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.HasHadAHeartAttack
6-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.HasHadAKidneyDisease
7-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.HasHadAStroke
8-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.IsSmoking
9-
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion.IsUsingSmokelessTobacco
105
import org.simple.clinic.mobius.ViewRenderer
116

127
class NewMedicalHistoryUiRenderer(
@@ -23,7 +18,7 @@ class NewMedicalHistoryUiRenderer(
2318
if (model.hasLoadedCurrentFacility && model.facilityDiabetesManagementEnabled) {
2419
renderDiabetesManagementEnabled(model)
2520
} else {
26-
renderDiabetesManagementDisabled(model)
21+
renderDiabetesManagementDisabled()
2722
}
2823

2924
renderSmokingQuestion(model)
@@ -38,12 +33,10 @@ class NewMedicalHistoryUiRenderer(
3833

3934
private fun renderMedicalHistoryQuestions(model: NewMedicalHistoryModel) {
4035
with(model.ongoingMedicalHistoryEntry) {
41-
ui.renderAnswerForQuestion(HasHadAHeartAttack, hasHadHeartAttack)
42-
ui.renderAnswerForQuestion(HasHadAKidneyDisease, hasHadKidneyDisease)
43-
ui.renderAnswerForQuestion(HasHadAStroke, hasHadStroke)
4436
ui.renderDiagnosisAnswer(DiagnosedWithHypertension, diagnosedWithHypertension)
4537
renderHypertensionTreatmentQuestion(model)
4638
}
39+
ui.populateOngoingMedicalHistoryEntry(model.ongoingMedicalHistoryEntry)
4740
}
4841

4942
private fun renderHypertensionTreatmentQuestion(model: NewMedicalHistoryModel) {
@@ -69,16 +62,14 @@ class NewMedicalHistoryUiRenderer(
6962
}
7063
}
7164

72-
private fun renderDiabetesManagementDisabled(model: NewMedicalHistoryModel) {
65+
private fun renderDiabetesManagementDisabled() {
7366
ui.hideDiabetesDiagnosisView()
7467
ui.showDiabetesHistorySection()
75-
ui.renderAnswerForQuestion(DiagnosedWithDiabetes, model.ongoingMedicalHistoryEntry.hasDiabetes)
7668
}
7769

7870
private fun renderSmokingQuestion(model: NewMedicalHistoryModel) {
7971
if (model.showIsSmokingQuestion) {
8072
ui.showCurrentSmokerQuestion()
81-
ui.renderAnswerForQuestion(IsSmoking, model.ongoingMedicalHistoryEntry.isSmoking)
8273
} else {
8374
ui.hideCurrentSmokerQuestion()
8475
}
@@ -87,7 +78,6 @@ class NewMedicalHistoryUiRenderer(
8778
private fun renderSmokelessTobaccoQuestion(model: NewMedicalHistoryModel) {
8879
if (model.showSmokelessTobaccoQuestion) {
8980
ui.showSmokelessTobaccoQuestion()
90-
ui.renderAnswerForQuestion(IsUsingSmokelessTobacco, model.ongoingMedicalHistoryEntry.isUsingSmokelessTobacco)
9181
} else {
9282
ui.hideSmokelessTobaccoQuestion()
9383
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package org.simple.clinic.medicalhistory.ui
2+
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.Spacer
5+
import androidx.compose.foundation.layout.padding
6+
import androidx.compose.foundation.layout.requiredHeight
7+
import androidx.compose.material.Card
8+
import androidx.compose.material.MaterialTheme
9+
import androidx.compose.material.Text
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.res.dimensionResource
13+
import androidx.compose.ui.res.stringResource
14+
import org.simple.clinic.R
15+
import org.simple.clinic.common.ui.theme.SimpleTheme
16+
import org.simple.clinic.medicalhistory.Answer
17+
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion
18+
19+
@Composable
20+
fun HistoryContainer(
21+
heartAttackAnswer: Answer?,
22+
strokeAnswer: Answer?,
23+
kidneyAnswer: Answer?,
24+
diabetesAnswer: Answer?,
25+
showDiabetesQuestion: Boolean,
26+
modifier: Modifier = Modifier,
27+
onAnswerChange: (MedicalHistoryQuestion, Answer) -> Unit,
28+
) {
29+
Card(modifier = modifier) {
30+
Column(
31+
modifier = Modifier
32+
.padding(horizontal = dimensionResource(R.dimen.spacing_16))
33+
.padding(
34+
top = dimensionResource(R.dimen.spacing_16),
35+
bottom = dimensionResource(R.dimen.spacing_4)
36+
)
37+
) {
38+
Text(
39+
text = stringResource(R.string.medicalhistorysummaryview_history),
40+
style = SimpleTheme.typography.subtitle1Medium,
41+
color = MaterialTheme.colors.onSurface,
42+
)
43+
44+
Spacer(Modifier.requiredHeight(dimensionResource(R.dimen.spacing_4)))
45+
46+
MedicalHistoryQuestionItem(
47+
question = MedicalHistoryQuestion.HasHadAHeartAttack,
48+
selectedAnswer = heartAttackAnswer,
49+
showDivider = true,
50+
) {
51+
onAnswerChange(MedicalHistoryQuestion.HasHadAHeartAttack, it)
52+
}
53+
54+
MedicalHistoryQuestionItem(
55+
question = MedicalHistoryQuestion.HasHadAStroke,
56+
selectedAnswer = strokeAnswer,
57+
showDivider = true,
58+
) {
59+
onAnswerChange(MedicalHistoryQuestion.HasHadAStroke, it)
60+
}
61+
62+
MedicalHistoryQuestionItem(
63+
question = MedicalHistoryQuestion.HasHadAKidneyDisease,
64+
selectedAnswer = kidneyAnswer,
65+
showDivider = showDiabetesQuestion,
66+
) {
67+
onAnswerChange(MedicalHistoryQuestion.HasHadAKidneyDisease, it)
68+
}
69+
70+
if (showDiabetesQuestion) {
71+
MedicalHistoryQuestionItem(
72+
question = MedicalHistoryQuestion.DiagnosedWithDiabetes,
73+
selectedAnswer = diabetesAnswer,
74+
showDivider = false,
75+
) {
76+
onAnswerChange(MedicalHistoryQuestion.DiagnosedWithDiabetes, it)
77+
}
78+
}
79+
}
80+
}
81+
}
82+

app/src/main/java/org/simple/clinic/summary/medicalhistory/ui/MedicalHistorySummary.kt

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import org.simple.clinic.R
1818
import org.simple.clinic.common.ui.theme.SimpleTheme
1919
import org.simple.clinic.medicalhistory.Answer
2020
import org.simple.clinic.medicalhistory.MedicalHistoryQuestion
21+
import org.simple.clinic.medicalhistory.ui.HistoryContainer
2122
import org.simple.clinic.medicalhistory.ui.MedicalHistoryQuestionItem
2223
import org.simple.clinic.medicalhistory.ui.TobaccoQuestion
2324

@@ -56,7 +57,7 @@ fun MedicalHistorySummary(
5657
strokeAnswer = strokeAnswer,
5758
kidneyAnswer = kidneyAnswer,
5859
diabetesAnswer = diabetesAnswer,
59-
diabetesManagementEnabled = diabetesManagementEnabled,
60+
showDiabetesQuestion = !diabetesManagementEnabled,
6061
onAnswerChange = onAnswerChange
6162
)
6263

@@ -71,70 +72,6 @@ fun MedicalHistorySummary(
7172
}
7273
}
7374

74-
@Composable
75-
fun HistoryContainer(
76-
heartAttackAnswer: Answer?,
77-
strokeAnswer: Answer?,
78-
kidneyAnswer: Answer?,
79-
diabetesAnswer: Answer?,
80-
diabetesManagementEnabled: Boolean,
81-
modifier: Modifier = Modifier,
82-
onAnswerChange: (MedicalHistoryQuestion, Answer) -> Unit,
83-
) {
84-
Card(modifier = modifier) {
85-
Column(
86-
modifier = Modifier
87-
.padding(horizontal = dimensionResource(R.dimen.spacing_16))
88-
.padding(
89-
top = dimensionResource(R.dimen.spacing_16),
90-
bottom = dimensionResource(R.dimen.spacing_4)
91-
)
92-
) {
93-
Text(
94-
text = stringResource(R.string.medicalhistorysummaryview_history),
95-
style = SimpleTheme.typography.subtitle1Medium,
96-
color = MaterialTheme.colors.onSurface,
97-
)
98-
99-
Spacer(Modifier.requiredHeight(dimensionResource(R.dimen.spacing_4)))
100-
101-
MedicalHistoryQuestionItem(
102-
question = MedicalHistoryQuestion.HasHadAHeartAttack,
103-
selectedAnswer = heartAttackAnswer,
104-
showDivider = true,
105-
) {
106-
onAnswerChange(MedicalHistoryQuestion.HasHadAHeartAttack, it)
107-
}
108-
109-
MedicalHistoryQuestionItem(
110-
question = MedicalHistoryQuestion.HasHadAStroke,
111-
selectedAnswer = strokeAnswer,
112-
showDivider = true,
113-
) {
114-
onAnswerChange(MedicalHistoryQuestion.HasHadAStroke, it)
115-
}
116-
117-
MedicalHistoryQuestionItem(
118-
question = MedicalHistoryQuestion.HasHadAKidneyDisease,
119-
selectedAnswer = kidneyAnswer,
120-
showDivider = !diabetesManagementEnabled,
121-
) {
122-
onAnswerChange(MedicalHistoryQuestion.HasHadAKidneyDisease, it)
123-
}
124-
125-
if (!diabetesManagementEnabled) {
126-
MedicalHistoryQuestionItem(
127-
question = MedicalHistoryQuestion.DiagnosedWithDiabetes,
128-
selectedAnswer = diabetesAnswer,
129-
showDivider = false,
130-
) {
131-
onAnswerChange(MedicalHistoryQuestion.DiagnosedWithDiabetes, it)
132-
}
133-
}
134-
}
135-
}
136-
}
137-
13875
@Composable
13976
private fun DiagnosisContainer(
14077
hypertensionAnswer: Answer?,

0 commit comments

Comments
 (0)