Statistics.swift 6.2 KB

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