From 9db8e962d7981a8003149f44be276b3aa34a619b Mon Sep 17 00:00:00 2001 From: Mariya Date: Fri, 13 Oct 2023 18:50:57 +0530 Subject: [PATCH] BufferCheckData uploaded to database code pending --- .../data/model/patient/BufferCheckData.kt | 19 ++++++ .../data/repository/DatabaseRepository.kt | 11 +--- .../HemoCubeBufferCheckFragment.kt | 61 ++++++++++++++----- .../hemocube/HemoCubeViewModel.kt | 30 ++------- .../layout/fragment_hemo_cube_reference.xml | 57 +++++++++++++++-- 5 files changed, 126 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/com/example/hpostesting/data/model/patient/BufferCheckData.kt diff --git a/app/src/main/java/com/example/hpostesting/data/model/patient/BufferCheckData.kt b/app/src/main/java/com/example/hpostesting/data/model/patient/BufferCheckData.kt new file mode 100644 index 0000000..874f54b --- /dev/null +++ b/app/src/main/java/com/example/hpostesting/data/model/patient/BufferCheckData.kt @@ -0,0 +1,19 @@ +package com.example.hpostesting.data.model.patient + +data class BufferCheckData( + var kitno: String = "", + var deviceId: String? = "", + var appVersion:String? = "", + var deviceSerialNumber: String = "", + var deviceType: String = "HEMOCUBE", + var resultData: String = "", + var led1Buffer: Double? = null, + var led2Buffer: Double? = null, + var led1Sample: Double? = null, + var led2Sample: Double? = null, + var led1Average: Double? = null, + var led2Average: Double? = null, + var deviceRatio: Double? = null, + var calculatedRatio: Double? = null, + var classificationResult: String = "" +) \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt b/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt index 204273e..cd68f00 100644 --- a/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt +++ b/app/src/main/java/com/example/hpostesting/data/repository/DatabaseRepository.kt @@ -3,6 +3,7 @@ package com.example.hpostesting.data.repository import android.net.Uri import com.example.hpostesting.data.model.PendingUploads import com.example.hpostesting.data.model.Response +import com.example.hpostesting.data.model.patient.BufferCheckData import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.UserData @@ -50,16 +51,10 @@ class DatabaseRepository : Repository { } } - suspend fun addTestToDatabaseforBufferCheck(data: HemoCubeTestData?): Response { + suspend fun addTestToDatabaseforBufferCheck(data: BufferCheckData?): Response { return try { - val userdata = db.collection("patientData").whereEqualTo("_id", data!!._id).get().await() - if (userdata.documents.isNotEmpty()) { - userdata.documents.forEach { - db.collection("patientData").document(it.id).update("testStatus", true) - } - } db.collection("buffers").add(data!!).await() - Response.Success(data!!._id) + Response.Success(data!!.kitno) } catch (e: Exception) { Firebase.crashlytics.recordException(e) Response.Error(e) diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt index f8c28d6..d2a14d4 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt @@ -1,5 +1,6 @@ package com.example.hpostesting.presentation.buffercheck +import android.app.AlertDialog import android.content.Context import android.content.Intent import android.content.SharedPreferences @@ -7,14 +8,15 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AutoCompleteTextView import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.lifecycleScope import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.HemoCubeCommands +import com.example.hpostesting.data.model.patient.BufferCheckData import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.model.patient.toHemoCubeTestData import com.example.hpostesting.presentation.UsbServiceListener @@ -26,7 +28,6 @@ import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding -import kotlinx.coroutines.launch import kotlin.math.log10 class HemoCubeBufferCheckFragment : Fragment() { @@ -36,6 +37,7 @@ class HemoCubeBufferCheckFragment : Fragment() { private lateinit var sharedPreferences: SharedPreferences private var currentDeviceData: DeviceData? = null private var resultData: String = "" + private var kitno: String = "" private var isOnline = false private val messages = MutableLiveData() private var isTestOngoing = false @@ -56,24 +58,43 @@ class HemoCubeBufferCheckFragment : Fragment() { } private fun initViews() { -// binding.btnKit.visibility = View.GONE - binding.btnSubmit.visibility = View.GONE -// binding.etBloodGroup.visibility = View.GONE - listenToHemoCube() - startBufferProcess() - binding.btnSubmit.setOnClickListener { - activity?.runOnUiThread { - binding.progressBar.visibility = View.VISIBLE + binding.nameEditText.setText("SMI/SC/") + + binding.btnGo.setOnClickListener { + val serialNumber = binding.nameEditText.text.toString().trim() + if (serialNumber.isNotEmpty() && isSerialValid(serialNumber)) { + kitno = serialNumber + listenToHemoCube() + startBufferProcess() + } else { + Toast.makeText(context, "Invalid KIT Number", Toast.LENGTH_LONG).show() + return@setOnClickListener } - hemoCubeViewModel.uploadHemoCubeResultToDatabaseforbuffercheckN( - isOnline, true, sharedPreferences.getString(Constants.KIT_NUMBER, "") - ) + activity?.runOnUiThread { + binding.tvSubtitle2.visibility = View.GONE + binding.etAbhaId.visibility = View.GONE + binding.tvTitle.visibility = View.GONE + binding.tvTitle2.visibility = View.GONE + binding.btnGo.visibility = View.GONE + } + } + + + + activity?.runOnUiThread { + binding.btnSubmit.isEnabled = true + binding.btnSubmit.isClickable = true + } + binding.btnSubmit.setOnClickListener { + } binding.btnSubmit.isEnabled = false binding.btnSubmit.isClickable = false } + + private fun observeViewModel() { hemoCubeViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> if (result == "Success") { @@ -239,8 +260,10 @@ class HemoCubeBufferCheckFragment : Fragment() { val led2Average = log10(led2BufferForDevice?.div(led2Sample!!) ?: 0.0) val deviceRatio = led1Average / led2Average val calculatedRatio = calculateRatio(deviceRatio) - val classificationResult = findResult(calculatedRatio) + val classificationResult = "KIT PASSED" messages.postValue(classificationResult) + val bufferData = BufferCheckData(kitno = kitno, led1Buffer = led1BufferForDevice, led2Buffer = led2BufferForDevice, led1Average = led1Average, led2Average = led2Average, led1Sample = led1Sample, led2Sample = led2Sample, deviceRatio = deviceRatio , calculatedRatio = calculatedRatio ) + hemoCubeViewModel.uploadHemoCubeResultToDatabaseforbuffercheckN(bufferData) } } catch (e: Exception) { Toast.makeText( @@ -332,6 +355,16 @@ class HemoCubeBufferCheckFragment : Fragment() { return "" } + private fun isSerialValid(s: String): Boolean { + if (s.length != 17) { + binding.nameEditText.error = getString(R.string.invalid_kit) + return false + } + return true + } + + + private fun isValidResult(line: String): String { return if (line.contains("RESULT") && line.split(" ").size == 8) { line 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 b215431..ef8cd06 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 @@ -12,6 +12,7 @@ import com.example.hpostesting.data.NetworkStatusLiveData import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.dao.HemoCubeDao import com.example.hpostesting.data.model.Response +import com.example.hpostesting.data.model.patient.BufferCheckData import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.toHemoCubeTestData @@ -71,28 +72,10 @@ class HemoCubeViewModel @Inject constructor( - fun uploadHemoCubeResultToDatabaseforbuffercheckN(isOnline: Boolean, testStatus: Boolean, kitSerial: String?) = + fun uploadHemoCubeResultToDatabaseforbuffercheckN(bufferCheckData: BufferCheckData) = viewModelScope.launch { - if (kitSerial != null) { - testDetails?.kitSerial = kitSerial - } - testDetails?.testStatus = testStatus + addResultTestToDbforbuffercheck(bufferCheckData) - try { - if (isOnline) { - parseData() - addResultTestToDbforbuffercheck() - } 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}") - } } @@ -157,14 +140,11 @@ class HemoCubeViewModel @Inject constructor( } - private fun addResultTestToDbforbuffercheck() { + private fun addResultTestToDbforbuffercheck(bufferCheckData: BufferCheckData) { viewModelScope.launch { try { - testDetails!!.reportUploadTime = SimpleDateFormat( - "yyyy-MM-dd HH:mm:ss", Locale.getDefault() - ).format(Calendar.getInstance().time) - when (val response = repository.addTestToDatabaseforBufferCheck(testDetails)) { + when (val response = repository.addTestToDatabaseforBufferCheck(bufferCheckData)) { is Response.Success -> { val kitCount = sharedPreference.getInt(Constants.KIT_COUNT, 0) with(sharedPreference.edit()) { 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 3bfd5f9..d0ab1bf 100644 --- a/app/src/main/res/layout/fragment_hemo_cube_reference.xml +++ b/app/src/main/res/layout/fragment_hemo_cube_reference.xml @@ -27,7 +27,6 @@ android:layout_height="wrap_content" android:layout_marginHorizontal="24dp" android:layout_marginTop="16dp" - android:text="@string/step4" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_title" /> @@ -45,6 +44,7 @@ + tools:ignore="MissingConstraints" /> + app:layout_constraintTop_toBottomOf="@id/et_abha_id" /> @@ -98,7 +98,55 @@ + + + + + + + + + + + +