LoopkitPatch.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. From 3af74b1dbc7e888de53b7dbc5a20e5ec91641e0f Mon Sep 17 00:00:00 2001
  2. From: Jon Fawcett <jonfawcett10@gmail.com>
  3. Date: Wed, 2 Mar 2022 20:59:01 -0500
  4. Subject: [PATCH] Add alternate application factor, strategy switching,
  5. negative iob factor
  6. ---
  7. LoopKit/InsulinKit/InsulinMath.swift | 32 ++++++++++++++++++++++------
  8. 1 file changed, 25 insertions(+), 7 deletions(-)
  9. diff --git a/LoopKit/InsulinKit/InsulinMath.swift b/LoopKit/InsulinKit/InsulinMath.swift
  10. index e2d0f74..b57dcd3 100644
  11. --- a/LoopKit/InsulinKit/InsulinMath.swift
  12. +++ b/LoopKit/InsulinKit/InsulinMath.swift
  13. @@ -40,10 +40,18 @@ extension DoseEntry {
  14. }
  15. // Consider doses within the delta time window as momentary
  16. + //ken changes
  17. + //implement user set negative basal multiplier
  18. + let negativeBasalMultiplier = UserDefaults.standard.double(forKey: "negativeBasalMultiplier")
  19. + var modifiednetBasalUnits = netBasalUnits
  20. + if netBasalUnits < 0.0 {
  21. + modifiednetBasalUnits = netBasalUnits * negativeBasalMultiplier
  22. + }
  23. + //this used netBasalUnits as multiplier originally
  24. if endDate.timeIntervalSince(startDate) <= 1.05 * delta {
  25. - return netBasalUnits * model.percentEffectRemaining(at: time)
  26. + return modifiednetBasalUnits * model.percentEffectRemaining(at: time)
  27. } else {
  28. - return netBasalUnits * continuousDeliveryInsulinOnBoard(at: date, model: model, delta: delta)
  29. + return modifiednetBasalUnits * continuousDeliveryInsulinOnBoard(at: date, model: model, delta: delta)
  30. }
  31. }
  32. @@ -77,11 +85,21 @@ extension DoseEntry {
  33. }
  34. // Consider doses within the delta time window as momentary
  35. - if endDate.timeIntervalSince(startDate) <= 1.05 * delta {
  36. - return netBasalUnits * -insulinSensitivity * (1.0 - model.percentEffectRemaining(at: time))
  37. - } else {
  38. - return netBasalUnits * -insulinSensitivity * continuousDeliveryGlucoseEffect(at: date, model: model, delta: delta)
  39. - }
  40. + //ken changes
  41. + //if net basal is negative use a mulitplier (0-1)
  42. + //modified in user settings
  43. +
  44. + let negativeBasalMultiplier = UserDefaults.standard.double(forKey: "negativeBasalMultiplier")
  45. + var modifiednetBasalUnits = netBasalUnits
  46. + if netBasalUnits < 0.0 {
  47. + modifiednetBasalUnits = netBasalUnits * negativeBasalMultiplier
  48. + }
  49. + //originally used netBasalUnits
  50. + if endDate.timeIntervalSince(startDate) <= 1.05 * delta {
  51. + return modifiednetBasalUnits * -insulinSensitivity * (1.0 - model.percentEffectRemaining(at: time))
  52. + } else {
  53. + return modifiednetBasalUnits * -insulinSensitivity * continuousDeliveryGlucoseEffect(at: date, model: model, delta: delta)
  54. + }
  55. }
  56. func trimmed(from start: Date? = nil, to end: Date? = nil, syncIdentifier: String? = nil) -> DoseEntry {
  57. --
  58. 2.29.2