diff --git a/app/build.gradle b/app/build.gradle index 138dab7..35f690a 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 39 + versionName "2.1.39" 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..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 @@ -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.89), // 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.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 ), ) - 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/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt index f186a27..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 = 9, 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 94f31f9..5b22aee 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 @@ -49,6 +49,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/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt index 3a96903..a1420c1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -127,6 +127,15 @@ 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, R.string.invalid_kit_number, Toast.LENGTH_LONG).show() 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 fb14031..9bc21ea 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 @@ -57,6 +57,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?, @@ -429,6 +430,7 @@ 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 = R.string.error_improper_buffer_low.toString() binding.errorMessage.visibility = View.VISIBLE @@ -441,6 +443,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 = R.string.error_improper_buffer_high.toString() @@ -470,6 +473,7 @@ class HemoCubeFragment : Fragment() { if (fittedAbs1!! <= fittedAbs2!!) { validationError = true + allErrorMessages += "Error: Invalid Test. Problem with de-oxygenation" + "\n" activity?.runOnUiThread { binding.errorMessage.text = R.string.error_invalid_test.toString() binding.errorMessage.visibility = View.VISIBLE @@ -484,6 +488,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 @@ -511,6 +524,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() @@ -529,14 +543,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(),