fix hemocube db save error
- add mapper to hemocube data - save test details correctly on dataholder - add result data from device on test details
This commit is contained in:
@@ -22,7 +22,7 @@ object DataHolder {
|
||||
val wavelengthToPixelArray = ArrayList<Double>()
|
||||
val intensityReferenceArray = ArrayList<Double>()
|
||||
var selectedTest: UserData? = null
|
||||
var HomocubeTestType: HemoCubeTestData? = null
|
||||
var hemoCubeTestData: HemoCubeTestData? = null
|
||||
|
||||
var kitSerial: String = ""
|
||||
|
||||
|
||||
@@ -10,8 +10,10 @@ data class HemoCubeTestData(
|
||||
var name: String = "",
|
||||
var birthYear: String = "",
|
||||
var userImageURL: String = "",
|
||||
var location: UserData.Location? = null,
|
||||
var createdBy: String? = "",
|
||||
var reportUploadTime: String? = "",
|
||||
var testType: String? = "HEMOCUBE",
|
||||
var testTime: String? = "",
|
||||
var testStatus: Boolean? = false,
|
||||
var mobileId: String = "",
|
||||
@@ -19,6 +21,7 @@ data class HemoCubeTestData(
|
||||
var kitSerial: String = "",
|
||||
var reportPath: String = "",
|
||||
var resultRatio: Double? = null,
|
||||
var resultData: String = "",
|
||||
var led1: Double? = null,
|
||||
var led2: Double? = null
|
||||
)
|
||||
@@ -36,3 +36,20 @@ data class UserData(
|
||||
var longitude: Double? = null
|
||||
)
|
||||
}
|
||||
|
||||
fun UserData.toHemoCubeTestData() = HemoCubeTestData(
|
||||
_id = _id,
|
||||
name = name,
|
||||
birthYear = birthYear,
|
||||
userImageURL = userImageURL,
|
||||
location = location,
|
||||
createdBy = createdBy,
|
||||
reportUploadTime = reportUploadTime,
|
||||
testTime = testTime,
|
||||
testStatus = testStatus,
|
||||
mobileId = mobileId,
|
||||
deviceSerialNumber = deviceSerialNumber,
|
||||
kitSerial = kitSerial,
|
||||
reportPath = reportPath,
|
||||
resultRatio = resultRatio,
|
||||
)
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.example.hpostesting.presentation.hemocube
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.hardware.usb.UsbDevice
|
||||
import android.hardware.usb.UsbDeviceConnection
|
||||
@@ -14,10 +12,10 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.example.hpostesting.data.DataHolder
|
||||
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
||||
import com.example.hpostesting.presentation.UsbServiceListener
|
||||
import `in`.sminnovations.hpostesting.R
|
||||
import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding
|
||||
@@ -25,7 +23,8 @@ import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBindi
|
||||
class HemoCubeFragment : Fragment() {
|
||||
|
||||
private var testTime: String? = null
|
||||
private var resultRatio: String? = null
|
||||
private var resultRatio: String? = ""
|
||||
private var resultData: String = ""
|
||||
private var kitSerial: String? = null
|
||||
private lateinit var binding: FragmentHemoCubeReferenceBinding
|
||||
private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels()
|
||||
@@ -68,8 +67,8 @@ class HemoCubeFragment : Fragment() {
|
||||
|
||||
hemoCubeViewModel.networkStatusLiveData.observe(viewLifecycleOwner) { isNetworkAvailable ->
|
||||
apply {
|
||||
kitSerial = DataHolder.HomocubeTestType?.kitSerial
|
||||
testTime = DataHolder.HomocubeTestType?.testTime
|
||||
kitSerial = DataHolder.hemoCubeTestData?.kitSerial
|
||||
testTime = DataHolder.hemoCubeTestData?.testTime
|
||||
isOnline = isNetworkAvailable
|
||||
}
|
||||
}
|
||||
@@ -83,33 +82,35 @@ class HemoCubeFragment : Fragment() {
|
||||
|
||||
binding.btnSubmit.setOnClickListener {
|
||||
|
||||
Toast.makeText(
|
||||
requireContext(),
|
||||
"Test Data uploaded",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
Log.e("Testdb", "success")
|
||||
binding.progressBar.visibility = View.VISIBLE
|
||||
|
||||
if (DataHolder.hemoCubeTestData == null) {
|
||||
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||
}
|
||||
|
||||
if (isOnline) {
|
||||
resultRatio?.let { ratio ->
|
||||
Log.e("Testdb", "upload")
|
||||
hemoCubeViewModel.uploadHemocubeResultToDatabase(
|
||||
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
|
||||
requireContext(),
|
||||
isOnline,
|
||||
true,
|
||||
kitSerial,
|
||||
ratio,
|
||||
resultData,
|
||||
testTime
|
||||
)
|
||||
}
|
||||
binding.progressBar.visibility = View.VISIBLE
|
||||
} else {
|
||||
resultRatio?.let { ratio ->
|
||||
hemoCubeViewModel.uploadHemocubeResultToDatabase(
|
||||
hemoCubeViewModel.uploadHemoCubeResultToDatabase(
|
||||
requireContext(),
|
||||
isOnline,
|
||||
true,
|
||||
kitSerial,
|
||||
ratio,
|
||||
resultData,
|
||||
testTime
|
||||
)
|
||||
}
|
||||
@@ -164,7 +165,6 @@ class HemoCubeFragment : Fragment() {
|
||||
Log.d("greenBuffer", blueBIntensity.toString())
|
||||
}
|
||||
|
||||
|
||||
private fun displayValuesOnTextView(parsedData: Map<String, String>) {
|
||||
val fullReadOutput = StringBuilder()
|
||||
val textView: TextView = requireView().findViewById(R.id.tv_subtitle4)
|
||||
@@ -179,6 +179,10 @@ class HemoCubeFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun fetchHemoCubeResult() {
|
||||
if (DataHolder.hemoCubeTestData == null) {
|
||||
DataHolder.hemoCubeTestData = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||
}
|
||||
|
||||
hemoCubeViewModel.progressBar.postValue(true)
|
||||
val fullReadOutput = StringBuilder()
|
||||
(activity as HemocubeActivity).mService.eventDrivenWriteHemoCube(object :
|
||||
@@ -189,8 +193,10 @@ class HemoCubeFragment : Fragment() {
|
||||
fullReadOutput.append(stringData)
|
||||
|
||||
binding.tvSubtitle4.text = fullReadOutput
|
||||
resultRatio = fullReadOutput.toString()
|
||||
val data = parseUsbData(fullReadOutput.toString())
|
||||
resultData = fullReadOutput.toString()
|
||||
DataHolder.hemoCubeTestData?.resultData = resultData
|
||||
resultRatio = "" //TODO
|
||||
val pareseddata = parseUsbData(fullReadOutput.toString())
|
||||
Log.d("Result", data.toString())
|
||||
hemoCubeViewModel.progressBar.postValue(false)
|
||||
}
|
||||
@@ -202,7 +208,6 @@ class HemoCubeFragment : Fragment() {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
private fun fetchHemoCubeResultNew() {
|
||||
hemoCubeViewModel.progressBar.postValue(true)
|
||||
val fullReadOutput = StringBuilder()
|
||||
@@ -239,10 +244,4 @@ class HemoCubeFragment : Fragment() {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ package com.example.hpostesting.presentation.hemocube
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import android.widget.Toast
|
||||
import androidx.core.content.ContentProviderCompat.requireContext
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
@@ -12,6 +10,7 @@ import com.example.hpostesting.data.DataHolder
|
||||
import com.example.hpostesting.data.NetworkStatusLiveData
|
||||
import com.example.hpostesting.data.dao.HemoCubeDao
|
||||
import com.example.hpostesting.data.model.Response
|
||||
import com.example.hpostesting.data.model.patient.toHemoCubeTestData
|
||||
import com.example.hpostesting.data.repository.DatabaseRepository
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -19,6 +18,7 @@ import java.text.SimpleDateFormat
|
||||
import java.util.Calendar
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class HemoCubeViewModel @Inject constructor(
|
||||
private val hemoCubeDao: HemoCubeDao,
|
||||
@@ -27,15 +27,15 @@ class HemoCubeViewModel @Inject constructor(
|
||||
) : ViewModel() {
|
||||
var isServiceConnected = false
|
||||
val progressBar = MutableLiveData(false)
|
||||
val testDetails = DataHolder.HomocubeTestType
|
||||
val testDetailuser = DataHolder.selectedTest
|
||||
val testDetails = DataHolder.selectedTest?.toHemoCubeTestData()
|
||||
private val _networkStatusLiveData = NetworkStatusLiveData(context)
|
||||
val networkStatusLiveData: LiveData<Boolean>
|
||||
get() = _networkStatusLiveData
|
||||
val fireBaseUpload = MutableLiveData<String>()
|
||||
fun uploadHemocubeResultToDatabase(
|
||||
fun uploadHemoCubeResultToDatabase(
|
||||
context: Context, isOnline: Boolean, testStatus: Boolean, kitSerial: String?,
|
||||
resultRatio: String,
|
||||
resultData: String,
|
||||
testTime: String?
|
||||
) = viewModelScope.launch {
|
||||
if (kitSerial != null) {
|
||||
@@ -63,7 +63,8 @@ class HemoCubeViewModel @Inject constructor(
|
||||
|
||||
private fun addResultTestToDb() {
|
||||
testDetails?.resultRatio = DataHolder.hemocubeResult
|
||||
testDetailuser?.location = DataHolder.location
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user