From 28bd9cbd436a6ad10a29402a7cae911c1ca53ce2 Mon Sep 17 00:00:00 2001 From: Kaif Date: Mon, 20 Nov 2023 14:14:19 +0530 Subject: [PATCH 1/4] Kit number invalid error fixed --- .../presentation/KitScanActivity.kt | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt index 53f8fd3..332d4cb 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -127,26 +127,20 @@ class KitScanActivity : AppCompatActivity() { val i = Intent(applicationContext, DashboardActivity::class.java) startActivity(i) finish() + } else { + DataHolder.kitSerial = binding.nameEditText.text.toString() + DataHolder.selectedTest?.kitSerial = binding.nameEditText.text.toString() + with(sharedPreference.edit()) { + putString(Constants.KIT_NUMBER, binding.nameEditText.text.toString()) + putInt(Constants.KIT_COUNT, 1) + apply() + } + moveToNext() } } else { Toast.makeText(this, "Invalid KIT Number", Toast.LENGTH_LONG).show() return@setOnClickListener } - if (serialNumber.isNotEmpty() && checkDataNotNull() && isSerialValid( - serialNumber - ) - ) { - DataHolder.kitSerial = binding.nameEditText.text.toString() - DataHolder.selectedTest?.kitSerial = binding.nameEditText.text.toString() - with(sharedPreference.edit()) { - putString(Constants.KIT_NUMBER, binding.nameEditText.text.toString()) - putInt(Constants.KIT_COUNT, 1) - apply() - } - moveToNext() - } else { - Toast.makeText(this, "Invalid KIT Number", Toast.LENGTH_LONG).show() - } } } From 8940352e05bb8265fc476946925ed70887394b45 Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Wed, 22 Nov 2023 10:36:59 +0530 Subject: [PATCH 2/4] prior testing related changes for clinical validation --- app/build.gradle | 7 ++-- .../hpostesting/data/constant/Constants.kt | 32 +++++++++---------- .../presentation/hemocube/HemoCubeFragment.kt | 4 +-- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 61967bf..7bcf6d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "in.sminnovations.hpostesting" minSdk 21 targetSdk 34 - versionCode 30 - versionName "2.1.30" + versionCode 35 + versionName "2.1.35" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -49,6 +49,9 @@ android { abortOnError false checkReleaseBuilds false } + packagingOptions { + exclude 'mockito-extensions/org.mockito.plugins.MockMaker' + } } dependencies { diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index 3212e10..40f1acf 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -80,34 +80,34 @@ object Constants { val DEVICE_CONFIGURATION: Map>> = mapOf>>( "HCV-000-3001" to listOf( - listOf(1.264817, -0.85965), // LED1, 435nm + listOf(1.313, -0.9191), // LED1, 435nm listOf(0.581462456, -0.58502), // LED2, 415nm - listOf(0.184991, 0.001704), // LED3, 555nm + listOf(0.2012, 0.0092), // LED3, 555nm listOf(1.0, 0.0) // LED4 ), "HCV-000-3002" to listOf( - listOf(1.264817, -0.85965), - listOf(0.581462456, -0.58502), - listOf(0.184991, 0.001704), - listOf(1.0, 0.0) + listOf(0.587389, 0.0), // LED1, 435nm + listOf(0.581462456, -0.58502), // LED2, 415nm + listOf(0.166459, 0.0), // LED3, 555nm + listOf(1.0, 0.0) // LED4 ), ) - const val INCUBATION_TIME_MIN = 15 - const val INCUBATION_TIME_MAX = 30 + const val INCUBATION_TIME_MIN = 0 + const val INCUBATION_TIME_MAX = 1400 val BUFFER_INTENSITY_THRESHOLDS: Map>> = mapOf>>( "HCV-000-3001" to listOf( - listOf(24000, 24500), - listOf(21000, 24500), - listOf(21000, 24500), - listOf(21000, 24500), + listOf(20000, 25074), + listOf(20000, 24596), + listOf(20000, 26065), + listOf(20000, 27093), ), "HCV-000-3002" to listOf( - listOf(21000, 24500), - listOf(21000, 24500), - listOf(21000, 24500), - listOf(21000, 24500), + listOf(24500, 26250), + listOf(24500, 26250), + listOf(24500, 26250), + listOf(24500, 26250), ) ) } \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index d392a37..bb2f5d9 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -521,14 +521,14 @@ class HemoCubeFragment : Fragment() { } } - if (!validationError) { +// if (!validationError) { activity?.runOnUiThread { binding.btnSubmit.visibility = View.VISIBLE binding.btnSubmit.isEnabled = true binding.btnSubmit.isClickable = true binding.clParent.setBackgroundColor(Color.parseColor("#edfffd")) } - } +// } } catch (e: Exception) { Toast.makeText( requireContext(), From 457c65216131333b29e741880a9da14c49ab496d Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Mon, 27 Nov 2023 10:23:44 +0530 Subject: [PATCH 3/4] add low Hb check and log errors --- app/build.gradle | 4 ++-- .../hpostesting/data/constant/Constants.kt | 6 +++--- .../example/hpostesting/data/dao/MyDataBase.kt | 2 +- .../data/model/patient/HemoCubeTestData.kt | 1 + .../presentation/hemocube/HemoCubeFragment.kt | 16 +++++++++++++++- .../presentation/hemocube/HemoCubeViewModel.kt | 1 + 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7bcf6d9..bfe738a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "in.sminnovations.hpostesting" minSdk 21 targetSdk 34 - versionCode 35 - versionName "2.1.35" + versionCode 38 + versionName "2.1.38" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index 40f1acf..6d6b23d 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -80,15 +80,15 @@ object Constants { val DEVICE_CONFIGURATION: Map>> = mapOf>>( "HCV-000-3001" to listOf( - listOf(1.313, -0.9191), // LED1, 435nm + listOf(1.313, -0.89), // LED1, 435nm listOf(0.581462456, -0.58502), // LED2, 415nm listOf(0.2012, 0.0092), // LED3, 555nm listOf(1.0, 0.0) // LED4 ), "HCV-000-3002" to listOf( - listOf(0.587389, 0.0), // LED1, 435nm + listOf(1.313, -0.89), // LED1, 435nm listOf(0.581462456, -0.58502), // LED2, 415nm - listOf(0.166459, 0.0), // LED3, 555nm + listOf(0.2012, 0.0092), // LED3, 555nm listOf(1.0, 0.0) // LED4 ), ) diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt index 62cbda1..73079ab 100644 --- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt +++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt @@ -11,7 +11,7 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.google.android.datatransport.runtime.dagger.Provides import javax.inject.Singleton -@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 10, exportSchema = false) +@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 11, exportSchema = false) @TypeConverters(Converters::class) abstract class MyDatabase : RoomDatabase() { abstract fun userDao(): UserDao diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt index f410705..f642605 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/HemoCubeTestData.kt @@ -46,6 +46,7 @@ data class HemoCubeTestData( var coefficients: String? = "", var classificationResult: String = "", var prdClassification: String = "", + var errorMessages: String = "", var batteryLevel: String = "", var batteryCapacity: String = "", var batteryMaxCapacity: String = "", diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index bb2f5d9..5f0ab39 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -56,6 +56,7 @@ class HemoCubeFragment : Fragment() { private var _predictedDenovixRatio = 0.0 private var validationError = false private var deviceHardwareId = "" + private var allErrorMessages = "" override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, @@ -423,8 +424,9 @@ class HemoCubeFragment : Fragment() { || led4BufferForDevice < Constants.BUFFER_INTENSITY_THRESHOLDS[deviceHardwareId]?.get(3)?.get(0)!! ) { validationError = true + allErrorMessages += "Error: Invalid Test. Improper buffer reading (low)" activity?.runOnUiThread { - binding.errorMessage.text = "Error: Invalid Test. Improper buffer reading (low)" + binding.errorMessage.text = "Error: Invalid Test. Improper buffer reading (low)" + "\n" binding.errorMessage.visibility = View.VISIBLE } } @@ -435,6 +437,7 @@ class HemoCubeFragment : Fragment() { || led4BufferForDevice > Constants.BUFFER_INTENSITY_THRESHOLDS[deviceHardwareId]?.get(3)?.get(1)!! ) { validationError = true + allErrorMessages += "Error: Invalid Test. Improper buffer reading (high)" + "\n" activity?.runOnUiThread { binding.errorMessage.text = "Error: Invalid Test. Improper buffer reading (high)" @@ -462,6 +465,7 @@ class HemoCubeFragment : Fragment() { if (fittedAbs1!! <= fittedAbs2!!) { validationError = true + allErrorMessages += "Error: Invalid Test. Problem with de-oxygenation" + "\n" activity?.runOnUiThread { binding.errorMessage.text = "Error: Invalid Test. Problem with de-oxygenation" binding.errorMessage.visibility = View.VISIBLE @@ -476,6 +480,15 @@ class HemoCubeFragment : Fragment() { } } + if (fittedAbs3 < 0.1) { + validationError = true + allErrorMessages += "Error: Low Hb. Repeat test" + "\n" + activity?.runOnUiThread { + binding.errorMessage.text = "Error: Low Hb. Repeat test" + binding.errorMessage.visibility = View.VISIBLE + } + } + DataHolder.hemoCubeTestData?.apply { deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString() led1Buffer = led1BufferForDevice @@ -503,6 +516,7 @@ class HemoCubeFragment : Fragment() { this.classificationResult = findResult(calculatedRatio) this.prdClassification = absorbanceBasedClassification(predictedDenovixRatio) hemoCubeViewModel.messages.postValue(this.prdClassification) + this.errorMessages = allErrorMessages this.resultData = deviceLog this.batteryLevel = hemoCubeViewModel.getBatteryLevel().toString() this.batteryCapacity = hemoCubeViewModel.getBatteryCapacity(requireContext()).toString() diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt index b4b4305..4987d1e 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt @@ -125,6 +125,7 @@ class HemoCubeViewModel @Inject constructor( testDetails?.coefficients = DataHolder.hemoCubeTestData?.coefficients testDetails?.classificationResult = DataHolder.hemoCubeTestData?.classificationResult!! testDetails?.prdClassification = DataHolder.hemoCubeTestData?.prdClassification.toString() + testDetails?.errorMessages = DataHolder.hemoCubeTestData?.errorMessages.toString() testDetails?.batteryLevel = DataHolder.hemoCubeTestData?.batteryLevel.toString() testDetails?.batteryCapacity = DataHolder.hemoCubeTestData?.batteryCapacity.toString() testDetails?.batteryMaxCapacity = DataHolder.hemoCubeTestData?.batteryMaxCapacity.toString() From a02ba3e9ea44daedf9b07310402f9a503b969cfd Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Tue, 28 Nov 2023 12:05:06 +0530 Subject: [PATCH 4/4] release 2.1.39 with updated coeffs for dev2 --- app/build.gradle | 4 ++-- .../com/example/hpostesting/data/constant/Constants.kt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bfe738a..0eca9d0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "in.sminnovations.hpostesting" minSdk 21 targetSdk 34 - versionCode 38 - versionName "2.1.38" + versionCode 39 + versionName "2.1.39" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index 6d6b23d..fde46ad 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -86,10 +86,10 @@ object Constants { listOf(1.0, 0.0) // LED4 ), "HCV-000-3002" to listOf( - listOf(1.313, -0.89), // LED1, 435nm - listOf(0.581462456, -0.58502), // LED2, 415nm - listOf(0.2012, 0.0092), // LED3, 555nm - listOf(1.0, 0.0) // LED4 + listOf(0.723142, -0.09135), // LED1, 435nm + listOf(0.581462456, -0.58502), // LED2, 415nm + listOf(0.1964, 0.011565), // LED3, 555nm + listOf(1.0, 0.0) // LED4 ), )