@ovok/native 1.6.2 → 1.6.3

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 (209) hide show
  1. package/lib/commonjs/modules/background-sync/android-background-sync.js.map +1 -1
  2. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js +12 -1
  3. package/lib/commonjs/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -1
  4. package/lib/commonjs/modules/bt-management/components/android-bluetooth-foreground-service.js +12 -1
  5. package/lib/commonjs/modules/bt-management/components/android-bluetooth-foreground-service.js.map +1 -1
  6. package/lib/commonjs/modules/bt-management/components/bluetooth-device-picker.js +108 -39
  7. package/lib/commonjs/modules/bt-management/components/bluetooth-device-picker.js.map +1 -1
  8. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js +15 -7
  9. package/lib/commonjs/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  10. package/lib/commonjs/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  11. package/lib/commonjs/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  12. package/lib/commonjs/modules/data-sync/index.js +11 -0
  13. package/lib/commonjs/modules/data-sync/index.js.map +1 -1
  14. package/lib/commonjs/modules/data-sync/services/android-health-sync-service.js.map +1 -1
  15. package/lib/commonjs/modules/data-sync/services/apple-health-sync-service.js.map +1 -1
  16. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +1 -1
  17. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  18. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +40 -5
  19. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
  20. package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
  21. package/lib/commonjs/modules/data-sync/types/get-data-from-provider-props.js +4 -0
  22. package/lib/commonjs/modules/data-sync/types/get-total-count-props.js +4 -0
  23. package/lib/commonjs/modules/data-sync/types/health-data.js +12 -0
  24. package/lib/commonjs/modules/data-sync/types/health-data.js.map +1 -0
  25. package/lib/commonjs/modules/data-sync/types/health-sync-keys.js +39 -0
  26. package/lib/commonjs/modules/data-sync/types/health-sync-keys.js.map +1 -1
  27. package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js +232 -0
  28. package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js.map +1 -0
  29. package/lib/commonjs/modules/data-sync/utils/convert-records-to-observation.js +27 -10
  30. package/lib/commonjs/modules/data-sync/utils/convert-records-to-observation.js.map +1 -1
  31. package/lib/commonjs/modules/data-sync/utils/convert-samples-to-observation.js +22 -6
  32. package/lib/commonjs/modules/data-sync/utils/convert-samples-to-observation.js.map +1 -1
  33. package/lib/commonjs/modules/data-sync/utils/get-latest-observation-dates-by-code.js.map +1 -1
  34. package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +90 -14
  35. package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
  36. package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js +100 -14
  37. package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
  38. package/lib/commonjs/modules/data-sync/utils/get-total-records-count.js +12 -1
  39. package/lib/commonjs/modules/data-sync/utils/get-total-records-count.js.map +1 -1
  40. package/lib/commonjs/modules/data-sync/utils/get-total-samples-count.js +21 -17
  41. package/lib/commonjs/modules/data-sync/utils/get-total-samples-count.js.map +1 -1
  42. package/lib/commonjs/modules/ui/components/urine-test-result.js +6 -4
  43. package/lib/commonjs/modules/ui/components/urine-test-result.js.map +1 -1
  44. package/lib/module/modules/background-sync/android-background-sync.js.map +1 -1
  45. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js +12 -1
  46. package/lib/module/modules/background-sync/android-bluetooth-foreground-service.js.map +1 -1
  47. package/lib/module/modules/bt-management/components/android-bluetooth-foreground-service.js +12 -1
  48. package/lib/module/modules/bt-management/components/android-bluetooth-foreground-service.js.map +1 -1
  49. package/lib/module/modules/bt-management/components/bluetooth-device-picker.js +109 -41
  50. package/lib/module/modules/bt-management/components/bluetooth-device-picker.js.map +1 -1
  51. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js +15 -7
  52. package/lib/module/modules/bt-management/constants/measurement-field-catalog.js.map +1 -1
  53. package/lib/module/modules/data-sync/components/android/android-health-sync.js.map +1 -1
  54. package/lib/module/modules/data-sync/components/apple/apple-health-sync.js.map +1 -1
  55. package/lib/module/modules/data-sync/index.js +1 -0
  56. package/lib/module/modules/data-sync/index.js.map +1 -1
  57. package/lib/module/modules/data-sync/services/android-health-sync-service.js.map +1 -1
  58. package/lib/module/modules/data-sync/services/apple-health-sync-service.js.map +1 -1
  59. package/lib/module/modules/data-sync/services/base-health-sync-service.js +1 -1
  60. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  61. package/lib/module/modules/data-sync/services/managers/data-processor.js +40 -5
  62. package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
  63. package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
  64. package/lib/module/modules/data-sync/types/get-data-from-provider-props.js +2 -0
  65. package/lib/module/modules/data-sync/types/get-total-count-props.js +2 -0
  66. package/lib/module/modules/data-sync/types/health-data.js +7 -0
  67. package/lib/module/modules/data-sync/types/health-data.js.map +1 -0
  68. package/lib/module/modules/data-sync/types/health-sync-keys.js +38 -1
  69. package/lib/module/modules/data-sync/types/health-sync-keys.js.map +1 -1
  70. package/lib/module/modules/data-sync/utils/convert-generic-health-data.js +227 -0
  71. package/lib/module/modules/data-sync/utils/convert-generic-health-data.js.map +1 -0
  72. package/lib/module/modules/data-sync/utils/convert-records-to-observation.js +28 -11
  73. package/lib/module/modules/data-sync/utils/convert-records-to-observation.js.map +1 -1
  74. package/lib/module/modules/data-sync/utils/convert-samples-to-observation.js +23 -7
  75. package/lib/module/modules/data-sync/utils/convert-samples-to-observation.js.map +1 -1
  76. package/lib/module/modules/data-sync/utils/get-latest-observation-dates-by-code.js.map +1 -1
  77. package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +92 -16
  78. package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
  79. package/lib/module/modules/data-sync/utils/get-samples-from-health.js +100 -14
  80. package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
  81. package/lib/module/modules/data-sync/utils/get-total-records-count.js +12 -1
  82. package/lib/module/modules/data-sync/utils/get-total-records-count.js.map +1 -1
  83. package/lib/module/modules/data-sync/utils/get-total-samples-count.js +20 -16
  84. package/lib/module/modules/data-sync/utils/get-total-samples-count.js.map +1 -1
  85. package/lib/module/modules/ui/components/urine-test-result.js +6 -4
  86. package/lib/module/modules/ui/components/urine-test-result.js.map +1 -1
  87. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts +3 -2
  88. package/lib/typescript/commonjs/src/modules/background-sync/android-background-sync.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/modules/bt-management/components/android-bluetooth-foreground-service.d.ts.map +1 -1
  91. package/lib/typescript/commonjs/src/modules/bt-management/components/bluetooth-device-picker.d.ts +13 -4
  92. package/lib/typescript/commonjs/src/modules/bt-management/components/bluetooth-device-picker.d.ts.map +1 -1
  93. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts +4 -0
  94. package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  95. package/lib/typescript/commonjs/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +1 -0
  98. package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/src/modules/data-sync/services/android-health-sync-service.d.ts +4 -4
  100. package/lib/typescript/commonjs/src/modules/data-sync/services/android-health-sync-service.d.ts.map +1 -1
  101. package/lib/typescript/commonjs/src/modules/data-sync/services/apple-health-sync-service.d.ts +5 -5
  102. package/lib/typescript/commonjs/src/modules/data-sync/services/apple-health-sync-service.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts +1 -3
  104. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +7 -9
  106. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  107. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +6 -6
  108. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +2 -2
  110. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts +2 -2
  112. package/lib/typescript/commonjs/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/src/modules/data-sync/types/convert-data-props.d.ts +6 -2
  114. package/lib/typescript/commonjs/src/modules/data-sync/types/convert-data-props.d.ts.map +1 -1
  115. package/lib/typescript/commonjs/src/modules/data-sync/types/get-data-from-provider-props.d.ts +2 -0
  116. package/lib/typescript/commonjs/src/modules/data-sync/types/get-data-from-provider-props.d.ts.map +1 -1
  117. package/lib/typescript/commonjs/src/modules/data-sync/types/get-total-count-props.d.ts +2 -0
  118. package/lib/typescript/commonjs/src/modules/data-sync/types/get-total-count-props.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts +3 -3
  120. package/lib/typescript/commonjs/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts +14 -0
  122. package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts +19 -1
  124. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts +7 -5
  126. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts +2 -2
  128. package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts +9 -0
  130. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-records-to-observation.d.ts +1 -2
  132. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-records-to-observation.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-samples-to-observation.d.ts +1 -2
  134. package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-samples-to-observation.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-observation-dates-by-code.d.ts +3 -3
  136. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-observation-dates-by-code.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts +2 -2
  138. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +6 -8
  140. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts +20 -4
  142. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-total-records-count.d.ts +1 -1
  144. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-total-records-count.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-total-samples-count.d.ts +3 -8
  146. package/lib/typescript/commonjs/src/modules/data-sync/utils/get-total-samples-count.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/modules/ui/components/urine-test-result.d.ts.map +1 -1
  148. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts +3 -2
  149. package/lib/typescript/module/src/modules/background-sync/android-background-sync.d.ts.map +1 -1
  150. package/lib/typescript/module/src/modules/background-sync/android-bluetooth-foreground-service.d.ts.map +1 -1
  151. package/lib/typescript/module/src/modules/bt-management/components/android-bluetooth-foreground-service.d.ts.map +1 -1
  152. package/lib/typescript/module/src/modules/bt-management/components/bluetooth-device-picker.d.ts +13 -4
  153. package/lib/typescript/module/src/modules/bt-management/components/bluetooth-device-picker.d.ts.map +1 -1
  154. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts +4 -0
  155. package/lib/typescript/module/src/modules/bt-management/constants/measurement-field-catalog.d.ts.map +1 -1
  156. package/lib/typescript/module/src/modules/data-sync/components/android/android-health-sync.d.ts.map +1 -1
  157. package/lib/typescript/module/src/modules/data-sync/components/apple/apple-health-sync.d.ts.map +1 -1
  158. package/lib/typescript/module/src/modules/data-sync/index.d.ts +1 -0
  159. package/lib/typescript/module/src/modules/data-sync/index.d.ts.map +1 -1
  160. package/lib/typescript/module/src/modules/data-sync/services/android-health-sync-service.d.ts +4 -4
  161. package/lib/typescript/module/src/modules/data-sync/services/android-health-sync-service.d.ts.map +1 -1
  162. package/lib/typescript/module/src/modules/data-sync/services/apple-health-sync-service.d.ts +5 -5
  163. package/lib/typescript/module/src/modules/data-sync/services/apple-health-sync-service.d.ts.map +1 -1
  164. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts +1 -3
  165. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  166. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +7 -9
  167. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  168. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +6 -6
  169. package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
  170. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts +2 -2
  171. package/lib/typescript/module/src/modules/data-sync/types/apple-health-authorization-provider-props.d.ts.map +1 -1
  172. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts +2 -2
  173. package/lib/typescript/module/src/modules/data-sync/types/apple-health-sync-props.d.ts.map +1 -1
  174. package/lib/typescript/module/src/modules/data-sync/types/convert-data-props.d.ts +6 -2
  175. package/lib/typescript/module/src/modules/data-sync/types/convert-data-props.d.ts.map +1 -1
  176. package/lib/typescript/module/src/modules/data-sync/types/get-data-from-provider-props.d.ts +2 -0
  177. package/lib/typescript/module/src/modules/data-sync/types/get-data-from-provider-props.d.ts.map +1 -1
  178. package/lib/typescript/module/src/modules/data-sync/types/get-total-count-props.d.ts +2 -0
  179. package/lib/typescript/module/src/modules/data-sync/types/get-total-count-props.d.ts.map +1 -1
  180. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts +3 -3
  181. package/lib/typescript/module/src/modules/data-sync/types/health-authorization-status.d.ts.map +1 -1
  182. package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts +14 -0
  183. package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts.map +1 -0
  184. package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts +19 -1
  185. package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
  186. package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts +7 -5
  187. package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
  188. package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts +2 -2
  189. package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
  190. package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts +9 -0
  191. package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -0
  192. package/lib/typescript/module/src/modules/data-sync/utils/convert-records-to-observation.d.ts +1 -2
  193. package/lib/typescript/module/src/modules/data-sync/utils/convert-records-to-observation.d.ts.map +1 -1
  194. package/lib/typescript/module/src/modules/data-sync/utils/convert-samples-to-observation.d.ts +1 -2
  195. package/lib/typescript/module/src/modules/data-sync/utils/convert-samples-to-observation.d.ts.map +1 -1
  196. package/lib/typescript/module/src/modules/data-sync/utils/get-latest-observation-dates-by-code.d.ts +3 -3
  197. package/lib/typescript/module/src/modules/data-sync/utils/get-latest-observation-dates-by-code.d.ts.map +1 -1
  198. package/lib/typescript/module/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts +2 -2
  199. package/lib/typescript/module/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
  200. package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +6 -8
  201. package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
  202. package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts +20 -4
  203. package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
  204. package/lib/typescript/module/src/modules/data-sync/utils/get-total-records-count.d.ts +1 -1
  205. package/lib/typescript/module/src/modules/data-sync/utils/get-total-records-count.d.ts.map +1 -1
  206. package/lib/typescript/module/src/modules/data-sync/utils/get-total-samples-count.d.ts +3 -8
  207. package/lib/typescript/module/src/modules/data-sync/utils/get-total-samples-count.d.ts.map +1 -1
  208. package/lib/typescript/module/src/modules/ui/components/urine-test-result.d.ts.map +1 -1
  209. package/package.json +2 -2
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.DataProcessor = void 0;
7
7
  var _core = require("@ovok/core");
