Skip to content

Commit d6e0b70

Browse files
siddh1004sagarwal
andauthored
1 parent 397fd72 commit d6e0b70

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+522
-562
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
### Changes
3535

3636
- Hide next button when registration is going
37+
- Add Suspected option to hypertension and diabetes questions
3738

3839
## 2025.09.09
3940

app/src/main/java/org/simple/clinic/home/overdue/OverdueModel.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ data class OverdueModel(
3434
}
3535
}
3636

37-
val isDiabetesManagementEnabled: Boolean
38-
get() = facility!!.config.diabetesManagementEnabled
39-
4037
val hasLoadedCurrentFacility: Boolean
4138
get() = facility != null
4239

app/src/main/java/org/simple/clinic/medicalhistory/Answer.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
11
package org.simple.clinic.medicalhistory
22

33
import android.os.Parcelable
4+
import androidx.annotation.StringRes
45
import androidx.annotation.VisibleForTesting
56
import androidx.room.TypeConverter
67
import com.squareup.moshi.FromJson
78
import com.squareup.moshi.ToJson
89
import kotlinx.parcelize.Parcelize
10+
import org.simple.clinic.R
911
import org.simple.clinic.util.room.SafeEnumTypeAdapter
1012

11-
sealed class Answer : Parcelable {
13+
sealed class Answer(
14+
@StringRes val labelRes: Int? = null
15+
) : Parcelable {
1216

1317
@Parcelize
14-
data object Yes : Answer()
18+
data object Yes : Answer(R.string.newmedicalhistory_yes)
1519

1620
@Parcelize
17-
data object No : Answer()
21+
data object No : Answer(R.string.newmedicalhistory_no)
22+
23+
@Parcelize
24+
data object Suspected : Answer(R.string.newmedicalhistory_suspected)
1825

1926
@Parcelize
2027
data object Unanswered : Answer()
@@ -27,6 +34,7 @@ sealed class Answer : Parcelable {
2734
knownMappings = mapOf(
2835
Yes to "yes",
2936
No to "no",
37+
Suspected to "suspected",
3038
// The actual value of the Unanswered enum should be "unanswered",
3139
// but the current api representation is "unknown". This is a little
3240
// confusing because we use Unknown as the convention for values which

app/src/main/java/org/simple/clinic/medicalhistory/MedicalHistory.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,14 @@ data class MedicalHistory(
7979
}
8080
}
8181

82+
val hypertensionRecorded: Boolean
83+
get() = diagnosedWithHypertension != Unanswered
84+
85+
val diabetesRecorded: Boolean
86+
get() = diagnosedWithDiabetes != Unanswered
87+
8288
val diagnosisRecorded: Boolean
83-
get() = diagnosedWithHypertension != Unanswered && diagnosedWithDiabetes != Unanswered
89+
get() = hypertensionRecorded && diabetesRecorded
8490

8591
fun answered(question: MedicalHistoryQuestion, answer: Answer): MedicalHistory {
8692
return when (question) {

app/src/main/java/org/simple/clinic/medicalhistory/MedicalHistoryQuestionView.kt

Lines changed: 0 additions & 86 deletions
This file was deleted.

app/src/main/java/org/simple/clinic/medicalhistory/SelectDiagnosisErrorDialog.kt

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,32 @@ class SelectDiagnosisErrorDialog : AppCompatDialogFragment() {
1212
companion object {
1313

1414
private const val FRAGMENT_TAG = "select_diagnosis_error_alert"
15+
private const val KEY_DIABETES_MANAGEMENT_ENABLED = "key_diabetes_management_enabled"
1516

16-
fun show(fragmentManager: FragmentManager) {
17-
val fragment = SelectDiagnosisErrorDialog()
17+
fun show(fragmentManager: FragmentManager, diabetesManagementEnabled: Boolean) {
18+
val fragment = SelectDiagnosisErrorDialog().apply {
19+
arguments = Bundle().apply {
20+
putBoolean(KEY_DIABETES_MANAGEMENT_ENABLED, diabetesManagementEnabled)
21+
}
22+
}
1823

1924
fragment.show(fragmentManager, FRAGMENT_TAG)
2025
}
2126
}
2227

2328
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
29+
val diabetesManagementEnabled =
30+
arguments?.getBoolean(KEY_DIABETES_MANAGEMENT_ENABLED) ?: false
31+
32+
val messageRes = if (diabetesManagementEnabled) {
33+
R.string.select_diagnosis_error_enter_diagnosis_both_hypertension_diabetes
34+
} else {
35+
R.string.select_diagnosis_error_enter_diagnosis_hypertension
36+
}
37+
2438
return MaterialAlertDialogBuilder(requireContext())
2539
.setTitle(getString(R.string.select_diagnosis_error_diagnosis_required))
26-
.setMessage(getString(R.string.select_diagnosis_error_enter_diagnosis_both_hypertension_diabetes))
40+
.setMessage(getString(messageRes))
2741
.setPositiveButton(getString(R.string.select_diagnosis_error_ok), null)
2842
.create()
2943
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ class NewMedicalHistoryScreen : Fragment(), NewMedicalHistoryUiActions, HandlesB
5454
@Inject
5555
lateinit var features: Features
5656

57-
@Inject
58-
lateinit var newMedicalHistoryEffectHandler: NewMedicalHistoryEffectHandler.Factory
59-
6057
private val viewEffectHandler by unsafeLazy { NewMedicalHistoryViewEffectHandler(this) }
6158

6259
private val viewModel by viewModels<NewMedicalHistoryViewModel>(
@@ -73,7 +70,7 @@ class NewMedicalHistoryScreen : Fragment(), NewMedicalHistoryUiActions, HandlesB
7370
context.injector<Injector>().inject(this)
7471
}
7572

76-
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
73+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
7774
return ComposeView(requireContext()).apply {
7875
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
7976

@@ -113,7 +110,7 @@ class NewMedicalHistoryScreen : Fragment(), NewMedicalHistoryUiActions, HandlesB
113110
}
114111

115112
override fun showDiagnosisRequiredErrorDialog() {
116-
SelectDiagnosisErrorDialog.show(activity.supportFragmentManager)
113+
SelectDiagnosisErrorDialog.show(activity.supportFragmentManager, true)
117114
}
118115

119116
override fun showHypertensionDiagnosisRequiredErrorDialog() {
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
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.Divider
9+
import androidx.compose.runtime.Composable
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.res.dimensionResource
12+
import androidx.compose.ui.res.stringResource
13+
import androidx.compose.ui.tooling.preview.Preview
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 DiagnosisContainer(
21+
hypertensionAnswer: Answer?,
22+
diabetesAnswer: Answer?,
23+
showDiabetesDiagnosisView: Boolean,
24+
modifier: Modifier = Modifier,
25+
onAnswerChange: (MedicalHistoryQuestion, Answer) -> Unit,
26+
) {
27+
Card(modifier = modifier) {
28+
Column(
29+
modifier = Modifier
30+
.padding(dimensionResource(R.dimen.spacing_16))
31+
) {
32+
33+
MedicalHistoryDiagnosisQuestionItem(
34+
header = stringResource(R.string.medicalhistorysummaryview_hypertension_diagnosis),
35+
question = MedicalHistoryQuestion.DiagnosedWithHypertension,
36+
options = listOf(Answer.Yes, Answer.No, Answer.Suspected),
37+
selectedAnswer = hypertensionAnswer,
38+
onAnswerChange = onAnswerChange
39+
)
40+
41+
if (showDiabetesDiagnosisView) {
42+
43+
Spacer(Modifier.requiredHeight(dimensionResource(R.dimen.spacing_16)))
44+
45+
Divider(color = SimpleTheme.colors.onSurface11)
46+
47+
Spacer(Modifier.requiredHeight(dimensionResource(R.dimen.spacing_16)))
48+
49+
MedicalHistoryDiagnosisQuestionItem(
50+
header = stringResource(R.string.medicalhistorysummaryview_diabetes_diagnosis),
51+
question = MedicalHistoryQuestion.DiagnosedWithDiabetes,
52+
options = listOf(Answer.Yes, Answer.No, Answer.Suspected),
53+
selectedAnswer = diabetesAnswer,
54+
onAnswerChange = onAnswerChange
55+
)
56+
}
57+
}
58+
}
59+
}
60+
61+
@Preview
62+
@Composable
63+
fun DiagnosisContainerPreview(modifier: Modifier = Modifier) {
64+
SimpleTheme {
65+
DiagnosisContainer(
66+
hypertensionAnswer = Answer.Yes,
67+
diabetesAnswer = Answer.No,
68+
showDiabetesDiagnosisView = true,
69+
modifier = modifier,
70+
onAnswerChange = { _, _ -> }
71+
)
72+
}
73+
}

0 commit comments

Comments
 (0)