Profile.swift 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. import Foundation
  2. struct Profile: Codable {
  3. // Kotlin-defined properties from AndroidAPS OapsProfile.kt
  4. // with defaults pulled from profile.js
  5. var dia: Decimal?
  6. var min5mCarbImpact: Decimal = 8
  7. var maxIob: Decimal = 0 // if max_iob is not provided, will default to zero
  8. var maxDailyBasal: Decimal?
  9. var maxBasal: Decimal?
  10. var minBg: Decimal?
  11. var maxBg: Decimal?
  12. @JavascriptOptional var targetBg: Decimal?
  13. var smbDeliveryRatio: Decimal = 0.5
  14. var carbRatio: Decimal?
  15. var sens: Decimal?
  16. var maxDailySafetyMultiplier: Decimal = 3
  17. var currentBasalSafetyMultiplier: Decimal = 4
  18. var highTemptargetRaisesSensitivity: Bool = false // raise sensitivity for temptargets >= 101
  19. var lowTemptargetLowersSensitivity: Bool = false // lower sensitivity for temptargets <= 99
  20. var sensitivityRaisesTarget: Bool = false // raise BG target when autosens detects sensitivity
  21. var resistanceLowersTarget: Bool = false // lower BG target when autosens detects resistance
  22. var halfBasalExerciseTarget: Decimal = 160 // when temptarget is 160 mg/dL *and* exercise_mode=true, run 50% basal
  23. var maxCOB: Decimal = 120 // maximum carbs a typical body can absorb over 4 hours
  24. var skipNeutralTemps: Bool = false
  25. var remainingCarbsCap: Decimal = 90
  26. var enableUAM: Bool = false
  27. var a52RiskEnable: Bool = false
  28. var smbInterval: Decimal = 3
  29. var enableSMBWithCOB: Bool = false
  30. var enableSMBWithTemptarget: Bool = false
  31. var allowSMBWithHighTemptarget: Bool = false
  32. var enableSMBAlways: Bool = false
  33. var enableSMBAfterCarbs: Bool = false
  34. var maxSMBBasalMinutes: Decimal = 30
  35. var maxUAMSMBBasalMinutes: Decimal = 30
  36. var bolusIncrement: Decimal = 0.1
  37. var carbsReqThreshold: Decimal = 1
  38. var currentBasal: Decimal?
  39. var temptargetSet: Bool?
  40. var autosensMax: Decimal = 1.2
  41. var outUnits: String?
  42. // Additional properties
  43. var autosensMin: Decimal = 0.7
  44. var rewindResetsAutosens: Bool = true
  45. var remainingCarbsFraction: Decimal = 1.0
  46. var unsuspendIfNoTemp: Bool = false
  47. var autotuneIsfAdjustmentFraction: Decimal = 1.0
  48. var enableSMBHighBg: Bool = false
  49. var enableSMBHighBgTarget: Decimal = 110
  50. var maxDeltaBgThreshold: Decimal = 0.2
  51. var curve: InsulinCurve = .rapidActing
  52. var useCustomPeakTime: Bool = false
  53. var insulinPeakTime: Decimal = 75
  54. var noisyCGMTargetMultiplier: Decimal = 1.3
  55. var suspendZerosIob: Bool = true
  56. var calcGlucoseNoise: Bool = false
  57. var adjustmentFactor: Decimal = 0.8
  58. var adjustmentFactorSigmoid: Decimal = 0.5
  59. var useNewFormula: Bool = false
  60. var enableDynamicCR: Bool = false
  61. var sigmoid: Bool = false
  62. var weightPercentage: Decimal = 0.65
  63. var tddAdjBasal: Bool = false
  64. var thresholdSetting: Decimal = 60
  65. var model: String?
  66. var basalprofile: [BasalProfileEntry]?
  67. var isfProfile: ComputedInsulinSensitivities?
  68. var bgTargets: ComputedBGTargets?
  69. var carbRatios: CarbRatios?
  70. private enum CodingKeys: String, CodingKey {
  71. case dia
  72. case min5mCarbImpact = "min_5m_carbimpact"
  73. case maxIob = "max_iob"
  74. case maxDailyBasal = "max_daily_basal"
  75. case maxBasal = "max_basal"
  76. case minBg = "min_bg"
  77. case maxBg = "max_bg"
  78. case targetBg = "target_bg"
  79. case smbDeliveryRatio = "smb_delivery_ratio"
  80. case carbRatio = "carb_ratio"
  81. case sens
  82. case maxDailySafetyMultiplier = "max_daily_safety_multiplier"
  83. case currentBasalSafetyMultiplier = "current_basal_safety_multiplier"
  84. case highTemptargetRaisesSensitivity = "high_temptarget_raises_sensitivity"
  85. case lowTemptargetLowersSensitivity = "low_temptarget_lowers_sensitivity"
  86. case sensitivityRaisesTarget = "sensitivity_raises_target"
  87. case resistanceLowersTarget = "resistance_lowers_target"
  88. case halfBasalExerciseTarget = "half_basal_exercise_target"
  89. case maxCOB
  90. case skipNeutralTemps = "skip_neutral_temps"
  91. case remainingCarbsCap
  92. case enableUAM
  93. case a52RiskEnable = "A52_risk_enable"
  94. case smbInterval = "SMBInterval"
  95. case enableSMBWithCOB = "enableSMB_with_COB"
  96. case enableSMBWithTemptarget = "enableSMB_with_temptarget"
  97. case allowSMBWithHighTemptarget = "allowSMB_with_high_temptarget"
  98. case enableSMBAlways = "enableSMB_always"
  99. case enableSMBAfterCarbs = "enableSMB_after_carbs"
  100. case maxSMBBasalMinutes
  101. case maxUAMSMBBasalMinutes
  102. case bolusIncrement = "bolus_increment"
  103. case carbsReqThreshold
  104. case currentBasal = "current_basal"
  105. case temptargetSet
  106. case autosensMax = "autosens_max"
  107. case outUnits = "out_units"
  108. case autosensMin = "autosens_min"
  109. case rewindResetsAutosens = "rewind_resets_autosens"
  110. case remainingCarbsFraction
  111. case unsuspendIfNoTemp = "unsuspend_if_no_temp"
  112. case autotuneIsfAdjustmentFraction = "autotune_isf_adjustmentFraction"
  113. case enableSMBHighBg = "enableSMB_high_bg"
  114. case enableSMBHighBgTarget = "enableSMB_high_bg_target"
  115. case maxDeltaBgThreshold = "maxDelta_bg_threshold"
  116. case curve
  117. case useCustomPeakTime
  118. case insulinPeakTime
  119. case noisyCGMTargetMultiplier
  120. case suspendZerosIob = "suspend_zeros_iob"
  121. case adjustmentFactor
  122. case adjustmentFactorSigmoid
  123. case useNewFormula
  124. case enableDynamicCR
  125. case sigmoid
  126. case weightPercentage
  127. case tddAdjBasal
  128. case thresholdSetting = "threshold_setting"
  129. case model
  130. case basalprofile
  131. case isfProfile
  132. case bgTargets = "bg_targets"
  133. case carbRatios = "carb_ratios"
  134. }
  135. }