diff --git a/app/build.gradle b/app/build.gradle
index 61967bf..07f7326 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -55,9 +55,10 @@ dependencies {
implementation 'androidx.core:core-ktx:1.12.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
- implementation 'com.google.android.material:material:1.9.0'
+ implementation 'com.google.android.material:material:1.10.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.2'
+ implementation 'androidx.fragment:fragment-ktx:1.6.2'
//firebase
implementation platform('com.google.firebase:firebase-bom:32.1.0')
@@ -72,8 +73,8 @@ dependencies {
implementation 'com.google.android.gms:play-services-location:21.0.1'
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
implementation 'com.google.android.things:androidthings:1.0'
- implementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta10'
- implementation("com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta10")
+ implementation 'com.google.firebase:firebase-appdistribution:16.0.0-beta11'
+ implementation("com.google.firebase:firebase-appdistribution-api-ktx:16.0.0-beta11")
// Testing
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c2f6365..83e3687 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,8 +5,8 @@
-
-
@@ -32,6 +32,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.HPOSTesting"
tools:targetApi="31">
+
diff --git a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
index 8b24d41..f186a27 100644
--- a/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
+++ b/app/src/main/java/com/example/hpostesting/data/dao/MyDataBase.kt
@@ -11,7 +11,7 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData
import com.google.android.datatransport.runtime.dagger.Provides
import javax.inject.Singleton
-@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 6, exportSchema = false)
+@Database(entities = [UserData::class, HemoCubeTestData::class, DeviceData::class], version = 9, exportSchema = false)
@TypeConverters(Converters::class)
abstract class MyDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
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 2083849..94f31f9 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
@@ -13,7 +13,6 @@ data class HemoCubeTestData(
var birthYear: String = "",
var state: String = "",
var abhaId: String = "",
- var bloodGroup: String = "",
var userImageURL: String = "",
var location: UserData.Location? = null,
var reportUploadTime: String? = "",
diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt
index 8fe5e29..a434558 100644
--- a/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt
+++ b/app/src/main/java/com/example/hpostesting/data/model/patient/UserData.kt
@@ -12,6 +12,7 @@ data class UserData(
var incubationTime: String = "",
var birthYear: String = "",
var abhaId: String = "",
+ var bloodGroup: String = "",
var userImageURL: String = "",
var gender: String ="",
var location: Location? = null,
@@ -27,7 +28,8 @@ data class UserData(
var csvPath: String = "",
var reportPath: String = "",
var result: TestRightResultType? = null,
- var resultRatio: Double? = null
+ var resultRatio: Double? = null,
+ var prdClassification: String = ""
) {
enum class Gender {
MALE,
@@ -48,5 +50,10 @@ fun UserData.toHemoCubeTestData() = HemoCubeTestData(
userImageURL = userImageURL,
testStatus = testStatus,
location = location,
- gender = gender
+ gender = gender,
+ state = state,
+ abhaId = abhaId,
+ bloodGroup = bloodGroup,
+ prdClassification = prdClassification,
+ testTime = testTime
)
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt
new file mode 100644
index 0000000..402dc1d
--- /dev/null
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardActivity.kt
@@ -0,0 +1,61 @@
+package com.example.hpostesting.presentation.hemocube
+
+import android.content.BroadcastReceiver
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.ServiceConnection
+import android.hardware.usb.UsbDevice
+import android.hardware.usb.UsbDeviceConnection
+import android.hardware.usb.UsbManager
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.os.IBinder
+import android.view.Menu
+import androidx.activity.viewModels
+import com.example.hpostesting.data.DataHolder
+import com.example.hpostesting.presentation.testRight.UsbService
+import com.hoho.android.usbserial.driver.UsbSerialDriver
+import `in`.sminnovations.hpostesting.R
+import `in`.sminnovations.hpostesting.databinding.ActivityDigitalCardBinding
+import `in`.sminnovations.hpostesting.databinding.ActivityHemocubeBinding
+
+class DigitalCardActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityDigitalCardBinding
+ private val viewModel by viewModels()
+ private var myMenu: Menu? = null
+
+ private lateinit var mDriver: UsbSerialDriver
+ private var mConnection: UsbDeviceConnection? = null
+ lateinit var mService: UsbService
+
+ private val TAG = "HemoCube"
+
+// private val connection = object : ServiceConnection {
+// override fun onServiceConnected(className: ComponentName, service: IBinder) {
+// val binder = service as UsbService.UsbServiceBinder
+// mService = binder.getService()
+// viewModel.isServiceConnected = true
+// mConnection.let { mService.connect(mDriver, mConnection!!) }
+// moveToNext()
+// }
+//
+// override fun onServiceDisconnected(arg0: ComponentName) {
+// viewModel.isServiceConnected = false
+// }
+// }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityDigitalCardBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ moveToNext()
+ }
+
+
+ private fun moveToNext() {
+ if (supportFragmentManager.isDestroyed) return
+ supportFragmentManager.beginTransaction().replace(binding.fghemocube.id, DigitalCardFragment())
+ .commit()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt
index 15ea73a..f72c826 100644
--- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt
+++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/DigitalCardFragment.kt
@@ -1,8 +1,10 @@
package com.example.hpostesting.presentation.hemocube
+import android.annotation.SuppressLint
import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
+import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
@@ -14,13 +16,15 @@ import `in`.sminnovations.hpostesting.R
import `in`.sminnovations.hpostesting.databinding.FragmentDigitalCardBinding
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
import java.text.SimpleDateFormat
+import java.util.Calendar
import java.util.Date
+import java.util.Locale
class DigitalCardFragment : Fragment() {
private lateinit var binding: FragmentDigitalCardBinding
private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels()
private lateinit var sharedPreferences: SharedPreferences
- val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
+ private val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
@@ -33,29 +37,47 @@ class DigitalCardFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
-
initViews()
}
+ @SuppressLint("SetTextI18n")
private fun initViews() {
activity?.runOnUiThread {
binding.progressBar.visibility = View.VISIBLE
}
- val originalDateStr = testDetails?.testTime
- val originalDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- val originalDate: Date? = originalDateFormat.parse(originalDateStr)
- val desiredDateFormat = SimpleDateFormat("MMM dd, yyyy")
- val formattedDate: String = originalDate?.let { desiredDateFormat.format(it) } ?: "N/A"
+ Log.d("DigitalCardFragment", "Name: ${DataHolder.hemoCubeTestData?.name}")
+ Log.d("DigitalCardFragment", "DOB: ${testDetails?.birthYear}")
+ Log.d("DigitalCardFragment", "Gender: ${testDetails?.gender}")
+ Log.d("DigitalCardFragment", "State: ${testDetails?.state}")
+ Log.d("DigitalCardFragment", "ABHA ID: ${testDetails?.abhaId}")
+ Log.d("DigitalCardFragment", "Blood Group: ${testDetails?.bloodGroup}")
+ Log.d("DigitalCardFragment", "Sickle-Cell: ${testDetails?.classificationResult}")
+// Log.d("DigitalCardFragment", "Issue Date: $formattedDate")
activity?.runOnUiThread {
binding.progressBar.visibility = View.GONE
+ binding.name.text = "Name: ${DataHolder.hemoCubeTestData?.name}"
+ binding.dob.text = "DOB: ${testDetails?.birthYear}"
+ binding.gender.text = "Gender: ${testDetails?.gender}"
+ binding.State.text = "State: ${testDetails?.state}"
+ binding.abhaid.text = "ABHA ID: ${testDetails?.abhaId}"
+ binding.blood.text = "Blood Group: ${testDetails?.bloodGroup}"
+ binding.sicklecell.text = "Sickle-Cell: ${DataHolder.hemoCubeTestData?.prdClassification.toString()}"
+
}
- binding.name.text = "Name: ${testDetails?.name}"
- binding.dob.text = "DOB: ${testDetails?.birthYear}"
- binding.gender.text = "gender: ${testDetails?.gender}"
- binding.State.text = "state: ${testDetails?.state}"
- binding.abhaid.text = "ABHA ID: ${testDetails?.abhaId}"
- binding.blood.text = "Blood Group: ${testDetails?.bloodGroup}"
- binding.sicklecell.text = "Sickle-Cell: ${testDetails?.classificationResult}"
- binding.issueDate.text = "Issue Date: $formattedDate"
+ // Update the UI with the fetched details
+ val originalDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
+ val originalDate: Date? = originalDateFormat.parse(SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
+ ).format(Calendar.getInstance().time))
+
+// Format the parsed date to "mm date, year"
+ val desiredDateFormat = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault())
+ val formattedDate: String = originalDate?.let { desiredDateFormat.format(it) } ?: "N/A"
+ activity?.runOnUiThread {
+ binding.issueDate.text = "Issue Date: ${formattedDate}"
+ }
+
}
+
+
}
\ No newline at end of file
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 b07c615..6901e53 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
@@ -8,6 +8,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.FrameLayout
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
@@ -19,6 +20,7 @@ import com.example.hpostesting.data.model.patient.DeviceData
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
import com.example.hpostesting.presentation.UsbServiceListener
import com.example.hpostesting.presentation.dashboard.DashboardActivity
+import androidx.navigation.fragment.findNavController
import com.example.hpostesting.presentation.utils.MyDialogListener
import com.example.hpostesting.presentation.utils.UIUtils
import com.google.firebase.crashlytics.ktx.crashlytics
@@ -89,8 +91,8 @@ class HemoCubeFragment : Fragment() {
binding.nameEditText.visibility = View.GONE
binding.tvTitle.visibility = View.GONE
binding.btnGo.visibility = View.GONE
- binding.btnSubmit.isEnabled = false
- binding.btnSubmit.isClickable = false
+// binding.btnSubmit.isEnabled = false
+// binding.btnSubmit.isClickable = false
binding.btnPlacebuffer.visibility = View.GONE
binding.tvName.text = "Name: ${testDetails?.name}\n ID: ${testDetails?._id}"
@@ -126,22 +128,17 @@ class HemoCubeFragment : Fragment() {
hemoCubeViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result ->
if (result == "Success") {
showToast("Test Results Uploaded Successfully")
+ activity?.runOnUiThread {
+ binding.btnSubmit.visibility = View.GONE
+ binding.btnDigitalCard.visibility = View.VISIBLE
+ binding.btnDigitalCard.setOnClickListener {
+ val i = Intent(
+ requireContext().applicationContext, DigitalCardActivity::class.java
+ )
+ startActivity(i)
+ }
+ }
- val digitalCardFragment = DigitalCardFragment()
- val transaction = parentFragmentManager.beginTransaction()
- transaction.replace(R.id.fragment_container, digitalCardFragment)
- transaction.addToBackStack(null)
- transaction.commit()
-
-// val i = Intent(
-// requireContext().applicationContext, DashboardActivity::class.java
-// )
-// startActivity(i)
-// (activity as HemocubeActivity).finish()
-// val i = Intent(
-// requireContext().applicationContext, DashboardActivity::class.java
-// )
-// startActivity(i)
// (activity as HemocubeActivity).finish()
}
if (result == "Local") {
@@ -451,6 +448,8 @@ class HemoCubeFragment : Fragment() {
binding.errorMessage.text =
"Error: Invalid Test. Improper buffer reading (high)"
binding.errorMessage.visibility = View.VISIBLE
+ binding.btnSubmit.isEnabled = true
+ binding.btnSubmit.isClickable = true
}
}
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 b4b4305..b9af079 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
@@ -1,11 +1,13 @@
package com.example.hpostesting.presentation.hemocube
+import android.app.Application
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.SharedPreferences
import android.os.BatteryManager
import android.util.Log
+import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
@@ -37,229 +39,241 @@ class HemoCubeViewModel @Inject constructor(
) : ViewModel() {
var isServiceConnected = false
val progressBar = MutableLiveData(false)
- val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
- val messages = MutableLiveData()
- private val sharedPreference: SharedPreferences =
- context.getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
+ val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
+ val messages = MutableLiveData()
+ private val sharedPreference: SharedPreferences =
+ context.getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
- // Get the device ID of the device you want to retrieve data for (e.g., the first device in the list)
+ // Get the device ID of the device you want to retrieve data for (e.g., the first device in the list)
- private val _networkStatusLiveData = NetworkStatusLiveData(context)
- val allUserData = hemoCubeDao.getAll()
- val deviceData = MutableLiveData()
- val networkStatusLiveData: LiveData
- get() = _networkStatusLiveData
- val fireBaseUpload = MutableLiveData()
- val fireBaseBulkUpload = MutableLiveData()
+ private val _networkStatusLiveData = NetworkStatusLiveData(context)
+ val allUserData = hemoCubeDao.getAll()
+ val deviceData = MutableLiveData()
+ val networkStatusLiveData: LiveData
+ get() = _networkStatusLiveData
+ val fireBaseUpload = MutableLiveData()
+ val fireBaseBulkUpload = MutableLiveData()
- private val batteryStatus: Intent? = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
- context.registerReceiver(null, ifilter)
- }
-
- fun uploadHemoCubeResultToDatabase(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) =
- viewModelScope.launch {
- if (kitSerial != null) {
- testDetails?.kitSerial = kitSerial
+ private val batteryStatus: Intent? =
+ IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { ifilter ->
+ context.registerReceiver(null, ifilter)
}
- testDetails?.testStatus = testStatus
- try {
- if (isOnline) {
- parseData()
- addResultTestToDb()
- } else {
- parseData()
- testDetails?.testTime = SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
- ).format(Calendar.getInstance().time)
- hemoCubeDao.insertAll(testDetails!!)
- fireBaseUpload.postValue("Local")
+ fun uploadHemoCubeResultToDatabase(
+ isOnline: Boolean,
+ testStatus: Boolean,
+ kitSerial: String?
+ ) =
+ viewModelScope.launch {
+ if (kitSerial != null) {
+ testDetails?.kitSerial = kitSerial
+ }
+ testDetails?.testStatus = testStatus
+
+ try {
+ if (isOnline) {
+ parseData()
+ addResultTestToDb()
+ } else {
+ parseData()
+ testDetails?.testTime = SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
+ ).format(Calendar.getInstance().time)
+ hemoCubeDao.insertAll(testDetails!!)
+ fireBaseUpload.postValue("Local")
+ }
+ } catch (e: Exception) {
+ Log.e("Testdb", "Upload failed: ${e.message}")
}
- } catch (e: Exception) {
- Log.e("Testdb", "Upload failed: ${e.message}")
}
+
+
+ fun uploadHemoCubeResultToDatabaseforbuffercheckN(bufferCheckData: BufferCheckData) =
+ viewModelScope.launch {
+ addResultTestToDbforbuffercheck(bufferCheckData)
+ }
+
+ fun getDeviceData(deviceId: String?) = viewModelScope.launch {
+ deviceData.postValue(deviceId?.let { repository.getDeviceDataById(it) })
}
-
-
- fun uploadHemoCubeResultToDatabaseforbuffercheckN(bufferCheckData: BufferCheckData) =
- viewModelScope.launch {
- addResultTestToDbforbuffercheck(bufferCheckData)
- }
-
- fun getDeviceData(deviceId: String?) = viewModelScope.launch {
- deviceData.postValue(deviceId?.let { repository.getDeviceDataById(it) })
- }
-
- private fun parseData() {
- testDetails?.deviceRatio = DataHolder.hemocubeResult
- testDetails?.resultData = DataHolder.hemoCubeTestData?.resultData.toString()
- testDetails?.location = DataHolder.location
- testDetails?.testTime = SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
- ).format(Calendar.getInstance().time)
- testDetails?.appVersion = DataHolder.hemoCubeTestData?.appVersion
- testDetails?.deviceId = DataHolder.hemoCubeTestData?.deviceId
- testDetails?.deviceSerialNumber =
- sharedPreference.getString(Constants.USER_ID, "").toString()
- testDetails?.kitSerial = sharedPreference.getString(Constants.KIT_NUMBER, "").toString()
- testDetails?.led1Buffer = DataHolder.hemoCubeTestData?.led1Buffer
- testDetails?.led2Buffer = DataHolder.hemoCubeTestData?.led2Buffer
- testDetails?.led3Buffer = DataHolder.hemoCubeTestData?.led3Buffer
- testDetails?.led4Buffer = DataHolder.hemoCubeTestData?.led4Buffer
- testDetails?.led1Sample = DataHolder.hemoCubeTestData?.led1Sample
- testDetails?.led2Sample = DataHolder.hemoCubeTestData?.led2Sample
- testDetails?.led3Sample = DataHolder.hemoCubeTestData?.led3Sample
- testDetails?.led4Sample = DataHolder.hemoCubeTestData?.led4Sample
- testDetails?.led1Average = DataHolder.hemoCubeTestData?.led1Average
- testDetails?.led2Average = DataHolder.hemoCubeTestData?.led2Average
- testDetails?.led3Average = DataHolder.hemoCubeTestData?.led3Average
- testDetails?.led4Average = DataHolder.hemoCubeTestData?.led4Average
- testDetails?.abs1 = DataHolder.hemoCubeTestData?.abs1
- testDetails?.abs2 = DataHolder.hemoCubeTestData?.abs2
- testDetails?.abs3 = DataHolder.hemoCubeTestData?.abs3
- testDetails?.abs4 = DataHolder.hemoCubeTestData?.abs4
- testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio
- testDetails?.predictedDenovixRatio = DataHolder.hemoCubeTestData?.predictedDenovixRatio
- testDetails?.calculatedRatio = DataHolder.hemoCubeTestData?.calculatedRatio
- testDetails?.coefficients = DataHolder.hemoCubeTestData?.coefficients
- testDetails?.classificationResult = DataHolder.hemoCubeTestData?.classificationResult!!
- testDetails?.prdClassification = DataHolder.hemoCubeTestData?.prdClassification.toString()
- testDetails?.batteryLevel = DataHolder.hemoCubeTestData?.batteryLevel.toString()
- testDetails?.batteryCapacity = DataHolder.hemoCubeTestData?.batteryCapacity.toString()
- testDetails?.batteryMaxCapacity = DataHolder.hemoCubeTestData?.batteryMaxCapacity.toString()
- testDetails?.batteryTemperature = DataHolder.hemoCubeTestData?.batteryTemperature.toString()
- testDetails?.batteryVoltage = DataHolder.hemoCubeTestData?.batteryVoltage.toString()
- }
-
- private fun addResultTestToDb() {
- viewModelScope.launch {
- try {
- testDetails!!.reportUploadTime = SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
- ).format(Calendar.getInstance().time)
-
- when (val response = repository.addTestToDatabase(testDetails)) {
- is Response.Success -> {
- val kitCount = sharedPreference.getInt(Constants.KIT_COUNT, 0)
- with(sharedPreference.edit()) {
- putInt(Constants.KIT_COUNT, kitCount.plus(1))
- apply()
- }
- Log.i("Testdb", "Data uploaded to Firestore successfully")
- fireBaseUpload.postValue("Success")
- testDetails.localFlag = true
- hemoCubeDao.insertAll(testDetails)
- }
-
- is Response.Error -> {
- Log.e("Testdb", "Error uploading data to Firestore: $response")
- fireBaseUpload.postValue("Error")
- hemoCubeDao.insertAll(testDetails)
- }
- }
- } catch (e: Exception) {
- Log.e("Testdb", "Exception during data upload: ${e.message}")
- fireBaseUpload.postValue("Error")
- }
- }
- }
-
-
- private fun addResultTestToDbforbuffercheck(bufferCheckData: BufferCheckData) {
- viewModelScope.launch {
- try {
-
- when (val response = repository.addTestToDatabaseforBufferCheck(bufferCheckData)) {
- is Response.Success -> {
- Log.i("Testdb", "Data uploaded to Firestore successfully")
- fireBaseUpload.postValue("Success")
- }
-
- is Response.Error -> {
- Log.e("Testdb", "Error uploading data to Firestore: $response")
- fireBaseUpload.postValue("Error")
- }
- }
- } catch (e: Exception) {
- Log.e("Testdb", "Exception during data upload: ${e.message}")
- fireBaseUpload.postValue("Error")
- }
- }
- }
-
- fun bulkAddResultTestToDb(userData: HemoCubeTestData) {
- viewModelScope.launch {
- userData.reportUploadTime = SimpleDateFormat(
+ private fun parseData() {
+ testDetails?.deviceRatio = DataHolder.hemocubeResult
+ testDetails?.resultData = DataHolder.hemoCubeTestData?.resultData.toString()
+ testDetails?.location = DataHolder.location
+ testDetails?.testTime = SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss", Locale.getDefault()
).format(Calendar.getInstance().time)
- when (repository.addTestToDatabase(userData)) {
- is Response.Success -> {
- fireBaseBulkUpload.postValue("Success")
- updateLocalFlag(userData._id)
- }
+ testDetails?.appVersion = DataHolder.hemoCubeTestData?.appVersion
+ testDetails?.deviceId = DataHolder.hemoCubeTestData?.deviceId
+ testDetails?.deviceSerialNumber =
+ sharedPreference.getString(Constants.USER_ID, "").toString()
+ testDetails?.kitSerial = sharedPreference.getString(Constants.KIT_NUMBER, "").toString()
+ testDetails?.led1Buffer = DataHolder.hemoCubeTestData?.led1Buffer
+ testDetails?.led2Buffer = DataHolder.hemoCubeTestData?.led2Buffer
+ testDetails?.led3Buffer = DataHolder.hemoCubeTestData?.led3Buffer
+ testDetails?.led4Buffer = DataHolder.hemoCubeTestData?.led4Buffer
+ testDetails?.led1Sample = DataHolder.hemoCubeTestData?.led1Sample
+ testDetails?.led2Sample = DataHolder.hemoCubeTestData?.led2Sample
+ testDetails?.led3Sample = DataHolder.hemoCubeTestData?.led3Sample
+ testDetails?.led4Sample = DataHolder.hemoCubeTestData?.led4Sample
+ testDetails?.led1Average = DataHolder.hemoCubeTestData?.led1Average
+ testDetails?.led2Average = DataHolder.hemoCubeTestData?.led2Average
+ testDetails?.led3Average = DataHolder.hemoCubeTestData?.led3Average
+ testDetails?.led4Average = DataHolder.hemoCubeTestData?.led4Average
+ testDetails?.abs1 = DataHolder.hemoCubeTestData?.abs1
+ testDetails?.abs2 = DataHolder.hemoCubeTestData?.abs2
+ testDetails?.abs3 = DataHolder.hemoCubeTestData?.abs3
+ testDetails?.abs4 = DataHolder.hemoCubeTestData?.abs4
+ testDetails?.deviceRatio = DataHolder.hemoCubeTestData?.deviceRatio
+ testDetails?.predictedDenovixRatio = DataHolder.hemoCubeTestData?.predictedDenovixRatio
+ testDetails?.calculatedRatio = DataHolder.hemoCubeTestData?.calculatedRatio
+ testDetails?.coefficients = DataHolder.hemoCubeTestData?.coefficients
+ testDetails?.classificationResult = DataHolder.hemoCubeTestData?.classificationResult!!
+ testDetails?.prdClassification =
+ DataHolder.hemoCubeTestData?.prdClassification.toString()
+ testDetails?.batteryLevel = DataHolder.hemoCubeTestData?.batteryLevel.toString()
+ testDetails?.batteryCapacity = DataHolder.hemoCubeTestData?.batteryCapacity.toString()
+ testDetails?.batteryMaxCapacity =
+ DataHolder.hemoCubeTestData?.batteryMaxCapacity.toString()
+ testDetails?.batteryTemperature =
+ DataHolder.hemoCubeTestData?.batteryTemperature.toString()
+ testDetails?.batteryVoltage = DataHolder.hemoCubeTestData?.batteryVoltage.toString()
+ }
- else -> {
- fireBaseBulkUpload.postValue("Error")
+ private fun addResultTestToDb() {
+ viewModelScope.launch {
+ try {
+ testDetails!!.reportUploadTime = SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
+ ).format(Calendar.getInstance().time)
+
+ when (val response = repository.addTestToDatabase(testDetails)) {
+ is Response.Success -> {
+ val kitCount = sharedPreference.getInt(Constants.KIT_COUNT, 0)
+ with(sharedPreference.edit()) {
+ putInt(Constants.KIT_COUNT, kitCount.plus(1))
+ apply()
+ }
+ Log.i("Testdb", "Data uploaded to Firestore successfully")
+ fireBaseUpload.postValue("Success")
+ testDetails.localFlag = true
+ hemoCubeDao.insertAll(testDetails)
+ }
+
+ is Response.Error -> {
+ Log.e("Testdb", "Error uploading data to Firestore: $response")
+ fireBaseUpload.postValue("Error")
+ hemoCubeDao.insertAll(testDetails)
+ }
+ }
+ } catch (e: Exception) {
+ Log.e("Testdb", "Exception during data upload: ${e.message}")
+ fireBaseUpload.postValue("Error")
}
}
}
- }
- private fun updateLocalFlag(userId: String) = viewModelScope.launch {
- hemoCubeDao.updateFieldById(id = userId, true)
- }
- fun addUser(userData: HemoCubeTestData) = viewModelScope.launch {
- hemoCubeDao.insertAll(userData)
- }
+ private fun addResultTestToDbforbuffercheck(bufferCheckData: BufferCheckData) {
+ viewModelScope.launch {
+ try {
- fun deleteById(userId: String) = viewModelScope.launch {
- hemoCubeDao.deleteById(id = userId)
- }
+ when (val response =
+ repository.addTestToDatabaseforBufferCheck(bufferCheckData)) {
+ is Response.Success -> {
+ Log.i("Testdb", "Data uploaded to Firestore successfully")
+ fireBaseUpload.postValue("Success")
+ }
- fun getBatteryLevel(): Float? {
- val batteryPct: Float? = batteryStatus?.let { intent ->
- val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
- val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
- level * 100 / scale.toFloat()
+ is Response.Error -> {
+ Log.e("Testdb", "Error uploading data to Firestore: $response")
+ fireBaseUpload.postValue("Error")
+ }
+ }
+ } catch (e: Exception) {
+ Log.e("Testdb", "Exception during data upload: ${e.message}")
+ fireBaseUpload.postValue("Error")
+ }
+ }
}
- return batteryPct
- }
+ fun bulkAddResultTestToDb(userData: HemoCubeTestData) {
+ viewModelScope.launch {
+ userData.reportUploadTime = SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss", Locale.getDefault()
+ ).format(Calendar.getInstance().time)
+ when (repository.addTestToDatabase(userData)) {
+ is Response.Success -> {
+ fireBaseBulkUpload.postValue("Success")
+ updateLocalFlag(userData._id)
+ }
- fun getBatteryTemperature(): Float? {
- val batteryTemp: Float? = batteryStatus?.let { intent ->
- val temperature = intent?.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) ?: 0
- temperature.toFloat() / 10
+ else -> {
+ fireBaseBulkUpload.postValue("Error")
+ }
+ }
+ }
}
- return batteryTemp
+ private fun updateLocalFlag(userId: String) = viewModelScope.launch {
+ hemoCubeDao.updateFieldById(id = userId, true)
+ }
+
+ fun addUser(userData: HemoCubeTestData) = viewModelScope.launch {
+ hemoCubeDao.insertAll(userData)
+ }
+
+ fun deleteById(userId: String) = viewModelScope.launch {
+ hemoCubeDao.deleteById(id = userId)
+ }
+
+ fun getBatteryLevel(): Float? {
+ val batteryPct: Float? = batteryStatus?.let { intent ->
+ val level: Int = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1)
+ val scale: Int = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
+ level * 100 / scale.toFloat()
+ }
+
+ return batteryPct
+ }
+
+ fun getBatteryTemperature(): Float? {
+ val batteryTemp: Float? = batteryStatus?.let { intent ->
+ val temperature = intent?.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) ?: 0
+ temperature.toFloat() / 10
+ }
+
+ return batteryTemp
+ }
+
+ fun getBatteryVoltage(context: Context): Float {
+ val batteryIntent =
+ context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
+ val voltage = batteryIntent?.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0) ?: 0
+
+ // milli-volts to volts
+ return voltage.toFloat() / 1000
+ }
+
+ fun getBatteryCapacity(context: Context): Int {
+ val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
+ val currentCapacity =
+ batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
+
+ return currentCapacity
+ }
+
+ fun getBatteryMaxCapacity(context: Context): Float {
+ val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
+ val designCapacity =
+ batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
+ val currentCapacity =
+ batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
+
+ // Calculate the estimated maximum battery capacity in mAh
+ val maxCapacity = currentCapacity.toFloat() / designCapacity.toFloat() * 100
+
+ return maxCapacity
+ }
}
-
- fun getBatteryVoltage(context: Context): Float {
- val batteryIntent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
- val voltage = batteryIntent?.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0) ?: 0
-
- // milli-volts to volts
- return voltage.toFloat() / 1000
- }
-
- fun getBatteryCapacity(context: Context): Int {
- val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
- val currentCapacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
-
- return currentCapacity
- }
-
- fun getBatteryMaxCapacity(context: Context): Float {
- val batteryManager = context.getSystemService(Context.BATTERY_SERVICE) as BatteryManager
- val designCapacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
- val currentCapacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
-
- // Calculate the estimated maximum battery capacity in mAh
- val maxCapacity = currentCapacity.toFloat() / designCapacity.toFloat() * 100
-
- return maxCapacity
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_digital_card.xml b/app/src/main/res/layout/activity_digital_card.xml
new file mode 100644
index 0000000..3e8cf38
--- /dev/null
+++ b/app/src/main/res/layout/activity_digital_card.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_hemocube.xml b/app/src/main/res/layout/activity_hemocube.xml
index a91259a..2d0b501 100644
--- a/app/src/main/res/layout/activity_hemocube.xml
+++ b/app/src/main/res/layout/activity_hemocube.xml
@@ -1,10 +1,8 @@
-
-
+ app:layout_constraintTop_toTopOf="parent" />
-
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/app/src/main/res/layout/content_dashboard.xml b/app/src/main/res/layout/content_dashboard.xml
index 02c00de..27f66f1 100644
--- a/app/src/main/res/layout/content_dashboard.xml
+++ b/app/src/main/res/layout/content_dashboard.xml
@@ -18,4 +18,6 @@
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/dashboard_navigation" />
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_digital_card.xml b/app/src/main/res/layout/fragment_digital_card.xml
index 00aeb77..4a6532a 100644
--- a/app/src/main/res/layout/fragment_digital_card.xml
+++ b/app/src/main/res/layout/fragment_digital_card.xml
@@ -1,14 +1,13 @@
-
+
+
-
-
+
+
+
+ android:src="@drawable/karnataka" />
+ android:src="@drawable/sickle_cell_gov_logo"/>
+ android:src="@drawable/indianoil"/>
+
-
+ android:text="name: Mariya" />
@@ -240,4 +239,3 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_hemo_cube_reference.xml b/app/src/main/res/layout/fragment_hemo_cube_reference.xml
index 3c029b8..a9aa2dd 100644
--- a/app/src/main/res/layout/fragment_hemo_cube_reference.xml
+++ b/app/src/main/res/layout/fragment_hemo_cube_reference.xml
@@ -205,7 +205,19 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/btn_submit" />
-
+
+
+
+
+
+
+
+
\ No newline at end of file