@ovok/native 1.11.1 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/lib/commonjs/modules/bt-device/constants/device-model.js +82 -0
  2. package/lib/commonjs/modules/bt-device/constants/device-model.js.map +1 -0
  3. package/lib/commonjs/modules/bt-device/constants/supported-devices.js +21 -1
  4. package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
  5. package/lib/commonjs/modules/bt-device/hooks/use-supported-devices.js +16 -0
  6. package/lib/commonjs/modules/bt-device/hooks/use-supported-devices.js.map +1 -0
  7. package/lib/commonjs/modules/bt-device/index.js +117 -0
  8. package/lib/commonjs/modules/bt-device/index.js.map +1 -1
  9. package/lib/commonjs/modules/bt-device/types/device-kind.js +2 -0
  10. package/lib/commonjs/modules/bt-device/types/device-kind.js.map +1 -0
  11. package/lib/commonjs/modules/bt-device/utils/device-query.js +57 -0
  12. package/lib/commonjs/modules/bt-device/utils/device-query.js.map +1 -0
  13. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +3 -1
  14. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  15. package/lib/commonjs/modules/bt-management/constants/blood-pressure-translated-exception-map.js +2 -1
  16. package/lib/commonjs/modules/bt-management/constants/blood-pressure-translated-exception-map.js.map +1 -1
  17. package/lib/commonjs/modules/bt-management/constants/measurement-feedback.js +25 -0
  18. package/lib/commonjs/modules/bt-management/constants/measurement-feedback.js.map +1 -0
  19. package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js +8 -7
  20. package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js.map +1 -1
  21. package/lib/commonjs/modules/bt-management/hooks/use-bt-devices.js +41 -0
  22. package/lib/commonjs/modules/bt-management/hooks/use-bt-devices.js.map +1 -0
  23. package/lib/commonjs/modules/bt-management/hooks/use-open-series.js +18 -0
  24. package/lib/commonjs/modules/bt-management/hooks/use-open-series.js.map +1 -0
  25. package/lib/commonjs/modules/bt-management/hooks/use-queued-results.js +15 -0
  26. package/lib/commonjs/modules/bt-management/hooks/use-queued-results.js.map +1 -0
  27. package/lib/commonjs/modules/bt-management/index.js +60 -0
  28. package/lib/commonjs/modules/bt-management/index.js.map +1 -1
  29. package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js +9 -7
  30. package/lib/commonjs/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -1
  31. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +45 -3
  32. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
  33. package/lib/commonjs/modules/bt-management/services/bt-manager.js +30 -3
  34. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  35. package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js +2 -1
  36. package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
  37. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +13 -12
  38. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  39. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +3 -1
  40. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
  41. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +4 -3
  42. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  43. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +10 -1
  44. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  45. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +6 -0
  46. package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  47. package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js +4 -3
  48. package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
  49. package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js +2 -1
  50. package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
  51. package/lib/commonjs/modules/bt-management/services/series-recorder.js +176 -0
  52. package/lib/commonjs/modules/bt-management/services/series-recorder.js.map +1 -0
  53. package/lib/commonjs/modules/bt-management/services/series-slots.js +93 -0
  54. package/lib/commonjs/modules/bt-management/services/series-slots.js.map +1 -0
  55. package/lib/commonjs/modules/bt-management/types/measurement-series.js +6 -0
  56. package/lib/commonjs/modules/bt-management/types/measurement-series.js.map +1 -0
  57. package/lib/commonjs/modules/data-sync/constants.js +14 -1
  58. package/lib/commonjs/modules/data-sync/constants.js.map +1 -1
  59. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +6 -5
  60. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  61. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +10 -7
  62. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
  63. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +10 -4
  64. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  65. package/lib/commonjs/modules/data-sync/types/health-data.js +5 -1
  66. package/lib/commonjs/modules/data-sync/types/health-data.js.map +1 -1
  67. package/lib/commonjs/modules/data-sync/types/health-sync-keys.js.map +1 -1
  68. package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js +19 -5
  69. package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
  70. package/lib/commonjs/modules/data-sync/utils/fhir-systems.js +4 -1
  71. package/lib/commonjs/modules/data-sync/utils/fhir-systems.js.map +1 -1
  72. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +10 -5
  73. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +1 -1
  74. package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js +18 -12
  75. package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
  76. package/lib/commonjs/modules/data-sync/utils/get-latest-valid-start-date.js +6 -1
  77. package/lib/commonjs/modules/data-sync/utils/get-latest-valid-start-date.js.map +1 -1
  78. package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +4 -0
  79. package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
  80. package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js +3 -2
  81. package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
  82. package/lib/commonjs/modules/data-sync/utils/health-connect-series.js +101 -0
  83. package/lib/commonjs/modules/data-sync/utils/health-connect-series.js.map +1 -0
  84. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +44 -0
  85. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -0
  86. package/lib/commonjs/modules/data-sync/utils/hourly-series.js +57 -0
  87. package/lib/commonjs/modules/data-sync/utils/hourly-series.js.map +1 -0
  88. package/lib/commonjs/modules/data-sync/utils/replaces-saved-observation.js +13 -0
  89. package/lib/commonjs/modules/data-sync/utils/replaces-saved-observation.js.map +1 -0
  90. package/lib/module/modules/bt-device/constants/device-model.js +74 -0
  91. package/lib/module/modules/bt-device/constants/device-model.js.map +1 -0
  92. package/lib/module/modules/bt-device/constants/supported-devices.js +21 -1
  93. package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
  94. package/lib/module/modules/bt-device/hooks/use-supported-devices.js +12 -0
  95. package/lib/module/modules/bt-device/hooks/use-supported-devices.js.map +1 -0
  96. package/lib/module/modules/bt-device/index.js +4 -0
  97. package/lib/module/modules/bt-device/index.js.map +1 -1
  98. package/lib/module/modules/bt-device/types/device-kind.js +2 -0
  99. package/lib/module/modules/bt-device/types/device-kind.js.map +1 -0
  100. package/lib/module/modules/bt-device/utils/device-query.js +50 -0
  101. package/lib/module/modules/bt-device/utils/device-query.js.map +1 -0
  102. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +3 -1
  103. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  104. package/lib/module/modules/bt-management/constants/blood-pressure-translated-exception-map.js +2 -1
  105. package/lib/module/modules/bt-management/constants/blood-pressure-translated-exception-map.js.map +1 -1
  106. package/lib/module/modules/bt-management/constants/measurement-feedback.js +22 -0
  107. package/lib/module/modules/bt-management/constants/measurement-feedback.js.map +1 -0
  108. package/lib/module/modules/bt-management/hooks/use-bt-device.js +9 -8
  109. package/lib/module/modules/bt-management/hooks/use-bt-device.js.map +1 -1
  110. package/lib/module/modules/bt-management/hooks/use-bt-devices.js +37 -0
  111. package/lib/module/modules/bt-management/hooks/use-bt-devices.js.map +1 -0
  112. package/lib/module/modules/bt-management/hooks/use-open-series.js +13 -0
  113. package/lib/module/modules/bt-management/hooks/use-open-series.js.map +1 -0
  114. package/lib/module/modules/bt-management/hooks/use-queued-results.js +10 -0
  115. package/lib/module/modules/bt-management/hooks/use-queued-results.js.map +1 -0
  116. package/lib/module/modules/bt-management/index.js +5 -0
  117. package/lib/module/modules/bt-management/index.js.map +1 -1
  118. package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js +9 -7
  119. package/lib/module/modules/bt-management/services/background-sync/background-service-uuids.js.map +1 -1
  120. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +46 -3
  121. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
  122. package/lib/module/modules/bt-management/services/bt-manager.js +30 -3
  123. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  124. package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js +2 -1
  125. package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
  126. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +13 -12
  127. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  128. package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +3 -1
  129. package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
  130. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +4 -3
  131. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  132. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +10 -1
  133. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  134. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +6 -0
  135. package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
  136. package/lib/module/modules/bt-management/services/devices/f4/f4.device.js +4 -3
  137. package/lib/module/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
  138. package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js +2 -1
  139. package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
  140. package/lib/module/modules/bt-management/services/series-recorder.js +173 -0
  141. package/lib/module/modules/bt-management/services/series-recorder.js.map +1 -0
  142. package/lib/module/modules/bt-management/services/series-slots.js +85 -0
  143. package/lib/module/modules/bt-management/services/series-slots.js.map +1 -0
  144. package/lib/module/modules/bt-management/types/measurement-series.js +4 -0
  145. package/lib/module/modules/bt-management/types/measurement-series.js.map +1 -0
  146. package/lib/module/modules/data-sync/constants.js +14 -1
  147. package/lib/module/modules/data-sync/constants.js.map +1 -1
  148. package/lib/module/modules/data-sync/services/base-health-sync-service.js +6 -5
  149. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  150. package/lib/module/modules/data-sync/services/managers/data-processor.js +11 -8
  151. package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
  152. package/lib/module/modules/data-sync/services/managers/storage-manager.js +10 -4
  153. package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  154. package/lib/module/modules/data-sync/types/health-data.js +6 -1
  155. package/lib/module/modules/data-sync/types/health-data.js.map +1 -1
  156. package/lib/module/modules/data-sync/types/health-sync-keys.js.map +1 -1
  157. package/lib/module/modules/data-sync/utils/convert-generic-health-data.js +19 -6
  158. package/lib/module/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
  159. package/lib/module/modules/data-sync/utils/fhir-systems.js +4 -1
  160. package/lib/module/modules/data-sync/utils/fhir-systems.js.map +1 -1
  161. package/lib/module/modules/data-sync/utils/generate-observation-entry.js +10 -5
  162. package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +1 -1
  163. package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js +16 -11
  164. package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
  165. package/lib/module/modules/data-sync/utils/get-latest-valid-start-date.js +7 -2
  166. package/lib/module/modules/data-sync/utils/get-latest-valid-start-date.js.map +1 -1
  167. package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +4 -0
  168. package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
  169. package/lib/module/modules/data-sync/utils/get-samples-from-health.js +3 -2
  170. package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
  171. package/lib/module/modules/data-sync/utils/health-connect-series.js +97 -0
  172. package/lib/module/modules/data-sync/utils/health-connect-series.js.map +1 -0
  173. package/lib/module/modules/data-sync/utils/healthkit-series.js +40 -0
  174. package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -0
  175. package/lib/module/modules/data-sync/utils/hourly-series.js +52 -0
  176. package/lib/module/modules/data-sync/utils/hourly-series.js.map +1 -0
  177. package/lib/module/modules/data-sync/utils/replaces-saved-observation.js +8 -0
  178. package/lib/module/modules/data-sync/utils/replaces-saved-observation.js.map +1 -0
  179. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-model.d.ts +32 -0
  180. package/lib/typescript/commonjs/src/modules/bt-device/constants/device-model.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts +18 -1
  182. package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/src/modules/bt-device/hooks/use-supported-devices.d.ts +9 -0
  184. package/lib/typescript/commonjs/src/modules/bt-device/hooks/use-supported-devices.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts +5 -0
  186. package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/src/modules/bt-device/types/device-kind.d.ts +16 -0
  188. package/lib/typescript/commonjs/src/modules/bt-device/types/device-kind.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/src/modules/bt-device/utils/device-query.d.ts +49 -0
  190. package/lib/typescript/commonjs/src/modules/bt-device/utils/device-query.d.ts.map +1 -0
  191. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/src/modules/bt-management/constants/blood-pressure-translated-exception-map.d.ts.map +1 -1
  193. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-feedback.d.ts +21 -0
  194. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-feedback.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts +5 -4
  196. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -1
  197. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-devices.d.ts +24 -0
  198. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-devices.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-open-series.d.ts +12 -0
  200. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-open-series.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-queued-results.d.ts +10 -0
  202. package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-queued-results.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +5 -0
  204. package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
  205. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts +7 -1
  206. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -1
  207. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +17 -3
  208. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +17 -0
  210. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  211. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
  216. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  218. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
  219. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
  220. package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts +56 -0
  221. package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts.map +1 -0
  222. package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts +36 -0
  223. package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +7 -0
  225. package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  226. package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-series.d.ts +26 -0
  227. package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-series.d.ts.map +1 -0
  228. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +6 -0
  229. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  230. package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts +6 -1
  231. package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
  232. package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts +11 -1
  233. package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts.map +1 -1
  234. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +3 -2
  236. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +2 -1
  238. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts +15 -2
  240. package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts +3 -1
  242. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts +5 -1
  244. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/src/modules/data-sync/utils/fhir-systems.d.ts +3 -1
  246. package/lib/typescript/commonjs/src/modules/data-sync/utils/fhir-systems.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +3 -1
  248. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +1 -1
  249. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-health-record-sync-id.d.ts +9 -6
  250. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-health-record-sync-id.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
  252. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +2 -2
  253. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
  254. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts +5 -2
  255. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
  256. package/lib/typescript/commonjs/src/modules/data-sync/utils/health-connect-series.d.ts +9 -0
  257. package/lib/typescript/commonjs/src/modules/data-sync/utils/health-connect-series.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts +12 -0
  259. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/src/modules/data-sync/utils/hourly-series.d.ts +22 -0
  261. package/lib/typescript/commonjs/src/modules/data-sync/utils/hourly-series.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/src/modules/data-sync/utils/replaces-saved-observation.d.ts +7 -0
  263. package/lib/typescript/commonjs/src/modules/data-sync/utils/replaces-saved-observation.d.ts.map +1 -0
  264. package/lib/typescript/module/src/modules/bt-device/constants/device-model.d.ts +32 -0
  265. package/lib/typescript/module/src/modules/bt-device/constants/device-model.d.ts.map +1 -0
  266. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts +18 -1
  267. package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
  268. package/lib/typescript/module/src/modules/bt-device/hooks/use-supported-devices.d.ts +9 -0
  269. package/lib/typescript/module/src/modules/bt-device/hooks/use-supported-devices.d.ts.map +1 -0
  270. package/lib/typescript/module/src/modules/bt-device/index.d.ts +5 -0
  271. package/lib/typescript/module/src/modules/bt-device/index.d.ts.map +1 -1
  272. package/lib/typescript/module/src/modules/bt-device/types/device-kind.d.ts +16 -0
  273. package/lib/typescript/module/src/modules/bt-device/types/device-kind.d.ts.map +1 -0
  274. package/lib/typescript/module/src/modules/bt-device/utils/device-query.d.ts +49 -0
  275. package/lib/typescript/module/src/modules/bt-device/utils/device-query.d.ts.map +1 -0
  276. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  277. package/lib/typescript/module/src/modules/bt-management/constants/blood-pressure-translated-exception-map.d.ts.map +1 -1
  278. package/lib/typescript/module/src/modules/bt-management/constants/measurement-feedback.d.ts +21 -0
  279. package/lib/typescript/module/src/modules/bt-management/constants/measurement-feedback.d.ts.map +1 -0
  280. package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts +5 -4
  281. package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -1
  282. package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-devices.d.ts +24 -0
  283. package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-devices.d.ts.map +1 -0
  284. package/lib/typescript/module/src/modules/bt-management/hooks/use-open-series.d.ts +12 -0
  285. package/lib/typescript/module/src/modules/bt-management/hooks/use-open-series.d.ts.map +1 -0
  286. package/lib/typescript/module/src/modules/bt-management/hooks/use-queued-results.d.ts +10 -0
  287. package/lib/typescript/module/src/modules/bt-management/hooks/use-queued-results.d.ts.map +1 -0
  288. package/lib/typescript/module/src/modules/bt-management/index.d.ts +5 -0
  289. package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
  290. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts +7 -1
  291. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-service-uuids.d.ts.map +1 -1
  292. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +17 -3
  293. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
  294. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +17 -0
  295. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  296. package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
  297. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  298. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
  299. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  300. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
  301. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  302. package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
  303. package/lib/typescript/module/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
  304. package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
  305. package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts +56 -0
  306. package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts.map +1 -0
  307. package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts +36 -0
  308. package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts.map +1 -0
  309. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +7 -0
  310. package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
  311. package/lib/typescript/module/src/modules/bt-management/types/measurement-series.d.ts +26 -0
  312. package/lib/typescript/module/src/modules/bt-management/types/measurement-series.d.ts.map +1 -0
  313. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +6 -0
  314. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  315. package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts +6 -1
  316. package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
  317. package/lib/typescript/module/src/modules/data-sync/constants.d.ts +11 -1
  318. package/lib/typescript/module/src/modules/data-sync/constants.d.ts.map +1 -1
  319. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  320. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +3 -2
  321. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  322. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +2 -1
  323. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  324. package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts +15 -2
  325. package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts.map +1 -1
  326. package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts +3 -1
  327. package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
  328. package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts +5 -1
  329. package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -1
  330. package/lib/typescript/module/src/modules/data-sync/utils/fhir-systems.d.ts +3 -1
  331. package/lib/typescript/module/src/modules/data-sync/utils/fhir-systems.d.ts.map +1 -1
  332. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +3 -1
  333. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +1 -1
  334. package/lib/typescript/module/src/modules/data-sync/utils/get-health-record-sync-id.d.ts +9 -6
  335. package/lib/typescript/module/src/modules/data-sync/utils/get-health-record-sync-id.d.ts.map +1 -1
  336. package/lib/typescript/module/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
  337. package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +2 -2
  338. package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
  339. package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts +5 -2
  340. package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
  341. package/lib/typescript/module/src/modules/data-sync/utils/health-connect-series.d.ts +9 -0
  342. package/lib/typescript/module/src/modules/data-sync/utils/health-connect-series.d.ts.map +1 -0
  343. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts +12 -0
  344. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -0
  345. package/lib/typescript/module/src/modules/data-sync/utils/hourly-series.d.ts +22 -0
  346. package/lib/typescript/module/src/modules/data-sync/utils/hourly-series.d.ts.map +1 -0
  347. package/lib/typescript/module/src/modules/data-sync/utils/replaces-saved-observation.d.ts +7 -0
  348. package/lib/typescript/module/src/modules/data-sync/utils/replaces-saved-observation.d.ts.map +1 -0
  349. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  /* eslint-disable max-lines */
