add result classification

- add result classification
	- add sample start command for positive confirmation
	- remove toast on result screen
This commit is contained in:
Pritimay Sarkar
2023-09-17 23:46:30 +05:30
parent dfa9fe7672
commit 515ab24ce6
3 changed files with 34 additions and 5 deletions

View File

@@ -27,5 +27,6 @@ data class HemoCubeTestData(
var led1Average: Double? = null, var led1Average: Double? = null,
var led2Average: Double? = null, var led2Average: Double? = null,
var deviceRatio: Double? = null, var deviceRatio: Double? = null,
var calculatedRatio: Double? = null var calculatedRatio: Double? = null,
var classificationResult: String = ""
) )

View File

@@ -104,8 +104,6 @@ class HemoCubeFragment : Fragment() {
hemoCubeViewModel.deviceData.observe(viewLifecycleOwner) { hemoCubeViewModel.deviceData.observe(viewLifecycleOwner) {
currentDeviceData = it currentDeviceData = it
showToast(calculateRatio(0.17).toString())
} }
hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable -> hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable ->
@@ -115,7 +113,7 @@ class HemoCubeFragment : Fragment() {
val coefficient1 = coefficients[0] val coefficient1 = coefficients[0]
val coefficient2 = coefficients[1] val coefficient2 = coefficients[1]
val result = coefficient1 * coefficient2 val result = coefficient1 * coefficient2
showToast("Result: $result") showToast("coefficients: $coefficient1, $coefficient2")
} }
} }
isOnline = isNetworkAvailable isOnline = isNetworkAvailable
@@ -279,7 +277,8 @@ class HemoCubeFragment : Fragment() {
override fun onClickNegativeButton() {} override fun onClickNegativeButton() {}
override fun onClickPositiveButton() { override fun onClickPositiveButton() {
listenToHemoCube()
startSampleProcess()
} }
}) })
} }
@@ -316,6 +315,7 @@ class HemoCubeFragment : Fragment() {
this.led2Average = led2Average this.led2Average = led2Average
this.deviceRatio = deviceRatio this.deviceRatio = deviceRatio
this.calculatedRatio = calculateRatio(deviceRatio) this.calculatedRatio = calculateRatio(deviceRatio)
this.classificationResult = findResult(calculatedRatio)
this.resultData = fullReadOutput this.resultData = fullReadOutput
if (!isBufferValueAvailable()) { if (!isBufferValueAvailable()) {
with(sharedPreferences.edit()) { with(sharedPreferences.edit()) {
@@ -331,6 +331,33 @@ class HemoCubeFragment : Fragment() {
} }
} }
private fun findResult(calculatedRatio: Double?): String {
try {
if (calculatedRatio != null) {
if (calculatedRatio < 0.085)
return "Inconclusive. Very low Absorbance - Repeat test with Higher Blood Volume"
if (calculatedRatio in 0.085 .. 0.155)
return "Normal"
if (calculatedRatio in 0.155 .. 0.175)
return "Negative Borderline. Repeat Test"
if (calculatedRatio in 0.175 .. 0.22)
return "Sickle Cell Trait"
if (calculatedRatio in 0.22 .. 0.25)
return "Positive for Sickle Cell. HPLC for Confirmation"
if (calculatedRatio in 0.25 .. 0.35)
return "Sickle Cell Disease"
if (calculatedRatio > 0.35)
return "Inconclusive. Repeat with test with lower volume of blood"
} else {
return "NULL"
}
} catch (_: Exception) {
showToast("error while performing classification")
return "ERROR"
}
return "NULL"
}
private fun showToast(message: String) { private fun showToast(message: String) {
Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show()
} }

View File

@@ -85,6 +85,7 @@ class HemoCubeViewModel @Inject constructor(
testDetails?.led2Average = DataHolder.hemoCubeTestData?.led2Average testDetails?.led2Average = DataHolder.hemoCubeTestData?.led2Average
testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio
testDetails?.calculatedRatio = DataHolder.hemoCubeTestData?.calculatedRatio testDetails?.calculatedRatio = DataHolder.hemoCubeTestData?.calculatedRatio
testDetails?.classificationResult = DataHolder.hemoCubeTestData?.classificationResult!!
viewModelScope.launch { viewModelScope.launch {
try { try {