Explorar o código

Add HCP feedback to Onboarding (Part 2/2)
* Change default therapy setting rates to values that are safe for children and adult users
* Basal rate: 0.1 U/hr
* Carb ratio: 30 g/U
* Insulin sensitivity: 200 mg/dL/U (parsed for mmol/L users)
* Glucose target: 110 mg/dL (parsed for mmol/L users)
* Ensure default values are properly used in Onboarding by adjusting the initial settings rate values

Deniz Cengiz hai 1 ano
pai
achega
ecac21f21b

+ 12 - 4
Trio.xcodeproj/project.pbxproj

@@ -2826,6 +2826,7 @@
 		BD47FDD52D8B64AE0043966B /* OnboardingSteps */ = {
 		BD47FDD52D8B64AE0043966B /* OnboardingSteps */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				DD3C47E42DC6CD8C003DD20D /* TherapySettings */,
 				DD6A4E4E2DBEBC7B008C4B26 /* StartupGuide */,
 				DD6A4E4E2DBEBC7B008C4B26 /* StartupGuide */,
 				DDFF20302DB1D15500AB8A96 /* BluetoothPermissionStepView.swift */,
 				DDFF20302DB1D15500AB8A96 /* BluetoothPermissionStepView.swift */,
 				DDFF202E2DB1D14500AB8A96 /* NotificationPermissionStepView.swift */,
 				DDFF202E2DB1D14500AB8A96 /* NotificationPermissionStepView.swift */,
@@ -2837,10 +2838,6 @@
 				DD3F1F842D9DD83B00DCE7B3 /* DeliveryLimitsStepView.swift */,
 				DD3F1F842D9DD83B00DCE7B3 /* DeliveryLimitsStepView.swift */,
 				DD3F1F822D9DC78300DCE7B3 /* UnitSelectionStepView.swift */,
 				DD3F1F822D9DC78300DCE7B3 /* UnitSelectionStepView.swift */,
 				BD47FD162D88AAEF0043966B /* CompletedStepView.swift */,
 				BD47FD162D88AAEF0043966B /* CompletedStepView.swift */,
-				BD47FDDC2D8B65AD0043966B /* GlucoseTargetStepView.swift */,
-				BD47FDDA2D8B65960043966B /* BasalProfileStepView.swift */,
-				BD47FDD82D8B65730043966B /* InsulinSensitivityStepView.swift */,
-				BD47FDD62D8B64CC0043966B /* CarbRatioStepView.swift */,
 			);
 			);
 			path = OnboardingSteps;
 			path = OnboardingSteps;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -3291,6 +3288,17 @@
 			path = Helper;
 			path = Helper;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		DD3C47E42DC6CD8C003DD20D /* TherapySettings */ = {
+			isa = PBXGroup;
+			children = (
+				BD47FDDC2D8B65AD0043966B /* GlucoseTargetStepView.swift */,
+				BD47FDDA2D8B65960043966B /* BasalProfileStepView.swift */,
+				BD47FDD82D8B65730043966B /* InsulinSensitivityStepView.swift */,
+				BD47FDD62D8B64CC0043966B /* CarbRatioStepView.swift */,
+			);
+			path = TherapySettings;
+			sourceTree = "<group>";
+		};
 		DD3F1F8E2D9E151200DCE7B3 /* Nightscout */ = {
 		DD3F1F8E2D9E151200DCE7B3 /* Nightscout */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (

+ 1 - 1
Trio/Resources/json/defaults/settings/basal_profile.json

@@ -2,6 +2,6 @@
     {
     {
         "start": "00:00:00",
         "start": "00:00:00",
         "minutes": 0,
         "minutes": 0,
-        "rate": 1.0
+        "rate": 0.1
     }
     }
 ]
 ]

+ 2 - 2
Trio/Resources/json/defaults/settings/bg_targets.json

@@ -3,8 +3,8 @@
     "user_preferred_units": "mg/dL",
     "user_preferred_units": "mg/dL",
     "targets": [
     "targets": [
         {
         {
-            "low": 100,
-            "high": 100,
+            "low": 110,
+            "high": 110,
             "start": "00:00:00",
             "start": "00:00:00",
             "offset": 0
             "offset": 0
         }
         }

+ 1 - 1
Trio/Resources/json/defaults/settings/carb_ratios.json

@@ -4,7 +4,7 @@
         {
         {
             "start": "00:00:00",
             "start": "00:00:00",
             "offset": 0,
             "offset": 0,
-            "ratio": 10
+            "ratio": 30
         }
         }
     ]
     ]
 }
 }

+ 1 - 1
Trio/Resources/json/defaults/settings/insulin_sensitivities.json

