Statistics.swift 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. import Foundation
  2. struct Statistics: JSON, Equatable {
  3. var createdAt: Date
  4. var iPhone: String
  5. var iOS: String
  6. var Build_Version: String
  7. var Build_Number: String
  8. var Branch: String
  9. var Build_Date: Date
  10. var Algorithm: String
  11. var AdjustmentFactor: Decimal
  12. var Pump: String
  13. var CGM: String
  14. var insulinType: String
  15. var peakActivityTime: Decimal
  16. var TDD: Decimal
  17. var Carbs_24h: Decimal
  18. var GlucoseStorage_Days: Decimal
  19. var TIR: [TIRs]
  20. var Glucose: [Averages]
  21. var HbA1c: [Hbs]
  22. var LoopStats: [LoopCycles]
  23. init(
  24. createdAt: Date,
  25. iPhone: String,
  26. iOS: String,
  27. Build_Version: String,
  28. Build_Number: String,
  29. Branch: String,
  30. Build_Date: Date,
  31. Algorithm: String,
  32. AdjustmentFactor: Decimal,
  33. Pump: String,
  34. CGM: String,
  35. insulinType: String,
  36. peakActivityTime: Decimal,
  37. TDD: Decimal,
  38. Carbs_24h: Decimal,
  39. GlucoseStorage_Days: Decimal,
  40. TIR: [TIRs],
  41. Glucose: [Averages],
  42. HbA1c: [Hbs],
  43. LoopStats: [LoopCycles]
  44. ) {
  45. self.createdAt = createdAt
  46. self.iPhone = iPhone
  47. self.iOS = iOS
  48. self.Build_Version = Build_Version
  49. self.Build_Number = Build_Number
  50. self.Branch = Branch
  51. self.Build_Date = Build_Date
  52. self.Algorithm = Algorithm
  53. self.AdjustmentFactor = AdjustmentFactor
  54. self.Pump = Pump
  55. self.CGM = CGM
  56. self.insulinType = insulinType
  57. self.peakActivityTime = peakActivityTime
  58. self.TDD = TDD
  59. self.Carbs_24h = Carbs_24h
  60. self.GlucoseStorage_Days = GlucoseStorage_Days
  61. self.TIR = TIR
  62. self.Glucose = Glucose
  63. self.HbA1c = HbA1c
  64. self.LoopStats = LoopStats
  65. }
  66. static func == (lhs: Statistics, rhs: Statistics) -> Bool {
  67. lhs.createdAt == rhs.createdAt
  68. }
  69. func hash(into hasher: inout Hasher) {
  70. hasher.combine(createdAt)
  71. }
  72. }
  73. extension Statistics {
  74. private enum CodingKeys: String, CodingKey {
  75. case createdAt
  76. case iPhone
  77. case iOS
  78. case Build_Version
  79. case Build_Number
  80. case Branch
  81. case Build_Date
  82. case Algorithm
  83. case AdjustmentFactor
  84. case Pump
  85. case CGM
  86. case insulinType
  87. case peakActivityTime
  88. case TDD
  89. case Carbs_24h
  90. case GlucoseStorage_Days
  91. case TIR
  92. case Glucose
  93. case HbA1c
  94. case LoopStats
  95. }
  96. }
  97. struct LoopCycles: JSON, Equatable {
  98. var loops: Int
  99. var errors: Int
  100. var success_rate: Decimal
  101. var avg_interval: Decimal
  102. var median_interval: Decimal
  103. var min_interval: Decimal
  104. var max_interval: Decimal
  105. var avg_duration: Decimal
  106. var median_duration: Decimal
  107. var min_duration: Decimal
  108. var max_duration: Decimal
  109. }
  110. struct Averages: JSON, Equatable {
  111. var Average: [Average]
  112. var Median: [Median]
  113. }
  114. struct Average: JSON, Equatable {
  115. var oneDay_mmol: Decimal
  116. var oneDay: Decimal
  117. var sevenDays_mmol: Decimal
  118. var sevenDays: Decimal
  119. var thirtyDays_mmol: Decimal
  120. var thirtyDays: Decimal
  121. var ninetyDays_mmol: Decimal
  122. var ninetyDays: Decimal
  123. var totalDays_mmol: Decimal
  124. var totalDays: Decimal
  125. }
  126. struct Median: JSON, Equatable {
  127. var oneDay_mmol: Decimal
  128. var oneDay: Decimal
  129. var sevenDays_mmol: Decimal
  130. var sevenDays: Decimal
  131. var thirtyDays_mmol: Decimal
  132. var thirtyDays: Decimal
  133. var ninetyDays_mmol: Decimal
  134. var ninetyDays: Decimal
  135. var totalDays_mmol: Decimal
  136. var totalDays: Decimal
  137. }
  138. struct Hbs: JSON, Equatable {
  139. var oneDay_mmolMol: Decimal
  140. var oneDay: Decimal
  141. var sevenDays_mmolMol: Decimal
  142. var sevenDays: Decimal
  143. var thirtyDays_mmolMol: Decimal
  144. var thirtyDays: Decimal
  145. var ninetyDays_mmolMol: Decimal
  146. var ninetyDays: Decimal
  147. var totalDays_mmolMol: Decimal
  148. var totalDays: Decimal
  149. }
  150. struct TIRs: JSON, Equatable {
  151. var TIR: [TIR]
  152. var Hypos: [Hypos]
  153. var Hypers: [Hypers]
  154. }
  155. struct TIR: JSON, Equatable {
  156. var oneDay: Decimal
  157. var sevenDays: Decimal
  158. var thirtyDays: Decimal
  159. var ninetyDays: Decimal
  160. var totalDays: Decimal
  161. }
  162. struct Hypos: JSON, Equatable {
  163. var oneDay: Decimal
  164. var sevenDays: Decimal
  165. var thirtyDays: Decimal
  166. var ninetyDays: Decimal
  167. var totalDays: Decimal
  168. }
  169. struct Hypers: JSON, Equatable {
  170. var oneDay: Decimal
  171. var sevenDays: Decimal
  172. var thirtyDays: Decimal
  173. var ninetyDays: Decimal
  174. var totalDays: Decimal
  175. }
  176. extension LoopCycles {
  177. private enum CodingKeys: String, CodingKey {
  178. case loops
  179. case errors
  180. case success_rate
  181. case avg_interval
  182. case median_interval
  183. case min_interval
  184. case max_interval
  185. case avg_duration
  186. case median_duration
  187. case min_duration
  188. case max_duration
  189. }
  190. }
  191. extension Averages {
  192. private enum CodingKeys: String, CodingKey {
  193. case Average
  194. case Median
  195. }
  196. }
  197. extension Median {
  198. private enum CodingKeys: String, CodingKey {
  199. case oneDay_mmol
  200. case oneDay
  201. case sevenDays_mmol
  202. case sevenDays
  203. case thirtyDays_mmol
  204. case thirtyDays
  205. case ninetyDays_mmol
  206. case ninetyDays
  207. case totalDays_mmol
  208. case totalDays
  209. }
  210. }
  211. extension Hbs {
  212. private enum CodingKeys: String, CodingKey {
  213. case oneDay_mmolMol
  214. case oneDay
  215. case sevenDays_mmolMol
  216. case sevenDays
  217. case thirtyDays_mmolMol
  218. case thirtyDays
  219. case ninetyDays_mmolMol
  220. case ninetyDays
  221. case totalDays_mmolMol
  222. case totalDays
  223. }
  224. }
  225. extension TIRs {
  226. private enum CodingKeys: String, CodingKey {
  227. case TIR
  228. case Hypos
  229. case Hypers
  230. }
  231. }
  232. extension Hypos {
  233. private enum CodingKeys: String, CodingKey {
  234. case oneDay
  235. case sevenDays
  236. case thirtyDays
  237. case ninetyDays
  238. case totalDays
  239. }
  240. }
  241. extension Hypers {
  242. private enum CodingKeys: String, CodingKey {
  243. case oneDay
  244. case sevenDays
  245. case thirtyDays
  246. case ninetyDays
  247. case totalDays
  248. }
  249. }