Blood group selection

This commit is contained in:
mohamedkaif356
2023-07-17 14:06:32 +05:30
parent 3b042c6587
commit 21e9b9b7b2
10 changed files with 162 additions and 110 deletions

View File

@@ -1,7 +1,6 @@
package com.example.hpostesting.data
import androidx.lifecycle.MutableLiveData
import com.example.hpostesting.data.model.patient.HemoCubeTestData
import com.example.hpostesting.data.model.patient.UserData
import com.example.hpostesting.data.model.test.TestRightDeviceConstants
import com.example.hpostesting.data.model.test.TestType
@@ -23,8 +22,13 @@ object DataHolder {
val intensityReferenceArray = ArrayList<Double>()
var selectedTest: UserData? = null
var SelectTestType: HemoCubeTestData? = null
var kitSerial: String = ""
var location: UserData.Location? = null
var locationhemocube: HemoCubeTestData.Location? = null
var testExp: Boolean = true
var hemocubeResult: Double? = null
}

View File

@@ -36,26 +36,9 @@ object Constants {
const val USER_ID = "usernameId"
val STATICID = listOf(
"VIZ-1000-0001",
"VIZ-1000-0002",
"VIZ-1000-0003",
"VIZ-1000-0004",
"VIZ-1000-0005",
"VIZ-1000-0006",
"VIZ-1000-0007",
"VIZ-1000-0008",
"VIZ-1000-0009",
"VIZ-1000-0010",
"VIZ-1000-0011",
"VIZ-1000-0012",
"VIZ-1000-0013",
"VIZ-1000-0014",
"VIZ-1000-0015",
"VIZ-1000-0016",
"VIZ-1000-0017",
"VIZ-1000-0018",
"VIZ-1000-0019"
)
const val password = "SMI@12345"

View File

@@ -43,9 +43,12 @@ class KitScanActivity : AppCompatActivity() {
setContentView(binding.root)
if (DataHolder.sampleReadCounter <= Constants.MAXIMUM_TEST_ALLOWED_BEFORE_REFERENCE && DataHolder.isReferenceTaken){
DataHolder.selectedTest!!.kitSerial = DataHolder.kitSerial
moveToNext()
}
binding.nameEditText.setText("SMI/SC/")
setSupportActionBar(binding.toolbar)
binding.btnScanNow.setOnClickListener {
@@ -56,7 +59,8 @@ class KitScanActivity : AppCompatActivity() {
binding.btnGo.setOnClickListener {
val serialNumber = binding.nameEditText.text.toString().trim()
if (serialNumber.isNotEmpty() && checkDataNotNull() && isSerialValid(serialNumber)) {
DataHolder.selectedTest!!.kitSerial = binding.nameEditText.text.toString()
DataHolder.kitSerial = binding.nameEditText.text.toString()
DataHolder.selectedTest?.kitSerial = binding.nameEditText.text.toString()
moveToNext()
} else {
Toast.makeText(this, "Invalid KIT Number", Toast.LENGTH_LONG).show()

View File

@@ -65,7 +65,7 @@ class MainActivity : AppCompatActivity() {
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult) {
locationResult.lastLocation?.let { location ->
DataHolder.location = UserData.Location(location.latitude, location.longitude)
DataHolder.selectedTest!!.location = UserData.Location(location.latitude, location.longitude)
Log.i("Location", DataHolder.location.toString())
}
}
@@ -97,6 +97,11 @@ class MainActivity : AppCompatActivity() {
private fun checkAndUpdateUsbConnection() {
val availableDrivers = UsbSerialProber.getDefaultProber()
.findAllDrivers(getSystemService(Context.USB_SERVICE) as UsbManager)
if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.DEVICE_PRODUCT_ID && availableDrivers[0].device.vendorId == Constants.DEVICE_VENDOR_ID) {
Log.d(
TAG,
"Device matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}"
)
// Log.d("mariya", availableDrivers[0].device.toString())
if (availableDrivers.isNotEmpty() && availableDrivers[0].device.productId == Constants.HOMO_CUBE_ID && availableDrivers[0].device.vendorId == Constants.VENDOR_ID) {
Log.e("HomoCube", "product1")
@@ -111,7 +116,10 @@ class MainActivity : AppCompatActivity() {
Log.d(TAG, "Device matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}")
DataHolder.usbConnected.value = true
} else if (availableDrivers.isNotEmpty()) {
Log.d(TAG, "Device NOT matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}")
Log.d(
TAG,
"Device NOT matched -> product = ${availableDrivers[0].device.productId}, vendor = ${availableDrivers[0].device.vendorId}"
)
Toast.makeText(this, "Device Not Compatible", Toast.LENGTH_SHORT).show()
DataHolder.usbConnected.value = false
} else {
@@ -136,9 +144,11 @@ class MainActivity : AppCompatActivity() {
DataHolder.usbConnected.observe(this) {
if (it) {
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24)
myMenu?.get(0)?.icon =
ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_24)
} else {
myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24)
myMenu?.get(0)?.icon =
ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24)
}
}
}
@@ -155,14 +165,11 @@ class MainActivity : AppCompatActivity() {
val coarseLocationPermissionRequestCode = 101
if (ContextCompat.checkSelfPermission(
this,
coarseLocationPermission
this, coarseLocationPermission
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(coarseLocationPermission),
coarseLocationPermissionRequestCode
this, arrayOf(coarseLocationPermission), coarseLocationPermissionRequestCode
)
} else {
getLocation()
@@ -174,14 +181,11 @@ class MainActivity : AppCompatActivity() {
val fineLocationPermissionRequestCode = 102
if (ContextCompat.checkSelfPermission(
this,
fineLocationPermission
this, fineLocationPermission
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(fineLocationPermission),
fineLocationPermissionRequestCode
this, arrayOf(fineLocationPermission), fineLocationPermissionRequestCode
)
} else {
getLocation()
@@ -193,12 +197,9 @@ class MainActivity : AppCompatActivity() {
val fineLocationPermission = Manifest.permission.ACCESS_FINE_LOCATION
if (ActivityCompat.checkSelfPermission(
this,
coarseLocationPermission
) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(
this,
fineLocationPermission
this, coarseLocationPermission
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this, fineLocationPermission
) != PackageManager.PERMISSION_GRANTED
) {
// Handle location permission request if needed
@@ -208,16 +209,14 @@ class MainActivity : AppCompatActivity() {
return
}
fusedLocationClient.lastLocation
.addOnSuccessListener { location: Location? ->
fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->
location?.let {
DataHolder.location = UserData.Location(location.latitude, location.longitude)
Log.i("Location", DataHolder.location.toString())
DataHolder.selectedTest!!.location =
UserData.Location(location.latitude, location.longitude)
} ?: run {
requestLocationUpdates()
}
}
.addOnFailureListener { exception: Exception ->
}.addOnFailureListener { exception: Exception ->
exception.printStackTrace()
}
}
@@ -230,12 +229,9 @@ class MainActivity : AppCompatActivity() {
}
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
this, Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this, Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
return
@@ -254,9 +250,7 @@ class MainActivity : AppCompatActivity() {
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
requestCode: Int, permissions: Array<String>, grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
when (requestCode) {
@@ -266,16 +260,19 @@ class MainActivity : AppCompatActivity() {
requestFineLocationPermission()
} else {
// Coarse location permission denied
Toast.makeText(this, "Coarse location permission denied", Toast.LENGTH_SHORT).show()
Toast.makeText(this, "Coarse location permission denied", Toast.LENGTH_SHORT)
.show()
}
}
102 -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Fine location permission granted
getLocation()
} else {
// Fine location permission denied
Toast.makeText(this, "Fine location permission denied", Toast.LENGTH_SHORT).show()
Toast.makeText(this, "Fine location permission denied", Toast.LENGTH_SHORT)
.show()
}
}
}

View File

@@ -79,18 +79,29 @@ class TestRightExpSample : Fragment() {
// if (details != null) {
// viewModel.patientDetails = details
UIUtils.createAlertDialog(
requireContext(),
getString(R.string.have_you_placed_sample),
getString(R.string.please_place_sample),
getString(R.string.no),
getString(R.string.yes_and_run),
object : MyDialogListener {
override fun onClickNegativeButton() {}
override fun onClickPositiveButton() {
startAcquiring()
}
})
UIUtils.createAlertDialog(
requireContext(),
"WARNING",
"Please check if you have placed the sample of this person ${viewModel.testDetails?._id}",
getString(R.string.no),
"Yes",
object : MyDialogListener {
override fun onClickNegativeButton() {}
override fun onClickPositiveButton() {
UIUtils.createAlertDialog(
requireContext(),
getString(R.string.have_you_placed_sample),
getString(R.string.please_place_sample),
getString(R.string.no),
getString(R.string.yes_and_run),
object : MyDialogListener {
override fun onClickNegativeButton() {}
override fun onClickPositiveButton() {
startAcquiring()
}
})
}
})
// }
}

View File

@@ -16,9 +16,17 @@ import com.example.hpostesting.data.model.test.TestRightResultType
import com.example.hpostesting.data.model.test.TestType
import com.example.hpostesting.presentation.dashboard.DashboardActivity
import com.example.hpostesting.util.MyUtils.calculateAgeFromYOB
import com.google.firebase.firestore.FirebaseFirestore
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
import dagger.hilt.android.AndroidEntryPoint
import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentTestRightResultsBinding
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.tasks.await
import kotlinx.coroutines.withContext
@AndroidEntryPoint
class TestRightResults : Fragment() {
@@ -55,8 +63,9 @@ class TestRightResults : Fragment() {
private fun setupListeners() {
binding.ivHome.setOnClickListener {
val i = Intent(requireContext().applicationContext, DashboardActivity::class.java)
startActivity(i)
CoroutineScope(Dispatchers.IO).launch {
checkBloodGroup()
}
}
binding.ivNext.setOnClickListener {
val i = Intent(requireContext().applicationContext, DashboardActivity::class.java)
@@ -65,6 +74,29 @@ class TestRightResults : Fragment() {
}
}
private suspend fun checkBloodGroup() {
binding.apply {
val bloodGroup = etBloodGroup.text.toString()
if (bloodGroup.isEmpty()) {
etBloodGroup.error = "Please enter your blood group"
} else {
val db: FirebaseFirestore = Firebase.firestore
val userdata =
db.collection("patientData").whereEqualTo("_id", viewModel.testDetails?._id)
.get().await()
if (userdata.documents.isNotEmpty()) {
userdata.documents.forEach {
db.collection("patientData").document(it.id).update("bloodGroup", bloodGroup)
}
}
}
withContext(Dispatchers.Main) {
val i = Intent(requireContext().applicationContext, DashboardActivity::class.java)
startActivity(i)
}
}
}
private fun updateResults() {
if (viewModel.testDetails?.name == "" && viewModel.testDetails?.birthYear == "") {
binding.tvName.visibility = View.GONE
@@ -81,37 +113,37 @@ class TestRightResults : Fragment() {
if (DataHolder.selectedTestType == TestType.SICKLECERT) {
when (viewModel.testDetails?.result) {
TestRightResultType.NORMAL -> {
binding.resultNormal.visibility = View.VISIBLE
}
TestRightResultType.SICKLECELLDISEASE -> {
binding.resultDisease.visibility = View.VISIBLE
}
TestRightResultType.SICKLECELLTRAIT -> {
binding.resultTrait.visibility = View.VISIBLE
}
TestRightResultType.POSITIVEBORDERLINE -> {
binding.resultPositiveBorderline.visibility = View.VISIBLE
binding.tvRecommended.visibility = View.VISIBLE
}
TestRightResultType.NEGATIVEBORDERLINE -> {
binding.resultNegativeBorderline.visibility = View.VISIBLE
binding.tvRecommended.visibility = View.VISIBLE
}
else -> {
// binding.resultUndefined.visibility = View.VISIBLE
Toast.makeText(
requireContext().applicationContext, "Please Test Again", Toast.LENGTH_LONG
).show()
moveToSamplePage()
}
}
// when (viewModel.testDetails?.result) {
// TestRightResultType.NORMAL -> {
// binding.resultNormal.visibility = View.VISIBLE
// }
//
// TestRightResultType.SICKLECELLDISEASE -> {
// binding.resultDisease.visibility = View.VISIBLE
// }
//
// TestRightResultType.SICKLECELLTRAIT -> {
// binding.resultTrait.visibility = View.VISIBLE
// }
//
// TestRightResultType.POSITIVEBORDERLINE -> {
// binding.resultPositiveBorderline.visibility = View.VISIBLE
// binding.tvRecommended.visibility = View.VISIBLE
// }
//
// TestRightResultType.NEGATIVEBORDERLINE -> {
// binding.resultNegativeBorderline.visibility = View.VISIBLE
// binding.tvRecommended.visibility = View.VISIBLE
// }
// else -> {
//// binding.resultUndefined.visibility = View.VISIBLE
// Toast.makeText(
// requireContext().applicationContext, "Please Test Again", Toast.LENGTH_LONG
// ).show()
// moveToSamplePage()
// }
// }
binding.resultNormal.visibility = View.VISIBLE
} else {
when (viewModel.testDetails?.result) {
TestRightResultType.SICKLECELLDISEASE -> {

View File

@@ -137,7 +137,6 @@ class TestRightViewModel @Inject constructor(
if (isReference) DataHolder.intensityReferenceArray.clear()
else intensitySampleArray.clear()
Log.d("SURYAKUMAR", fullString)
val listOfString = fullString.split("\n")
for (line in listOfString) {
@@ -437,7 +436,6 @@ class TestRightViewModel @Inject constructor(
}
private fun addResultTestToDb() {
testDetails?.location = DataHolder.location
testDetails?.testTime = SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
).format(Calendar.getInstance().time)
@@ -521,7 +519,6 @@ class TestRightViewModel @Inject constructor(
}
private fun bulkAddResultTestToDb(userData: UserData) {
userData.location = DataHolder.location
viewModelScope.launch {
userData.reportUploadTime = SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()