Merge branch 'preprod' into 'LanguageTranslation'

# Conflicts:
#   app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
#   app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt
#   app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt
#   app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
This commit is contained in:
Pritimay Sarkar
2023-11-30 08:52:01 +00:00
6 changed files with 48 additions and 21 deletions

View File

@@ -19,8 +19,8 @@ android {
applicationId "in.sminnovations.hpostesting" applicationId "in.sminnovations.hpostesting"
minSdk 21 minSdk 21
targetSdk 34 targetSdk 34
versionCode 30 versionCode 39
versionName "2.1.30" versionName "2.1.39"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@@ -49,6 +49,9 @@ android {
abortOnError false abortOnError false
checkReleaseBuilds false checkReleaseBuilds false
} }
packagingOptions {
exclude 'mockito-extensions/org.mockito.plugins.MockMaker'
}
} }
dependencies { dependencies {

View File

@@ -80,34 +80,34 @@ object Constants {
val DEVICE_CONFIGURATION: Map<String, List<List<Double>>> = mapOf<String, List<List<Double>>>( val DEVICE_CONFIGURATION: Map<String, List<List<Double>>> = mapOf<String, List<List<Double>>>(
"HCV-000-3001" to listOf( "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.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 listOf(1.0, 0.0) // LED4
), ),
"HCV-000-3002" to listOf( "HCV-000-3002" to listOf(
listOf(1.264817, -0.85965), listOf(0.723142, -0.09135), // LED1, 435nm
listOf(0.581462456, -0.58502), listOf(0.581462456, -0.58502), // LED2, 415nm
listOf(0.184991, 0.001704), listOf(0.1964, 0.011565), // LED3, 555nm
listOf(1.0, 0.0) listOf(1.0, 0.0) // LED4
), ),
) )
const val INCUBATION_TIME_MIN = 15 const val INCUBATION_TIME_MIN = 0
const val INCUBATION_TIME_MAX = 30 const val INCUBATION_TIME_MAX = 1400
val BUFFER_INTENSITY_THRESHOLDS: Map<String, List<List<Int>>> = mapOf<String, List<List<Int>>>( val BUFFER_INTENSITY_THRESHOLDS: Map<String, List<List<Int>>> = mapOf<String, List<List<Int>>>(
"HCV-000-3001" to listOf( "HCV-000-3001" to listOf(
listOf(24000, 24500), listOf(20000, 25074),
listOf(21000, 24500), listOf(20000, 24596),
listOf(21000, 24500), listOf(20000, 26065),
listOf(21000, 24500), listOf(20000, 27093),
), ),
"HCV-000-3002" to listOf( "HCV-000-3002" to listOf(
listOf(21000, 24500), listOf(24500, 26250),
listOf(21000, 24500), listOf(24500, 26250),
listOf(21000, 24500), listOf(24500, 26250),
listOf(21000, 24500), listOf(24500, 26250),
) )
) )
} }

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 = 9, exportSchema = false) @Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 11, 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

