Compare commits
14 Commits
dev-Adding
...
dev-new-co
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8721b7f27 | ||
|
|
ab26d0228d | ||
|
|
d012b9edda | ||
|
|
721ac5d53c | ||
|
|
75acfc34bd | ||
|
|
d365bbcfe0 | ||
|
|
31ed1edd0b | ||
|
|
d62fafb129 | ||
|
|
8ba574aeac | ||
|
|
d8cb0bd96e | ||
|
|
75c6269e4a | ||
|
|
1e4f801774 | ||
|
|
d701ee4f6d | ||
|
|
e4b237bb9a |
@@ -65,12 +65,14 @@
|
||||
<activity
|
||||
android:name="com.example.hpostesting.presentation.assurance.AssuranceControlsActivity"
|
||||
android:exported="false"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/Theme.HPOS.NoActionBar"/>
|
||||
|
||||
<activity
|
||||
android:name="com.example.hpostesting.presentation.hemocube.HemocubeActivity"
|
||||
android:exported="false"
|
||||
android:noHistory="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:parentActivityName="com.example.hpostesting.presentation.MainActivity"
|
||||
android:theme="@style/Theme.HPOS.NoActionBar"
|
||||
android:windowSoftInputMode="adjustPan" />
|
||||
@@ -114,7 +116,7 @@
|
||||
|
||||
|
||||
<service
|
||||
android:name="com.example.hpostesting.presentation.testRight.UsbService"
|
||||
android:name="com.example.hpostesting.util.UsbService"
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ object Constants {
|
||||
const val USER_ID = "usernameId"
|
||||
|
||||
const val QUICK_CAPTURE_SOLUTION = "SOLUTION"
|
||||
const val QUICK_CAPTURE_FOR_ADMIN = "ADMIN"
|
||||
const val QUICK_CAPTURE_CONCENTRATION = "CONCENTRATION"
|
||||
const val QUICK_CAPTURE_VOLUME = "VOLUME"
|
||||
const val QUICK_CAPTURE_READING_PER_SAMPLE = "READING_PER_SAMPLE"
|
||||
|
||||
@@ -15,4 +15,5 @@ enum class HemoCubeCommands(val command: String) {
|
||||
SECOND_GAIN_COMMAND("U\r"),
|
||||
THIRD_GAIN_COMMAND("V\r"),
|
||||
FORTH_GAIN_COMMAND("W\r"),
|
||||
CHECK_CUVETTE_COMMAND("L\r"),
|
||||
}
|
||||
@@ -10,8 +10,12 @@ enum class TestStatus(val code: Double) {
|
||||
FIRST_EMPTY_AIR_READING_PRINT_COMPLETED(4.4),
|
||||
EPROM_ADC_RETRIEVAL_STARTED(4.5),
|
||||
EPROM_ADC_RETRIEVAL_COMPLETED(4.6),
|
||||
BUFFER_STARTED(4.7),
|
||||
BUFFER_COMPLETED(5.0),
|
||||
CUVETTE_ABSENT(4.7),
|
||||
CUVETTE_PRESENT(4.8),
|
||||
CUVETTE_ABSENTS(7.7),
|
||||
CUVETTE_PRESENTS(7.8),
|
||||
BUFFER_STARTED(4.9),
|
||||
BUFFER_COMPLETED(5.1),
|
||||
BUFFER_PRINT_STARTED(6.0),
|
||||
BUFFER_PRINT_COMPLETED(7.0),
|
||||
SAMPLE_STARTED(8.0),
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.example.hpostesting.data.model.patient.UserData
|
||||
|
||||
@Database(
|
||||
entities = [UserData::class, HemoCubeTestData::class, DeviceData::class, BufferCheckData::class],
|
||||
version = 29,
|
||||
version = 30,
|
||||
exportSchema = false
|
||||
)
|
||||
@TypeConverters(Converters::class)
|
||||
|
||||
@@ -11,4 +11,6 @@ interface LocalFileDataSource {
|
||||
fun exportDataToCSV(
|
||||
fileName: String, dataList: List<HemoCubeTestData>,
|
||||
): Boolean
|
||||
fun backUpDataToCSV(fileName: String, dataList: List<HemoCubeTestData>)
|
||||
|
||||
}
|
||||
@@ -153,6 +153,127 @@ class LocalFileDataSourceImpl @Inject constructor() : LocalFileDataSource {
|
||||
}
|
||||
}
|
||||
|
||||
override fun backUpDataToCSV(fileName: String, dataList: List<HemoCubeTestData>) {
|
||||
try {
|
||||
val filePath = File(getExternalStorageDirectory(), fileName)
|
||||
val writer = FileWriter(filePath)
|
||||
val csvWriter = CSVWriter(writer)
|
||||
// Write CSV header
|
||||
val header = arrayOf(
|
||||
"_id",
|
||||
"name",
|
||||
"incubationTime",
|
||||
"bloodGroup",
|
||||
"birthYear", // Include other fields from the data class
|
||||
"state",
|
||||
"abhaId",
|
||||
"userImageURL",
|
||||
"location",
|
||||
"reportUploadTime",
|
||||
"testType",
|
||||
"testTime",
|
||||
"testStatus",
|
||||
"gender",
|
||||
"localFlag", // Add more fields as necessary
|
||||
"deviceId",
|
||||
"appVersion",
|
||||
"deviceSerialNumber",
|
||||
"deviceType",
|
||||
"kitSerial",
|
||||
"resultData",
|
||||
"led1Buffer",
|
||||
"led2Buffer",
|
||||
"led3Buffer",
|
||||
"led4Buffer",
|
||||
"led1Sample",
|
||||
"led2Sample",
|
||||
"led3Sample",
|
||||
"led4Sample",
|
||||
"led1Average",
|
||||
"led2Average",
|
||||
"led3Average",
|
||||
"led4Average",
|
||||
"abs1",
|
||||
"abs2",
|
||||
"abs3",
|
||||
"abs4",
|
||||
"deviceRatio",
|
||||
"calculatedRatio",
|
||||
"predictedDenovixRatio",
|
||||
"coefficients",
|
||||
"classificationResult",
|
||||
"prdClassification",
|
||||
"errorMessages",
|
||||
"batteryLevel",
|
||||
"batteryCapacity",
|
||||
"batteryMaxCapacity",
|
||||
"batteryTemperature",
|
||||
"batteryVoltage"
|
||||
)
|
||||
csvWriter.writeNext(header)
|
||||
|
||||
// Filter and write data rows where testStatus is true
|
||||
val filteredDataList = dataList.filter { it.testStatus == true }
|
||||
for (data in filteredDataList) {
|
||||
val row = arrayOf(
|
||||
data._id,
|
||||
data.name,
|
||||
data.incubationTime,
|
||||
data.bloodGroup,
|
||||
data.birthYear, // Include other fields similarly
|
||||
data.state,
|
||||
data.abhaId,
|
||||
data.userImageURL,
|
||||
data.location?.toString(),
|
||||
data.reportUploadTime ?: "",
|
||||
data.testType ?: "",
|
||||
data.testTime ?: "",
|
||||
data.testStatus?.toString() ?: "",
|
||||
data.gender,
|
||||
data.localFlag.toString(),
|
||||
data.deviceId ?: "",
|
||||
data.appVersion ?: "",
|
||||
data.deviceSerialNumber,
|
||||
data.deviceType,
|
||||
data.kitSerial,
|
||||
data.resultData,
|
||||
data.led1Buffer?.toString() ?: "",
|
||||
data.led2Buffer?.toString() ?: "",
|
||||
data.led3Buffer?.toString() ?: "",
|
||||
data.led4Buffer?.toString() ?: "",
|
||||
data.led1Sample?.toString() ?: "",
|
||||
data.led2Sample?.toString() ?: "",
|
||||
data.led3Sample?.toString() ?: "",
|
||||
data.led4Sample?.toString() ?: "",
|
||||
data.led1Average?.toString() ?: "",
|
||||
data.led2Average?.toString() ?: "",
|
||||
data.led3Average?.toString() ?: "",
|
||||
data.led4Average?.toString() ?: "",
|
||||
data.abs1?.toString() ?: "",
|
||||
data.abs2?.toString() ?: "",
|
||||
data.abs3?.toString() ?: "",
|
||||
data.abs4?.toString() ?: "",
|
||||
data.deviceRatio?.toString() ?: "",
|
||||
data.calculatedRatio?.toString() ?: "",
|
||||
data.predictedDenovixRatio?.toString() ?: "",
|
||||
data.coefficients ?: "",
|
||||
data.classificationResult,
|
||||
data.prdClassification,
|
||||
data.errorMessages,
|
||||
data.batteryLevel,
|
||||
data.batteryCapacity,
|
||||
data.batteryMaxCapacity,
|
||||
data.batteryTemperature,
|
||||
data.batteryVoltage
|
||||
)
|
||||
csvWriter.writeNext(row)
|
||||
}
|
||||
writer.close()
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getExternalStorageDirectory(): File {
|
||||
val folder = File(Environment.getExternalStorageDirectory(), "HposFolder")
|
||||
|
||||
|
||||
@@ -90,6 +90,7 @@ data class HemoCubeTestData(
|
||||
var quickCapture: Boolean = false,
|
||||
var solution: String? = "",
|
||||
var concentration: String? = "",
|
||||
var filter: String? = "",
|
||||
var volume: String? = "",
|
||||
var isCSVCreated: Boolean = false,
|
||||
)
|
||||
|
||||
@@ -44,7 +44,6 @@ class AssuranceControlsFragment : Fragment() {
|
||||
|
||||
private fun initViews() {
|
||||
// binding.btnSubmit.visibility = View.GONE
|
||||
|
||||
val solutionSpinner: Spinner = binding.spinnerSolutions
|
||||
val solutionOptions = arrayOf("Select solution", "Tartrazine", "Acid Red")
|
||||
val solutionAdapter =
|
||||
@@ -123,6 +122,27 @@ class AssuranceControlsFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val adminspinner: Spinner = binding.spinnerAdmin
|
||||
val adminOptions = arrayOf("Select options", "Sickle-Cert-Buffer", "1 Abs Holo Filter", "0.25 Abs Holo Filter", "Air Blank")
|
||||
val adminAdapter =
|
||||
ArrayAdapter(requireContext(), R.layout.simple_spinner_item, adminOptions)
|
||||
adminAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
adminspinner.adapter =adminAdapter
|
||||
adminspinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(
|
||||
parent: AdapterView<*>?,
|
||||
view: View?,
|
||||
position: Int,
|
||||
id: Long,
|
||||
) {
|
||||
val selectedValue: String = adminOptions[position]
|
||||
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||
}
|
||||
}
|
||||
// load saved values
|
||||
val savedSolution =
|
||||
sharedPreferences.getString(Constants.QUICK_CAPTURE_SOLUTION, "").toString()
|
||||
@@ -139,18 +159,30 @@ class AssuranceControlsFragment : Fragment() {
|
||||
val volumePosition = getPositionOfValue(savedVolume, volumeOptions.toList())
|
||||
volumeSpinner.setSelection(volumePosition)
|
||||
|
||||
|
||||
val foradmin =
|
||||
sharedPreferences.getString(Constants.QUICK_CAPTURE_FOR_ADMIN, "").toString()
|
||||
val adminPosition = getPositionOfValue(foradmin, adminOptions.toList())
|
||||
adminspinner.setSelection(adminPosition)
|
||||
|
||||
binding.btnSubmit.setOnClickListener {
|
||||
val selectedSolution = binding.spinnerSolutions.selectedItem.toString()
|
||||
val selectedConcentration = binding.spinnerConcentration.selectedItem.toString()
|
||||
val selectedadminOption = binding.spinnerAdmin.selectedItem.toString()
|
||||
|
||||
// Check if any of the selections are default values
|
||||
if (selectedSolution == "Select solution") {
|
||||
Toast.makeText(requireContext(), "Please select a solution", Toast.LENGTH_LONG).show()
|
||||
return@setOnClickListener // Prevent further execution
|
||||
}
|
||||
// if (selectedSolution == "Select solution") {
|
||||
// Toast.makeText(requireContext(), "Please select a solution", Toast.LENGTH_LONG).show()
|
||||
// return@setOnClickListener // Prevent further execution
|
||||
// }
|
||||
//
|
||||
// if (selectedConcentration == "Select concentration") {
|
||||
// Toast.makeText(requireContext(), "Please select a concentration", Toast.LENGTH_LONG).show()
|
||||
// return@setOnClickListener // Prevent further execution
|
||||
// }
|
||||
|
||||
if (selectedConcentration == "Select concentration") {
|
||||
Toast.makeText(requireContext(), "Please select a concentration", Toast.LENGTH_LONG).show()
|
||||
if (selectedadminOption == "Select options") {
|
||||
Toast.makeText(requireContext(), "Please select a option", Toast.LENGTH_LONG).show()
|
||||
return@setOnClickListener // Prevent further execution
|
||||
}
|
||||
DataHolder.hemoCubeTestData!!.quickCapture = true
|
||||
@@ -162,7 +194,14 @@ class AssuranceControlsFragment : Fragment() {
|
||||
DataHolder.hemoCubeTestData!!._id = currentUnixTime.toString() + "SMI"
|
||||
DataHolder.hemoCubeTestData!!.solution = binding.spinnerSolutions.selectedItem.toString()
|
||||
DataHolder.hemoCubeTestData!!.concentration = binding.spinnerConcentration.selectedItem.toString()
|
||||
DataHolder.hemoCubeTestData!!.name = "${DataHolder.hemoCubeTestData!!.solution} ${DataHolder.hemoCubeTestData!!.concentration} ${DataHolder.hemoCubeTestData!!.volume}"
|
||||
DataHolder.hemoCubeTestData!!.filter = binding.spinnerAdmin.selectedItem.toString()
|
||||
if(binding.spinnerAdmin.selectedItem.toString().equals("Select options")){
|
||||
Toast.makeText(requireContext(), "Please select a option", Toast.LENGTH_LONG).show()
|
||||
}else {
|
||||
DataHolder.hemoCubeTestData!!.name = DataHolder.hemoCubeTestData!!.filter.toString()
|
||||
}
|
||||
|
||||
|
||||
|
||||
DataHolder.selectedTest = UserData()
|
||||
DataHolder.selectedTest?._id = DataHolder.hemoCubeTestData!!._id
|
||||
@@ -175,6 +214,7 @@ class AssuranceControlsFragment : Fragment() {
|
||||
DataHolder.hemoCubeTestData!!.concentration
|
||||
)
|
||||
putString(Constants.QUICK_CAPTURE_VOLUME, DataHolder.hemoCubeTestData!!.volume)
|
||||
putString(Constants.QUICK_CAPTURE_FOR_ADMIN, DataHolder.hemoCubeTestData!!.filter)
|
||||
apply()
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import androidx.core.view.get
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -23,7 +23,7 @@ import androidx.core.view.get
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -25,16 +25,12 @@ class ActivitiesFragment : Fragment() {
|
||||
private lateinit var binding: FragmentActivitiesBinding
|
||||
private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels()
|
||||
private lateinit var adapter: OfflineUserListAdapter
|
||||
private lateinit var sharedPreference: SharedPreferences
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?,
|
||||
): View {
|
||||
binding = FragmentActivitiesBinding.inflate(inflater, container, false)
|
||||
|
||||
sharedPreference = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE)
|
||||
DataHolder.selectedTest = null
|
||||
|
||||
return binding.root
|
||||
}
|
||||
|
||||
|
||||
@@ -283,7 +283,7 @@ class HomeFragment : Fragment() {
|
||||
apply()
|
||||
}
|
||||
startActivity(Intent(requireContext(), KitScanActivity::class.java))
|
||||
requireActivity().finish()
|
||||
// requireActivity().finish()
|
||||
}
|
||||
binding.btnQuickCapture.setOnClickListener {
|
||||
DataHolder.hemoCubeTestData = HemoCubeTestData()
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.example.hpostesting.data.constant.HemoCubeCommands
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.utils.DeviceCommunicationHandler
|
||||
import com.example.hpostesting.presentation.utils.UsbServiceListener
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.example.hpostesting.data.constant.HemoCubeCommands
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.utils.DeviceCommunicationHandler
|
||||
import com.example.hpostesting.presentation.utils.UsbServiceListener
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -23,7 +23,7 @@ import androidx.core.view.get
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
@@ -35,7 +36,9 @@ import kotlin.math.log10
|
||||
|
||||
@Suppress("MemberVisibilityCanBePrivate")
|
||||
class HemoCubeFragment : Fragment() {
|
||||
|
||||
private var checkCuvette = false
|
||||
private var checkCuvetteSam = false
|
||||
private var sampleClick = false
|
||||
private lateinit var binding: FragmentHemoCubeReferenceBinding
|
||||
private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels()
|
||||
private lateinit var sharedPreferences: SharedPreferences
|
||||
@@ -111,32 +114,62 @@ class HemoCubeFragment : Fragment() {
|
||||
binding.nameEditText.visibility = View.GONE
|
||||
binding.tvTitle.visibility = View.GONE
|
||||
binding.btnGo.visibility = View.GONE
|
||||
binding.btnPlacebuffer.visibility = View.GONE
|
||||
// binding.btnPlacebuffer.visibility = View.GONE
|
||||
|
||||
binding.tvName.text = "Name: ${testDetails?.name}\n ID: ${testDetails?._id}"
|
||||
binding.tvSubtitle4.text = "Config"
|
||||
|
||||
|
||||
if (isBufferValueAvailable() || !Constants.BLANK_EVERY_TEST) {
|
||||
binding.btnPlacebuffer.apply {
|
||||
setBackgroundColor(Color.GREEN) // Set button background color to green
|
||||
text = "Fresh Buffer" // Change button text to "Buffer Exists"
|
||||
}
|
||||
}else if(!isBufferValueAvailable() || Constants.BLANK_EVERY_TEST){
|
||||
binding.btnPlacebuffer.apply {
|
||||
setBackgroundColor(Color.RED) // Set button background color to green
|
||||
text = "No Buffer" // Change button text to "Buffer Exists"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
binding.btnSamplestart.setOnClickListener {
|
||||
sampleClick = true
|
||||
if(checkCuvetteSam){
|
||||
activity?.runOnUiThread {
|
||||
binding.tvSubtitle4.visibility = View.VISIBLE
|
||||
// binding.tvSubtitle4.text = "Sample Started"
|
||||
}
|
||||
startSampleProcess()
|
||||
it.visibility = View.GONE
|
||||
}
|
||||
|
||||
binding.btnPlacebuffer.setOnClickListener {
|
||||
if (isBufferValueAvailable() || !Constants.BLANK_EVERY_TEST) {
|
||||
showBufferAlertDialog()
|
||||
// it.visibility = View.GONE
|
||||
}else{
|
||||
checkCuvettePresence()
|
||||
}
|
||||
}
|
||||
binding.btnRetryCheckCuvette.setOnClickListener {
|
||||
|
||||
checkCuvettePresence()
|
||||
}
|
||||
binding.btnPlacebuffer.setOnClickListener {
|
||||
if(checkCuvette){
|
||||
|
||||
startBufferProcess()
|
||||
// if (isBufferValueAvailable() || !Constants.BLANK_EVERY_TEST) {
|
||||
//// showBufferAlertDialog()
|
||||
// } else {
|
||||
activity?.runOnUiThread {
|
||||
binding.tvSubtitle4.visibility = View.VISIBLE
|
||||
// binding.tvSubtitle4.text = "Buffer Started"
|
||||
}
|
||||
|
||||
checkAndStartProcess()
|
||||
it.visibility = View.GONE
|
||||
// checkAndStartProcess()
|
||||
|
||||
// it.visibility = View.GONE
|
||||
// }
|
||||
}else{
|
||||
checkCuvettePresence()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (sharedPreferences.getString(Constants.USER_ID, "").toString() == "ADMIN") {
|
||||
@@ -261,9 +294,9 @@ class HemoCubeFragment : Fragment() {
|
||||
currentResultData = ""
|
||||
}
|
||||
|
||||
private fun checkAndStartProcess() {
|
||||
startBufferProcess()
|
||||
}
|
||||
// private fun checkAndStartProcess() {
|
||||
// startBufferProcess()
|
||||
// }
|
||||
|
||||
private fun isBufferValueAvailable(): Boolean {
|
||||
return try {
|
||||
@@ -314,7 +347,7 @@ class HemoCubeFragment : Fragment() {
|
||||
|
||||
override fun onClickPositiveButton() {
|
||||
activity?.runOnUiThread {
|
||||
binding.btnPlacebuffer.visibility = View.GONE
|
||||
// binding.btnPlacebuffer.visibility = View.GONE
|
||||
binding.btnSamplestart.visibility = View.VISIBLE
|
||||
binding.tvSubtitle4.text = getString(R.string.place_sample)
|
||||
}
|
||||
@@ -391,7 +424,7 @@ class HemoCubeFragment : Fragment() {
|
||||
resultData += stringData
|
||||
currentResultData += stringData
|
||||
hemoCubeViewModel.deviceMessages.postValue(currentResultData)
|
||||
|
||||
Log.e("testStatus",this.testStatusCode.toString())
|
||||
when {
|
||||
resultData.contains("SNE") && this.testStatusCode < TestStatus.CONFIG_COMPLETED.code -> {
|
||||
processV2HardwareId(resultData)
|
||||
@@ -418,20 +451,51 @@ class HemoCubeFragment : Fragment() {
|
||||
(resultData.contains("#RC") && this.testStatusCode < TestStatus.EPROM_ADC_RETRIEVAL_COMPLETED.code) -> {
|
||||
this.testStatusCode = TestStatus.EPROM_ADC_RETRIEVAL_COMPLETED.code
|
||||
hemoCubeViewModel.messages.postValue("EPROM ADC Loaded")
|
||||
showStartBufferButton()
|
||||
//checkCuvettePresence()
|
||||
}
|
||||
resultData.contains("#CIN") && sampleClick && this.testStatusCode < TestStatus.CUVETTE_PRESENTS.code -> {
|
||||
hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_present))
|
||||
this.testStatusCode = TestStatus.CUVETTE_PRESENTS.code
|
||||
activity?.runOnUiThread {
|
||||
checkCuvetteSam = true
|
||||
binding.btnRetryCheckCuvette.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
resultData.contains("#AIN") && sampleClick && this.testStatusCode <= TestStatus.CUVETTE_ABSENTS.code -> {
|
||||
hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_absent))
|
||||
this.testStatusCode = TestStatus.CUVETTE_ABSENTS.code
|
||||
showRetryButtonForCuvette()
|
||||
}
|
||||
|
||||
resultData.contains("#CIN") && this.testStatusCode < TestStatus.CUVETTE_PRESENT.code -> {
|
||||
hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_present))
|
||||
this.testStatusCode = TestStatus.CUVETTE_PRESENT.code
|
||||
activity?.runOnUiThread {
|
||||
checkCuvette = true
|
||||
binding.btnRetryCheckCuvette.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
resultData.contains("#AIN") && this.testStatusCode <= TestStatus.CUVETTE_ABSENT.code -> {
|
||||
hemoCubeViewModel.messages.postValue(getString(R.string.cuvette_absent))
|
||||
this.testStatusCode = TestStatus.CUVETTE_ABSENT.code
|
||||
showRetryButtonForCuvette()
|
||||
}
|
||||
resultData.contains("#BS") && this.testStatusCode < TestStatus.BUFFER_STARTED.code -> {
|
||||
hemoCubeViewModel.messages.postValue(getString(R.string.buffer_started))
|
||||
this.testStatusCode = TestStatus.BUFFER_STARTED.code
|
||||
}
|
||||
|
||||
resultData.contains("#BC") && this.testStatusCode < TestStatus.BUFFER_COMPLETED.code -> {
|
||||
this.testStatusCode = TestStatus.BUFFER_COMPLETED.code
|
||||
activity?.runOnUiThread {
|
||||
resultData = ""
|
||||
// resultData.replace("#AIN","#BAIN",false)
|
||||
Log.d("resultDataBC",resultData)
|
||||
binding.tvSubtitle4.text = getString(R.string.buffer_completed)
|
||||
binding.btnSamplestart.visibility = View.VISIBLE
|
||||
// binding.btnSamplestart.visibility = View.VISIBLE
|
||||
binding.btnPlacebuffer.visibility = View.GONE
|
||||
}
|
||||
this.testStatusCode = TestStatus.BUFFER_COMPLETED.code
|
||||
|
||||
}
|
||||
|
||||
(resultData.contains("#SS") || resultData.contains("#SS1")) && this.testStatusCode < TestStatus.SAMPLE_STARTED.code -> {
|
||||
@@ -439,11 +503,15 @@ class HemoCubeFragment : Fragment() {
|
||||
activity?.runOnUiThread {
|
||||
binding.tvSubtitle4.text = getString(R.string.sample_started)
|
||||
binding.btnSamplestart.visibility = View.GONE
|
||||
binding.btnPlacebuffer.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
(resultData.contains("#SC") || resultData.contains("#SC1")) && this.testStatusCode < TestStatus.SAMPLE_COMPLETED.code -> {
|
||||
this.testStatusCode = TestStatus.SAMPLE_COMPLETED.code
|
||||
activity?.runOnUiThread {
|
||||
binding.btnSamplestart.visibility = View.GONE
|
||||
}
|
||||
hemoCubeViewModel.messages.postValue(
|
||||
getString(R.string.sample_completed) + "\n" + getString(R.string.gathering_data)
|
||||
)
|
||||
@@ -600,6 +668,13 @@ class HemoCubeFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun showRetryButtonForCuvette() {
|
||||
activity?.runOnUiThread {
|
||||
// binding.btnPlacebuffer.visibility = View.GONE
|
||||
binding.btnRetryCheckCuvette.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
fun finishReading() {
|
||||
repeatReadingCount += 1
|
||||
isTestOngoing = false
|
||||
@@ -686,9 +761,20 @@ class HemoCubeFragment : Fragment() {
|
||||
|
||||
fun showStartBufferButton() {
|
||||
activity?.runOnUiThread {
|
||||
binding.btnRetryCheckCuvette.visibility = View.GONE
|
||||
|
||||
binding.btnPlacebuffer.visibility = View.VISIBLE
|
||||
}
|
||||
hemoCubeViewModel.messages.postValue(getString(R.string.start))
|
||||
// hemoCubeViewModel.messages.postValue(getString(R.string.start))
|
||||
}
|
||||
|
||||
fun showStartSampleButton() {
|
||||
activity?.runOnUiThread {
|
||||
binding.btnRetryCheckCuvette.visibility = View.GONE
|
||||
|
||||
binding.btnSamplestart.visibility = View.VISIBLE
|
||||
}
|
||||
// hemoCubeViewModel.messages.postValue(getString(R.string.start))
|
||||
}
|
||||
|
||||
fun extractV1HardwareId(input: String): String? {
|
||||
@@ -1138,13 +1224,29 @@ class HemoCubeFragment : Fragment() {
|
||||
Toast.makeText(requireContext(), getString(messageResId), Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
private fun startBufferProcess() {
|
||||
hemoCubeViewModel.progressBar.postValue(true)
|
||||
private fun checkCuvettePresence() {
|
||||
Toast.makeText(requireContext(),"Please wait...",Toast.LENGTH_LONG).show()
|
||||
|
||||
activity?.runOnUiThread {
|
||||
binding.btnPlacebuffer.visibility = View.GONE
|
||||
binding.btnRetryCheckCuvette.visibility = View.GONE
|
||||
}
|
||||
|
||||
hemoCubeViewModel.progressBar.postValue(true)
|
||||
|
||||
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.CHECK_CUVETTE_COMMAND,
|
||||
object : UsbServiceListener {
|
||||
override fun onUsbRead(data: ByteArray?) {}
|
||||
|
||||
override fun onUsbError(e: Exception?) {
|
||||
hemoCubeViewModel.progressBar.postValue(false)
|
||||
}
|
||||
})
|
||||
}
|
||||
private fun startBufferProcess() {
|
||||
hemoCubeViewModel.progressBar.postValue(true)
|
||||
// activity?.runOnUiThread {
|
||||
// binding.btnPlacebuffer.visibility = View.GONE
|
||||
// }
|
||||
(activity as HemocubeActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.START_BUFFER_COMMAND,
|
||||
object : UsbServiceListener {
|
||||
override fun onUsbRead(data: ByteArray?) {}
|
||||
@@ -1166,6 +1268,7 @@ class HemoCubeFragment : Fragment() {
|
||||
hemoCubeViewModel.progressBar.postValue(false)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
private fun sendFirstGainCommand() {
|
||||
|
||||
@@ -112,7 +112,7 @@ class HemoCubeViewModel @Inject constructor(
|
||||
testDetails?.kitSerial = kitSerial
|
||||
}
|
||||
testDetails?.testStatus = testStatus
|
||||
|
||||
// localFileDataSource.backUpDataToCSV("",testDetails)
|
||||
try {
|
||||
if (isOnline) {
|
||||
parseData()
|
||||
@@ -314,6 +314,8 @@ class HemoCubeViewModel @Inject constructor(
|
||||
testDetails?.solution = DataHolder.hemoCubeTestData?.solution
|
||||
testDetails?.concentration = DataHolder.hemoCubeTestData?.concentration
|
||||
testDetails?.volume = DataHolder.hemoCubeTestData?.volume
|
||||
testDetails?.filter = DataHolder.hemoCubeTestData?.filter
|
||||
|
||||
}
|
||||
|
||||
private fun addResultTestToDb() {
|
||||
@@ -559,7 +561,7 @@ class HemoCubeViewModel @Inject constructor(
|
||||
val fileName = "HPOS${getCurrentDate()}.csv"
|
||||
if (localFileDataSource.exportDataToCSV(fileName, hemoCubeTestData)) {
|
||||
hemoCubeTestData.forEach { data ->
|
||||
data.localFlag = true
|
||||
// data.localFlag = true
|
||||
hemoCubeDao.updateCSVFieldById(
|
||||
data._id,
|
||||
true
|
||||
|
||||
@@ -25,7 +25,7 @@ import androidx.core.view.get
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -24,7 +24,7 @@ import androidx.core.view.get
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.get
|
||||
import com.example.hpostesting.data.constant.DataHolder
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -25,7 +25,7 @@ import com.example.hpostesting.data.constant.Constants
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.hemocube.HemoCubeFragment
|
||||
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
|
||||
import com.example.hpostesting.presentation.testRight.UsbService
|
||||
import com.example.hpostesting.util.UsbService
|
||||
import com.hoho.android.usbserial.driver.UsbSerialDriver
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.example.hpostesting.presentation.testRight
|
||||
package com.example.hpostesting.util
|
||||
|
||||
import android.app.Service
|
||||
import android.content.Intent
|
||||
@@ -39,6 +39,7 @@
|
||||
<Spinner
|
||||
android:id="@+id/spinner_solutions"
|
||||
android:layout_width="0dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="40dp"
|
||||
android:background="@drawable/spinner_border"
|
||||
@@ -50,6 +51,7 @@
|
||||
<Spinner
|
||||
android:id="@+id/spinner_concentration"
|
||||
android:layout_width="0dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="48dp"
|
||||
android:background="@drawable/spinner_border"
|
||||
@@ -59,6 +61,20 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/spinner_solutions" />
|
||||
|
||||
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner_admin"
|
||||
android:layout_width="0dp"
|
||||
android:visibility="visible"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="52dp"
|
||||
android:background="@drawable/spinner_border"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/spinner_concentration" />
|
||||
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spinner_volume"
|
||||
android:layout_width="0dp"
|
||||
@@ -71,6 +87,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/spinner_concentration" />
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_submit"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -147,22 +147,14 @@
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toEndOf="@id/et_abha_id"
|
||||
app:layout_constraintTop_toTopOf="@id/et_abha_id" />
|
||||
<Button
|
||||
android:visibility="gone"
|
||||
android:id="@+id/btn_samplestart"
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_btns"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:clickable="false"
|
||||
android:text="@string/Start_Sample"
|
||||
android:textColor="@color/white"
|
||||
app:cornerRadius="16dp"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_placebuffer" />
|
||||
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle4">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_placebuffer"
|
||||
@@ -170,13 +162,37 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:visibility="visible"
|
||||
android:clickable="false"
|
||||
android:text="@string/place_buffer"
|
||||
android:textColor="@color/white"
|
||||
app:cornerRadius="16dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_submit" />
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_samplestart"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:clickable="false"
|
||||
android:text="@string/Start_Sample"
|
||||
android:textColor="@color/white"
|
||||
app:cornerRadius="16dp"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_retry_check_cuvette"
|
||||
android:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="16dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:clickable="false"
|
||||
android:text="@string/retry"
|
||||
android:textColor="@color/white"
|
||||
app:cornerRadius="16dp"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btn_submit"
|
||||
@@ -189,9 +205,9 @@
|
||||
android:text="@string/submit"
|
||||
android:textColor="@color/white"
|
||||
app:cornerRadius="16dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_subtitle4" />
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/error_message"
|
||||
@@ -206,7 +222,7 @@
|
||||
android:textSize="12sp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/btn_submit" />
|
||||
app:layout_constraintTop_toBottomOf="@id/ll_btns" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_device_messages"
|
||||
@@ -217,9 +233,9 @@
|
||||
android:text="no device message"
|
||||
android:textColor="@color/black"
|
||||
android:textSize="11sp"
|
||||
android:visibility="gone"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/error_message" />
|
||||
app:layout_constraintTop_toBottomOf="@id/ll_btns" />
|
||||
|
||||
<Button
|
||||
android:visibility="gone"
|
||||
|
||||
@@ -272,4 +272,8 @@
|
||||
|
||||
<string name="downloadcsv">सीएसवी डाउनलोड करें</string>
|
||||
<string name="action_activity">Activities</string>
|
||||
<string name="check_cuvette">Checking cuvette presence</string>
|
||||
<string name="cuvette_present">Cuvette present</string>
|
||||
<string name="cuvette_absent">Cuvette absent</string>
|
||||
<string name="retry">Retry</string>
|
||||
</resources>
|
||||
@@ -271,6 +271,10 @@
|
||||
<string name="ok">ಸರಿ</string>
|
||||
<string name="downloadcsv">CSV ಡೌನ್ಲೋಡ್ ಮಾಡಿ</string>
|
||||
<string name="action_activity">Activities</string>
|
||||
<string name="check_cuvette">Checking cuvette presence</string>
|
||||
<string name="cuvette_present">Cuvette present</string>
|
||||
<string name="cuvette_absent">Cuvette absent</string>
|
||||
<string name="retry">Retry</string>
|
||||
<!-- Add translations for other strings -->
|
||||
|
||||
</resources>
|
||||
@@ -118,7 +118,7 @@
|
||||
<string name="Firefox">Firefox</string>
|
||||
<string name="Files">Files</string>
|
||||
<string name="deviceinfo">Device Information</string>
|
||||
<string name="place_buffer">Start</string>
|
||||
<string name="place_buffer">Start Buffer</string>
|
||||
<string name="Start_Sample">Start Sample</string>
|
||||
<string name="new_kit">New Kit</string>
|
||||
<string name="new_buffer">New Buffer</string>
|
||||
@@ -274,4 +274,8 @@
|
||||
<string name="app_language">App Language</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="action_activity">Activities</string>
|
||||
<string name="check_cuvette">Checking cuvette presence</string>
|
||||
<string name="cuvette_present">Cuvette present , you can start the test</string>
|
||||
<string name="cuvette_absent">Cuvette is absent , please place the cuvette and retry again</string>
|
||||
<string name="retry">Retry again</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user