calculate tir
This commit is contained in:
parent
5d17916e73
commit
e566e9debc
|
@ -1,5 +1,14 @@
|
||||||
package info.nightscout.androidaps.utils
|
package info.nightscout.androidaps.utils
|
||||||
|
|
||||||
class TIR(val low: Double, val high: Double) {
|
class TIR(val date: Long, val lowThreshold: Double, val highThreshold: Double) {
|
||||||
|
private var below = 0;
|
||||||
|
private var inRange = 0;
|
||||||
|
private var above = 0;
|
||||||
|
private var error = 0;
|
||||||
|
private var count = 0;
|
||||||
|
|
||||||
|
fun error() = run { error++ }
|
||||||
|
fun below() = run { below++; count++ }
|
||||||
|
fun inRange() = run { inRange++; count++ }
|
||||||
|
fun above() = run { above++; count++ }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,25 @@
|
||||||
package info.nightscout.androidaps.utils
|
package info.nightscout.androidaps.utils
|
||||||
|
|
||||||
import android.util.LongSparseArray
|
import android.util.LongSparseArray
|
||||||
|
import info.nightscout.androidaps.MainApp
|
||||||
|
|
||||||
object TirCalculator {
|
object TirCalculator {
|
||||||
fun calculate(days: Long): LongSparseArray<TIR> {
|
fun calculate(days: Long, lowMgdl: Double, highMgdl: Double): LongSparseArray<TIR> {
|
||||||
return LongSparseArray()
|
if (lowMgdl < 39) throw RuntimeException("Low below 39")
|
||||||
|
if (lowMgdl > highMgdl) throw RuntimeException("Low > High")
|
||||||
|
val startTime = MidnightTime.calc(DateUtil.now()) - T.days(days).msecs()
|
||||||
|
val endTime = MidnightTime.calc(DateUtil.now())
|
||||||
|
|
||||||
|
val bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime(startTime, endTime, true)
|
||||||
|
val result = LongSparseArray<TIR>()
|
||||||
|
for (bg in bgReadings) {
|
||||||
|
val midnight = MidnightTime.calc(bg.date)
|
||||||
|
val tir = result[midnight] ?: TIR(midnight, lowMgdl, highMgdl)
|
||||||
|
if (bg.value < 39) tir.error()
|
||||||
|
if (bg.value >= 39 && bg.value < lowMgdl) tir.below()
|
||||||
|
if (bg.value in lowMgdl..highMgdl) tir.inRange()
|
||||||
|
if (bg.value > highMgdl) tir.inRange()
|
||||||
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue