add new slope class thresholds

This commit is contained in:
Pritimay Sarkar
2023-12-23 18:19:13 +05:30
parent 9183c97aef
commit 7a4b68690d
4 changed files with 14 additions and 12 deletions

View File

@@ -19,8 +19,8 @@ android {
applicationId "in.sminnovations.hpostesting.preprod" applicationId "in.sminnovations.hpostesting.preprod"
minSdk 21 minSdk 21
targetSdk 34 targetSdk 34
versionCode 60 versionCode 62
versionName "2.1.60" versionName "2.1.62"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@@ -11,7 +11,7 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData
import com.google.android.datatransport.runtime.dagger.Provides import com.google.android.datatransport.runtime.dagger.Provides
import javax.inject.Singleton import javax.inject.Singleton
@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 13, exportSchema = false) @Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 14, exportSchema = false)
@TypeConverters(Converters::class) @TypeConverters(Converters::class)
abstract class MyDatabase : RoomDatabase() { abstract class MyDatabase : RoomDatabase() {
abstract fun userDao(): UserDao abstract fun userDao(): UserDao

View File

@@ -26,6 +26,7 @@ import com.google.firebase.ktx.Firebase
import com.google.firebase.perf.ktx.performance import com.google.firebase.perf.ktx.performance
import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
import kotlin.math.abs
import kotlin.math.log10 import kotlin.math.log10
class HemoCubeFragment : Fragment() { class HemoCubeFragment : Fragment() {
@@ -504,7 +505,8 @@ class HemoCubeFragment : Fragment() {
_predictedDenovixRatio = fittedAbs3.div(fittedAbs1) _predictedDenovixRatio = fittedAbs3.div(fittedAbs1)
val _slopeRatio = (fittedAbs1 - fittedAbs2) / (435 - 415) val slope = (led1Average - led2Average) / (435 - 415)
val _slopeRatio = abs(led3Average / slope)
val slopeClass = slopeRatioClassification(_slopeRatio) val slopeClass = slopeRatioClassification(_slopeRatio)
if (fittedAbs1 <= fittedAbs2) { if (fittedAbs1 <= fittedAbs2) {
@@ -569,8 +571,8 @@ class HemoCubeFragment : Fragment() {
this.classificationResult = findResult(calculatedRatio) this.classificationResult = findResult(calculatedRatio)
this.prdClassification = absorbanceBasedClassification(predictedDenovixRatio) this.prdClassification = absorbanceBasedClassification(predictedDenovixRatio)
this.deviceRatioClass = deviceRatioClassification(deviceRatio) this.deviceRatioClass = deviceRatioClassification(deviceRatio)
this.slopeRatioClass = slopeRatioClass this.slopeRatioClass = slopeClass
hemoCubeViewModel.messages.postValue("Pdr: ${this.prdClassification}\n, Slope: ${this.slopeRatioClass}\n, Device: ${this.deviceRatioClass}") hemoCubeViewModel.messages.postValue("Slope Ratio: ${slopeRatio},\n Slope: ${this.slopeRatioClass}\n")
this.errorMessages = allErrorMessages this.errorMessages = allErrorMessages
this.resultData = deviceLog this.resultData = deviceLog
this.batteryLevel = hemoCubeViewModel.getBatteryLevel().toString() this.batteryLevel = hemoCubeViewModel.getBatteryLevel().toString()
@@ -669,15 +671,15 @@ class HemoCubeFragment : Fragment() {
try { try {
hemoCubeViewModel.messages.postValue("result classification") hemoCubeViewModel.messages.postValue("result classification")
if (ratio != null) { if (ratio != null) {
if (ratio in 0.0..35.0) if (ratio in 0.0..30.0)
return getString(R.string.normal) return getString(R.string.normal)
if (ratio in 35.0..40.0) if (ratio in 30.0..35.0)
return getString(R.string.negative_borderline) return getString(R.string.negative_borderline)
if (ratio in 40.0..70.0) if (ratio in 35.0..50.0)
return getString(R.string.sickle_cell_trait) return getString(R.string.sickle_cell_trait)
if (ratio in 70.0..75.0) if (ratio in 50.0..60.0)
return getString(R.string.positive_for_sickle_cell) return getString(R.string.positive_for_sickle_cell)
if (ratio in 75.0..300.0) if (ratio > 60.0)
return getString(R.string.sickle_cell_disease) return getString(R.string.sickle_cell_disease)
} else { } else {
return getString(R.string.invalid) return getString(R.string.invalid)

View File

@@ -210,7 +210,7 @@
style="@style/title1_1" style="@style/title1_1"
android:visibility="gone" android:visibility="gone"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="180dp" android:layout_height="0dp"
android:layout_marginHorizontal="24dp" android:layout_marginHorizontal="24dp"
android:layout_marginTop="72dp" android:layout_marginTop="72dp"
android:gravity="center" android:gravity="center"