4
4
 
5
- import { isAggregatedHealthData } from "../types/health-data.js";
5
+ import { isAggregatedHealthData, isSeriesHealthData } from "../types/health-data.js";
6
6
  import { LOINC_SYSTEM, UCUM_SYSTEM } from "./fhir-systems.js";
7
7
  import { getHealthObservationDevice } from "./health-observation-device.js";
8
8
  const HEALTH_RECORD_DATA_EXTENSION = "https://api.ovok.com/fhir/StructureDefinition/health-record-data";
@@ -61,10 +61,13 @@ const convertGenericHealthDataToObservation = async ({
61
61
  ...(device ? {
62
62
  device
63
63
  } : {}),
64
- extension: [{
65
- url: HEALTH_RECORD_DATA_EXTENSION,
66
- valueString: JSON.stringify(data.map(toPortableRecordData))
67
- }],
64
+ // A series' values are its sampled data; copying them into the record extension would store them twice.
65
+ ...(isSeriesHealthData(first) ? {} : {
66
+ extension: [{
67
+ url: HEALTH_RECORD_DATA_EXTENSION,
68
+ valueString: JSON.stringify(data.map(toPortableRecordData))
69
+ }]
70
+ }),
68
71
  ...(interval ? {
69
72
  effectivePeriod: {
70
73
  start: interval.start.toISOString(),
@@ -105,6 +108,16 @@ const toPortableRecordData = value => {
105
108
  };
106
109
  const getMeasurement = (value, mode, interval, typeIdentifier) => {
107
110
  const raw = value;
111
+ if (isSeriesHealthData(value)) {
112
+ return {
113
+ valueSampledData: {
114
+ origin: quantity(0, value.unit, typeIdentifier),
115
+ period: value.periodMs,
116
+ dimensions: 1,
117
+ data: value.values.map(slot => slot === null ? "E" : String(Number(slot.toFixed(2)))).join(" ")
118
+ }
119
+ };
120
+ }
108
121
  if (isAggregatedHealthData(value)) {
109
122
  const number = value.kind === "daily-summary" ? value.average : value.value;
110
123
  return number === undefined ? {
@@ -292,5 +305,5 @@ const getStableObservationId = ({
292
305
  const value = measurement.valueQuantity?.value ?? measurement.valueString ?? "empty";
293
306
  return `health-${[typeIdentifier, code, time, value].join("-").replace(/[^a-zA-Z0-9.-]/g, "-").slice(0, 64)}`;
294
307
  };
295
- export { convertGenericHealthDataToObservation, getUcumCode };
308
+ export { convertGenericHealthDataToObservation, extractValue, getUcumCode };
296
309
  //# sourceMappingURL=convert-generic-health-data.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isAggregatedHealthData","LOINC_SYSTEM","UCUM_SYSTEM","getHealthObservationDevice","HEALTH_RECORD_DATA_EXTENSION","HEALTHKIT_BODY_MASS_INDEX","convertGenericHealthDataToObservation","data","patientId","mode","typeIdentifier","configuredTypeIdentifier","typeIdentifierCodes","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","first","value","String","quantityType","categoryType","recordType","configuredCode","code","configuredSystem","system","isLoincCode","undefined","interval","getInterval","measurement","getMeasurement","metadata","getMetadata","device","observationDate","start","getDate","observation","resourceType","id","getStableObservationId","date","status","subject","reference","coding","display","extension","url","valueString","JSON","stringify","map","toPortableRecordData","effectivePeriod","toISOString","end","effectiveDateTime","component","minimum","unit","maximum","stageComponents","getSleepStageComponents","length","test","OMITTED_RECORD_FIELDS","Set","Date","Array","isArray","Object","fromEntries","entries","filter","key","has","child","raw","number","kind","average","valueQuantity","quantity","getTime","extracted","extractValue","candidates","containerKey","valueKey","fallbackUnit","container","normalizeUnit","scalarCandidates","intervals","item","startValue","startDate","startTime","time","endDate","endTime","endValue","Number","isNaN","Boolean","Math","min","max","parsed","sourceRevision","source","manufacturer","dataOrigin","model","sourceApp","name","recordingMethod","flatMap","stages","duration","isFinite","stage","label","text","getUcumCode","includes","normalized","kilometers","meters","miles","count","steps","kilograms","grams","milligrams","kilocalories","calories","minutes","seconds","beatsPerMinute","bpm","mmHg","degC","UCUM_CODES","join","replace","slice"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-generic-health-data.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isAggregatedHealthData","isSeriesHealthData","LOINC_SYSTEM","UCUM_SYSTEM","getHealthObservationDevice","HEALTH_RECORD_DATA_EXTENSION","HEALTHKIT_BODY_MASS_INDEX","convertGenericHealthDataToObservation","data","patientId","mode","typeIdentifier","configuredTypeIdentifier","typeIdentifierCodes","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","first","value","String","quantityType","categoryType","recordType","configuredCode","code","configuredSystem","system","isLoincCode","undefined","interval","getInterval","measurement","getMeasurement","metadata","getMetadata","device","observationDate","start","getDate","observation","resourceType","id","getStableObservationId","date","status","subject","reference","coding","display","extension","url","valueString","JSON","stringify","map","toPortableRecordData","effectivePeriod","toISOString","end","effectiveDateTime","component","minimum","unit","maximum","stageComponents","getSleepStageComponents","length","test","OMITTED_RECORD_FIELDS","Set","Date","Array","isArray","Object","fromEntries","entries","filter","key","has","child","raw","valueSampledData","origin","quantity","period","periodMs","dimensions","values","slot","Number","toFixed","join","number","kind","average","valueQuantity","getTime","extracted","extractValue","candidates","containerKey","valueKey","fallbackUnit","container","normalizeUnit","scalarCandidates","intervals","item","startValue","startDate","startTime","time","endDate","endTime","endValue","isNaN","Boolean","Math","min","max","parsed","sourceRevision","source","manufacturer","dataOrigin","model","sourceApp","name","recordingMethod","flatMap","stages","duration","isFinite","stage","label","text","getUcumCode","includes","normalized","kilometers","meters","miles","count","steps","kilograms","grams","milligrams","kilocalories","calories","minutes","seconds","beatsPerMinute","bpm","mmHg","degC","UCUM_CODES","replace","slice"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-generic-health-data.ts"],"mappings":"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","ignoreList":[]}
@@ -4,5 +4,8 @@ const LOINC_SYSTEM = "http://loinc.org";
4
4
  const UCUM_SYSTEM = "http://unitsofmeasure.org";
5
5
  const OBSERVATION_SYNC_PROVIDER_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/observation-sync-provider";
6
6
  const OBSERVATION_SYNC_ID_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/observation-sync-id";
7
- export { LOINC_SYSTEM, OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM, UCUM_SYSTEM };
7
+
8
+ /** The source record an imported observation came from, which is all a deletion reports. */
9
+ const OBSERVATION_SYNC_RECORD_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/observation-sync-record";
10
+ export { LOINC_SYSTEM, OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM, OBSERVATION_SYNC_RECORD_SYSTEM, UCUM_SYSTEM };
8
11
  //# sourceMappingURL=fhir-systems.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LOINC_SYSTEM","UCUM_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","OBSERVATION_SYNC_ID_SYSTEM"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/fhir-systems.ts"],"mappings":";;AAAA,MAAMA,YAAY,GAAG,kBAAkB;AACvC,MAAMC,WAAW,GAAG,2BAA2B;AAE/C,MAAMC,gCAAgC,GACpC,yEAAyE;AAE3E,MAAMC,0BAA0B,GAC9B,mEAAmE;AAErE,SACEH,YAAY,EACZG,0BAA0B,EAC1BD,gCAAgC,EAChCD,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["LOINC_SYSTEM","UCUM_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_RECORD_SYSTEM"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/fhir-systems.ts"],"mappings":";;AAAA,MAAMA,YAAY,GAAG,kBAAkB;AACvC,MAAMC,WAAW,GAAG,2BAA2B;AAE/C,MAAMC,gCAAgC,GACpC,yEAAyE;AAE3E,MAAMC,0BAA0B,GAC9B,mEAAmE;;AAErE;AACA,MAAMC,8BAA8B,GAClC,uEAAuE;AAEzE,SACEJ,YAAY,EACZG,0BAA0B,EAC1BD,gCAAgC,EAChCE,8BAA8B,EAC9BH,WAAW","ignoreList":[]}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  import { OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM } from "./fhir-systems.js";
4
+ import { getHealthRecordIdentifier } from "./get-health-record-sync-id.js";
4
5
  import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
6
+ import { replacesSavedObservation } from "./replaces-saved-observation.js";
5
7
  const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
6
8
  const getObservationTime = observation => {
7
9
  if (observation.effectivePeriod) {
@@ -33,11 +35,13 @@ const generateObservationEntry = ({
33
35
  groupedObservationBodies,
34
36
  provider,
35
37
  groupedObservationSyncIds,
38
+ groupedRecordIds,
36
39
  patientId,
37
40
  mode
38
41
  }) => {
39
42
  return groupedObservationBodies.map((observationBodies, groupIndex) => {
40
43
  const fullUrls = observationBodies.map(() => `urn:uuid:${createBundleUuid()}`);
44
+ const recordId = groupedRecordIds?.[groupIndex];
41
45
  return observationBodies.map((observationBody, bodyIndex) => {
42
46
  const syncIdentifier = getStableObservationId({
43
47
  observation: observationBody,
@@ -48,6 +52,7 @@ const generateObservationEntry = ({
48
52
  const fullUrl = fullUrls[bodyIndex];
49
53
  const searchParams = new URLSearchParams();
50
54
  const isDailyAggregate = isDailyAggregateMode(mode);
55
+ const replaces = replacesSavedObservation(mode);
51
56
  const legacySyncIdentifier = isDailyAggregate && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
52
57
  const syncIdentifiers = Array.from(new Set([syncIdentifier, legacySyncIdentifier].filter(Boolean)));
53
58
  searchParams.set("identifier", syncIdentifiers.map(identifier => `${OBSERVATION_SYNC_ID_SYSTEM}|${identifier}`).join(","));
@@ -58,15 +63,15 @@ const generateObservationEntry = ({
58
63
  const observationResource = {
59
64
  ...observationBody
60
65
  };
61
- if (isDailyAggregate) {
66
+ if (replaces) {
62
67
  delete observationResource.id;
63
68
  }
64
69
  return {
65
70
  fullUrl,
66
71
  request: {
67
- method: isDailyAggregate ? "PUT" : "POST",
68
- url: isDailyAggregate ? `Observation?${search}` : "Observation",
69
- ...(isDailyAggregate ? {} : {
72
+ method: replaces ? "PUT" : "POST",
73
+ url: replaces ? `Observation?${search}` : "Observation",
74
+ ...(replaces ? {} : {
70
75
  ifNoneExist: search
71
76
  })
72
77
  },
@@ -78,7 +83,7 @@ const generateObservationEntry = ({
78
83
  }, {
79
84
  system: OBSERVATION_SYNC_ID_SYSTEM,
80
85
  value: syncIdentifier
81
- }],
86
+ }, ...(recordId ? [getHealthRecordIdentifier(provider, recordId)] : [])],
82
87
  device: {
83
88
  ...(observationBody.device ?? {}),
84
89
  identifier: {
@@ -1 +1 @@
1
- {"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","patientId","mode","observationBodies","groupIndex","fullUrls","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","search","observationResource","request","method","url","ifNoneExist","resource","value","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","getHealthRecordIdentifier","isDailyAggregateMode","replacesSavedObservation","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","patientId","mode","observationBodies","groupIndex","fullUrls","recordId","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","replaces","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","search","observationResource","request","method","url","ifNoneExist","resource","value","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- const appleTypesWithoutRecordDiscriminator = new Set(["HKDataTypeIdentifierHeartbeatSeries", "HKStateOfMindTypeIdentifier", "HKWorkoutTypeIdentifier"]);
3
+ import { OBSERVATION_SYNC_RECORD_SYSTEM } from "./fhir-systems.js";
4
4
  const asText = value => {
5
5
  if (value instanceof Date) {
6
6
  return value.toISOString();
@@ -8,6 +8,12 @@ const asText = value => {
8
8
  return typeof value === "string" || typeof value === "number" ? String(value) : undefined;
9
9
  };
10
10
 
11
+ /** The record's own id: `uuid` in Apple Health, `metadata.id` in Health Connect. */
12
+ const getHealthRecordSourceId = record => {
13
+ const healthRecord = record;
14
+ return asText(healthRecord.uuid ?? healthRecord.metadata?.id);
15
+ };
16
+
11
17
  /**
12
18
  * Builds an import identity from the source record's type and interval.
13
19
  * Values are deliberately excluded so an updated daily total replaces the
@@ -16,7 +22,7 @@ const asText = value => {
16
22
  const getHealthRecordSyncId = (record, measurementTypeKey) => {
17
23
  const healthRecord = record;
18
24
  const type = asText(healthRecord.quantityType ?? healthRecord.categoryType ?? healthRecord.correlationType ?? healthRecord.recordType) ?? measurementTypeKey;
19
- const sourceId = asText(healthRecord.uuid ?? healthRecord.metadata?.id);
25
+ const sourceId = getHealthRecordSourceId(record);
20
26
  if (sourceId) {
21
27
  return `${type}:${sourceId}`;
22
28
  }
@@ -33,14 +39,13 @@ const getHealthRecordSyncId = (record, measurementTypeKey) => {
33
39
  };
34
40
 
35
41
  /**
36
- * Health Connect deletion events contain only the source ID. Its imported
37
- * Observation identity therefore uses the measurement key (the wrapper's
38
- * returned record omits RecordType); these Apple sample families likewise
39
- * have no discriminator on the sample object.
42
+ * The identifier of every observation imported from a source record. A deletion
43
+ * reports only the record's id, so the import marks its observations with this
44
+ * and the deletion looks them up by it.
40
45
  */
41
- const getHealthRecordDeletionSyncId = (typeIdentifier, recordId, measurementTypeKey, provider) => {
42
- const type = provider === "android-health-connect" || provider === "apple-health" && appleTypesWithoutRecordDiscriminator.has(typeIdentifier) ? measurementTypeKey : typeIdentifier;
43
- return `${type}:${recordId}`;
44
- };
45
- export { getHealthRecordDeletionSyncId, getHealthRecordSyncId };
46
+ const getHealthRecordIdentifier = (provider, recordId) => ({
47
+ system: OBSERVATION_SYNC_RECORD_SYSTEM,
48
+ value: `${provider}:${recordId}`
49
+ });
50
+ export { getHealthRecordIdentifier, getHealthRecordSourceId, getHealthRecordSyncId };
46
51
  //# sourceMappingURL=get-health-record-sync-id.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["appleTypesWithoutRecordDiscriminator","Set","asText","value","Date","toISOString","String","undefined","getHealthRecordSyncId","record","measurementTypeKey","healthRecord","type","quantityType","categoryType","correlationType","recordType","sourceId","uuid","metadata","id","start","startDate","startTime","end","endDate","endTime","time","getHealthRecordDeletionSyncId","typeIdentifier","recordId","provider","has"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-health-record-sync-id.ts"],"mappings":";;AAcA,MAAMA,oCAAoC,GAAG,IAAIC,GAAG,CAAC,CACnD,qCAAqC,EACrC,6BAA6B,EAC7B,yBAAyB,CAC1B,CAAC;AAEF,MAAMC,MAAM,GAAIC,KAAc,IAAyB;EACrD,IAAIA,KAAK,YAAYC,IAAI,EAAE;IACzB,OAAOD,KAAK,CAACE,WAAW,CAAC,CAAC;EAC5B;EAEA,OAAO,OAAOF,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GACzDG,MAAM,CAACH,KAAK,CAAC,GACbI,SAAS;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAGA,CAC5BC,MAAe,EACfC,kBAA0B,KACH;EACvB,MAAMC,YAAY,GAAGF,MAA0B;EAE/C,MAAMG,IAAI,GACRV,MAAM,CACJS,YAAY,CAACE,YAAY,IACvBF,YAAY,CAACG,YAAY,IACzBH,YAAY,CAACI,eAAe,IAC5BJ,YAAY,CAACK,UACjB,CAAC,IAAIN,kBAAkB;EAEzB,MAAMO,QAAQ,GAAGf,MAAM,CAACS,YAAY,CAACO,IAAI,IAAIP,YAAY,CAACQ,QAAQ,EAAEC,EAAE,CAAC;EAEvE,IAAIH,QAAQ,EAAE;IACZ,OAAO,GAAGL,IAAI,IAAIK,QAAQ,EAAE;EAC9B;EAEA,MAAMI,KAAK,GAAGnB,MAAM,CAACS,YAAY,CAACW,SAAS,IAAIX,YAAY,CAACY,SAAS,CAAC;EACtE,MAAMC,GAAG,GAAGtB,MAAM,CAACS,YAAY,CAACc,OAAO,IAAId,YAAY,CAACe,OAAO,CAAC;EAEhE,IAAIL,KAAK,IAAIG,GAAG,EAAE;IAChB,OAAO,GAAGZ,IAAI,IAAIS,KAAK,IAAIG,GAAG,IAAIA,GAAG,IAAIH,KAAK,EAAE;EAClD;EAEA,MAAMM,IAAI,GAAGzB,MAAM,CAACS,YAAY,CAACgB,IAAI,CAAC;EAEtC,IAAIA,IAAI,EAAE;IACR,OAAO,GAAGf,IAAI,IAAIe,IAAI,EAAE;EAC1B;EAEA,OAAOpB,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMqB,6BAA6B,GAAGA,CACpCC,cAAsB,EACtBC,QAAgB,EAChBpB,kBAA0B,EAC1BqB,QAAmD,KACxC;EACX,MAAMnB,IAAI,GACRmB,QAAQ,KAAK,wBAAwB,IACpCA,QAAQ,KAAK,cAAc,IAC1B/B,oCAAoC,CAACgC,GAAG,CAACH,cAAc,CAAE,GACvDnB,kBAAkB,GAClBmB,cAAc;EAEpB,OAAO,GAAGjB,IAAI,IAAIkB,QAAQ,EAAE;AAC9B,CAAC;AAED,SAASF,6BAA6B,EAAEpB,qBAAqB","ignoreList":[]}
1
+ {"version":3,"names":["OBSERVATION_SYNC_RECORD_SYSTEM","asText","value","Date","toISOString","String","undefined","getHealthRecordSourceId","record","healthRecord","uuid","metadata","id","getHealthRecordSyncId","measurementTypeKey","type","quantityType","categoryType","correlationType","recordType","sourceId","start","startDate","startTime","end","endDate","endTime","time","getHealthRecordIdentifier","provider","recordId","system"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-health-record-sync-id.ts"],"mappings":";;AAIA,SAASA,8BAA8B,QAAQ,mBAAgB;AAgB/D,MAAMC,MAAM,GAAIC,KAAc,IAAyB;EACrD,IAAIA,KAAK,YAAYC,IAAI,EAAE;IACzB,OAAOD,KAAK,CAACE,WAAW,CAAC,CAAC;EAC5B;EAEA,OAAO,OAAOF,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GACzDG,MAAM,CAACH,KAAK,CAAC,GACbI,SAAS;AACf,CAAC;;AAED;AACA,MAAMC,uBAAuB,GAAIC,MAAe,IAAyB;EACvE,MAAMC,YAAY,GAAGD,MAA0B;EAE/C,OAAOP,MAAM,CAACQ,YAAY,CAACC,IAAI,IAAID,YAAY,CAACE,QAAQ,EAAEC,EAAE,CAAC;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAGA,CAC5BL,MAAe,EACfM,kBAA0B,KACH;EACvB,MAAML,YAAY,GAAGD,MAA0B;EAE/C,MAAMO,IAAI,GACRd,MAAM,CACJQ,YAAY,CAACO,YAAY,IACvBP,YAAY,CAACQ,YAAY,IACzBR,YAAY,CAACS,eAAe,IAC5BT,YAAY,CAACU,UACjB,CAAC,IAAIL,kBAAkB;EAEzB,MAAMM,QAAQ,GAAGb,uBAAuB,CAACC,MAAM,CAAC;EAEhD,IAAIY,QAAQ,EAAE;IACZ,OAAO,GAAGL,IAAI,IAAIK,QAAQ,EAAE;EAC9B;EAEA,MAAMC,KAAK,GAAGpB,MAAM,CAACQ,YAAY,CAACa,SAAS,IAAIb,YAAY,CAACc,SAAS,CAAC;EACtE,MAAMC,GAAG,GAAGvB,MAAM,CAACQ,YAAY,CAACgB,OAAO,IAAIhB,YAAY,CAACiB,OAAO,CAAC;EAEhE,IAAIL,KAAK,IAAIG,GAAG,EAAE;IAChB,OAAO,GAAGT,IAAI,IAAIM,KAAK,IAAIG,GAAG,IAAIA,GAAG,IAAIH,KAAK,EAAE;EAClD;EAEA,MAAMM,IAAI,GAAG1B,MAAM,CAACQ,YAAY,CAACkB,IAAI,CAAC;EAEtC,IAAIA,IAAI,EAAE;IACR,OAAO,GAAGZ,IAAI,IAAIY,IAAI,EAAE;EAC1B;EAEA,OAAOrB,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMsB,yBAAyB,GAAGA,CAChCC,QAAwB,EACxBC,QAAgB,MACA;EAChBC,MAAM,EAAE/B,8BAA8B;EACtCE,KAAK,EAAE,GAAG2B,QAAQ,IAAIC,QAAQ;AAChC,CAAC,CAAC;AAEF,SACEF,yBAAyB,EACzBrB,uBAAuB,EACvBM,qBAAqB","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { subDays } from "date-fns";
3
+ import { subDays, subHours } from "date-fns";
4
+ import { DAILY_REREAD_DAYS, SERIES_REREAD_HOURS } from "../constants.js";
4
5
  import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
5
6
  export const getLatestValidStartDate = ({
6
7
  latestObservationDates,
@@ -13,7 +14,11 @@ export const getLatestValidStartDate = ({
13
14
  const latestObservationDate = latestObservationDates.find(latestObservationDate => data.typeIdentifiers.some(identifier => identifier.code === latestObservationDate.code))?.date;
14
15
  let latestValidStartDate;
15
16
  const latestDate = latestObservationDate ? new Date(latestObservationDate) : undefined;
16
- const dates = [latestDate && (isDailyAggregateMode(mode) || isDailyAggregateMode(data.mode)) ? subDays(latestDate, 1) : latestDate, data.minDate].filter(Boolean);
17
+ const resolvedMode = mode ?? data.mode;
18
+
19
+ // A total or an hour of a series already imported may still change, so it is read again.
20
+ const rereadFrom = date => resolvedMode === "series" ? subHours(date, SERIES_REREAD_HOURS) : isDailyAggregateMode(mode) || isDailyAggregateMode(data.mode) ? subDays(date, DAILY_REREAD_DAYS) : date;
21
+ const dates = [latestDate && rereadFrom(latestDate), data.minDate].filter(Boolean);
17
22
  if (dates.length > 0) {
18
23
  latestValidStartDate = new Date(Math.max(...dates.map(date => date.getTime())));
19
24
  }
@@ -1 +1 @@
1
- {"version":3,"names":["subDays","isDailyAggregateMode","getLatestValidStartDate","latestObservationDates","data","mode","undefined","latestObservationDate","find","typeIdentifiers","some","identifier","code","date","latestValidStartDate","latestDate","Date","dates","minDate","filter","Boolean","length","Math","max","map","getTime"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-latest-valid-start-date.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,UAAU;AAMlC,SAASC,oBAAoB,QAAQ,8BAA2B;AAYhE,OAAO,MAAMC,uBAAuB,GAAGA,CAAC;EACtCC,sBAAsB;EACtBC,IAAI;EACJC;AAC4B,CAAC,KAAK;EAClC,IAAI,CAACD,IAAI,EAAE;IACT,OAAOE,SAAS;EAClB;EAEA,MAAMC,qBAAqB,GAAGJ,sBAAsB,CAACK,IAAI,CACtDD,qBAAqB,IACpBH,IAAI,CAACK,eAAe,CAACC,IAAI,CACtBC,UAAU,IAAKA,UAAU,CAACC,IAAI,KAAKL,qBAAqB,CAACK,IAC5D,CACJ,CAAC,EAAEC,IAAI;EAEP,IAAIC,oBAAsC;EAE1C,MAAMC,UAAU,GAAGR,qBAAqB,GACpC,IAAIS,IAAI,CAACT,qBAAqB,CAAC,GAC/BD,SAAS;EAEb,MAAMW,KAAK,GAAG,CACZF,UAAU,KACTd,oBAAoB,CAACI,IAAI,CAAC,IAAIJ,oBAAoB,CAACG,IAAI,CAACC,IAAI,CAAC,CAAC,GAC3DL,OAAO,CAACe,UAAU,EAAE,CAAC,CAAC,GACtBA,UAAU,EACdX,IAAI,CAACc,OAAO,CACb,CAACC,MAAM,CAACC,OAAO,CAAW;EAE3B,IAAIH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;IACpBP,oBAAoB,GAAG,IAAIE,IAAI,CAC7BM,IAAI,CAACC,GAAG,CAAC,GAAGN,KAAK,CAACO,GAAG,CAAEX,IAAI,IAAKA,IAAI,CAACY,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;EACH;EAEA,OAAOX,oBAAoB;AAC7B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["subDays","subHours","DAILY_REREAD_DAYS","SERIES_REREAD_HOURS","isDailyAggregateMode","getLatestValidStartDate","latestObservationDates","data","mode","undefined","latestObservationDate","find","typeIdentifiers","some","identifier","code","date","latestValidStartDate","latestDate","Date","resolvedMode","rereadFrom","dates","minDate","filter","Boolean","length","Math","max","map","getTime"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-latest-valid-start-date.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,UAAU;AAE5C,SAASC,iBAAiB,EAAEC,mBAAmB,QAAQ,iBAAc;AAKrE,SAASC,oBAAoB,QAAQ,8BAA2B;AAYhE,OAAO,MAAMC,uBAAuB,GAAGA,CAAC;EACtCC,sBAAsB;EACtBC,IAAI;EACJC;AAC4B,CAAC,KAAK;EAClC,IAAI,CAACD,IAAI,EAAE;IACT,OAAOE,SAAS;EAClB;EAEA,MAAMC,qBAAqB,GAAGJ,sBAAsB,CAACK,IAAI,CACtDD,qBAAqB,IACpBH,IAAI,CAACK,eAAe,CAACC,IAAI,CACtBC,UAAU,IAAKA,UAAU,CAACC,IAAI,KAAKL,qBAAqB,CAACK,IAC5D,CACJ,CAAC,EAAEC,IAAI;EAEP,IAAIC,oBAAsC;EAE1C,MAAMC,UAAU,GAAGR,qBAAqB,GACpC,IAAIS,IAAI,CAACT,qBAAqB,CAAC,GAC/BD,SAAS;EAEb,MAAMW,YAAY,GAAGZ,IAAI,IAAID,IAAI,CAACC,IAAI;;EAEtC;EACA,MAAMa,UAAU,GAAIL,IAAU,IAC5BI,YAAY,KAAK,QAAQ,GACrBnB,QAAQ,CAACe,IAAI,EAAEb,mBAAmB,CAAC,GACnCC,oBAAoB,CAACI,IAAI,CAAC,IAAIJ,oBAAoB,CAACG,IAAI,CAACC,IAAI,CAAC,GAC3DR,OAAO,CAACgB,IAAI,EAAEd,iBAAiB,CAAC,GAChCc,IAAI;EAEZ,MAAMM,KAAK,GAAG,CAACJ,UAAU,IAAIG,UAAU,CAACH,UAAU,CAAC,EAAEX,IAAI,CAACgB,OAAO,CAAC,CAACC,MAAM,CAACC,OAAO,CAAW;EAE5F,IAAIH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;IACpBT,oBAAoB,GAAG,IAAIE,IAAI,CAC7BQ,IAAI,CAACC,GAAG,CAAC,GAAGN,KAAK,CAACO,GAAG,CAAEb,IAAI,IAAKA,IAAI,CAACc,OAAO,CAAC,CAAC,CAAC,CACjD,CAAC;EACH;EAEA,OAAOb,oBAAoB;AAC7B,CAAC","ignoreList":[]}
@@ -5,6 +5,7 @@
5
5
  import { startOfDay, subDays } from "date-fns";
6
6
  import { aggregateGroupByPeriod, getChanges, readRecords } from "react-native-health-connect";
7
7
  import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE, DEFAULT_SYNC_LOOKBACK_DAYS } from "../constants.js";
8
+ import { getHealthConnectSeries } from "./health-connect-series.js";
8
9
  import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
9
10
  import { syncWindowStart } from "./sync-window-start.js";
10
11
  export const getRecordsFromHealthConnect = async ({
@@ -17,6 +18,9 @@ export const getRecordsFromHealthConnect = async ({
17
18
  if (isDailyAggregateMode(mode)) {
18
19
  return getDailyAggregates(typeIdentifier, mode, _startDate);
19
20
  }
21
+ if (mode === "series") {
22
+ return getHealthConnectSeries(typeIdentifier, syncWindowStart(_startDate));
23
+ }
20
24
  const savedAnchor = decodeAnchor(anchor);
21
25
  if (savedAnchor?.phase === "changes") {
22
26
  const changes = await getChanges({
@@ -1 +1 @@
1
- {"version":3,"names":["startOfDay","subDays","aggregateGroupByPeriod","getChanges","readRecords","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","DEFAULT_SYNC_LOOKBACK_DAYS","isDailyAggregateMode","syncWindowStart","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","anchor","mode","getDailyAggregates","savedAnchor","decodeAnchor","phase","changes","changesToken","recordTypes","changesTokenExpired","data","upsertionChanges","map","record","deletionChanges","length","deletedRecordIds","recordId","hasMore","encodeAnchor","version","nextChangesToken","baseline","readSnapshot","pageToken","undefined","snapshotAnchor","endDate","Date","toISOString","resolvedStartDate","result","timeRangeFilter","operator","startTime","endTime","pageSize","nextAnchor","records","Boolean","JSON","stringify","startsWith","parsed","parse","aggregateType","today","groups","recordType","timeRangeSlicer","period","flatMap","group","end","measurement","aggregateMeasurement","dataOrigins","kind","sourceApp","average","numberValue","BPM_AVG","unit","minimum","BPM_MIN","maximum","BPM_MAX","value","COUNT_TOTAL","nestedNumber","DISTANCE","ACTIVE_CALORIES_TOTAL","FLOORS_CLIMBED_TOTAL","scale","EXERCISE_DURATION_TOTAL","Number","isFinite","key","factor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-records-from-health-connect.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["startOfDay","subDays","aggregateGroupByPeriod","getChanges","readRecords","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","DEFAULT_SYNC_LOOKBACK_DAYS","getHealthConnectSeries","isDailyAggregateMode","syncWindowStart","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","anchor","mode","getDailyAggregates","savedAnchor","decodeAnchor","phase","changes","changesToken","recordTypes","changesTokenExpired","data","upsertionChanges","map","record","deletionChanges","length","deletedRecordIds","recordId","hasMore","encodeAnchor","version","nextChangesToken","baseline","readSnapshot","pageToken","undefined","snapshotAnchor","endDate","Date","toISOString","resolvedStartDate","result","timeRangeFilter","operator","startTime","endTime","pageSize","nextAnchor","records","Boolean","JSON","stringify","startsWith","parsed","parse","aggregateType","today","groups","recordType","timeRangeSlicer","period","flatMap","group","end","measurement","aggregateMeasurement","dataOrigins","kind","sourceApp","average","numberValue","BPM_AVG","unit","minimum","BPM_MIN","maximum","BPM_MAX","value","COUNT_TOTAL","nestedNumber","DISTANCE","ACTIVE_CALORIES_TOTAL","FLOORS_CLIMBED_TOTAL","scale","EXERCISE_DURATION_TOTAL","Number","isFinite","key","factor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-records-from-health-connect.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ import { addDays, startOfDay } from "date-fns";
5
5
  import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
6
6
  import { healthUnitFor } from "./health-units.js";
7
7
  import { isCategoryIdentifier, isCorrelationIdentifier, isQuantityIdentifier, UnsupportedHealthKitDataError, unsupportedHealthKitTypeReason } from "./healthkit-data-types.js";
8
+ import { getHealthKitSeries } from "./healthkit-series.js";
8
9
  import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
9
10
  import { syncWindowStart } from "./sync-window-start.js";
10
11
  const getSamplesFromHealth = async ({
@@ -16,11 +17,11 @@ const getSamplesFromHealth = async ({
16
17
  }) => {
17
18
  const startDate = syncWindowStart(_startDate);
18
19
  const endDate = new Date();
19
- if (isDailyAggregateMode(mode)) {
20
+ if (isDailyAggregateMode(mode) || mode === "series") {
20
21
  if (!isQuantityIdentifier(typeIdentifier)) {
21
22
  throw new UnsupportedHealthKitDataError(typeIdentifier, `HealthKit ${mode} mode is only supported for quantity samples.`);
22
23
  }
23
- return getDailyStatistics(typeIdentifier, mode, startDate, endDate);
24
+ return mode === "series" ? getHealthKitSeries(typeIdentifier, startDate) : getDailyStatistics(typeIdentifier, mode, startDate, endDate);
24
25
  }
25
26
  const options = {
26
27
  from: startDate,
@@ -1 +1 @@
1
- {"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","startOfDay","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","healthUnitFor","isCategoryIdentifier","isCorrelationIdentifier","isQuantityIdentifier","UnsupportedHealthKitDataError","unsupportedHealthKitTypeReason","isDailyAggregateMode","syncWindowStart","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","endDate","Date","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","data","undefined","toAnchoredResult","queryHeartbeatSeriesSamplesWithAnchor","queryCategorySamplesWithAnchor","samples","queryCorrelationSamples","queryStateOfMindSamples","ascending","queryQuantitySamplesWithAnchor","unit","deletedRecordIds","recordIds","map","uuid","length","deletedSamples","newAnchor","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","startOfDay","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","healthUnitFor","isCategoryIdentifier","isCorrelationIdentifier","isQuantityIdentifier","UnsupportedHealthKitDataError","unsupportedHealthKitTypeReason","getHealthKitSeries","isDailyAggregateMode","syncWindowStart","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","endDate","Date","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","data","undefined","toAnchoredResult","queryHeartbeatSeriesSamplesWithAnchor","queryCategorySamplesWithAnchor","samples","queryCorrelationSamples","queryStateOfMindSamples","ascending","queryQuantitySamplesWithAnchor","unit","deletedRecordIds","recordIds","map","uuid","length","deletedSamples","newAnchor","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ import { aggregateGroupByDuration, readRecords } from "react-native-health-connect";
4
+ import { SERIES_SLOT_MS } from "../constants.js";
5
+ import { extractValue } from "./convert-generic-health-data.js";
6
+ import { finishedHourWindows, toHourlySeries } from "./hourly-series.js";
7
+ const HEART_RATE_UNIT = "count/min";
8
+ const between = (from, to) => ({
9
+ operator: "between",
10
+ startTime: from.toISOString(),
11
+ endTime: to.toISOString()
12
+ });
13
+
14
+ /** Health Connect's own average a minute, which follows the user's app priority where sources overlap. */
15
+ const heartRateMinutes = async (from, to) => {
16
+ const groups = await aggregateGroupByDuration({
17
+ recordType: "HeartRate",
18
+ timeRangeFilter: between(from, to),
19
+ timeRangeSlicer: {
20
+ duration: "MINUTES",
21
+ length: 1
22
+ }
23
+ });
24
+ return groups.flatMap(group => {
25
+ const average = group.result.BPM_AVG;
26
+ return typeof average === "number" && Number.isFinite(average) ? [{
27
+ start: new Date(group.startTime),
28
+ value: average
29
+ }] : [];
30
+ });
31
+ };
32
+
33
+ /** Records of a type Health Connect doesn't average, such as SpO₂ and respiratory rate, averaged a minute here. */
34
+ const recordMinutes = async (typeIdentifier, from, to) => {
35
+ const sums = new Map();
36
+ let unit;
37
+ let pageToken;
38
+ do {
39
+ const page = await readRecords(typeIdentifier, {
40
+ timeRangeFilter: between(from, to),
41
+ pageToken
42
+ });
43
+ page.records.forEach(record => {
44
+ const raw = record;
45
+ const measured = extractValue(raw);
46
+ const time = raw.time ?? raw.startTime;
47
+ if (!measured || typeof time !== "string") {
48
+ return;
49
+ }
50
+ const minute = Math.floor(new Date(time).getTime() / SERIES_SLOT_MS) * SERIES_SLOT_MS;
51
+ const sum = sums.get(minute) ?? {
52
+ total: 0,
53
+ count: 0
54
+ };
55
+ sums.set(minute, {
56
+ total: sum.total + measured.value,
57
+ count: sum.count + 1
58
+ });
59
+ unit ??= measured.unit;
60
+ });
61
+ pageToken = page.pageToken;
62
+ } while (pageToken);
63
+ return {
64
+ unit,
65
+ minutes: [...sums.entries()].map(([minute, {
66
+ total,
67
+ count
68
+ }]) => ({
69
+ start: new Date(minute),
70
+ value: total / count
71
+ }))
72
+ };
73
+ };
74
+
75
+ /** The finished hours from `startDate`, one `series` item an hour, read a day at a time. */
76
+ const getHealthConnectSeries = async (typeIdentifier, startDate) => {
77
+ const minutes = [];
78
+ let unit = typeIdentifier === "HeartRate" ? HEART_RATE_UNIT : undefined;
79
+ for (const {
80
+ from,
81
+ to
82
+ } of finishedHourWindows(startDate)) {
83
+ if (typeIdentifier === "HeartRate") {
84
+ minutes.push(...(await heartRateMinutes(from, to)));
85
+ } else {
86
+ const read = await recordMinutes(typeIdentifier, from, to);
87
+ minutes.push(...read.minutes);
88
+ unit ??= read.unit;
89
+ }
90
+ }
91
+ return {
92
+ data: toHourlySeries(typeIdentifier, unit ?? "1", minutes),
93
+ anchor: undefined
94
+ };
95
+ };
96
+ export { getHealthConnectSeries };
97
+ //# sourceMappingURL=health-connect-series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["aggregateGroupByDuration","readRecords","SERIES_SLOT_MS","extractValue","finishedHourWindows","toHourlySeries","HEART_RATE_UNIT","between","from","to","operator","startTime","toISOString","endTime","heartRateMinutes","groups","recordType","timeRangeFilter","timeRangeSlicer","duration","length","flatMap","group","average","result","BPM_AVG","Number","isFinite","start","Date","value","recordMinutes","typeIdentifier","sums","Map","unit","pageToken","page","records","forEach","record","raw","measured","time","minute","Math","floor","getTime","sum","get","total","count","set","minutes","entries","map","getHealthConnectSeries","startDate","undefined","push","read","data","anchor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/health-connect-series.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ import Healthkit, { HKStatisticsOptions } from "@kingstinct/react-native-healthkit";
4
+ import { SERIES_SLOT_MS } from "../constants.js";
5
+ import { healthUnitFor } from "./health-units.js";
6
+ import { finishedHourWindows, toHourlySeries } from "./hourly-series.js";
7
+
8
+ /**
9
+ * The finished hours from `startDate`, one `series` item an hour, from HealthKit's own average a minute: it follows
10
+ * the user's source priority where a watch and another app both recorded. Read a day at a time.
11
+ */
12
+ const getHealthKitSeries = async (typeIdentifier, startDate) => {
13
+ const unit = healthUnitFor(typeIdentifier);
14
+ const minutes = [];
15
+ for (const {
16
+ from,
17
+ to
18
+ } of finishedHourWindows(startDate)) {
19
+ const statistics = await Healthkit.queryStatisticsCollectionForQuantity(typeIdentifier, [HKStatisticsOptions.discreteAverage], from, {
20
+ minute: 1
21
+ }, from, to, unit);
22
+
23
+ // One statistic per minute from `from`, empty minutes included.
24
+ statistics.forEach((statistic, index) => {
25
+ const value = statistic.averageQuantity?.quantity;
26
+ if (value !== undefined) {
27
+ minutes.push({
28
+ start: new Date(from.getTime() + index * SERIES_SLOT_MS),
29
+ value
30
+ });
31
+ }
32
+ });
33
+ }
34
+ return {
35
+ data: toHourlySeries(typeIdentifier, unit ?? "1", minutes),
36
+ anchor: undefined
37
+ };
38
+ };
39
+ export { getHealthKitSeries };
40
+ //# sourceMappingURL=healthkit-series.js.map