@@ -49,6 +49,7 @@ data class HemoCubeTestData(
var coefficients: String? = "", var coefficients: String? = "",
var classificationResult: String = "", var classificationResult: String = "",
var prdClassification: String = "", var prdClassification: String = "",
var errorMessages: String = "",
var batteryLevel: String = "", var batteryLevel: String = "",
var batteryCapacity: String = "", var batteryCapacity: String = "",
var batteryMaxCapacity: String = "", var batteryMaxCapacity: String = "",

View File

@@ -127,6 +127,15 @@ class KitScanActivity : AppCompatActivity() {
val i = Intent(applicationContext, DashboardActivity::class.java) val i = Intent(applicationContext, DashboardActivity::class.java)
startActivity(i) startActivity(i)
finish() 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 { } else {
Toast.makeText(this, R.string.invalid_kit_number, Toast.LENGTH_LONG).show() Toast.makeText(this, R.string.invalid_kit_number, Toast.LENGTH_LONG).show()

View File

@@ -57,6 +57,7 @@ class HemoCubeFragment : Fragment() {
private var _predictedDenovixRatio = 0.0 private var _predictedDenovixRatio = 0.0
private var validationError = false private var validationError = false
private var deviceHardwareId = "" private var deviceHardwareId = ""
private var allErrorMessages = ""
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?, inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
@@ -429,6 +430,7 @@ class HemoCubeFragment : Fragment() {
|| led4BufferForDevice < Constants.BUFFER_INTENSITY_THRESHOLDS[deviceHardwareId]?.get(3)?.get(0)!! || led4BufferForDevice < Constants.BUFFER_INTENSITY_THRESHOLDS[deviceHardwareId]?.get(3)?.get(0)!!
) { ) {
validationError = true validationError = true
allErrorMessages += "Error: Invalid Test. Improper buffer reading (low)"
activity?.runOnUiThread { activity?.runOnUiThread {
binding.errorMessage.text = R.string.error_improper_buffer_low.toString() binding.errorMessage.text = R.string.error_improper_buffer_low.toString()
binding.errorMessage.visibility = View.VISIBLE binding.errorMessage.visibility = View.VISIBLE
@@ -441,6 +443,7 @@ class HemoCubeFragment : Fragment() {
|| led4BufferForDevice > Constants.BUFFER_INTENSITY_THRESHOLDS[deviceHardwareId]?.get(3)?.get(1)!! || led4BufferForDevice > Constants.BUFFER_INTENSITY_THRESHOLDS[deviceHardwareId]?.get(3)?.get(1)!!
) { ) {
validationError = true validationError = true
allErrorMessages += "Error: Invalid Test. Improper buffer reading (high)" + "\n"
activity?.runOnUiThread { activity?.runOnUiThread {
binding.errorMessage.text = binding.errorMessage.text =
R.string.error_improper_buffer_high.toString() R.string.error_improper_buffer_high.toString()
@@ -470,6 +473,7 @@ class HemoCubeFragment : Fragment() {
if (fittedAbs1!! <= fittedAbs2!!) { if (fittedAbs1!! <= fittedAbs2!!) {
validationError = true validationError = true
allErrorMessages += "Error: Invalid Test. Problem with de-oxygenation" + "\n"
activity?.runOnUiThread { activity?.runOnUiThread {
binding.errorMessage.text = R.string.error_invalid_test.toString() binding.errorMessage.text = R.string.error_invalid_test.toString()
binding.errorMessage.visibility = View.VISIBLE 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 { DataHolder.hemoCubeTestData?.apply {
deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString() deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString()
led1Buffer = led1BufferForDevice led1Buffer = led1BufferForDevice
@@ -511,6 +524,7 @@ class HemoCubeFragment : Fragment() {
this.classificationResult = findResult(calculatedRatio) this.classificationResult = findResult(calculatedRatio)
this.prdClassification = absorbanceBasedClassification(predictedDenovixRatio) this.prdClassification = absorbanceBasedClassification(predictedDenovixRatio)
hemoCubeViewModel.messages.postValue(this.prdClassification) hemoCubeViewModel.messages.postValue(this.prdClassification)
this.errorMessages = allErrorMessages
this.resultData = deviceLog this.resultData = deviceLog
this.batteryLevel = hemoCubeViewModel.getBatteryLevel().toString() this.batteryLevel = hemoCubeViewModel.getBatteryLevel().toString()
this.batteryCapacity = hemoCubeViewModel.getBatteryCapacity(requireContext()).toString() this.batteryCapacity = hemoCubeViewModel.getBatteryCapacity(requireContext()).toString()
@@ -529,14 +543,14 @@ class HemoCubeFragment : Fragment() {
} }
} }
if (!validationError) { // if (!validationError) {
activity?.runOnUiThread { activity?.runOnUiThread {
binding.btnSubmit.visibility = View.VISIBLE binding.btnSubmit.visibility = View.VISIBLE
binding.btnSubmit.isEnabled = true binding.btnSubmit.isEnabled = true
binding.btnSubmit.isClickable = true binding.btnSubmit.isClickable = true
binding.clParent.setBackgroundColor(Color.parseColor("#edfffd")) binding.clParent.setBackgroundColor(Color.parseColor("#edfffd"))
} }
} // }
} catch (e: Exception) { } catch (e: Exception) {
Toast.makeText( Toast.makeText(
requireContext(), requireContext(),