NightscoutTreatment.swift 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import Foundation
  2. func determineBolusEventType(for event: PumpHistoryEvent) -> EventType {
  3. if event.isExternalInsulin ?? false {
  4. return .nsExternalInsulin
  5. } else if event.isSMB ?? false {
  6. return .smb
  7. }
  8. return event.type
  9. }
  10. struct NightscoutTreatment: JSON, Hashable, Equatable {
  11. var duration: Int?
  12. var rawDuration: PumpHistoryEvent?
  13. var rawRate: PumpHistoryEvent?
  14. var absolute: Decimal?
  15. var rate: Decimal?
  16. var eventType: PumpEventStored.EventType
  17. var createdAt: Date?
  18. var enteredBy: String?
  19. var bolus: PumpHistoryEvent?
  20. var insulin: Decimal?
  21. var notes: String?
  22. var carbs: Decimal?
  23. var fat: Decimal?
  24. var protein: Decimal?
  25. var foodType: String?
  26. let targetTop: Decimal?
  27. let targetBottom: Decimal?
  28. var glucoseType: String?
  29. var glucose: String?
  30. var units: String?
  31. var id: String?
  32. var fpuID: String?
  33. static let local = "Trio"
  34. static let empty = NightscoutTreatment(from: "{}")!
  35. static func == (lhs: NightscoutTreatment, rhs: NightscoutTreatment) -> Bool {
  36. (lhs.createdAt ?? Date()) == (rhs.createdAt ?? Date())
  37. }
  38. func hash(into hasher: inout Hasher) {
  39. hasher.combine(createdAt ?? Date())
  40. }
  41. }
  42. extension NightscoutTreatment {
  43. private enum CodingKeys: String, CodingKey {
  44. case duration
  45. case rawDuration = "raw_duration"
  46. case rawRate = "raw_rate"
  47. case absolute
  48. case rate
  49. case eventType
  50. case createdAt = "created_at"
  51. case enteredBy
  52. case bolus
  53. case insulin
  54. case notes
  55. case carbs
  56. case fat
  57. case protein
  58. case foodType
  59. case targetTop
  60. case targetBottom
  61. case glucoseType
  62. case glucose
  63. case units
  64. case id
  65. case fpuID
  66. }
  67. }