log addititonal data in diagnostics and auto dac
This commit is contained in:
@@ -16,11 +16,11 @@ android {
|
|||||||
|
|
||||||
// dev - development, quality - qc, uat - User Acceptance Test, preprod - preproduction, prod - production
|
// dev - development, quality - qc, uat - User Acceptance Test, preprod - preproduction, prod - production
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "in.sminnovations.hpostesting.quality"
|
applicationId "in.sminnovations.hpostesting.uat"
|
||||||
minSdk 21
|
minSdk 21
|
||||||
targetSdk 34
|
targetSdk 34
|
||||||
versionCode 102
|
versionCode 104
|
||||||
versionName "2.1.102"
|
versionName "2.1.104"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,5 +5,8 @@ data class DiagnosticsData (
|
|||||||
var appVersion: String? = "",
|
var appVersion: String? = "",
|
||||||
var deviceType: String = "HEMOCUBE",
|
var deviceType: String = "HEMOCUBE",
|
||||||
var deviceData: String = "",
|
var deviceData: String = "",
|
||||||
|
var devicePassword: String = "",
|
||||||
|
var deviceNatsToken: String = "",
|
||||||
|
var accessToken: String = "",
|
||||||
var runTime: String = ""
|
var runTime: String = ""
|
||||||
)
|
)
|
||||||
@@ -31,6 +31,9 @@ class AssuranceControlsFragment: Fragment() {
|
|||||||
binding = FragmentAssuranceControlsBinding.inflate(inflater, container, false)
|
binding = FragmentAssuranceControlsBinding.inflate(inflater, container, false)
|
||||||
sharedPreferences =
|
sharedPreferences =
|
||||||
requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)
|
requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)
|
||||||
|
|
||||||
|
DataHolder.hemoCubeTestData!!.solution = ""
|
||||||
|
DataHolder.hemoCubeTestData!!.volume = ""
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,7 +152,6 @@ class AssuranceControlsFragment: Fragment() {
|
|||||||
apply()
|
apply()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val i = Intent(requireContext(), HemocubeActivity::class.java)
|
val i = Intent(requireContext(), HemocubeActivity::class.java)
|
||||||
startActivity(i)
|
startActivity(i)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,8 +105,6 @@ class AutoDacFragment: Fragment() {
|
|||||||
HemoCubeCommands.AUTO_DAC_COMMAND,
|
HemoCubeCommands.AUTO_DAC_COMMAND,
|
||||||
object : UsbServiceListener {
|
object : UsbServiceListener {
|
||||||
override fun onUsbRead(data: ByteArray?) {
|
override fun onUsbRead(data: ByteArray?) {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
override fun onUsbError(e: Exception?) {
|
override fun onUsbError(e: Exception?) {
|
||||||
autoDacViewModel.progressBar.postValue(false)
|
autoDacViewModel.progressBar.postValue(false)
|
||||||
@@ -148,6 +146,9 @@ class AutoDacFragment: Fragment() {
|
|||||||
autoDacViewModel.addAutoDacDataToDb(
|
autoDacViewModel.addAutoDacDataToDb(
|
||||||
DiagnosticsData(
|
DiagnosticsData(
|
||||||
deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(),
|
deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(),
|
||||||
|
devicePassword = sharedPreferences.getString(Constants.DEVICE_PASSWORD_API, "").toString(),
|
||||||
|
deviceNatsToken = sharedPreferences.getString(Constants.NATS_TOKEN, "").toString(),
|
||||||
|
accessToken = sharedPreferences.getString(Constants.ACCESS_TOKEN, "").toString(),
|
||||||
deviceData = resultData,
|
deviceData = resultData,
|
||||||
runTime = SimpleDateFormat(
|
runTime = SimpleDateFormat(
|
||||||
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
||||||
@@ -169,7 +170,6 @@ class AutoDacFragment: Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun parseData(inputData: List<String>): List<Pair<String, String>> {
|
fun parseData(inputData: List<String>): List<Pair<String, String>> {
|
||||||
val pattern = Regex("([A-Z]+)\\s(\\d+)")
|
val pattern = Regex("([A-Z]+)\\s(\\d+)")
|
||||||
val parsedData = mutableListOf<Pair<String, String>>()
|
val parsedData = mutableListOf<Pair<String, String>>()
|
||||||
|
|||||||
@@ -114,7 +114,6 @@ class DeviceProvisionFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun getDeviceId() {
|
private fun getDeviceId() {
|
||||||
(activity as DeviceProvisionActivity).mService.sendAndListenToHemoCube(
|
(activity as DeviceProvisionActivity).mService.sendAndListenToHemoCube(
|
||||||
HemoCubeCommands.DEVICE_CONFIGURATION_COMMAND,
|
HemoCubeCommands.DEVICE_CONFIGURATION_COMMAND,
|
||||||
@@ -146,14 +145,19 @@ class DeviceProvisionFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun extractV2HardwareId(input: String): String? {
|
||||||
|
val pattern = Regex("SNS\\s*(.*?)\\s*SNE")
|
||||||
|
val matchResult: MatchResult? = pattern.find(input)
|
||||||
|
|
||||||
|
return matchResult?.groups?.get(1)?.value
|
||||||
|
}
|
||||||
|
|
||||||
private fun handleUsbData() {
|
private fun handleUsbData() {
|
||||||
when {
|
when {
|
||||||
resultData.contains("SNE") -> {
|
resultData.contains("SNE") -> {
|
||||||
val pattern = Regex("HPP1-\\d{4}")
|
val hardwareId = extractV2HardwareId(resultData)
|
||||||
val matchResult = pattern.find(resultData)
|
|
||||||
val hardwareId = matchResult?.value
|
|
||||||
|
|
||||||
if (hardwareId.toString().length == 9) {
|
if (!hardwareId.isNullOrBlank()) {
|
||||||
with(sharedPreferences.edit()) {
|
with(sharedPreferences.edit()) {
|
||||||
putString(Constants.DEVICE_ID, hardwareId)
|
putString(Constants.DEVICE_ID, hardwareId)
|
||||||
apply()
|
apply()
|
||||||
|
|||||||
@@ -148,6 +148,9 @@ class DiagnosticsFragment : Fragment() {
|
|||||||
if (resultData.contains("END") || fullReadOutput.contains("END")) {
|
if (resultData.contains("END") || fullReadOutput.contains("END")) {
|
||||||
diagnosticsViewModel.addDiagnosticsDataToDb(DiagnosticsData(
|
diagnosticsViewModel.addDiagnosticsDataToDb(DiagnosticsData(
|
||||||
deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(),
|
deviceId = sharedPreferences.getString(Constants.DEVICE_ID, "").toString(),
|
||||||
|
devicePassword = sharedPreferences.getString(Constants.DEVICE_PASSWORD_API, "").toString(),
|
||||||
|
deviceNatsToken = sharedPreferences.getString(Constants.NATS_TOKEN, "").toString(),
|
||||||
|
accessToken = sharedPreferences.getString(Constants.ACCESS_TOKEN, "").toString(),
|
||||||
deviceData = resultData,
|
deviceData = resultData,
|
||||||
runTime = SimpleDateFormat(
|
runTime = SimpleDateFormat(
|
||||||
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
|
||||||
|
|||||||
@@ -914,7 +914,7 @@ class HemoCubeFragment : Fragment() {
|
|||||||
// hemoCubeViewModel.messages.postValue("post classification checks")
|
// hemoCubeViewModel.messages.postValue("post classification checks")
|
||||||
if (deviceRatio != null) {
|
if (deviceRatio != null) {
|
||||||
if (slopeRatio != null) {
|
if (slopeRatio != null) {
|
||||||
if (deviceRatioClass == "Normal" && slopeRatio > 60.0)
|
if (deviceRatioClass == "Normal" && slopeRatio > 45.0)
|
||||||
return "Negative Borderline, Repeat Test"
|
return "Negative Borderline, Repeat Test"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -366,9 +366,37 @@ class HemoCubeFragmentTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun findResultWithAdditionalMethods_ValidInput_ReturnsDeviceRatioClassToString() {
|
fun findResultWithAdditionalMethods_NormalDeviceRatio_ReturnsNormalBelowSlopeRatioThreshold() {
|
||||||
|
// `when`(hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Normal", 70.0)).thenReturn("Negative Borderline, Repeat Test")
|
||||||
|
val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Normal", 30.0)
|
||||||
|
assertEquals("Normal", result)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun findResultWithAdditionalMethods_NBL_ReturnsNBL() {
|
||||||
// `when`(hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0)).thenReturn("Invalid")
|
// `when`(hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0)).thenReturn("Invalid")
|
||||||
val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0)
|
val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Negative Borderline, Repeat Test", 70.0)
|
||||||
assertEquals("Abnormal", result)
|
assertEquals("Negative Borderline, Repeat Test", result)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun findResultWithAdditionalMethods_SCT_ReturnsSCT() {
|
||||||
|
// `when`(hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0)).thenReturn("Invalid")
|
||||||
|
val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Sickle Cell Trait", 70.0)
|
||||||
|
assertEquals("Sickle Cell Trait", result)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun findResultWithAdditionalMethods_PBL_ReturnsPBL() {
|
||||||
|
// `when`(hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0)).thenReturn("Invalid")
|
||||||
|
val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Positive for Sickle Cell. HPLC for Confirmation", 70.0)
|
||||||
|
assertEquals("Positive for Sickle Cell. HPLC for Confirmation", result)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun findResultWithAdditionalMethods_SCD_ReturnsSCD() {
|
||||||
|
// `when`(hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0)).thenReturn("Invalid")
|
||||||
|
val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Sickle Cell Disease", 70.0)
|
||||||
|
assertEquals("Sickle Cell Disease", result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user