diff --git a/app/build.gradle b/app/build.gradle index b28b990..c295fce 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId "in.sminnovations.hpostesting.dev" minSdk 21 targetSdk 34 - versionCode 127 - versionName "2.1.127" + versionCode 128 + versionName "2.1.128" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index 7b820b1..f21b455 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 127, - "versionName": "2.1.127", + "versionCode": 128, + "versionName": "2.1.128", "outputFile": "app-release.apk" } ], 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 d55cf27..d56f9e7 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 @@ -28,7 +28,7 @@ object Constants { const val DOCUMENT_ID_FOR_UPDATE ="2o71vBKLqdgEKYtFG8Lb" const val ABHA_APP_PACKAGE = "in.ndhm.phr" - const val MOLBIO_INTEGRATION = true + const val MOLBIO_INTEGRATION = false const val FIREBASE_INTEGRATION = true const val deviceProvisionEmail = "HPOS_provisioner@bigtec.co.in" const val deviceProvisionPassword = "f2ab0e7f9d69" diff --git a/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt b/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt index 70de794..b30ab76 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/TestStatus.kt @@ -35,6 +35,8 @@ enum class TestStatus(val code: Double) { BUFFER_PRINT_STARTED(6.0), BUFFER_PRINT_COMPLETED(7.0), SAMPLE_STARTED(8.0), + CUVETTE_ABSENTT(30.2), + CUVETTE_PRESENTT(30.1), SAMPLE_COMPLETED(9.0), SAMPLE_PRINT_STARTED(10.0), SAMPLE_PRINT_COMPLETED(11.0), diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt index a47b222..fa6db59 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt @@ -58,7 +58,7 @@ class ActivitiesFragment : Fragment() { if (userData.isNotEmpty()) { userData.forEach { user -> - if(isBetween15And30Minutes(user.incubationTime) > 30 && user.testStatus == false){ + if((isBetween15And30Minutes(user.incubationTime) > 30 || isBetween15And30Minutes(user.incubationTime) < 0) && user.testStatus == false){ hemoCubeViewModel.deleteByStatus() } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index 9e24a50..644cef8 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -862,7 +862,8 @@ class HomeFragment : Fragment() { // ) Toast.makeText(requireContext(), "Successfully added- $userId", Toast.LENGTH_SHORT).show() binding.userId.setText("") - binding.etBloodGroup.clearListSelection() + binding.age.setText("") + binding.etBloodGroup.setText("") // val userData = UserData(_id = userId) // DataHolder.selectedTest = userData // findNavController().navigate(R.id.action_nav_home_to_mainActivity) diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt index f49a4f5..fced288 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/SlideshowFragment.kt @@ -134,7 +134,7 @@ class PrefsFragment: PreferenceFragmentCompat(){ // App Version Preference val appVersionPreference = Preference(requireContext()) - appVersionPreference.title = "App Version" + appVersionPreference.title = "App Version SMI" appVersionPreference.summary = getAppVersion(requireContext()) + " [ " + getAppEnvironment(requireContext()) + " ]" diff --git a/app/src/main/java/com/example/hpostesting/presentation/hb_test/HBTestFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hb_test/HBTestFragment.kt index 7c579cf..a4f0b65 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hb_test/HBTestFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hb_test/HBTestFragment.kt @@ -117,10 +117,13 @@ class HBTestFragment : Fragment() { testDetails.testTime = SimpleDateFormat( "yyyy-MM-dd HH:mm:ss", Locale.getDefault() ).format(Calendar.getInstance().time) + //Toast.makeText(requireContext(), "deviceID"+deviceId, Toast.LENGTH_LONG).show() hBTestViewModel.uploadFirebaseQc(testDetails) } binding.btnBuffer.setOnClickListener { binding.btnBuffer.visibility = View.GONE + binding.btnSample.isEnabled = false + binding.btnSample.isClickable = false hBTestViewModel.messages.postValue("Buffer Started") runBCommand() } @@ -174,7 +177,6 @@ class HBTestFragment : Fragment() { override fun onUsbRead(data: ByteArray?) { data?.let { val stringData = String(it) - deviceId = stringData hBTestViewModel.messages.postValue(stringData) binding.tvSubtitle4.text = stringData } @@ -224,7 +226,12 @@ class HBTestFragment : 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 listenToHemoCube() { val fullReadOutput = StringBuilder() @@ -240,10 +247,10 @@ class HBTestFragment : Fragment() { resultData += stringData hBTestViewModel.messages.postValue(resultData) // binding.tvSubtitle4.text = resultData - if (stringData.contains("SN")) { + if (stringData.contains("SNE")) { val slData = stringData.split(" ") if (slData.size > 1) { - val hardwareId = slData[1].trim() + deviceId = extractV2HardwareId(resultData).toString() hBTestViewModel.messages.postValue("Place buffer and click below button to start test") // with(sharedPreferences.edit()) { // putString(Constants.DEVICE_ID, hardwareId) 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 bd56d32..f6dba64 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 @@ -87,6 +87,8 @@ class HemoCubeFragment : Fragment() { private var checkCuvette = false private var checkRefreshCuvette = false private var checkCuvetteSam = false + private var checkSubmit = false + private var submitClick = false private var sampleClick = false private var refreshClick = false private lateinit var binding: FragmentHemoCubeReferenceBinding @@ -182,23 +184,31 @@ class HemoCubeFragment : Fragment() { binding.tvSubtitle4.movementMethod = ScrollingMovementMethod() binding.tvDeviceMessages.movementMethod = ScrollingMovementMethod() binding.btnSubmit.setOnClickListener { - with(sharedPreferences.edit()) { - putBoolean(Constants.QUICK_CAPTURE, false) - apply() + submitClick = true + if(checkSubmit){ + with(sharedPreferences.edit()) { + putBoolean(Constants.QUICK_CAPTURE, false) + apply() + } + if(DataHolder.hemoCubeTestData!!.classificationResult != "Invalid"){ + DataHolder.sampleReadCounter++ + } + binding.btnSubmit.isEnabled = false + binding.btnSubmit.isClickable = false + activity?.runOnUiThread { + Log.d("HemoCubeFragment","Test Process completed, result saved") + binding.progressBar.visibility = View.VISIBLE + binding.btnSubmit.visibility = View.GONE + } + hemoCubeViewModel.uploadHemoCubeResultToDatabase( + isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, ""),quickCapture + ) + }else{ + checkCuvettePresence() + binding.btnSubmit.isEnabled = true + binding.btnSubmit.isClickable = true } - if(DataHolder.hemoCubeTestData!!.classificationResult != "Invalid"){ - DataHolder.sampleReadCounter++ - } - binding.btnSubmit.isEnabled = false - binding.btnSubmit.isClickable = false - activity?.runOnUiThread { - Log.d("HemoCubeFragment","Test Process completed, result saved") - binding.progressBar.visibility = View.VISIBLE - binding.btnSubmit.visibility = View.GONE - } - hemoCubeViewModel.uploadHemoCubeResultToDatabase( - isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, ""),quickCapture - ) + } binding.tvTitle2.visibility = View.GONE @@ -664,6 +674,21 @@ class HemoCubeFragment : Fragment() { } showRetryButtonForCuvette() } + resultData.contains("#CIN") && this.submitClick && this.testStatusCode < TestStatus.CUVETTE_PRESENTT.code -> { + hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_presentt)) + this.testStatusCode = TestStatus.CUVETTE_PRESENTT.code + activity?.runOnUiThread { + binding.testing.visibility = View.GONE + } + } + resultData.contains("#AIN") && this.submitClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTT.code -> { + hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_absentt)) + this.testStatusCode = TestStatus.CUVETTE_ABSENTT.code + activity?.runOnUiThread { + checkSubmit = true + binding.testing.visibility = View.GONE + } + } resultData.contains("#BS") && this.testStatusCode < TestStatus.BUFFER_STARTED.code -> { hemoCubeViewModel.messages.postValue(getString(R.string.buffer_started)) this.testStatusCode = TestStatus.BUFFER_STARTED.code @@ -735,6 +760,7 @@ class HemoCubeFragment : Fragment() { } } + (resultData.contains("#SC") || resultData.contains("#SC1")) && this.testStatusCode < TestStatus.SAMPLE_COMPLETED.code -> { this.testStatusCode = TestStatus.SAMPLE_COMPLETED.code activity?.runOnUiThread { @@ -748,6 +774,7 @@ class HemoCubeFragment : Fragment() { fetchResult() } + resultData.contains("ovf") -> { activity?.runOnUiThread { binding.testing.visibility = View.GONE @@ -1354,7 +1381,7 @@ class HemoCubeFragment : Fragment() { "%.3f".format( borderlineMetric ) - }" + } \n Remove Cuvette & Click Submit" ) if (DataHolder.hemoCubeTestData?.testType == "HB") hemoCubeViewModel.messages.postValue("Hb: $calculatedHb4") @@ -1431,19 +1458,19 @@ class HemoCubeFragment : Fragment() { if (deviceRatioClass == "Negative Borderline") { if (borderlineMetric < negativeBoderLine10mm1){//1.34 return "Sickle Cell Trait" - }else if(borderlineMetric > negativeBoderLine10mm2){ + }else if(borderlineMetric > negativeBoderLine10mm1){ return "Normal" - }else if(borderlineMetric > negativeBoderLine10mm1 && borderlineMetric < negativeBoderLine10mm2){ - return "Negative borderline. Confirm with HPLC" + }else if(borderlineMetric == negativeBoderLine10mm1){ + return "Sickle Cell Trait" } } if (deviceRatioClass == "Positive for Sickle Cell. HPLC for Confirmation") { if (borderlineMetric < positiveBoderLine10mm1){//1.34 return "Sickle Cell Disease" - }else if(borderlineMetric > positiveBoderLine10mm2){ + }else if(borderlineMetric > positiveBoderLine10mm1){ return "Sickle Cell Trait" - }else if(borderlineMetric > positiveBoderLine10mm1 && borderlineMetric < positiveBoderLine10mm2){ - return "Positive for Sickle Cell. Confirm with HPLC" + }else if(borderlineMetric == positiveBoderLine10mm1){ + return "Sickle Cell Disease" } } }else if(cuvetteSize == "2mm"){ diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 86786a8..3db0854 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -289,6 +289,8 @@ Checking cuvette presence Cuvette present Cuvette absent + Cuvette Present , Please Remove Cuvette And Try Again + Cuvette Absent,Now You Can Submit Retry Firefox Files diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index 4a28eb9..ee35b42 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -288,6 +288,8 @@ ಕುವೆಟ್ ಇರುವಿಕೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ ಕುವೆಟ್ಟೆ ಇರುತ್ತದೆ ಕುವೆಟ್ಟೆ ಇರುವುದಿಲ್ಲ + Cuvette Present , Please Remove Cuvette And Try Again + Cuvette Absent,Now You Can Submit ಮರುಪ್ರಯತ್ನಿಸಿ ಫೈರ್‌ಫಾಕ್ಸ್ ಫೈಲ್ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e0b11a0..bdc765f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -291,6 +291,8 @@ Checking cuvette presence Cuvette present , you can start the test Cuvette is absent , please place the cuvette and retry again + Cuvette Present , Please Remove Cuvette And Try Again + Cuvette Absent,Now You Can Submit Retry again Usb Terminal About