Result calculation with average values updated.
This commit is contained in:
@@ -0,0 +1,103 @@
|
|||||||
|
package com.example.refactoredapp.domain
|
||||||
|
|
||||||
|
import com.example.refactoredapp.data.constant.Constants
|
||||||
|
import com.example.refactoredapp.data.model.TestRightCalculationData
|
||||||
|
import com.example.refactoredapp.data.model.TestRightResultType
|
||||||
|
|
||||||
|
class ResultCalculationWithAvgImpl : TestRightResultCalculation {
|
||||||
|
|
||||||
|
val testRightCalculationData = TestRightCalculationData(
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
TestRightResultType.UNDEFINED
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun getResults(wavelengthToAbsorbance: ArrayList<ArrayList<Double>>): TestRightCalculationData {
|
||||||
|
|
||||||
|
val startWavelengthOne =
|
||||||
|
Constants.WAVELENGTH_OF_INTEREST_ONE - Constants.RANGE_IN_RESULT_CALCULATIONS
|
||||||
|
val endWavelengthOne =
|
||||||
|
Constants.WAVELENGTH_OF_INTEREST_ONE + Constants.RANGE_IN_RESULT_CALCULATIONS + 1
|
||||||
|
var sumOfAbsorbanceAtOne = 0.0
|
||||||
|
var noOfAbsorbanceRecordedOne = 0
|
||||||
|
|
||||||
|
val startWavelengthTwo =
|
||||||
|
Constants.WAVELENGTH_OF_INTEREST_TWO - Constants.RANGE_IN_RESULT_CALCULATIONS
|
||||||
|
val endWavelengthTwo =
|
||||||
|
Constants.WAVELENGTH_OF_INTEREST_TWO + Constants.RANGE_IN_RESULT_CALCULATIONS + 1
|
||||||
|
var sumOfAbsorbanceAtTwo = 0.0
|
||||||
|
var noOfAbsorbanceRecordedTwo = 0
|
||||||
|
|
||||||
|
for (each in wavelengthToAbsorbance) {
|
||||||
|
if (each[0] >= startWavelengthOne && each[0] < endWavelengthOne) {
|
||||||
|
sumOfAbsorbanceAtOne += each[1]
|
||||||
|
noOfAbsorbanceRecordedOne++
|
||||||
|
}
|
||||||
|
if (each[0] >= startWavelengthTwo && each[0] < endWavelengthTwo) {
|
||||||
|
sumOfAbsorbanceAtTwo += each[1]
|
||||||
|
noOfAbsorbanceRecordedTwo++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val avgAbsorbanceOne = (sumOfAbsorbanceAtOne / noOfAbsorbanceRecordedOne)
|
||||||
|
val avgAbsorbanceTwo = (sumOfAbsorbanceAtTwo / noOfAbsorbanceRecordedTwo)
|
||||||
|
|
||||||
|
testRightCalculationData.absorbanceOne = avgAbsorbanceOne
|
||||||
|
testRightCalculationData.absorbanceTwo = avgAbsorbanceTwo
|
||||||
|
|
||||||
|
testRightCalculationData.result = calculateResultsAndRatio(avgAbsorbanceOne, avgAbsorbanceTwo)
|
||||||
|
return testRightCalculationData
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun calculateResultsAndRatio(
|
||||||
|
absorbanceAtWaveOne: Double,
|
||||||
|
absorbanceAtWaveTwo: Double
|
||||||
|
): TestRightResultType {
|
||||||
|
|
||||||
|
if (absorbanceAtWaveOne != Double.MIN_VALUE && absorbanceAtWaveTwo != Double.MIN_VALUE && absorbanceAtWaveOne != 0.0) {
|
||||||
|
val value = absorbanceAtWaveTwo / absorbanceAtWaveOne
|
||||||
|
testRightCalculationData.ratioValue = value
|
||||||
|
|
||||||
|
if (value < 0.24 || value == 0.0) {
|
||||||
|
testRightCalculationData.ratioMinRange = 0.0
|
||||||
|
testRightCalculationData.ratioMaxRange = 0.24
|
||||||
|
return TestRightResultType.NORMAL
|
||||||
|
} else if (value >= 0.24 && value < 0.30) {
|
||||||
|
testRightCalculationData.ratioMinRange = 0.24
|
||||||
|
testRightCalculationData.ratioMaxRange = 0.30
|
||||||
|
return TestRightResultType.SICKLECELLTRAIT
|
||||||
|
} else if (value >= 0.30) {
|
||||||
|
testRightCalculationData.ratioMinRange = 0.30
|
||||||
|
testRightCalculationData.ratioMaxRange = 999.0
|
||||||
|
return TestRightResultType.SICKLECELLDISEASE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TestRightResultType.UNDEFINED
|
||||||
|
|
||||||
|
// if (absorbanceAtWaveOne != Double.MIN_VALUE && absorbanceAtWaveTwo != Double.MIN_VALUE && absorbanceAtWaveOne != 0.0) {
|
||||||
|
// val value = absorbanceAtWaveTwo / absorbanceAtWaveOne
|
||||||
|
//
|
||||||
|
// if (value < 0.24 || value == 0.0) {
|
||||||
|
// return TestRightResultType.NORMAL
|
||||||
|
// } else if (value >= 0.24 && value < 0.30) {
|
||||||
|
// return TestRightResultType.SICKLECELLTRAIT
|
||||||
|
// } else if (value >= 0.30) {
|
||||||
|
// return TestRightResultType.SICKLECELLDISEASE
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return TestRightResultType.UNDEFINED
|
||||||
|
// Log.d(TAG, "value = $value")
|
||||||
|
// println("value = $value")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user