diff --git a/app/build.gradle b/app/build.gradle index 677ac7f..0086159 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,11 +16,11 @@ android { // dev - development, quality - qc, uat - User Acceptance Test, preprod - preproduction, prod - production defaultConfig { - applicationId "in.sminnovations.hpostesting.quality" + applicationId "in.sminnovations.hpostesting.uat" minSdk 21 targetSdk 34 - versionCode 102 - versionName "2.1.102" + versionCode 104 + versionName "2.1.104" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/example/hpostesting/data/model/diagnostics/DiagnosticsData.kt b/app/src/main/java/com/example/hpostesting/data/model/diagnostics/DiagnosticsData.kt index c84cdc4..d482597 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/diagnostics/DiagnosticsData.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/diagnostics/DiagnosticsData.kt @@ -5,5 +5,8 @@ data class DiagnosticsData ( var appVersion: String? = "", var deviceType: String = "HEMOCUBE", var deviceData: String = "", + var devicePassword: String = "", + var deviceNatsToken: String = "", + var accessToken: String = "", var runTime: String = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt index 85e5026..250bea2 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/assurance/AssuranceControlsFragment.kt @@ -31,6 +31,9 @@ class AssuranceControlsFragment: Fragment() { binding = FragmentAssuranceControlsBinding.inflate(inflater, container, false) sharedPreferences = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) + + DataHolder.hemoCubeTestData!!.solution = "" + DataHolder.hemoCubeTestData!!.volume = "" return binding.root } @@ -149,7 +152,6 @@ class AssuranceControlsFragment: Fragment() { apply() } - val i = Intent(requireContext(), HemocubeActivity::class.java) startActivity(i) } diff --git a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt index 71f4d2c..2cc3a6a 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/autodac/AutoDacFragment.kt @@ -105,8 +105,6 @@ class AutoDacFragment: Fragment() { HemoCubeCommands.AUTO_DAC_COMMAND, object : UsbServiceListener { override fun onUsbRead(data: ByteArray?) { - - } override fun onUsbError(e: Exception?) { autoDacViewModel.progressBar.postValue(false) @@ -148,6 +146,9 @@ class AutoDacFragment: Fragment() { autoDacViewModel.addAutoDacDataToDb( DiagnosticsData( 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, runTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() @@ -169,7 +170,6 @@ class AutoDacFragment: Fragment() { } } - fun parseData(inputData: List): List> { val pattern = Regex("([A-Z]+)\\s(\\d+)") val parsedData = mutableListOf>() diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt index 5ebc428..4bff0e9 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt @@ -114,7 +114,6 @@ class DeviceProvisionFragment : Fragment() { } } - private fun getDeviceId() { (activity as DeviceProvisionActivity).mService.sendAndListenToHemoCube( 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() { when { resultData.contains("SNE") -> { - val pattern = Regex("HPP1-\\d{4}") - val matchResult = pattern.find(resultData) - val hardwareId = matchResult?.value + val hardwareId = extractV2HardwareId(resultData) - if (hardwareId.toString().length == 9) { + if (!hardwareId.isNullOrBlank()) { with(sharedPreferences.edit()) { putString(Constants.DEVICE_ID, hardwareId) apply() diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt index 5238824..2df0132 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt @@ -148,6 +148,9 @@ class DiagnosticsFragment : Fragment() { if (resultData.contains("END") || fullReadOutput.contains("END")) { diagnosticsViewModel.addDiagnosticsDataToDb(DiagnosticsData( 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, runTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() 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 52e9c9d..689f0f5 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 @@ -914,7 +914,7 @@ class HemoCubeFragment : Fragment() { // hemoCubeViewModel.messages.postValue("post classification checks") if (deviceRatio != null) { if (slopeRatio != null) { - if (deviceRatioClass == "Normal" && slopeRatio > 60.0) + if (deviceRatioClass == "Normal" && slopeRatio > 45.0) return "Negative Borderline, Repeat Test" } } diff --git a/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt b/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt index e3c425f..ceac076 100644 --- a/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt +++ b/app/src/test/java/com/example/hpostesting/HemoCubeFragmentTest.kt @@ -366,9 +366,37 @@ class HemoCubeFragmentTest { } @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") - val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Abnormal", 70.0) - assertEquals("Abnormal", result) + val result = hemoCubeFragment.findResultWithAdditionalMethods(0.5, "Negative Borderline, Repeat Test", 70.0) + 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) } } \ No newline at end of file