@@ -3,7 +3,7 @@
     "user_preferred_units": "mg/dL",
     "user_preferred_units": "mg/dL",
     "sensitivities": [
     "sensitivities": [
         {
         {
-            "sensitivity": 54,
+            "sensitivity": 200,
             "offset": 0,
             "offset": 0,
             "start": "00:00:00"
             "start": "00:00:00"
         }
         }

+ 1 - 1
Trio/Sources/Modules/AutosensSettings/AutosensSettingsStateModel.swift

@@ -11,7 +11,7 @@ extension AutosensSettings {
         var units: GlucoseUnits = .mgdL
         var units: GlucoseUnits = .mgdL
 
 
         private(set) var autosensISF: Decimal?
         private(set) var autosensISF: Decimal?
-        private(set) var autosensRatio: Decimal = 0
+        private(set) var autosensRatio: Decimal = 1
         @Published var determinationsFromPersistence: [OrefDetermination] = []
         @Published var determinationsFromPersistence: [OrefDetermination] = []
 
 
         let viewContext = CoreDataStack.shared.persistentContainer.viewContext
         let viewContext = CoreDataStack.shared.persistentContainer.viewContext

+ 6 - 9
Trio/Sources/Modules/AutosensSettings/View/AutosensSettingsRootView.swift

@@ -65,18 +65,15 @@ extension AutosensSettings {
                     let dynamicRatio = state.determinationsFromPersistence.first?.sensitivityRatio
                     let dynamicRatio = state.determinationsFromPersistence.first?.sensitivityRatio
                     let dynamicISF = state.determinationsFromPersistence.first?.insulinSensitivity
                     let dynamicISF = state.determinationsFromPersistence.first?.insulinSensitivity
                     let newISF = state.autosensISF
                     let newISF = state.autosensISF
+                    let decimalValue = !state.settingsManager.preferences.useNewFormula ? state
+                        .autosensRatio as NSDecimalNumber : dynamicRatio ?? 1
+                    let decimalValueText = rateFormatter
+                        .string(from: ((decimalValue as Decimal) * Decimal(100)) as NSNumber) ?? "100"
+
                     HStack {
                     HStack {
                         Text("Sensitivity Ratio")
                         Text("Sensitivity Ratio")
                         Spacer()
                         Spacer()
-                        Text(
-                            rateFormatter
-                                .string(from: (
-                                    (
-                                        !state.settingsManager.preferences.useNewFormula ? state
-                                            .autosensRatio as NSDecimalNumber : dynamicRatio
-                                    ) ?? 1
-                                ) as NSNumber) ?? "1"
-                        )
+                        Text("\(decimalValueText) \(String(localized: "%", comment: "Percentage symbol"))")
                     }.padding(.vertical)
                     }.padding(.vertical)
                     HStack {
                     HStack {
                         Text("Calculated Sensitivity")
                         Text("Calculated Sensitivity")

+ 10 - 10
Trio/Sources/Modules/Onboarding/OnboardingStateModel.swift

@@ -47,7 +47,7 @@ extension Onboarding {
 
 
         // MARK: - Carb Ratio
         // MARK: - Carb Ratio
 
 
-        let carbRatioPickerSetting = PickerSetting(value: 10, step: 0.1, min: 1, max: 50, type: .gram)
+        let carbRatioPickerSetting = PickerSetting(value: 30, step: 0.1, min: 1, max: 50, type: .gram)
         var carbRatioItems: [CarbRatioEditor.Item] = []
         var carbRatioItems: [CarbRatioEditor.Item] = []
         var initialCarbRatioItems: [CarbRatioEditor.Item] = []
         var initialCarbRatioItems: [CarbRatioEditor.Item] = []
         var carbRatioTimeValues: [TimeInterval] { sharedTimeValues }
         var carbRatioTimeValues: [TimeInterval] { sharedTimeValues }
@@ -58,13 +58,13 @@ extension Onboarding {
         var basalRatePickerSetting: PickerSetting {
         var basalRatePickerSetting: PickerSetting {
             switch pumpOptionForOnboardingUnits {
             switch pumpOptionForOnboardingUnits {
             case .dana:
             case .dana:
-                return PickerSetting(value: 0.05, step: 0.05, min: 0, max: 3, type: .insulinUnitPerHour)
+                return PickerSetting(value: 0.1, step: 0.05, min: 0, max: 3, type: .insulinUnitPerHour)
             case .minimed:
             case .minimed:
-                return PickerSetting(value: 0.05, step: 0.05, min: 0, max: 35, type: .insulinUnitPerHour)
+                return PickerSetting(value: 0.1, step: 0.05, min: 0, max: 35, type: .insulinUnitPerHour)
             case .omnipodDash:
             case .omnipodDash:
-                return PickerSetting(value: 0.05, step: 0.05, min: 0, max: 30, type: .insulinUnitPerHour)
+                return PickerSetting(value: 0.1, step: 0.05, min: 0, max: 30, type: .insulinUnitPerHour)
             case .omnipodEros:
             case .omnipodEros:
-                return PickerSetting(value: 0.05, step: 0.05, min: 0.05, max: 30, type: .insulinUnitPerHour)
+                return PickerSetting(value: 0.1, step: 0.05, min: 0.05, max: 30, type: .insulinUnitPerHour)
             }
             }
         }
         }
 
 
@@ -76,7 +76,7 @@ extension Onboarding {
 
 
         // MARK: - Insulin Sensitivity Factor (ISF)
         // MARK: - Insulin Sensitivity Factor (ISF)
 
 
-        var sensitivityPickerSetting = PickerSetting(value: 100, step: 1, min: 9, max: 540, type: .glucose)
+        var sensitivityPickerSetting = PickerSetting(value: 200, step: 1, min: 9, max: 540, type: .glucose)
         var isfItems: [ISFEditor.Item] = []
         var isfItems: [ISFEditor.Item] = []
         var initialISFItems: [ISFEditor.Item] = []
         var initialISFItems: [ISFEditor.Item] = []
         var isfTimeValues: [TimeInterval] { sharedTimeValues }
         var isfTimeValues: [TimeInterval] { sharedTimeValues }
@@ -84,7 +84,7 @@ extension Onboarding {
 
 
         // MARK: - Glucose Targets
         // MARK: - Glucose Targets
 
 
-        let letTargetPickerSetting = PickerSetting(value: 100, step: 1, min: 72, max: 180, type: .glucose)
+        let letTargetPickerSetting = PickerSetting(value: 110, step: 1, min: 72, max: 180, type: .glucose)
         var targetItems: [TargetsEditor.Item] = []
         var targetItems: [TargetsEditor.Item] = []
         var initialTargetItems: [TargetsEditor.Item] = []
         var initialTargetItems: [TargetsEditor.Item] = []
         var targetTimeValues: [TimeInterval] { sharedTimeValues }
         var targetTimeValues: [TimeInterval] { sharedTimeValues }
@@ -412,7 +412,7 @@ extension Onboarding {
         /// Adds a default ISF editor item at 00:00 with a standard sensitivity value.
         /// Adds a default ISF editor item at 00:00 with a standard sensitivity value.
         func addInitialISF() {
         func addInitialISF() {
             addInitialItem(
             addInitialItem(
-                defaultValue: 50,
+                defaultValue: 200,
                 rateValues: isfRateValues,
                 rateValues: isfRateValues,
                 assign: { isfItems = $0 },
                 assign: { isfItems = $0 },
                 makeItem: ISFEditor.Item.init
                 makeItem: ISFEditor.Item.init
@@ -432,7 +432,7 @@ extension Onboarding {
         /// Adds a default carb ratio editor item at 00:00 with a standard ratio.
         /// Adds a default carb ratio editor item at 00:00 with a standard ratio.
         func addInitialCarbRatio() {
         func addInitialCarbRatio() {
             addInitialItem(
             addInitialItem(
-                defaultValue: 10,
+                defaultValue: 30,
                 rateValues: carbRatioRateValues,
                 rateValues: carbRatioRateValues,
                 assign: { carbRatioItems = $0 },
                 assign: { carbRatioItems = $0 },
                 makeItem: CarbRatioEditor.Item.init
                 makeItem: CarbRatioEditor.Item.init
@@ -442,7 +442,7 @@ extension Onboarding {
         /// Adds a default glucose target item at 00:00 with a typical target value.
         /// Adds a default glucose target item at 00:00 with a typical target value.
         func addInitialTarget() {
         func addInitialTarget() {
             let timeIndex = 0
             let timeIndex = 0
-            let rateIndex = closestIndex(for: 100, in: targetRateValues)
+            let rateIndex = closestIndex(for: 110, in: targetRateValues)
             targetItems = [TargetsEditor.Item(lowIndex: rateIndex, highIndex: rateIndex, timeIndex: timeIndex)]
             targetItems = [TargetsEditor.Item(lowIndex: rateIndex, highIndex: rateIndex, timeIndex: timeIndex)]
         }
         }
 
 

Trio/Sources/Modules/Onboarding/View/OnboardingSteps/BasalProfileStepView.swift → Trio/Sources/Modules/Onboarding/View/OnboardingSteps/TherapySettings/BasalProfileStepView.swift


Trio/Sources/Modules/Onboarding/View/OnboardingSteps/CarbRatioStepView.swift → Trio/Sources/Modules/Onboarding/View/OnboardingSteps/TherapySettings/CarbRatioStepView.swift


Trio/Sources/Modules/Onboarding/View/OnboardingSteps/GlucoseTargetStepView.swift → Trio/Sources/Modules/Onboarding/View/OnboardingSteps/TherapySettings/GlucoseTargetStepView.swift


Trio/Sources/Modules/Onboarding/View/OnboardingSteps/InsulinSensitivityStepView.swift → Trio/Sources/Modules/Onboarding/View/OnboardingSteps/TherapySettings/InsulinSensitivityStepView.swift


+ 1 - 1
Trio/Sources/Modules/TargetsEditor/TargetsEditorStateModel.swift

@@ -13,7 +13,7 @@ extension TargetsEditor {
 
 
         var rateValues: [Decimal] {
         var rateValues: [Decimal] {
             let settingsProvider = PickerSettingsProvider.shared
             let settingsProvider = PickerSettingsProvider.shared
-            let glucoseSetting = PickerSetting(value: 0, step: 1, min: 72, max: 180, type: .glucose)
+            let glucoseSetting = PickerSetting(value: 110, step: 1, min: 72, max: 180, type: .glucose)
             return settingsProvider.generatePickerValues(from: glucoseSetting, units: units)
             return settingsProvider.generatePickerValues(from: glucoseSetting, units: units)
         }
         }