8
+ var _healthSyncKeys = require("../../types/health-sync-keys.js");
8
9
  var _generateObservationEntry = require("../../utils/generate-observation-entry.js");
9
10
  var _getLatestObservationDatesByCode = require("../../utils/get-latest-observation-dates-by-code.js");
10
11
  var _getLatestValidStartDate = require("../../utils/get-latest-valid-start-date.js");
@@ -31,7 +32,8 @@ class DataProcessor {
31
32
  provider: this.provider
32
33
  });
33
34
  }
34
- async getTotalRecordsCountForType(data, latestValidStartDate) {
35
+ async getTotalRecordsCountForType(measurementTypeKey, data, latestValidStartDate) {
36
+ const mode = (0, _healthSyncKeys.getHealthDataMode)(measurementTypeKey, data.mode);
35
37
  const totalCounts = await Promise.all(data.typeIdentifiers?.map(async ({
36
38
  typeIdentifier
37
39
  }) => {
@@ -39,12 +41,18 @@ class DataProcessor {
39
41
  return this.getTotalCountsFunction({
40
42
  typeIdentifier: typeIdentifier,
41
43
  startDate: latestValidStartDate?.toISOString(),
42
- anchor
44
+ anchor,
45
+ mode
43
46
  });
44
47
  }));
45
48
  return totalCounts.reduce((acc, count) => acc + count, 0);
46
49
  }
47
50
  async getObservationBodiesForType(measurementTypeKey, data, latestValidStartDate) {
51
+ const mode = (0, _healthSyncKeys.getHealthDataMode)(measurementTypeKey, data.mode);
52
+ const typeIdentifierCodes = Object.fromEntries(data.typeIdentifiers.map(({
53
+ typeIdentifier,
54
+ code
55
+ }) => [String(typeIdentifier), String(code)]));
48
56
  const results = await Promise.all(data.typeIdentifiers?.map(async ({
49
57
  typeIdentifier
50
58
  }) => {
@@ -53,12 +61,13 @@ class DataProcessor {
53
61
  typeIdentifier: typeIdentifier,
54
62
  startDate: latestValidStartDate?.toISOString(),
55
63
  anchor,
56
- chunkSize: this.chunkSize
64
+ chunkSize: this.chunkSize,
65
+ mode
57
66
  });
58
67
  }));
59
68
  const newAnchors = results.map(result => result.anchor).flat().filter(Boolean);
60
69
  const allData = results.flatMap(result => result.data);
61
- const dataGroups = this.provider === "apple-health" && measurementTypeKey === _core.MeasurementTypeKey.bloodPressure ? Array.from(allData.reduce((groups, sample) => {
70
+ const dataGroups = this.provider === "apple-health" && measurementTypeKey === _healthSyncKeys.HealthDataType.sleep ? groupSleepSamples(allData) : this.provider === "apple-health" && measurementTypeKey === _core.MeasurementTypeKey.bloodPressure ? Array.from(allData.reduce((groups, sample) => {
62
71
  const value = sample;
63
72
  const key = `${new Date(value.startDate ?? 0).getTime()}:${new Date(value.endDate ?? value.startDate ?? 0).getTime()}`;
64
73
  const group = groups.get(key) ?? [];
@@ -69,7 +78,11 @@ class DataProcessor {
69
78
  const observationBodies = await Promise.all(dataGroups.map(group => this.getConverterFunction({
70
79
  data: group,
71
80
  client: this.client,
72
- measurementTypeKey
81
+ patientId: this.patientId,
82
+ measurementTypeKey,
83
+ typeIdentifier: data.typeIdentifiers?.length === 1 ? String(data.typeIdentifiers[0]?.typeIdentifier) : undefined,
84
+ mode,
85
+ typeIdentifierCodes
73
86
  })));
74
87
  return {
75
88
  observationBodies,
@@ -91,4 +104,26 @@ class DataProcessor {
91
104
  }
92
105
  }
93
106
  exports.DataProcessor = DataProcessor;
107
+ const groupSleepSamples = samples => {
108
+ const sorted = [...samples].sort((left, right) => getIntervalStart(left) - getIntervalStart(right));
109
+ const groups = [];
110
+ for (const sample of sorted) {
111
+ const current = groups.at(-1);
112
+ const currentEnd = current?.at(-1) ? getIntervalEnd(current.at(-1)) : undefined;
113
+ if (current && currentEnd !== undefined && getIntervalStart(sample) <= currentEnd + 30 * 60 * 1000) {
114
+ current.push(sample);
115
+ } else {
116
+ groups.push([sample]);
117
+ }
118
+ }
119
+ return groups;
120
+ };
121
+ const getIntervalStart = value => {
122
+ const item = value;
123
+ return new Date(item.startDate ?? item.startTime ?? 0).getTime();
124
+ };
125
+ const getIntervalEnd = value => {
126
+ const item = value;
127
+ return new Date(item.endDate ?? item.endTime ?? item.startDate ?? item.startTime ?? 0).getTime();
128
+ };
94
129
  //# sourceMappingURL=data-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_generateObservationEntry","_getLatestObservationDatesByCode","_getLatestValidStartDate","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","Object","values","flatMap","data","typeIdentifiers","map","identifier","code","getLatestObservationDates","codes","getLatestObservationDatesByCode","getTotalRecordsCountForType","latestValidStartDate","totalCounts","Promise","all","typeIdentifier","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","measurementTypeKey","results","newAnchors","result","flat","filter","Boolean","allData","dataGroups","MeasurementTypeKey","bloodPressure","Array","from","groups","sample","value","key","Date","getTime","endDate","group","get","push","set","Map","observationBodies","hasAnchor","length","anchors","generateObservationEntries","generateObservationEntry","groupedObservationBodies","getLatestValidStartDate","latestObservationDates","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_healthSyncKeys","_generateObservationEntry","_getLatestObservationDatesByCode","_getLatestValidStartDate","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","Object","values","flatMap","data","typeIdentifiers","map","identifier","code","getLatestObservationDates","codes","getLatestObservationDatesByCode","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","mode","getHealthDataMode","totalCounts","Promise","all","typeIdentifier","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","typeIdentifierCodes","fromEntries","String","results","newAnchors","result","flat","filter","Boolean","allData","dataGroups","HealthDataType","sleep","groupSleepSamples","MeasurementTypeKey","bloodPressure","Array","from","groups","sample","value","key","Date","getTime","endDate","group","get","push","set","Map","observationBodies","length","undefined","hasAnchor","anchors","generateObservationEntries","generateObservationEntry","groupedObservationBodies","getLatestValidStartDate","latestObservationDates","exports","samples","sorted","sort","left","right","getIntervalStart","current","at","currentEnd","getIntervalEnd","item","startTime","endTime"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["defaultSyncData","syncedObservations","totalObservations","status","SyncProgressManager","syncData","constructor","updateProgress","dataToSync","key","Object","keys","measurementTypeKey","setPauseStatuses","reason","currentStatus","getStatus","setStatus","setNotStartedStatuses","getProgress","done","total","setTotalObservations","notifyProgress","incrementSyncedObservations","count","undefined","resetAll","forEach","progress","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-progress-manager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["defaultSyncData","syncedObservations","totalObservations","status","SyncProgressManager","syncData","constructor","updateProgress","dataToSync","key","Object","keys","measurementTypeKey","setPauseStatuses","reason","currentStatus","getStatus","setStatus","setNotStartedStatuses","getProgress","done","total","setTotalObservations","notifyProgress","incrementSyncedObservations","count","undefined","resetAll","forEach","progress","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-progress-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,6 @@
1
1
  "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
2
6
  //# sourceMappingURL=get-data-from-provider-props.js.map
@@ -1,2 +1,6 @@
1
1
  "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
2
6
  //# sourceMappingURL=get-total-count-props.js.map
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isAggregatedHealthData = void 0;
7
+ const isAggregatedHealthData = value => {
8
+ const candidate = value;
9
+ return candidate?.kind === "daily-total" || candidate?.kind === "daily-summary";
10
+ };
11
+ exports.isAggregatedHealthData = isAggregatedHealthData;
12
+ //# sourceMappingURL=health-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isAggregatedHealthData","value","candidate","kind","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-data.ts"],"mappings":";;;;;;AAaO,MAAMA,sBAAsB,GACjCC,KAAc,IACoB;EAClC,MAAMC,SAAS,GAAGD,KAAkD;EAEpE,OACEC,SAAS,EAAEC,IAAI,KAAK,aAAa,IAAID,SAAS,EAAEC,IAAI,KAAK,eAAe;AAE5E,CAAC;AAACC,OAAA,CAAAJ,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -3,4 +3,43 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getHealthDataMode = exports.HealthDataType = void 0;
7
+ var _core = require("@ovok/core");
8
+ /** Health data that is not represented by a core measurement service. */
9
+ var HealthDataType = exports.HealthDataType = /*#__PURE__*/function (HealthDataType) {
10
+ HealthDataType["height"] = "height";
11
+ HealthDataType["bodyFatPercentage"] = "body-fat-percentage";
12
+ HealthDataType["bodyMassIndex"] = "body-mass-index";
13
+ HealthDataType["leanBodyMass"] = "lean-body-mass";
14
+ HealthDataType["distance"] = "distance";
15
+ HealthDataType["activeEnergy"] = "active-energy";
16
+ HealthDataType["flightsClimbed"] = "flights-climbed";
17
+ HealthDataType["exerciseMinutes"] = "exercise-minutes";
18
+ HealthDataType["heartRateSummary"] = "heart-rate-summary";
19
+ HealthDataType["sleep"] = "sleep";
20
+ HealthDataType["workout"] = "workout";
21
+ return HealthDataType;
22
+ }(HealthDataType || {});
23
+ const getHealthDataMode = (key, configuredMode) => {
24
+ if (configuredMode) {
25
+ return configuredMode;
26
+ }
27
+ switch (key) {
28
+ case _core.MeasurementTypeKey.stepCount:
29
+ case HealthDataType.distance:
30
+ case HealthDataType.activeEnergy:
31
+ case HealthDataType.flightsClimbed:
32
+ case HealthDataType.exerciseMinutes:
33
+ return "daily-total";
34
+ case _core.MeasurementTypeKey.heartRate:
35
+ case HealthDataType.heartRateSummary:
36
+ return "daily-summary";
37
+ case HealthDataType.sleep:
38
+ case HealthDataType.workout:
39
+ return "session";
40
+ default:
41
+ return "point";
42
+ }
43
+ };
44
+ exports.getHealthDataMode = getHealthDataMode;
6
45
  //# sourceMappingURL=health-sync-keys.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-keys.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","HealthDataType","exports","getHealthDataMode","key","configuredMode","MeasurementTypeKey","stepCount","distance","activeEnergy","flightsClimbed","exerciseMinutes","heartRate","heartRateSummary","sleep","workout"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-keys.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAOA;AAAA,IACKC,cAAc,GAAAC,OAAA,CAAAD,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA,EAAdA,cAAc;AAsBnB,MAAME,iBAAiB,GAAGA,CACxBC,GAAkB,EAClBC,cAA+B,KACZ;EACnB,IAAIA,cAAc,EAAE;IAClB,OAAOA,cAAc;EACvB;EAEA,QAAQD,GAAG;IACT,KAAKE,wBAAkB,CAACC,SAAS;IACjC,KAAKN,cAAc,CAACO,QAAQ;IAC5B,KAAKP,cAAc,CAACQ,YAAY;IAChC,KAAKR,cAAc,CAACS,cAAc;IAClC,KAAKT,cAAc,CAACU,eAAe;MACjC,OAAO,aAAa;IACtB,KAAKL,wBAAkB,CAACM,SAAS;IACjC,KAAKX,cAAc,CAACY,gBAAgB;MAClC,OAAO,eAAe;IACxB,KAAKZ,cAAc,CAACa,KAAK;IACzB,KAAKb,cAAc,CAACc,OAAO;MACzB,OAAO,SAAS;IAClB;MACE,OAAO,OAAO;EAClB;AACF,CAAC;AAACb,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.convertGenericHealthDataToObservation = void 0;
7
+ var _healthData = require("../types/health-data.js");
8
+ var _healthObservationDevice = require("./health-observation-device.js");
9
+ /* eslint-disable max-lines */
10
+
11
+ const FHIR_UNIT_SYSTEM = "http://unitsofmeasure.org";
12
+ const LOINC_SYSTEM = "http://loinc.org";
13
+ const convertGenericHealthDataToObservation = async ({
14
+ data,
15
+ patientId,
16
+ mode,
17
+ typeIdentifier: configuredTypeIdentifier,
18
+ typeIdentifierCodes
19
+ }) => {
20
+ const first = data[0];
21
+ if (!first) {
22
+ return [];
23
+ }
24
+ const value = first;
25
+ const typeIdentifier = String(configuredTypeIdentifier ?? value.typeIdentifier ?? value.quantityType ?? value.categoryType ?? value.recordType ?? "health-data");
26
+ const code = typeIdentifierCodes?.[typeIdentifier] ?? typeIdentifier;
27
+ const interval = getInterval(data);
28
+ const measurement = getMeasurement(first, mode, interval);
29
+ if (!measurement || !patientId) {
30
+ return [];
31
+ }
32
+ const metadata = getMetadata(first);
33
+ const device = (0, _healthObservationDevice.getHealthObservationDevice)(metadata);
34
+ const observationDate = interval?.start ?? getDate(first);
35
+ const observation = {
36
+ resourceType: "Observation",
37
+ id: getStableObservationId({
38
+ typeIdentifier,
39
+ code,
40
+ interval,
41
+ date: observationDate,
42
+ measurement
43
+ }),
44
+ status: "registered",
45
+ subject: {
46
+ reference: `Patient/${patientId}`
47
+ },
48
+ code: {
49
+ coding: [{
50
+ system: LOINC_SYSTEM,
51
+ code
52
+ }]
53
+ },
54
+ ...(device ? {
55
+ device
56
+ } : {}),
57
+ ...(interval ? {
58
+ effectivePeriod: {
59
+ start: interval.start.toISOString(),
60
+ end: interval.end.toISOString()
61
+ }
62
+ } : observationDate ? {
63
+ effectiveDateTime: observationDate.toISOString()
64
+ } : {}),
65
+ ...measurement
66
+ };
67
+ if (mode === "daily-summary" && (0, _healthData.isAggregatedHealthData)(first)) {
68
+ observation.component = [...(first.minimum === undefined ? [] : [component("Minimum", first.minimum, first.unit)]), ...(first.maximum === undefined ? [] : [component("Maximum", first.maximum, first.unit)])];
69
+ }
70
+ const stageComponents = getSleepStageComponents(data);
71
+ if (stageComponents.length > 0) {
72
+ observation.component = [...(observation.component ?? []), ...stageComponents];
73
+ }
74
+ return [observation];
75
+ };
76
+ exports.convertGenericHealthDataToObservation = convertGenericHealthDataToObservation;
77
+ const getMeasurement = (value, mode, interval) => {
78
+ const raw = value;
79
+ if ((0, _healthData.isAggregatedHealthData)(value)) {
80
+ const number = value.kind === "daily-summary" ? value.average : value.value;
81
+ return number === undefined ? undefined : {
82
+ valueQuantity: quantity(number, value.unit)
83
+ };
84
+ }
85
+ if (mode === "session" && interval) {
86
+ return {
87
+ valueQuantity: quantity((interval.end.getTime() - interval.start.getTime()) / 60000, "min")
88
+ };
89
+ }
90
+ const extracted = extractValue(raw);
91
+ return extracted ? {
92
+ valueQuantity: quantity(extracted.value, extracted.unit)
93
+ } : undefined;
94
+ };
95
+ const extractValue = raw => {
96
+ if (typeof raw.quantity === "number") {
97
+ return {
98
+ value: raw.quantity,
99
+ unit: String(raw.unit ?? "1")
100
+ };
101
+ }
102
+ const candidates = [["height", "inMeters", "m"], ["bodyFat", "percentage", "%"], ["mass", "inKilograms", "kg"], ["weight", "inKilograms", "kg"], ["distance", "inMeters", "m"], ["energy", "inKilocalories", "kcal"]];
103
+ for (const [containerKey, valueKey, fallbackUnit] of candidates) {
104
+ const container = raw[containerKey];
105
+ if (typeof container?.[valueKey] === "number") {
106
+ return {
107
+ value: container[valueKey],
108
+ unit: normalizeUnit(String(container.unit ?? fallbackUnit))
109
+ };
110
+ }
111
+ }
112
+ const alternateCandidates = [["height", "value", "m"], ["mass", "value", "kg"], ["weight", "value", "kg"], ["distance", "value", "m"], ["energy", "value", "kcal"]];
113
+ for (const [containerKey, valueKey, fallbackUnit] of alternateCandidates) {
114
+ const container = raw[containerKey];
115
+ if (typeof container?.[valueKey] === "number") {
116
+ return {
117
+ value: container[valueKey],
118
+ unit: normalizeUnit(String(container.unit ?? fallbackUnit))
119
+ };
120
+ }
121
+ }
122
+ const scalarCandidates = [["count", "count"], ["floors", "count"], ["rate", "count/min"], ["beatsPerMinute", "count/min"], ["percentage", "%"], ["vo2MillilitersPerMinuteKilogram", "mL/kg/min"]];
123
+ for (const [key, unit] of scalarCandidates) {
124
+ if (typeof raw[key] === "number") {
125
+ return {
126
+ value: raw[key],
127
+ unit
128
+ };
129
+ }
130
+ }
131
+ return undefined;
132
+ };
133
+ const getInterval = data => {
134
+ const intervals = data.map(item => {
135
+ const raw = item;
136
+ const startValue = raw.startDate ?? raw.startTime ?? 0;
137
+ const start = new Date(startValue);
138
+ const endValue = raw.endDate ?? raw.endTime ?? start;
139
+ const end = new Date(endValue);
140
+ return Number.isNaN(start.getTime()) || Number.isNaN(end.getTime()) ? undefined : {
141
+ start,
142
+ end
143
+ };
144
+ }).filter(Boolean);
145
+ if (intervals.length === 0) {
146
+ return undefined;
147
+ }
148
+ return {
149
+ start: new Date(Math.min(...intervals.map(({
150
+ start
151
+ }) => start.getTime()))),
152
+ end: new Date(Math.max(...intervals.map(({
153
+ end
154
+ }) => end.getTime())))
155
+ };
156
+ };
157
+ const getDate = value => {
158
+ const raw = value;
159
+ const date = raw.endDate ?? raw.endTime ?? raw.startDate ?? raw.startTime ?? raw.time;
160
+ if (!date) {
161
+ return undefined;
162
+ }
163
+ const parsed = new Date(date);
164
+ return Number.isNaN(parsed.getTime()) ? undefined : parsed;
165
+ };
166
+ const getMetadata = value => {
167
+ const raw = value;
168
+ const metadata = raw.metadata ?? {};
169
+ const sourceRevision = raw.sourceRevision;
170
+ const source = sourceRevision?.source;
171
+ const device = raw.device ?? metadata.device;
172
+ return {
173
+ manufacturer: String(device?.manufacturer ?? metadata.dataOrigin ?? "") || undefined,
174
+ model: typeof device?.model === "string" ? device.model : undefined,
175
+ sourceApp: String(source?.name ?? raw.sourceApp ?? metadata.dataOrigin ?? "") || undefined,
176
+ recordingMethod: typeof metadata.recordingMethod === "number" ? metadata.recordingMethod : undefined
177
+ };
178
+ };
179
+ const getSleepStageComponents = data => data.flatMap(item => {
180
+ const stages = item.stages ?? [];
181
+ if (stages.length === 0) {
182
+ const raw = item;
183
+ const start = raw.startDate ?? raw.startTime;
184
+ const end = raw.endDate ?? raw.endTime;
185
+ const duration = start && end ? (new Date(end).getTime() - new Date(start).getTime()) / 60000 : 0;
186
+ return Number.isFinite(duration) && duration > 0 && raw.value !== undefined ? [component(`Sleep stage ${String(raw.value)}`, duration, "min")] : [];
187
+ }
188
+ return stages.flatMap(stage => {
189
+ const raw = stage;
190
+ const start = new Date(raw.startTime);
191
+ const end = new Date(raw.endTime);
192
+ const duration = (end.getTime() - start.getTime()) / 60000;
193
+ return Number.isFinite(duration) && duration > 0 ? [component(`Sleep stage ${String(raw.stage)}`, duration, "min")] : [];
194
+ });
195
+ });
196
+ const component = (label, value, unit) => ({
197
+ code: {
198
+ text: label
199
+ },
200
+ valueQuantity: quantity(value, unit)
201
+ });
202
+ const quantity = (value, unit) => ({
203
+ value,
204
+ unit,
205
+ system: FHIR_UNIT_SYSTEM,
206
+ code: normalizeUnit(unit)
207
+ });
208
+ const normalizeUnit = unit => ({
209
+ kilometers: "km",
210
+ meters: "m",
211
+ miles: "mi",
212
+ kilograms: "kg",
213
+ grams: "g",
214
+ milligrams: "mg",
215
+ kilocalories: "kcal",
216
+ calories: "cal",
217
+ minutes: "min",
218
+ seconds: "s",
219
+ beatsPerMinute: "count/min"
220
+ })[unit] ?? unit;
221
+ const getStableObservationId = ({
222
+ typeIdentifier,
223
+ code,
224
+ interval,
225
+ date,
226
+ measurement
227
+ }) => {
228
+ const time = interval ? `${interval.start.toISOString()}-${interval.end.toISOString()}` : date?.toISOString() ?? "undated";
229
+ const value = measurement.valueQuantity?.value ?? "empty";
230
+ return `health-${[typeIdentifier, code, time, value].join("-").replace(/[^a-zA-Z0-9.-]/g, "-").slice(0, 64)}`;
231
+ };
232
+ //# sourceMappingURL=convert-generic-health-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_healthData","require","_healthObservationDevice","FHIR_UNIT_SYSTEM","LOINC_SYSTEM","convertGenericHealthDataToObservation","data","patientId","mode","typeIdentifier","configuredTypeIdentifier","typeIdentifierCodes","first","value","String","quantityType","categoryType","recordType","code","interval","getInterval","measurement","getMeasurement","metadata","getMetadata","device","getHealthObservationDevice","observationDate","start","getDate","observation","resourceType","id","getStableObservationId","date","status","subject","reference","coding","system","effectivePeriod","toISOString","end","effectiveDateTime","isAggregatedHealthData","component","minimum","undefined","unit","maximum","stageComponents","getSleepStageComponents","length","exports","raw","number","kind","average","valueQuantity","quantity","getTime","extracted","extractValue","candidates","containerKey","valueKey","fallbackUnit","container","normalizeUnit","alternateCandidates","scalarCandidates","key","intervals","map","item","startValue","startDate","startTime","Date","endValue","endDate","endTime","Number","isNaN","filter","Boolean","Math","min","max","time","parsed","sourceRevision","source","manufacturer","dataOrigin","model","sourceApp","name","recordingMethod","flatMap","stages","duration","isFinite","stage","label","text","kilometers","meters","miles","kilograms","grams","milligrams","kilocalories","calories","minutes","seconds","beatsPerMinute","join","replace","slice"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-generic-health-data.ts"],"mappings":"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","ignoreList":[]}
@@ -5,18 +5,34 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.convertRecordsToObservation = void 0;
7
7
  var _core = require("@ovok/core");
8
+ var _convertGenericHealthData = require("./convert-generic-health-data.js");
8
9
  var _healthObservationDevice = require("./health-observation-device.js");
9
- const convertRecordsToObservation = async ({
10
- data,
11
- client,
12
- measurementTypeKey
13
- }) => {
10
+ const convertRecordsToObservation = async props => {
11
+ const {
12
+ data,
13
+ client,
14
+ measurementTypeKey,
15
+ mode = "point"
16
+ } = props;
17
+ if (mode !== "point") {
18
+ return (0, _convertGenericHealthData.convertGenericHealthDataToObservation)({
19
+ ...props,
20
+ mode
21
+ });
22
+ }
14
23
  const record = data[0];
15
24
  if (!record) {
16
25
  return [];
17
26
  }
27
+ if (!isCoreMeasurementTypeKey(measurementTypeKey)) {
28
+ return (0, _convertGenericHealthData.convertGenericHealthDataToObservation)({
29
+ ...props,
30
+ mode
31
+ });
32
+ }
18
33
  const service = _core.ObservationServiceCreator.getInstance().getService(measurementTypeKey);
19
- const measurement = service?.convertRecordToMeasurement?.(record);
34
+ const typedRecord = record;
35
+ const measurement = service?.convertRecordToMeasurement?.(typedRecord);
20
36
  if (!measurement) {
21
37
  return [];
22
38
  }
@@ -25,10 +41,10 @@ const convertRecordsToObservation = async ({
25
41
  });
26
42
  const recordTime = getRecordTime(record);
27
43
  const device = (0, _healthObservationDevice.getHealthObservationDevice)({
28
- manufacturer: record.metadata?.device?.manufacturer,
29
- model: record.metadata?.device?.model,
30
- sourceApp: record.metadata?.dataOrigin,
31
- recordingMethod: record.metadata?.recordingMethod
44
+ manufacturer: typedRecord.metadata?.device?.manufacturer,
45
+ model: typedRecord.metadata?.device?.model,
46
+ sourceApp: typedRecord.metadata?.dataOrigin,
47
+ recordingMethod: typedRecord.metadata?.recordingMethod
32
48
  });
33
49
  return observationBody.map(observation => ({
34
50
  ...observation,
@@ -42,6 +58,7 @@ const convertRecordsToObservation = async ({
42
58
  }));
43
59
  };
44
60
  exports.convertRecordsToObservation = convertRecordsToObservation;
61
+ const isCoreMeasurementTypeKey = value => Object.values(_core.MeasurementTypeKey).includes(value);
45
62
  const getRecordTime = record => {
46
63
  if ("time" in record) {
47
64
  return record.time;
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_healthObservationDevice","convertRecordsToObservation","data","client","measurementTypeKey","record","service","ObservationServiceCreator","getInstance","getService","measurement","convertRecordToMeasurement","observationBody","generateObservationBodiesByMeasurement","recordTime","getRecordTime","device","getHealthObservationDevice","manufacturer","metadata","model","sourceApp","dataOrigin","recordingMethod","map","observation","effectiveDateTime","exports","time","endTime","startTime","undefined"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-records-to-observation.ts"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAKA,IAAAC,wBAAA,GAAAD,OAAA;AAEO,MAAME,2BAA2B,GAAG,MAAAA,CAAO;EAChDC,IAAI;EACJC,MAAM;EACNC;AAC0C,CAAC,KAA6B;EACxE,MAAMC,MAAM,GAAGH,IAAI,CAAC,CAAC,CAAC;EAEtB,IAAI,CAACG,MAAM,EAAE;IACX,OAAO,EAAE;EACX;EAEA,MAAMC,OAAO,GACXC,+BAAyB,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAACL,kBAAkB,CAAC;EAExE,MAAMM,WAAW,GAAGJ,OAAO,EAAEK,0BAA0B,GAAGN,MAAM,CAAC;EAEjE,IAAI,CAACK,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMT,MAAM,CAACU,sCAAsC,CAAC;IAC1EH;EACF,CAAC,CAAC;EAEF,MAAMI,UAAU,GAAGC,aAAa,CAACV,MAAM,CAAC;EAExC,MAAMW,MAAM,GAAG,IAAAC,mDAA0B,EAAC;IACxCC,YAAY,EAAEb,MAAM,CAACc,QAAQ,EAAEH,MAAM,EAAEE,YAAY;IACnDE,KAAK,EAAEf,MAAM,CAACc,QAAQ,EAAEH,MAAM,EAAEI,KAAK;IACrCC,SAAS,EAAEhB,MAAM,CAACc,QAAQ,EAAEG,UAAU;IACtCC,eAAe,EAAElB,MAAM,CAACc,QAAQ,EAAEI;EACpC,CAAC,CAAC;EAEF,OAAOX,eAAe,CAACY,GAAG,CAAEC,WAAW,KAAM;IAC3C,GAAGA,WAAW;IACd,IAAIT,MAAM,GACN;MAAEA,MAAM,EAAE;QAAE,IAAIS,WAAW,CAACT,MAAM,IAAI,CAAC,CAAC,CAAC;QAAE,GAAGA;MAAO;IAAE,CAAC,GACxD,CAAC,CAAC,CAAC;IACPU,iBAAiB,EAAEZ,UAAU,IAAIW,WAAW,CAACC;EAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAACC,OAAA,CAAA1B,2BAAA,GAAAA,2BAAA;AAEF,MAAMc,aAAa,GACjBV,MAAgC,IACT;EACvB,IAAI,MAAM,IAAIA,MAAM,EAAE;IACpB,OAAOA,MAAM,CAACuB,IAAI;EACpB;EAEA,IAAI,SAAS,IAAIvB,MAAM,EAAE;IACvB,OAAOA,MAAM,CAACwB,OAAO;EACvB;EAEA,IAAI,WAAW,IAAIxB,MAAM,EAAE;IACzB,OAAOA,MAAM,CAACyB,SAAS;EACzB;EAEA,OAAOC,SAAS;AAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_convertGenericHealthData","_healthObservationDevice","convertRecordsToObservation","props","data","client","measurementTypeKey","mode","convertGenericHealthDataToObservation","record","isCoreMeasurementTypeKey","service","ObservationServiceCreator","getInstance","getService","typedRecord","measurement","convertRecordToMeasurement","observationBody","generateObservationBodiesByMeasurement","recordTime","getRecordTime","device","getHealthObservationDevice","manufacturer","metadata","model","sourceApp","dataOrigin","recordingMethod","map","observation","effectiveDateTime","exports","value","Object","values","MeasurementTypeKey","includes","time","endTime","startTime","undefined"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-records-to-observation.ts"],"mappings":";;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAKA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AAEO,MAAMG,2BAA2B,GAAG,MACzCC,KAAgC,IACL;EAC3B,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,kBAAkB;IAAEC,IAAI,GAAG;EAAQ,CAAC,GAAGJ,KAAK;EAElE,IAAII,IAAI,KAAK,OAAO,EAAE;IACpB,OAAO,IAAAC,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,MAAME,MAAM,GAAGL,IAAI,CAAC,CAAC,CAAC;EAEtB,IAAI,CAACK,MAAM,EAAE;IACX,OAAO,EAAE;EACX;EAEA,IAAI,CAACC,wBAAwB,CAACJ,kBAAkB,CAAC,EAAE;IACjD,OAAO,IAAAE,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,MAAMI,OAAO,GAAGC,+BAAyB,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAChER,kBACF,CAAC;EAED,MAAMS,WAAW,GAAGN,MAAkC;EACtD,MAAMO,WAAW,GAAGL,OAAO,EAAEM,0BAA0B,GAAGF,WAAW,CAAC;EAEtE,IAAI,CAACC,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMb,MAAM,CAACc,sCAAsC,CAAC;IAC1EH;EACF,CAAC,CAAC;EAEF,MAAMI,UAAU,GAAGC,aAAa,CAACZ,MAAkC,CAAC;EAEpE,MAAMa,MAAM,GAAG,IAAAC,mDAA0B,EAAC;IACxCC,YAAY,EAAET,WAAW,CAACU,QAAQ,EAAEH,MAAM,EAAEE,YAAY;IACxDE,KAAK,EAAEX,WAAW,CAACU,QAAQ,EAAEH,MAAM,EAAEI,KAAK;IAC1CC,SAAS,EAAEZ,WAAW,CAACU,QAAQ,EAAEG,UAAU;IAC3CC,eAAe,EAAEd,WAAW,CAACU,QAAQ,EAAEI;EACzC,CAAC,CAAC;EAEF,OAAOX,eAAe,CAACY,GAAG,CAAEC,WAAW,KAAM;IAC3C,GAAGA,WAAW;IACd,IAAIT,MAAM,GACN;MAAEA,MAAM,EAAE;QAAE,IAAIS,WAAW,CAACT,MAAM,IAAI,CAAC,CAAC,CAAC;QAAE,GAAGA;MAAO;IAAE,CAAC,GACxD,CAAC,CAAC,CAAC;IACPU,iBAAiB,EAAEZ,UAAU,IAAIW,WAAW,CAACC;EAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAACC,OAAA,CAAA/B,2BAAA,GAAAA,2BAAA;AAEF,MAAMQ,wBAAwB,GAC5BwB,KAAa,IAEbC,MAAM,CAACC,MAAM,CAACC,wBAAkB,CAAC,CAACC,QAAQ,CAACJ,KAA2B,CAAC;AAEzE,MAAMb,aAAa,GACjBZ,MAAgC,IACT;EACvB,IAAI,MAAM,IAAIA,MAAM,EAAE;IACpB,OAAOA,MAAM,CAAC8B,IAAI;EACpB;EAEA,IAAI,SAAS,IAAI9B,MAAM,EAAE;IACvB,OAAOA,MAAM,CAAC+B,OAAO;EACvB;EAEA,IAAI,WAAW,IAAI/B,MAAM,EAAE;IACzB,OAAOA,MAAM,CAACgC,SAAS;EACzB;EAEA,OAAOC,SAAS;AAClB,CAAC","ignoreList":[]}
@@ -5,15 +5,30 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.convertSamplesToObservation = void 0;
7
7
  var _core = require("@ovok/core");
8
+ var _convertGenericHealthData = require("./convert-generic-health-data.js");
8
9
  var _healthObservationDevice = require("./health-observation-device.js");
9
- const convertSamplesToObservation = async ({
10
- data,
11
- client,
12
- measurementTypeKey
13
- }) => {
10
+ const convertSamplesToObservation = async props => {
11
+ const {
12
+ data,
13
+ client,
14
+ measurementTypeKey,
15
+ mode = "point"
16
+ } = props;
17
+ if (mode !== "point") {
18
+ return (0, _convertGenericHealthData.convertGenericHealthDataToObservation)({
19
+ ...props,
20
+ mode
21
+ });
22
+ }
14
23
  if (data.length === 0) {
15
24
  return [];
16
25
  }
26
+ if (!isCoreMeasurementTypeKey(measurementTypeKey)) {
27
+ return (0, _convertGenericHealthData.convertGenericHealthDataToObservation)({
28
+ ...props,
29
+ mode
30
+ });
31
+ }
17
32
  const service = _core.ObservationServiceCreator.getInstance().getService(measurementTypeKey);
18
33
  const measurement = service.convertSamplesToMeasurement(data);
19
34
  if (!measurement) {
@@ -23,7 +38,7 @@ const convertSamplesToObservation = async ({
23
38
  measurement
24
39
  });
25
40
  return observationBody.map((observation, index) => {
26
- const sample = data?.[index] ?? data?.[0];
41
+ const sample = data?.[index];
27
42
  const device = sample ? (0, _healthObservationDevice.getHealthObservationDevice)({
28
43
  manufacturer: sample.device?.manufacturer,
29
44
  model: sample.device?.model,
@@ -42,4 +57,5 @@ const convertSamplesToObservation = async ({
42
57
  });
43
58
  };
44
59
  exports.convertSamplesToObservation = convertSamplesToObservation;
60
+ const isCoreMeasurementTypeKey = value => Object.values(_core.MeasurementTypeKey).includes(value);
45
61
  //# sourceMappingURL=convert-samples-to-observation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_healthObservationDevice","convertSamplesToObservation","data","client","measurementTypeKey","length","service","ObservationServiceCreator","getInstance","getService","measurement","convertSamplesToMeasurement","observationBody","generateObservationBodiesByMeasurement","map","observation","index","sample","device","getHealthObservationDevice","manufacturer","model","sourceApp","sourceRevision","source","name","undefined","effectiveDateTime","endDate","toISOString","startDate","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-samples-to-observation.ts"],"mappings":";;;;;;AAKA,IAAAA,KAAA,GAAAC,OAAA;AAIA,IAAAC,wBAAA,GAAAD,OAAA;AAEO,MAAME,2BAA2B,GAAG,MAAAA,CAAO;EAChDC,IAAI;EACJC,MAAM;EACNC;AAC4D,CAAC,KAE1D;EACH,IAAIF,IAAI,CAACG,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,MAAMC,OAAO,GACXC,+BAAyB,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAACL,kBAAkB,CAAC;EAExE,MAAMM,WAAW,GAAGJ,OAAO,CAACK,2BAA2B,CACrDT,IACF,CAAC;EAED,IAAI,CAACQ,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMT,MAAM,CAACU,sCAAsC,CAAC;IAC1EH;EACF,CAAC,CAAC;EAEF,OAAOE,eAAe,CAACE,GAAG,CAAC,CAACC,WAAW,EAAEC,KAAK,KAAK;IACjD,MAAMC,MAAM,GAAGf,IAAI,GAAGc,KAAK,CAAC,IAAId,IAAI,GAAG,CAAC,CAAC;IAEzC,MAAMgB,MAAM,GAAGD,MAAM,GACjB,IAAAE,mDAA0B,EAAC;MACzBC,YAAY,EAAEH,MAAM,CAACC,MAAM,EAAEE,YAAY;MACzCC,KAAK,EAAEJ,MAAM,CAACC,MAAM,EAAEG,KAAK;MAC3BC,SAAS,EAAEL,MAAM,CAACM,cAAc,EAAEC,MAAM,EAAEC;IAC5C,CAAC,CAAC,GACFC,SAAS;IAEb,OAAO;MACL,GAAGX,WAAW;MACd,IAAIG,MAAM,GACN;QAAEA,MAAM,EAAE;UAAE,IAAIH,WAAW,CAACG,MAAM,IAAI,CAAC,CAAC,CAAC;UAAE,GAAGA;QAAO;MAAE,CAAC,GACxD,CAAC,CAAC,CAAC;MACPS,iBAAiB,EACfV,MAAM,EAAEW,OAAO,EAAEC,WAAW,CAAC,CAAC,IAC9BZ,MAAM,EAAEa,SAAS,EAAED,WAAW,CAAC,CAAC,IAChCd,WAAW,CAACY;IAChB,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;AAACI,OAAA,CAAA9B,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_convertGenericHealthData","_healthObservationDevice","convertSamplesToObservation","props","data","client","measurementTypeKey","mode","convertGenericHealthDataToObservation","length","isCoreMeasurementTypeKey","service","ObservationServiceCreator","getInstance","getService","measurement","convertSamplesToMeasurement","observationBody","generateObservationBodiesByMeasurement","map","observation","index","sample","device","getHealthObservationDevice","manufacturer","model","sourceApp","sourceRevision","source","name","undefined","effectiveDateTime","endDate","toISOString","startDate","exports","value","Object","values","MeasurementTypeKey","includes"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-samples-to-observation.ts"],"mappings":";;;;;;AAKA,IAAAA,KAAA,GAAAC,OAAA;AAIA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,wBAAA,GAAAF,OAAA;AAEO,MAAMG,2BAA2B,GAAG,MACzCC,KAAgC,IACL;EAC3B,MAAM;IAAEC,IAAI;IAAEC,MAAM;IAAEC,kBAAkB;IAAEC,IAAI,GAAG;EAAQ,CAAC,GAAGJ,KAAK;EAElE,IAAII,IAAI,KAAK,OAAO,EAAE;IACpB,OAAO,IAAAC,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,IAAIH,IAAI,CAACK,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,IAAI,CAACC,wBAAwB,CAACJ,kBAAkB,CAAC,EAAE;IACjD,OAAO,IAAAE,+DAAqC,EAAC;MAAE,GAAGL,KAAK;MAAEI;IAAK,CAAC,CAAC;EAClE;EAEA,MAAMI,OAAO,GAAGC,+BAAyB,CAACC,WAAW,CAAC,CAAC,CAACC,UAAU,CAChER,kBACF,CAAC;EAED,MAAMS,WAAW,GAAGJ,OAAO,CAACK,2BAA2B,CACrDZ,IACF,CAAC;EAED,IAAI,CAACW,WAAW,EAAE;IAChB,OAAO,EAAE;EACX;EAEA,MAAME,eAAe,GAAG,MAAMZ,MAAM,CAACa,sCAAsC,CAAC;IAC1EH;EACF,CAAC,CAAC;EAEF,OAAOE,eAAe,CAACE,GAAG,CAAC,CAACC,WAAW,EAAEC,KAAK,KAAK;IACjD,MAAMC,MAAM,GAAGlB,IAAI,GAAGiB,KAAK,CAA2D;IAEtF,MAAME,MAAM,GAAGD,MAAM,GACjB,IAAAE,mDAA0B,EAAC;MACzBC,YAAY,EAAEH,MAAM,CAACC,MAAM,EAAEE,YAAY;MACzCC,KAAK,EAAEJ,MAAM,CAACC,MAAM,EAAEG,KAAK;MAC3BC,SAAS,EAAEL,MAAM,CAACM,cAAc,EAAEC,MAAM,EAAEC;IAC5C,CAAC,CAAC,GACFC,SAAS;IAEb,OAAO;MACL,GAAGX,WAAW;MACd,IAAIG,MAAM,GACN;QAAEA,MAAM,EAAE;UAAE,IAAIH,WAAW,CAACG,MAAM,IAAI,CAAC,CAAC,CAAC;UAAE,GAAGA;QAAO;MAAE,CAAC,GACxD,CAAC,CAAC,CAAC;MACPS,iBAAiB,EACfV,MAAM,EAAEW,OAAO,EAAEC,WAAW,CAAC,CAAC,IAC9BZ,MAAM,EAAEa,SAAS,EAAED,WAAW,CAAC,CAAC,IAChCd,WAAW,CAACY;IAChB,CAAC;EACH,CAAC,CAAC;AACJ,CAAC;AAACI,OAAA,CAAAlC,2BAAA,GAAAA,2BAAA;AAEF,MAAMQ,wBAAwB,GAC5B2B,KAAa,IAEbC,MAAM,CAACC,MAAM,CAACC,wBAAkB,CAAC,CAACC,QAAQ,CAACJ,KAA2B,CAAC","ignoreList":[]}