Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Display "external insulin" as treatment type #80

Merged
merged 3 commits into from
Apr 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions FreeAPS/Sources/APS/Storage/PumpHistoryStorage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ final class BasePumpHistoryStorage: PumpHistoryStorage, Injectable {
durationMin: nil,
rate: nil,
temp: nil,
carbInput: nil
carbInput: nil,
isExternalInsulin: dose.manuallyEntered
)]
case .tempBasal:
guard let dose = event.dose else { return [] }
Expand Down Expand Up @@ -209,6 +210,13 @@ final class BasePumpHistoryStorage: PumpHistoryStorage, Injectable {
}
}

func determineBolusEventType(for event: PumpHistoryEvent) -> EventType {
if event.isExternalInsulin ?? false {
return .externalInsulin
}
return event.type
}

func nightscoutTretmentsNotUploaded() -> [NigtscoutTreatment] {
let events = recent()
guard !events.isEmpty else { return [] }
Expand Down Expand Up @@ -249,13 +257,14 @@ final class BasePumpHistoryStorage: PumpHistoryStorage, Injectable {
let bolusesAndCarbs = events.compactMap { event -> NigtscoutTreatment? in
switch event.type {
case .bolus:
let eventType = determineBolusEventType(for: event)
return NigtscoutTreatment(
duration: event.duration,
rawDuration: nil,
rawRate: nil,
absolute: nil,
rate: nil,
eventType: .bolus,
eventType: eventType,
createdAt: event.timestamp,
enteredBy: NigtscoutTreatment.local,
bolus: event,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1222,7 +1222,7 @@ Enact a temp Basal or a temp target */
/* An Automatic delivered bolus (SMB) */
"SMB" = "SMB";

/* A manually entered dose of external insulin */
/* A manually entered dose of non-pump insulin */
"External Insulin" = "Externes Insulin";

/* Status highlight when manual temp basal is running. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1220,7 +1220,7 @@ Enact a temp Basal or a temp target */
/* An Automatic delivered bolus (SMB) */
"SMB" = "SMB";

/* A manually entered dose of external insulin */
/* A manually entered dose of non-pump insulin */
"External Insulin" = "External Insulin";

/* Status highlight when manual temp basal is running. */
Expand Down
9 changes: 7 additions & 2 deletions FreeAPS/Sources/Models/PumpHistoryEvent.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ struct PumpHistoryEvent: JSON, Equatable {
let temp: TempType?
let carbInput: Int?
let note: String?
let isExternalInsulin: Bool?

init(
id: String,
Expand All @@ -22,7 +23,8 @@ struct PumpHistoryEvent: JSON, Equatable {
rate: Decimal? = nil,
temp: TempType? = nil,
carbInput: Int? = nil,
note: String? = nil
note: String? = nil,
isExternalInsulin: Bool? = nil
) {
self.id = id
self.type = type
Expand All @@ -34,12 +36,14 @@ struct PumpHistoryEvent: JSON, Equatable {
self.temp = temp
self.carbInput = carbInput
self.note = note
self.isExternalInsulin = isExternalInsulin
}
}

enum EventType: String, JSON {
case bolus = "Bolus"
case mealBulus = "Meal Bolus"
case externalInsulin = "External Insulin"
case mealBolus = "Meal Bolus"
case correctionBolus = "Correction Bolus"
case snackBolus = "Snack Bolus"
case bolusWizard = "BolusWizard"
Expand Down Expand Up @@ -80,5 +84,6 @@ extension PumpHistoryEvent {
case temp
case carbInput = "carb_input"
case note
case isExternalInsulin
}
}
3 changes: 2 additions & 1 deletion FreeAPS/Sources/Modules/Bolus/BolusStateModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ extension Bolus {
durationMin: nil,
rate: nil,
temp: nil,
carbInput: nil
carbInput: nil,
isExternalInsulin: true
)
]
)
Expand Down
26 changes: 18 additions & 8 deletions FreeAPS/Sources/Modules/DataTable/DataTableDataFlow.swift
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,9 @@ enum DataTable {
let isFPU: Bool?
let fpuID: String?
let note: String?
let isExternal: Bool?

private var numberFormater: NumberFormatter {
private var numberFormatter: NumberFormatter {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
Expand All @@ -92,7 +93,8 @@ enum DataTable {
idPumpEvent: String? = nil,
isFPU: Bool? = false,
fpuID: String? = nil,
note: String? = nil
note: String? = nil,
isExternal: Bool? = nil
) {
self.units = units
self.type = type
Expand All @@ -105,6 +107,7 @@ enum DataTable {
self.isFPU = isFPU
self.fpuID = fpuID
self.note = note
self.isExternal = isExternal
}

static func == (lhs: Treatment, rhs: Treatment) -> Bool {
Expand All @@ -126,14 +129,21 @@ enum DataTable {

switch type {
case .carbs:
return numberFormater.string(from: amount as NSNumber)! + NSLocalizedString(" g", comment: "gram of carbs")
return numberFormatter.string(from: amount as NSNumber)! + NSLocalizedString(" g", comment: "gram of carbs")
case .fpus:
return numberFormater
return numberFormatter
.string(from: amount as NSNumber)! + NSLocalizedString(" g", comment: "gram of carb equilvalents")
case .bolus:
return numberFormater.string(from: amount as NSNumber)! + NSLocalizedString(" U", comment: "Insulin unit")
var bolusText = ""

if isExternal ?? false {
bolusText += " " + NSLocalizedString("External", comment: "External Insulin")
}

return numberFormatter
.string(from: amount as NSNumber)! + NSLocalizedString(" U", comment: "Insulin unit") + bolusText
case .tempBasal:
return numberFormater
return numberFormatter
.string(from: amount as NSNumber)! + NSLocalizedString(" U/hr", comment: "Unit insulin per hour")
case .tempTarget:
var converted = amount
Expand All @@ -142,7 +152,7 @@ enum DataTable {
}

guard var secondAmount = secondAmount else {
return numberFormater.string(from: converted as NSNumber)! + " \(units.rawValue)"
return numberFormatter.string(from: converted as NSNumber)! + " \(units.rawValue)"
}
if units == .mmolL {
secondAmount = secondAmount.asMmolL
Expand Down Expand Up @@ -177,7 +187,7 @@ enum DataTable {
guard let duration = duration, duration > 0 else {
return nil
}
return numberFormater.string(from: duration as NSNumber)! + " min"
return numberFormatter.string(from: duration as NSNumber)! + " min"
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,14 @@ extension DataTable {
let boluses = self.provider.pumpHistory()
.filter { $0.type == .bolus }
.map {
Treatment(units: units, type: .bolus, date: $0.timestamp, amount: $0.amount, idPumpEvent: $0.id)
Treatment(
units: units,
type: .bolus,
date: $0.timestamp,
amount: $0.amount,
idPumpEvent: $0.id,
isExternal: $0.isExternalInsulin
)
}

let tempBasals = self.provider.pumpHistory()
Expand Down