- added two special cases when processing list - createTBRProcessList:
- if changed duration is 0 or less, we remove the entry - if previously added item makes duration longer than original one, then we use the original duration
This commit is contained in:
parent
7243f8fb66
commit
47d0663cf7
|
@ -759,6 +759,7 @@ class MedtronicHistoryData @Inject constructor(
|
|||
}
|
||||
|
||||
var previousItem: TempBasalProcessDTO? = null
|
||||
val removalList : MutableList<TempBasalProcessDTO> = arrayListOf()
|
||||
|
||||
// fix for Zero TBRs
|
||||
for (tempBasalProcessDTO in processList) {
|
||||
|
@ -768,8 +769,18 @@ class MedtronicHistoryData @Inject constructor(
|
|||
pheEnd.atechDateTime = DateTimeUtil.getATDWithAddedSeconds(tempBasalProcessDTO.itemOne.atechDateTime, -2)
|
||||
pheEnd.addDecodedData("Object", TempBasalPair(0.0, false, 0))
|
||||
|
||||
var initialDuration = previousItem.durationAsSeconds
|
||||
|
||||
previousItem.itemTwo = pheEnd
|
||||
|
||||
if (previousItem.durationAsSeconds <=0) {
|
||||
// if we have duration of 0 or less, then we have invalid entry which needs to be removed
|
||||
removalList.add(previousItem)
|
||||
} else if (previousItem.durationAsSeconds > initialDuration) {
|
||||
// if duration with last item is longer than planned TBR duration we remove previous item and leave original duration
|
||||
previousItem.itemTwo = null
|
||||
}
|
||||
|
||||
previousItem = null
|
||||
}
|
||||
if (tempBasalProcessDTO.itemOneTbr!!.isZeroTBR) {
|
||||
|
@ -777,6 +788,13 @@ class MedtronicHistoryData @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
// removing previously tagged item
|
||||
if (removalList.isNotEmpty()) {
|
||||
for (tempBasalProcessDTO in removalList) {
|
||||
processList.remove(tempBasalProcessDTO)
|
||||
}
|
||||
}
|
||||
|
||||
return processList
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,11 @@ class TempBasalProcessDTO constructor(var itemOne: PumpHistoryEntry,
|
|||
set(value) {
|
||||
field = value
|
||||
if (objectType == ObjectType.TemporaryBasal) {
|
||||
itemTwoTbr = value!!.getDecodedDataEntry("Object") as TempBasalPair
|
||||
if (value!=null) {
|
||||
itemTwoTbr = value.getDecodedDataEntry("Object") as TempBasalPair
|
||||
} else {
|
||||
itemTwoTbr = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -86,4 +86,47 @@ class MedtronicHistoryDataUTest : TestBase() {
|
|||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun createTBRProcessList_SpecialCase() {
|
||||
|
||||
var unitToTest = MedtronicHistoryData(packetInjector, aapsLogger, sp, rh, rxBus, activePlugin,
|
||||
medtronicUtil, medtronicPumpHistoryDecoder,
|
||||
medtronicPumpStatus,
|
||||
pumpSync,
|
||||
pumpSyncStorage)
|
||||
|
||||
|
||||
val gson = Gson()
|
||||
|
||||
val fileText = ClassLoader.getSystemResource("tbr_data_special.json").readText()
|
||||
|
||||
val listType: Type = object : TypeToken<MutableList<PumpHistoryEntry?>?>() {}.getType()
|
||||
val yourClassList: MutableList<PumpHistoryEntry> = gson.fromJson(fileText, listType)
|
||||
|
||||
for (pumpHistoryEntry in yourClassList) {
|
||||
val stringObject = pumpHistoryEntry.decodedData["Object"] as LinkedTreeMap<String,Object>
|
||||
|
||||
val rate : Double = stringObject.get("insulinRate") as Double
|
||||
val durationMinutes: Double = stringObject.get("durationMinutes") as Double
|
||||
val durationMinutesInt : Int = durationMinutes.toInt()
|
||||
|
||||
var tmbPair = TempBasalPair(rate, false, durationMinutesInt)
|
||||
|
||||
pumpHistoryEntry.decodedData.remove("Object")
|
||||
pumpHistoryEntry.addDecodedData("Object", tmbPair)
|
||||
}
|
||||
|
||||
System.out.println("TBR Pre-Process List (Special): " + gson.toJson(yourClassList))
|
||||
|
||||
val createTBRProcessList = unitToTest.createTBRProcessList(yourClassList)
|
||||
|
||||
System.out.println("TBR Process List (Special): " + createTBRProcessList.size)
|
||||
|
||||
for (tempBasalProcessDTO in createTBRProcessList) {
|
||||
System.out.println(tempBasalProcessDTO.toTreatmentString())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
1090
medtronic/src/test/resources/tbr_data_special.json
Normal file
1090
medtronic/src/test/resources/tbr_data_special.json
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue