diff --git a/app/google-services.json b/app/google-services.json
index c695c12..1ddf40e 100644
--- a/app/google-services.json
+++ b/app/google-services.json
@@ -1,13 +1,51 @@
{
"project_info": {
- "project_number": "630821402019",
- "project_id": "iocl-iisc",
- "storage_bucket": "iocl-iisc.appspot.com"
+ "project_number": "243503501547",
+ "project_id": "iocl-iisc-hpos",
+ "storage_bucket": "iocl-iisc-hpos.appspot.com"
},
"client": [
{
"client_info": {
- "mobilesdk_app_id": "1:630821402019:android:ed56bae066ac32b51dd616",
+ "mobilesdk_app_id": "1:243503501547:android:f17de652a3524d047feeae",
+ "android_client_info": {
+ "package_name": "com.iocl_iisc.hposqc"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:243503501547:android:e1bb0f338c8448dd7feeae",
+ "android_client_info": {
+ "package_name": "in.sminnovations.hposregistration.iocl"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:243503501547:android:18b8b33b2dc3776d7feeae",
"android_client_info": {
"package_name": "in.sminnovations.hpostesting.iocl"
}
@@ -15,7 +53,7 @@
"oauth_client": [],
"api_key": [
{
- "current_key": "AIzaSyABIdxI89eTZ8BqU2cIoJOgJ1lS1cFLCtQ"
+ "current_key": "AIzaSyBPxgcDkZfZMr8cFrkMWkVf1a-MstzWC1k"
}
],
"services": {
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 eeca24e..c87b4c1 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
@@ -1066,8 +1066,8 @@ object Constants {
),
)
- const val INCUBATION_TIME_MIN = 0
- const val INCUBATION_TIME_MAX = 1400
+ const val INCUBATION_TIME_MIN = 15
+ const val INCUBATION_TIME_MAX = 30
const val BATTERY_LEVEL_MIN = Int.MIN_VALUE
const val PQ_MODE = true
@@ -1578,7 +1578,7 @@ object Constants {
const val positiveForSickleCellMin10mm = 0.31
const val positiveForSickleCellMax10mm = 0.43
const val sickleCellDiseaseMin10mm = 0.43
- const val sickleCellDiseaseMax10mm = 1.0
+ const val sickleCellDiseaseMax10mm = 0.7
//Hemocube for 2mm
const val positiveBoderLine2mm1 = 0.8
const val positiveBoderLine2mm2 = 1.1
@@ -1593,7 +1593,7 @@ object Constants {
const val positiveForSickleCellMin2mm = 0.31
const val positiveForSickleCellMax2mm = 0.45
const val sickleCellDiseaseMin2mm = 0.45
- const val sickleCellDiseaseMax2mm = 1.0
+ const val sickleCellDiseaseMax2mm = 0.7
diff --git a/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt b/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt
index 29b88b3..e525980 100644
--- a/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt
+++ b/app/src/main/java/com/example/hpostesting/data/constant/DataHolder.kt
@@ -38,6 +38,8 @@ object DataHolder {
var selectedTest: UserData? = null
var hemoCubeTestData: HemoCubeTestData? = null
var kitSerial: String = ""
+ var centerName: String = ""
+ var district: String = ""
var location: UserData.Location? = null
var testExp: Boolean = true
var hemocubeResult: Double? = null
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 7e5ba07..31db977 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
@@ -107,5 +107,7 @@ data class HemoCubeTestData(
var volume: String? = "",
var isCSVCreated: Boolean = false,
var labName: String? = "",
- var cuvetteSize: String? = ""
+ var cuvetteSize: String? = "",
+ var district: String? = "",
+ var centerName: 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 5603a0a..31d6301 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt
@@ -75,7 +75,7 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate {
}
Toast.makeText(this, "Selected cuvette size: 2mm", Toast.LENGTH_SHORT).show()
binding.nameEditText.setText(contents)
- }else if(contents.contains("SC-2-D10/")){
+ }else if(contents.contains("SMI/SC-2-D10/")){
with(sharedPreference.edit()) {
putString(Constants.CUVETTE_SIZE, "10mm")
apply()
@@ -178,10 +178,6 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate {
// Optionally, show a user-friendly error message to the user
// Toast.makeText(applicationContext, "An error occurred", Toast.LENGTH_SHORT).show()
}
-
-
- binding.nameEditText.setText("SMI/SC/")
-
setSupportActionBar(binding.toolbar)
binding.btnScanNow.setOnClickListener {
@@ -198,7 +194,7 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate {
apply()
}
Toast.makeText(this, "Selected cuvette size: 2mm", Toast.LENGTH_SHORT).show()
- }else if(serialNumber.contains("SC-2-D10/")){
+ }else if(serialNumber.contains("SMI/SC-2-D10/")){
with(sharedPreference.edit()) {
putString(Constants.CUVETTE_SIZE, "10mm")
apply()
@@ -322,8 +318,17 @@ class KitScanActivity : AppCompatActivity(), IDcsSdkApiDelegate {
}
private fun isSerialValid(s: String): Boolean {
- if (s.length != 17) {
- binding.nameEditText.error = getString(R.string.invalid_kit)
+ if (s.contains("SMI/SC/")) {
+ if(s.length != 17){
+ binding.nameEditText.error = getString(R.string.invalid_kit)
+ return false
+ }
+ }else if(s.contains("SMI/SC-2-D10/")){
+ if(s.length != 27){
+ binding.nameEditText.error = "Invalid Kit Serial Number, correct example SMI/SC-2-D10/000000/000/000"
+ return false
+ }
+ }else{
return false
}
return true
diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt
index 27916fc..5c3cf73 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt
@@ -113,23 +113,22 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int,p
view.context.getString(R.string.incubation_not_completed),
Toast.LENGTH_SHORT
).show()
- } else
- if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) {
- Toast.makeText(
- view.context,
- view.context.getString(R.string.incubation_crossed_30_minutes),
- Toast.LENGTH_SHORT
- ).show()
- } else {
- DataHolder.selectedTest = UserData(
+ } else if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) {
+ Toast.makeText(
+ view.context,
+ view.context.getString(R.string.incubation_crossed_30_minutes),
+ Toast.LENGTH_SHORT
+ ).show()
+ } else {
+ DataHolder.selectedTest = UserData(
sampleid = userList.sampleid,
_id = userList._id,
bloodGroup = userList.bloodGroup,
incubationTime = userList.incubationTime
- )
- view.findNavController()
+ )
+ view.findNavController()
.navigate(R.id.action_nav_home_to_mainActivity)
- }
+ }
} else {
Toast.makeText(
view.context,
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 264295c..8049f4e 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
@@ -655,10 +655,9 @@ class HomeFragment : Fragment() {
val version = pInfo.versionName
var labname = sharedPreference.getString(Constants.LABNAME,"")
return LoginRequest(
- password = password, serialNumber = userID, username = userID, version = version, lab = labname
+ latitude = DataHolder.location!!.latitude.toString(), longitude = DataHolder.location!!.longitude.toString(), location = DataHolder.location.toString(), password = password, serialNumber = userID, username = userID, version = version, lab = labname
)
- }//latitude = DataHolder.location!!.latitude.toString(), longitude = DataHolder.location!!.longitude.toString(), location = DataHolder.location.toString()
-
+ }
private fun createCheckUpdateRequestData(): CheckUpdateRequest {
val pInfo = requireActivity().packageManager.getPackageInfo(
requireActivity().packageName, 0
@@ -1087,15 +1086,15 @@ class HomeFragment : Fragment() {
// dialog.dismiss()
// }
- hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList ->
- kitDataList.forEach { userData ->
- if (!userData.localFlag) {
- userData.localFlag = true
- hemoCubeViewModel.bulkAddResultKitTestToDb(userData)
- }
- }
- dialog.dismiss()
- }
+// hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { kitDataList ->
+// kitDataList.forEach { userData ->
+// if (!userData.localFlag) {
+// userData.localFlag = true
+// hemoCubeViewModel.bulkAddResultKitTestToDb(userData)
+// }
+// }
+// dialog.dismiss()
+// }
}
private fun downloadLocalDBData(dialog: DialogInterface) {
diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt
index daa8e9a..18f2662 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt
@@ -34,6 +34,7 @@ import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.example.hpostesting.data.constant.Constants
+import com.example.hpostesting.data.constant.DataHolder
import com.example.hpostesting.util.AppInitializer
import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentLoginBinding
@@ -140,6 +141,14 @@ class LoginFragment : Fragment() {
}
private fun validateCredentials(username: String, password: String): Boolean {
var storedPassword = secureStorage.getPassword()
+// if (!checkUserName(binding.etName.text.toString())) {
+// binding.etName.error = "Name field can't be empty or less than 3 characters"
+// return false
+// }
+ if (!checkCenterName(binding.centerName.text.toString())) {
+ binding.centerName.error = "Center name can't be empty or less than 3 characters"
+ return false
+ }
if(username == "ADMIN"){
storedPassword = secureStorage.getAdminPassword()
}
@@ -156,6 +165,8 @@ class LoginFragment : Fragment() {
putString(Constants.USER_ID, userId)
apply()
}
+ DataHolder.centerName = binding.centerName.text.toString()
+ DataHolder.district = binding.etDistrict.text.toString()
}
override fun onDestroyView() {
@@ -283,5 +294,12 @@ class LoginFragment : Fragment() {
// }
// }
// }
+private fun checkUserName(userName: String): Boolean {
+ return userName.isNotEmpty() && userName.length >= 3
+}
+
+ private fun checkCenterName(centerName: String): Boolean {
+ return centerName.isNotEmpty() && centerName.length >= 3
+ }
}
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 e1f8aa6..ac5a8f3 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
@@ -142,7 +142,7 @@ class HemoCubeFragment : Fragment() {
if (isBufferValueAvailable()){
binding.btnPlacebuffer.apply {
setBackgroundColor(Color.GREEN) // Set button background color to green
- text = "Fresh Buffer" // Change button text to "Buffer Exists"
+ text = "Refresh Buffer" // Change button text to "Buffer Exists"
}
}else{
binding.btnPlacebuffer.apply {
@@ -896,11 +896,12 @@ class HemoCubeFragment : Fragment() {
}
}
- fun handleBackButtonPress() {
- if (isTestOngoing) {
+ fun handleBackButtonPress(): Boolean {
+ return if (isTestOngoing) {
showToast(R.string.test_go_noback)
+ true // Indicate that the back press was handled
} else {
- activity?.onBackPressed()
+ false // Indicate that the back press was not handled
}
}
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
index 15bf83b..4789b1a 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeViewModel.kt
@@ -415,7 +415,8 @@ class HemoCubeViewModel @Inject constructor(
testDetails?.filter = DataHolder.hemoCubeTestData?.filter
testDetails?.labName = DataHolder.hemoCubeTestData?.labName
testDetails?.cuvetteSize = DataHolder.hemoCubeTestData?.cuvetteSize
-
+ testDetails?.centerName = DataHolder.centerName
+ testDetails?.district = DataHolder.district
}
private fun addResultTestToDb() {
@@ -488,6 +489,7 @@ class HemoCubeViewModel @Inject constructor(
when (repository.addTestToDatabase(userData)) {
is Response.Success -> {
fireBaseBulkUpload.postValue("Success")
+ userData.localFlag = true
updateLocalFlag(userData._id)
}
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt
index 5d95c7f..e43453f 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemocubeActivity.kt
@@ -196,14 +196,25 @@ open class HemocubeActivity : AppCompatActivity() {
}
- override fun onBackPressed() {
- val fragment = supportFragmentManager.findFragmentById(R.id.fghemocube)
- if (fragment is HemoCubeFragment) {
- fragment.handleBackButtonPress()
- } else {
- super.onBackPressed()
+// override fun onBackPressed() {
+// val fragment = supportFragmentManager.findFragmentById(R.id.fghemocube)
+// if (fragment is HemoCubeFragment) {
+// fragment.handleBackButtonPress()
+// } else {
+// super.onBackPressed()
+// }
+// }
+override fun onBackPressed() {
+ val fragment = supportFragmentManager.findFragmentById(R.id.fghemocube)
+ if (fragment is HemoCubeFragment) {
+ if (fragment.handleBackButtonPress()) {
+ // If the fragment handled the back press, return to avoid calling super.onBackPressed
+ return
}
}
+ // If the fragment did not handle the back press, call the superclass method
+ super.onBackPressed()
+}
fun onErrorReported(msg: String) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
diff --git a/app/src/main/res/layout/activity_kit_scan.xml b/app/src/main/res/layout/activity_kit_scan.xml
index c5435ff..3d1ebd0 100644
--- a/app/src/main/res/layout/activity_kit_scan.xml
+++ b/app/src/main/res/layout/activity_kit_scan.xml
@@ -128,7 +128,7 @@
android:id="@+id/name_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:maxLength="17"
+ android:maxLength="27"
android:inputType="text"
android:hint="@string/serial_number" />
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
index 933b0a1..b8d4c7c 100644
--- a/app/src/main/res/layout/fragment_login.xml
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -60,7 +60,7 @@
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/til_name">
+
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/et_password" />
diff --git a/app/src/main/res/values-hi/arrays.xml b/app/src/main/res/values-hi/arrays.xml
new file mode 100644
index 0000000..69274ba
--- /dev/null
+++ b/app/src/main/res/values-hi/arrays.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ - Mysuru
+ - Kodagu
+ - Chamarajanagar
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-kn/arrays.xml b/app/src/main/res/values-kn/arrays.xml
new file mode 100644
index 0000000..69274ba
--- /dev/null
+++ b/app/src/main/res/values-kn/arrays.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ - Mysuru
+ - Kodagu
+ - Chamarajanagar
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 7a95d67..44607d4 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -25,5 +25,10 @@
- ka
+
+ - Mysuru
+ - Kodagu
+ - Chamarajanagar
+