ExponentialInsulinModelPreset.swift 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // ExponentialInsulinModelPreset.swift
  3. // LoopKit
  4. //
  5. // Copyright © 2017 LoopKit Authors. All rights reserved.
  6. //
  7. public enum ExponentialInsulinModelPreset: String, Codable {
  8. case rapidActingAdult
  9. case rapidActingChild
  10. case fiasp
  11. case lyumjev
  12. }
  13. // MARK: - Model generation
  14. extension ExponentialInsulinModelPreset {
  15. public var actionDuration: TimeInterval {
  16. switch self {
  17. case .rapidActingAdult:
  18. return .minutes(360)
  19. case .rapidActingChild:
  20. return .minutes(360)
  21. case .fiasp:
  22. return .minutes(360)
  23. case .lyumjev:
  24. return .minutes(330)
  25. }
  26. }
  27. public var peakActivity: TimeInterval {
  28. switch self {
  29. case .rapidActingAdult:
  30. return .minutes(75)
  31. case .rapidActingChild:
  32. return .minutes(65)
  33. case .fiasp:
  34. return .minutes(55)
  35. case .lyumjev:
  36. return .minutes(45)
  37. }
  38. }
  39. var model: InsulinModel {
  40. return ExponentialInsulinModel(actionDuration: actionDuration, peakActivityTime: peakActivity)
  41. }
  42. }
  43. extension ExponentialInsulinModelPreset: InsulinModel {
  44. public var effectDuration: TimeInterval {
  45. return model.effectDuration
  46. }
  47. public var delay: TimeInterval {
  48. return model.delay
  49. }
  50. public func percentEffectRemaining(at time: TimeInterval) -> Double {
  51. return model.percentEffectRemaining(at: time)
  52. }
  53. }
  54. extension ExponentialInsulinModelPreset: CustomDebugStringConvertible {
  55. public var debugDescription: String {
  56. return "\(self.rawValue)(\(String(reflecting: model))"
  57. }
  58. }