@ovok/native 1.12.1 → 1.14.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 (111) hide show
  1. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +48 -27
  2. package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +14 -41
  4. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-delivery.js +75 -0
  6. package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-delivery.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/services/bt-manager.js +2 -1
  8. package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/series-recorder.js +9 -5
  10. package/lib/commonjs/modules/bt-management/services/series-recorder.js.map +1 -1
  11. package/lib/commonjs/modules/bt-management/services/series-slots.js +9 -2
  12. package/lib/commonjs/modules/bt-management/services/series-slots.js.map +1 -1
  13. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +7 -5
  14. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  15. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +4 -5
  16. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
  17. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +12 -5
  18. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  19. package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js +18 -0
  20. package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
  21. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +4 -1
  22. package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -1
  23. package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js +70 -0
  24. package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
  25. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +48 -27
  26. package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
  27. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +15 -42
  28. package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
  29. package/lib/module/modules/bt-management/services/background-sync/background-sync-delivery.js +70 -0
  30. package/lib/module/modules/bt-management/services/background-sync/background-sync-delivery.js.map +1 -0
  31. package/lib/module/modules/bt-management/services/bt-manager.js +2 -1
  32. package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
  33. package/lib/module/modules/bt-management/services/series-recorder.js +10 -6
  34. package/lib/module/modules/bt-management/services/series-recorder.js.map +1 -1
  35. package/lib/module/modules/bt-management/services/series-slots.js +8 -2
  36. package/lib/module/modules/bt-management/services/series-slots.js.map +1 -1
  37. package/lib/module/modules/data-sync/services/base-health-sync-service.js +7 -5
  38. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  39. package/lib/module/modules/data-sync/services/managers/data-processor.js +4 -5
  40. package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
  41. package/lib/module/modules/data-sync/services/managers/storage-manager.js +12 -5
  42. package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  43. package/lib/module/modules/data-sync/types/health-sync-batch-error.js +18 -0
  44. package/lib/module/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
  45. package/lib/module/modules/data-sync/utils/healthkit-series.js +4 -1
  46. package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -1
  47. package/lib/module/modules/data-sync/utils/identify-imported-observations.js +65 -0
  48. package/lib/module/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
  49. package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts +9 -0
  52. package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +2 -0
  54. package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts +3 -1
  56. package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts +4 -1
  58. package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts +6 -0
  60. package/lib/typescript/commonjs/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +5 -0
  62. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +2 -2
  65. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +7 -2
  67. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
  71. package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
  72. package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
  73. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
  74. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts +9 -0
  75. package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-delivery.d.ts.map +1 -0
  76. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +2 -0
  77. package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
  78. package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts +3 -1
  79. package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts.map +1 -1
  80. package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts +4 -1
  81. package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts.map +1 -1
  82. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts +6 -0
  83. package/lib/typescript/module/src/modules/bt-management/types/background-sync.d.ts.map +1 -1
  84. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +5 -0
  85. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  86. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  87. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +2 -2
  88. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  89. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +7 -2
  90. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  91. package/lib/typescript/module/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
  92. package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -1
  93. package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
  94. package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
  95. package/package.json +3 -3
  96. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +0 -108
  97. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
  98. package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +0 -100
  99. package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
  100. package/lib/module/modules/data-sync/utils/generate-observation-entry.js +0 -103
  101. package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
  102. package/lib/module/modules/data-sync/utils/save-bundle-observations.js +0 -95
  103. package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
  104. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
  105. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
  106. package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
  107. package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
  108. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
  109. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
  110. package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
  111. package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.toResult = exports.toOpenSeries = exports.slotCount = exports.readStored = exports.isLive = exports.SLOT_MS = exports.NOT_MEASURED = exports.MAX_SLOTS = exports.IDLE_CLOSE_MS = void 0;
6
+ exports.toResult = exports.toOpenSeries = exports.slotCount = exports.readStored = exports.isLive = exports.hasEnded = exports.SLOT_MS = exports.NOT_MEASURED = exports.MAX_SLOTS = exports.IDLE_CLOSE_MS = void 0;
7
7
  /** One slot a second, an hour to a series, and a quarter of an hour without a value ends one. */
8
8
  const SLOT_MS = exports.SLOT_MS = 1_000;
9
9
  const MAX_SLOTS = exports.MAX_SLOTS = 3_600;
@@ -19,7 +19,11 @@ const NOT_MEASURED = exports.NOT_MEASURED = new Set(["memorySlot"]);
19
19
 
20
20
  /** Whether a reading is a live value rather than a stored record dated earlier. */
21
21
  const isLive = (reading, now) => !(reading.recordedAt instanceof Date) || Math.abs(now - reading.recordedAt.getTime()) <= LIVE_TOLERANCE_MS;
22
+
23
+ /** Whether a series takes no more values: it went quiet, is full, or was recorded for another account. */
22
24
  exports.isLive = isLive;
25
+ const hasEnded = (series, now, ownerKey) => series.ownerKey !== ownerKey || now - series.updatedAt >= IDLE_CLOSE_MS || now - series.start >= MAX_SLOTS * SLOT_MS;
26
+ exports.hasEnded = hasEnded;
23
27
  const slotCount = series => Math.max(0, ...Object.values(series.values).map(values => values.length));
24
28
 
25
29
  /** Every property's values, all as long as the series. */
@@ -63,7 +67,10 @@ const toResult = series => {
63
67
  start,
64
68
  periodMs: SLOT_MS,
65
69
  values
66
- }
70
+ },
71
+ ...(series.ownerKey && {
72
+ recordedFor: series.ownerKey
73
+ })
67
74
  };
68
75
  };
69
76
 
@@ -1 +1 @@
1
- {"version":3,"names":["SLOT_MS","exports","MAX_SLOTS","IDLE_CLOSE_MS","LIVE_TOLERANCE_MS","NOT_MEASURED","Set","isLive","reading","now","recordedAt","Date","Math","abs","getTime","slotCount","series","max","Object","values","map","length","paddedValues","fromEntries","entries","property","Array","fill","lastValue","slot","value","undefined","lastValues","flatMap","last","meanValues","slots","present","filter","reduce","total","toResult","start","id","deviceData","sn","measurementTypeKey","toISOString","data","periodMs","toOpenSeries","updatedAt","latest","readStored","storage","key","stored","getItem","JSON","parse"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/series-slots.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SLOT_MS","exports","MAX_SLOTS","IDLE_CLOSE_MS","LIVE_TOLERANCE_MS","NOT_MEASURED","Set","isLive","reading","now","recordedAt","Date","Math","abs","getTime","hasEnded","series","ownerKey","updatedAt","start","slotCount","max","Object","values","map","length","paddedValues","fromEntries","entries","property","Array","fill","lastValue","slot","value","undefined","lastValues","flatMap","last","meanValues","slots","present","filter","reduce","total","toResult","id","deviceData","sn","measurementTypeKey","toISOString","data","periodMs","recordedFor","toOpenSeries","latest","readStored","storage","key","stored","getItem","JSON","parse"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/series-slots.ts"],"mappings":"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","ignoreList":[]}
@@ -115,17 +115,19 @@ class BaseHealthSyncService {
115
115
  if (this.stateManager.shouldStopSync) {
116
116
  break;
117
117
  }
118
- const entries = this.dataProcessor.generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, (0, _healthSyncKeys.getHealthDataMode)(measurementTypeKey, data.mode));
119
- if ((entries.length !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
118
+ const mode = (0, _healthSyncKeys.getHealthDataMode)(measurementTypeKey, data.mode);
119
+ const groups = this.dataProcessor.identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode);
120
+ const observationCount = groups.flat().length;
121
+ if ((observationCount !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
120
122
  try {
121
- if (entries.length !== 0) {
123
+ if (observationCount !== 0) {
122
124
  const startedAt = Date.now();
123
- const result = await (0, _retrySave.withSyncRetries)(() => this.storageManager.saveObservations(entries), () => this.stateManager.shouldStopSync);
125
+ const result = await (0, _retrySave.withSyncRetries)(() => this.storageManager.saveObservations(groups, mode), () => this.stateManager.shouldStopSync);
124
126
  if (this.stateManager.shouldStopSync) {
125
127
  return;
126
128
  }
127
129
  const responseEntries = result.entry ?? [];
128
- const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : entries.length;
130
+ const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : observationCount;
129
131
  const createdCount = responseEntries.filter(entry => entry.response?.status.startsWith("201")).length;
130
132
  (0, _telemetry.recordOvokMetric)("ovok.health.samples.imported", createdCount, {
131
133
  provider: this.adapter.provider,
@@ -1 +1 @@
1
- {"version":3,"names":["_telemetry","require","_constants","_healthSyncBatchError","_healthSyncKeys","_retrySave","_dataProcessor","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","provider","dataProcessor","DataProcessor","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getTotalCount","getData","convert","startSync","once","withOvokSpan","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","pauseReason","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","reason","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","getHealthDataMode","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","entries","generateObservationEntries","length","startedAt","Date","now","result","withSyncRetries","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","recordOvokMetric","recordOvokDuration","addResult","incrementSyncedObservations","deleteObservations","saveAnchors","isSyncRetryCancelled","toHealthSyncError","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_telemetry","require","_constants","_healthSyncBatchError","_healthSyncKeys","_retrySave","_dataProcessor","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","provider","dataProcessor","DataProcessor","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getTotalCount","getData","convert","startSync","once","withOvokSpan","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","pauseReason","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","reason","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","getHealthDataMode","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","groups","identifyObservations","observationCount","flat","length","startedAt","Date","now","result","withSyncRetries","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","recordOvokMetric","recordOvokDuration","addResult","incrementSyncedObservations","deleteObservations","saveAnchors","isSyncRetryCancelled","toHealthSyncError","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.DataProcessor = void 0;
7
7
  var _core = require("@ovok/core");
8
8
  var _healthSyncKeys = require("../../types/health-sync-keys.js");
9
- var _generateObservationEntry = require("../../utils/generate-observation-entry.js");
10
9
  var _getHealthRecordSyncId = require("../../utils/get-health-record-sync-id.js");
11
10
  var _getLatestObservationDatesByCode = require("../../utils/get-latest-observation-dates-by-code.js");
12
11
  var _getLatestValidStartDate = require("../../utils/get-latest-valid-start-date.js");
13
12
  var _groupSamplesByInterval = require("../../utils/group-samples-by-interval.js");
14
13
  var _groupSleepSamples = require("../../utils/group-sleep-samples.js");
15
14
  var _healthDataCatalog = require("../../utils/health-data-catalog.js");
15
+ var _identifyImportedObservations = require("../../utils/identify-imported-observations.js");
16
16
  /* eslint-disable max-lines */
17
17
 
18
18
  class DataProcessor {
@@ -136,14 +136,13 @@ class DataProcessor {
136
136
  anchors: newAnchors
137
137
  };
138
138
  }
139
- generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, mode) {
140
- return (0, _generateObservationEntry.generateObservationEntry)({
139
+ identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode) {
140
+ return (0, _identifyImportedObservations.identifyImportedObservations)({
141
141
  groupedObservationBodies: observationBodies,
142
142
  provider: this.provider,
143
143
  groupedObservationSyncIds: observationSyncIds,
144
144
  groupedRecordIds: observationRecordIds,
145
- mode,
146
- patientId: this.patientId
145
+ mode
147
146
  });
148
147
  }
149
148
  getLatestValidStartDate(latestObservationDates, data, measurementTypeKey, mode) {
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_healthSyncKeys","_generateObservationEntry","_getHealthRecordSyncId","_getLatestObservationDatesByCode","_getLatestValidStartDate","_groupSamplesByInterval","_groupSleepSamples","_healthDataCatalog","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","getHealthDataCoding","getHealthDataMode","mode","getLatestObservationDates","codes","getLatestObservationDatesByCode","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","HealthDataType","sleep","groupSleepSamples","MeasurementTypeKey","bloodPressure","groupSamplesByInterval","observationBodies","group","length","observationSyncIds","getHealthRecordSyncId","observationRecordIds","getHealthRecordSourceId","hasMore","some","anchors","generateObservationEntries","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","getLatestValidStartDate","latestObservationDates","resolvedMode","resolvedData","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","_getHealthRecordSyncId","_getLatestObservationDatesByCode","_getLatestValidStartDate","_groupSamplesByInterval","_groupSleepSamples","_healthDataCatalog","_identifyImportedObservations","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","getHealthDataCoding","getHealthDataMode","mode","getLatestObservationDates","codes","getLatestObservationDatesByCode","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","HealthDataType","sleep","groupSleepSamples","MeasurementTypeKey","bloodPressure","groupSamplesByInterval","observationBodies","group","length","observationSyncIds","getHealthRecordSyncId","observationRecordIds","getHealthRecordSourceId","hasMore","some","anchors","identifyObservations","identifyImportedObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","getLatestValidStartDate","latestObservationDates","resolvedMode","resolvedData","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.StorageManager = void 0;
7
+ var _fhirSystems = require("../../utils/fhir-systems.js");
7
8
  var _getHealthRecordSyncId = require("../../utils/get-health-record-sync-id.js");
8
- var _saveBundleObservations = require("../../utils/save-bundle-observations.js");
9
+ var _replacesSavedObservation = require("../../utils/replaces-saved-observation.js");
9
10
  class StorageManager {
10
11
  /**
11
12
  * Where an anchor goes when the host client has no storage.
@@ -29,10 +30,16 @@ class StorageManager {
29
30
  this.client = client;
30
31
  this.provider = provider;
31
32
  }
32
- async saveObservations(entries) {
33
- return (0, _saveBundleObservations.saveBundleObservations)({
34
- entries,
35
- client: this.client
33
+
34
+ /**
35
+ * Saves a page of imported readings, each group one reading with its main observation first. An observation is
36
+ * created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
37
+ * out of that check: all of a reading's observations share it.
38
+ */
39
+ async saveObservations(groups, mode) {
40
+ return this.client.saveObservationGroups(groups, {
41
+ identifierSystems: [_fhirSystems.OBSERVATION_SYNC_ID_SYSTEM],
42
+ replace: (0, _replacesSavedObservation.replacesSavedObservation)(mode)
36
43
  });
37
44
  }
38
45
 
@@ -1 +1 @@
1
- {"version":3,"names":["_getHealthRecordSyncId","require","_saveBundleObservations","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","entries","saveBundleObservations","deleteObservations","recordIds","patientId","recordId","Set","system","value","getHealthRecordIdentifier","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAIA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAEO,MAAME,cAAc,CAAC;EAC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACmBC,eAAe,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE5DC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;EAEH,MAAMC,gBAAgBA,CACpBC,OAAgE,EAClC;IAC9B,OAAO,IAAAC,8CAAsB,EAAC;MAC5BD,OAAO;MACPH,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;;EAEA;EACA,MAAMK,kBAAkBA,CACtBC,SAAmB,EACnBC,SAAiB,EACF;IACf,KAAK,MAAMC,QAAQ,IAAI,IAAIC,GAAG,CAACH,SAAS,CAAC,EAAE;MACzC,MAAM;QAAEI,MAAM;QAAEC;MAAM,CAAC,GAAG,IAAAC,gDAAyB,EAAC,IAAI,CAACX,QAAQ,EAAEO,QAAQ,CAAC;MAC5E,MAAMK,YAAY,GAAG,EAAE;MAEvB,WAAW,MAAMC,IAAI,IAAI,IAAI,CAACd,MAAM,CAACe,mBAAmB,CAAC,aAAa,EAAE;QACtEC,OAAO,EAAE,WAAWT,SAAS,EAAE;QAC/BU,UAAU,EAAE,GAAGP,MAAM,IAAIC,KAAK;MAChC,CAAC,CAAC,EAAE;QACFE,YAAY,CAACK,IAAI,CAAC,GAAGJ,IAAI,CAAC;MAC5B;MAEA,MAAMK,OAAO,CAACC,GAAG,CACfP,YAAY,CACTQ,MAAM,CAAEC,WAAW,IAAKA,WAAW,CAACC,EAAE,CAAC,CACvCC,GAAG,CAAEF,WAAW,IACf,IAAI,CAACtB,MAAM,CAACyB,cAAc,CAAC,aAAa,EAAEH,WAAW,CAACC,EAAG,CAC3D,CACJ,CAAC;IACH;EACF;EAEAG,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,IAAI,IAAI,CAAC3B,MAAM,CAAC+B,aAAa,EAAE;MAC7B,IAAI,CAAC/B,MAAM,CAAC+B,aAAa,CAACC,SAAS,CAACH,GAAG,EAAED,MAAM,CAAC;MAEhD;IACF;IAEA,IAAI,CAAC/B,eAAe,CAACoC,GAAG,CAACJ,GAAG,EAAED,MAAM,CAAC;EACvC;EAEAM,SAASA,CAACP,cAAsB,EAAsB;IACpD,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,OAAO,IAAI,CAAC3B,MAAM,CAAC+B,aAAa,GAC5B,IAAI,CAAC/B,MAAM,CAAC+B,aAAa,CAACI,SAAS,CAACN,GAAG,CAAC,GACxC,IAAI,CAAChC,eAAe,CAACuC,GAAG,CAACP,GAAG,CAAC;EACnC;EAEQC,SAASA,CAACH,cAAsB,EAAU;IAChD,OAAO,GAAG,IAAI,CAAC1B,QAAQ,SAAS0B,cAAc,SAAS;EACzD;EAEAU,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAEZ,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;AAACY,OAAA,CAAA5C,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_replacesSavedObservation","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","groups","mode","saveObservationGroups","identifierSystems","OBSERVATION_SYNC_ID_SYSTEM","replace","replacesSavedObservation","deleteObservations","recordIds","patientId","recordId","Set","system","value","getHealthRecordIdentifier","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,yBAAA,GAAAF,OAAA;AAEO,MAAMG,cAAc,CAAC;EAC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACmBC,eAAe,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE5DC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;;EAEH;AACF;AACA;AACA;AACA;EACE,MAAMC,gBAAgBA,CACpBC,MAAuB,EACvBC,IAAqB,EACS;IAC9B,OAAO,IAAI,CAACJ,MAAM,CAACK,qBAAqB,CAACF,MAAM,EAAE;MAC/CG,iBAAiB,EAAE,CAACC,uCAA0B,CAAC;MAC/CC,OAAO,EAAE,IAAAC,kDAAwB,EAACL,IAAI;IACxC,CAAC,CAAC;EACJ;;EAEA;EACA,MAAMM,kBAAkBA,CACtBC,SAAmB,EACnBC,SAAiB,EACF;IACf,KAAK,MAAMC,QAAQ,IAAI,IAAIC,GAAG,CAACH,SAAS,CAAC,EAAE;MACzC,MAAM;QAAEI,MAAM;QAAEC;MAAM,CAAC,GAAG,IAAAC,gDAAyB,EAAC,IAAI,CAAChB,QAAQ,EAAEY,QAAQ,CAAC;MAC5E,MAAMK,YAAY,GAAG,EAAE;MAEvB,WAAW,MAAMC,IAAI,IAAI,IAAI,CAACnB,MAAM,CAACoB,mBAAmB,CAAC,aAAa,EAAE;QACtEC,OAAO,EAAE,WAAWT,SAAS,EAAE;QAC/BU,UAAU,EAAE,GAAGP,MAAM,IAAIC,KAAK;MAChC,CAAC,CAAC,EAAE;QACFE,YAAY,CAACK,IAAI,CAAC,GAAGJ,IAAI,CAAC;MAC5B;MAEA,MAAMK,OAAO,CAACC,GAAG,CACfP,YAAY,CACTQ,MAAM,CAAEC,WAAW,IAAKA,WAAW,CAACC,EAAE,CAAC,CACvCC,GAAG,CAAEF,WAAW,IACf,IAAI,CAAC3B,MAAM,CAAC8B,cAAc,CAAC,aAAa,EAAEH,WAAW,CAACC,EAAG,CAC3D,CACJ,CAAC;IACH;EACF;EAEAG,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,IAAI,IAAI,CAAChC,MAAM,CAACoC,aAAa,EAAE;MAC7B,IAAI,CAACpC,MAAM,CAACoC,aAAa,CAACC,SAAS,CAACH,GAAG,EAAED,MAAM,CAAC;MAEhD;IACF;IAEA,IAAI,CAACpC,eAAe,CAACyC,GAAG,CAACJ,GAAG,EAAED,MAAM,CAAC;EACvC;EAEAM,SAASA,CAACP,cAAsB,EAAsB;IACpD,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,OAAO,IAAI,CAAChC,MAAM,CAACoC,aAAa,GAC5B,IAAI,CAACpC,MAAM,CAACoC,aAAa,CAACI,SAAS,CAACN,GAAG,CAAC,GACxC,IAAI,CAACrC,eAAe,CAAC4C,GAAG,CAACP,GAAG,CAAC;EACnC;EAEQC,SAASA,CAACH,cAAsB,EAAU;IAChD,OAAO,GAAG,IAAI,CAAC/B,QAAQ,SAAS+B,cAAc,SAAS;EACzD;EAEAU,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAEZ,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;AAACY,OAAA,CAAAjD,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -14,10 +14,28 @@ class HealthSyncBatchError extends Error {
14
14
  }
15
15
  }
16
16
  exports.HealthSyncBatchError = HealthSyncBatchError;
17
+ const isBundle = value => value?.resourceType === "Bundle";
18
+
19
+ /** What the entries a batch didn't save answered, as "409 Conflict × 2, 500 Internal Server Error × 1". */
20
+ const summarizeUnsavedEntries = bundle => {
21
+ const statusCounts = new Map();
22
+ for (const entry of bundle.entry ?? []) {
23
+ const status = entry.response?.status ?? "missing status";
24
+ if (!status.startsWith("2")) {
25
+ statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
26
+ }
27
+ }
28
+ return [...statusCounts].map(([status, count]) => `${status} × ${count}`).join(", ");
29
+ };
17
30
  const toHealthSyncError = error => {
18
31
  if (error instanceof HealthSyncBatchError) {
19
32
  return error;
20
33
  }
34
+
35
+ // Core's save throws the response of a request that didn't save every entry.
36
+ if (isBundle(error)) {
37
+ return new HealthSyncBatchError(`Health import batch did not save every entry (${summarizeUnsavedEntries(error) || "an entry was not answered"})`, error);
38
+ }
21
39
  const record = typeof error === "object" && error !== null ? error : undefined;
22
40
  if (record?.outcome) {
23
41
  return new HealthSyncBatchError(error instanceof Error ? error.message : String(error), undefined, record.outcome);
@@ -1 +1 @@
1
- {"version":3,"names":["_toError","require","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","exports","toHealthSyncError","error","record","undefined","String","toError"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAACC,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AAED,MAAMQ,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYT,oBAAoB,EAAE;IACzC,OAAOS,KAAK;EACd;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAEJ,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BS,KAAK,YAAYR,KAAK,GAAGQ,KAAK,CAACL,OAAO,GAAGQ,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAACJ,OACT,CAAC;EACH;EAEA,OAAO,IAAAO,gBAAO,EAACJ,KAAK,CAAC;AACvB,CAAC;AAACF,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toError","require","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","exports","isBundle","value","resourceType","summarizeUnsavedEntries","statusCounts","Map","entry","status","response","startsWith","set","get","map","count","join","toHealthSyncError","error","record","undefined","String","toError"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAACC,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AAED,MAAMQ,QAAQ,GAAIC,KAAc,IAC7BA,KAAK,EAAyBC,YAAY,KAAK,QAAQ;;AAE1D;AACA,MAAMC,uBAAuB,GAAIN,MAAc,IAAa;EAC1D,MAAMO,YAAY,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE9C,KAAK,MAAMC,KAAK,IAAIT,MAAM,CAACS,KAAK,IAAI,EAAE,EAAE;IACtC,MAAMC,MAAM,GAAGD,KAAK,CAACE,QAAQ,EAAED,MAAM,IAAI,gBAAgB;IAEzD,IAAI,CAACA,MAAM,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;MAC3BL,YAAY,CAACM,GAAG,CAACH,MAAM,EAAE,CAACH,YAAY,CAACO,GAAG,CAACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D;EACF;EAEA,OAAO,CAAC,GAAGH,YAAY,CAAC,CACrBQ,GAAG,CAAC,CAAC,CAACL,MAAM,EAAEM,KAAK,CAAC,KAAK,GAAGN,MAAM,MAAMM,KAAK,EAAE,CAAC,CAChDC,IAAI,CAAC,IAAI,CAAC;AACf,CAAC;AAED,MAAMC,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYxB,oBAAoB,EAAE;IACzC,OAAOwB,KAAK;EACd;;EAEA;EACA,IAAIhB,QAAQ,CAACgB,KAAK,CAAC,EAAE;IACnB,OAAO,IAAIxB,oBAAoB,CAC7B,iDAAiDW,uBAAuB,CAACa,KAAK,CAAC,IAAI,2BAA2B,GAAG,EACjHA,KACF,CAAC;EACH;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAEnB,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BwB,KAAK,YAAYvB,KAAK,GAAGuB,KAAK,CAACpB,OAAO,GAAGuB,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAACnB,OACT,CAAC;EACH;EAEA,OAAO,IAAAsB,gBAAO,EAACJ,KAAK,CAAC;AACvB,CAAC;AAACjB,OAAA,CAAAgB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -15,6 +15,9 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
15
15
  */
16
16
  const getHealthKitSeries = async (typeIdentifier, startDate) => {
17
17
  const unit = (0, _healthUnits.healthUnitFor)(typeIdentifier);
18
+
19
+ // HealthKit gives a percentage as a fraction (0.97); a reading of it says 97 %, as a single sample's does.
20
+ const scale = unit === "%" ? 100 : 1;
18
21
  const minutes = [];
19
22
  for (const {
20
23
  from,
@@ -30,7 +33,7 @@ const getHealthKitSeries = async (typeIdentifier, startDate) => {
30
33
  if (value !== undefined) {
31
34
  minutes.push({
32
35
  start: new Date(from.getTime() + index * _constants.SERIES_SLOT_MS),
33
- value
36
+ value: value * scale
34
37
  });
35
38
  }
36
39
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","_constants","_healthUnits","_hourlySeries","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getHealthKitSeries","typeIdentifier","startDate","unit","healthUnitFor","minutes","from","to","finishedHourWindows","statistics","Healthkit","queryStatisticsCollectionForQuantity","HKStatisticsOptions","discreteAverage","minute","forEach","statistic","index","value","averageQuantity","quantity","undefined","push","start","Date","getTime","SERIES_SLOT_MS","data","toHourlySeries","anchor","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/healthkit-series.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAGA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAAmF,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEnF;AACA;AACA;AACA;AACA,MAAMkB,kBAAkB,GAAG,MAAAA,CACzBC,cAAwC,EACxCC,SAAe,KAC8C;EAC7D,MAAMC,IAAI,GAAG,IAAAC,0BAAa,EAACH,cAAc,CAAC;EAC1C,MAAMI,OAAsB,GAAG,EAAE;EAEjC,KAAK,MAAM;IAAEC,IAAI;IAAEC;EAAG,CAAC,IAAI,IAAAC,iCAAmB,EAACN,SAAS,CAAC,EAAE;IACzD,MAAMO,UAAU,GAAG,MAAMC,6BAAS,CAACC,oCAAoC,CACrEV,cAAc,EACd,CAACW,yCAAmB,CAACC,eAAe,CAAC,EACrCP,IAAI,EACJ;MAAEQ,MAAM,EAAE;IAAE,CAAC,EACbR,IAAI,EACJC,EAAE,EACFJ,IACF,CAAC;;IAED;IACAM,UAAU,CAACM,OAAO,CAAC,CAACC,SAAS,EAAEC,KAAK,KAAK;MACvC,MAAMC,KAAK,GAAGF,SAAS,CAACG,eAAe,EAAEC,QAAQ;MAEjD,IAAIF,KAAK,KAAKG,SAAS,EAAE;QACvBhB,OAAO,CAACiB,IAAI,CAAC;UAAEC,KAAK,EAAE,IAAIC,IAAI,CAAClB,IAAI,CAACmB,OAAO,CAAC,CAAC,GAAGR,KAAK,GAAGS,yBAAc,CAAC;UAAER;QAAM,CAAC,CAAC;MACnF;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IAAES,IAAI,EAAE,IAAAC,4BAAc,EAAC3B,cAAc,EAAEE,IAAI,IAAI,GAAG,EAAEE,OAAO,CAAC;IAAEwB,MAAM,EAAER;EAAU,CAAC;AAC1F,CAAC;AAACS,OAAA,CAAA9B,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeHealthkit","_interopRequireWildcard","require","_constants","_healthUnits","_hourlySeries","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getHealthKitSeries","typeIdentifier","startDate","unit","healthUnitFor","scale","minutes","from","to","finishedHourWindows","statistics","Healthkit","queryStatisticsCollectionForQuantity","HKStatisticsOptions","discreteAverage","minute","forEach","statistic","index","value","averageQuantity","quantity","undefined","push","start","Date","getTime","SERIES_SLOT_MS","data","toHourlySeries","anchor","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/healthkit-series.ts"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAGA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAAmF,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAEnF;AACA;AACA;AACA;AACA,MAAMkB,kBAAkB,GAAG,MAAAA,CACzBC,cAAwC,EACxCC,SAAe,KAC8C;EAC7D,MAAMC,IAAI,GAAG,IAAAC,0BAAa,EAACH,cAAc,CAAC;;EAE1C;EACA,MAAMI,KAAK,GAAGF,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;EACpC,MAAMG,OAAsB,GAAG,EAAE;EAEjC,KAAK,MAAM;IAAEC,IAAI;IAAEC;EAAG,CAAC,IAAI,IAAAC,iCAAmB,EAACP,SAAS,CAAC,EAAE;IACzD,MAAMQ,UAAU,GAAG,MAAMC,6BAAS,CAACC,oCAAoC,CACrEX,cAAc,EACd,CAACY,yCAAmB,CAACC,eAAe,CAAC,EACrCP,IAAI,EACJ;MAAEQ,MAAM,EAAE;IAAE,CAAC,EACbR,IAAI,EACJC,EAAE,EACFL,IACF,CAAC;;IAED;IACAO,UAAU,CAACM,OAAO,CAAC,CAACC,SAAS,EAAEC,KAAK,KAAK;MACvC,MAAMC,KAAK,GAAGF,SAAS,CAACG,eAAe,EAAEC,QAAQ;MAEjD,IAAIF,KAAK,KAAKG,SAAS,EAAE;QACvBhB,OAAO,CAACiB,IAAI,CAAC;UAAEC,KAAK,EAAE,IAAIC,IAAI,CAAClB,IAAI,CAACmB,OAAO,CAAC,CAAC,GAAGR,KAAK,GAAGS,yBAAc,CAAC;UAAER,KAAK,EAAEA,KAAK,GAAGd;QAAM,CAAC,CAAC;MAClG;IACF,CAAC,CAAC;EACJ;EAEA,OAAO;IAAEuB,IAAI,EAAE,IAAAC,4BAAc,EAAC5B,cAAc,EAAEE,IAAI,IAAI,GAAG,EAAEG,OAAO,CAAC;IAAEwB,MAAM,EAAER;EAAU,CAAC;AAC1F,CAAC;AAACS,OAAA,CAAA/B,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.identifyImportedObservations = exports.getStableObservationId = void 0;
7
+ var _fhirSystems = require("./fhir-systems.js");
8
+ var _getHealthRecordSyncId = require("./get-health-record-sync-id.js");
9
+ var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
10
+ const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
11
+ const getObservationTime = observation => {
12
+ if (observation.effectivePeriod) {
13
+ return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
14
+ }
15
+ return observation.effectiveDateTime?.slice(0, 19) ?? "unknown";
16
+ };
17
+ const getStableObservationId = ({
18
+ observation,
19
+ provider,
20
+ sourceId,
21
+ bodyIndex
22
+ }) => observation.id && !sourceId ? `${provider}:${observation.id}` : [provider, sourceId ?? getObservationTime(observation), getObservationCode(observation), bodyIndex].join(":");
23
+ exports.getStableObservationId = getStableObservationId;
24
+ const syncIdentifier = value => ({
25
+ system: _fhirSystems.OBSERVATION_SYNC_ID_SYSTEM,
26
+ value
27
+ });
28
+
29
+ /**
30
+ * Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
31
+ * changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
32
+ * read of the same source again saves nothing new, or writes over a total that grew.
33
+ */
34
+ const identifyImportedObservations = ({
35
+ groupedObservationBodies,
36
+ provider,
37
+ groupedObservationSyncIds,
38
+ groupedRecordIds,
39
+ mode
40
+ }) => groupedObservationBodies.map((observationBodies, groupIndex) => {
41
+ const recordId = groupedRecordIds?.[groupIndex];
42
+ return observationBodies.map((observationBody, bodyIndex) => {
43
+ const syncId = getStableObservationId({
44
+ observation: observationBody,
45
+ provider,
46
+ sourceId: groupedObservationSyncIds?.[groupIndex],
47
+ bodyIndex
48
+ });
49
+
50
+ // A day's total saved before sync ids named their source carries its old id; naming the total by that id as
51
+ // well is what lets the save find it and write over it.
52
+ const legacySyncId = (0, _isDailyAggregateMode.isDailyAggregateMode)(mode) && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
53
+ return {
54
+ ...observationBody,
55
+ identifier: [...(observationBody.identifier || []), {
56
+ system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
57
+ value: provider
58
+ }, syncIdentifier(syncId), ...(legacySyncId && legacySyncId !== syncId ? [syncIdentifier(legacySyncId)] : []), ...(recordId ? [(0, _getHealthRecordSyncId.getHealthRecordIdentifier)(provider, recordId)] : [])],
59
+ device: {
60
+ ...(observationBody.device ?? {}),
61
+ identifier: {
62
+ system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
63
+ value: provider
64
+ }
65
+ }
66
+ };
67
+ });
68
+ });
69
+ exports.identifyImportedObservations = identifyImportedObservations;
70
+ //# sourceMappingURL=identify-imported-observations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","exports","syncIdentifier","value","OBSERVATION_SYNC_ID_SYSTEM","identifyImportedObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","mode","observationBodies","groupIndex","recordId","observationBody","syncId","legacySyncId","isDailyAggregateMode","undefined","identifier","OBSERVATION_SYNC_PROVIDER_SYSTEM","getHealthRecordIdentifier","device"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/identify-imported-observations.ts"],"mappings":"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","ignoreList":[]}
@@ -91,6 +91,36 @@ export const BTProviderChildWrapper = ({
91
91
  const propsRef = React.useRef(latestProps);
92
92
  const acceptedDevicesRef = React.useRef(acceptedDevices);
93
93
  const backgroundSyncCoordinatorRef = React.useRef(null);
94
+ const deliveringTo = React.useCallback(() => {
95
+ const latest = backgroundSyncRef.current;
96
+ if (!latest || !runtime.getBackgroundScanEnabled()) {
97
+ throw new Error("Queued result delivery is currently disabled");
98
+ }
99
+ return latest;
100
+ }, [runtime]);
101
+ const notifyAccepted = React.useCallback(async (latest, result) => {
102
+ if (latest.notifications?.enabled !== true) {
103
+ return;
104
+ }
105
+ try {
106
+ if (latest.notifications.shouldNotify?.(result) === false) {
107
+ return;
108
+ }
109
+ const body = latest.notifications.body;
110
+ const data = latest.notifications.data;
111
+ await showBackgroundPushNotification({
112
+ title: latest.notifications.title ?? "New health measurement",
113
+ body: body === undefined ? `${deviceTitle(result.deviceData)} reported a measurement` : typeof body === "function" ? body(result) : body,
114
+ ...(data === undefined ? {} : {
115
+ data: typeof data === "function" ? data(result) : data
116
+ })
117
+ });
118
+ } catch (error) {
119
+ propsRef.current.onError?.({
120
+ error: toBluetoothError(error)
121
+ });
122
+ }
123
+ }, []);
94
124
  const coordinatorOptionsFor = React.useCallback(current => ({
95
125
  ...current,
96
126
  getOwnerKey: () => backgroundSyncRef.current?.getOwnerKey?.(),
@@ -101,34 +131,23 @@ export const BTProviderChildWrapper = ({
101
131
  });
102
132
  },
103
133
  onResult: async result => {
104
- const latest = backgroundSyncRef.current;
105
- if (!latest || !runtime.getBackgroundScanEnabled()) {
106
- throw new Error("Queued result delivery is currently disabled");
107
- }
134
+ const latest = deliveringTo();
108
135
  await latest.onResult(result);
109
- if (latest.notifications?.enabled !== true) {
110
- return;
111
- }
112
- try {
113
- if (latest.notifications.shouldNotify?.(result) === false) {
114
- return;
136
+ await notifyAccepted(latest, result);
137
+ },
138
+ ...(current.onResults && {
139
+ onResults: async results => {
140
+ const latest = deliveringTo();
141
+ if (!latest.onResults) {
142
+ throw new Error("Queued results are delivered one at a time");
143
+ }
144
+ await latest.onResults(results);
145
+ for (const result of results) {
146
+ await notifyAccepted(latest, result);
115
147
  }
116
- const body = latest.notifications.body;
117
- const data = latest.notifications.data;
118
- await showBackgroundPushNotification({
119
- title: latest.notifications.title ?? "New health measurement",
120
- body: body === undefined ? `${deviceTitle(result.deviceData)} reported a measurement` : typeof body === "function" ? body(result) : body,
121
- ...(data === undefined ? {} : {
122
- data: typeof data === "function" ? data(result) : data
123
- })
124
- });
125
- } catch (error) {
126
- propsRef.current.onError?.({
127
- error: toBluetoothError(error)
128
- });
129
148
  }
130
- }
131
- }), [runtime]);
149
+ })
150
+ }), [deliveringTo, notifyAccepted]);
132
151
  const hasBackgroundSync = Boolean(backgroundSync);
133
152
  backgroundSyncRef.current = backgroundSync;
134
153
  propsRef.current = latestProps;
@@ -174,8 +193,10 @@ export const BTProviderChildWrapper = ({
174
193
  const backgroundOptions = currentBackgroundSync ? {
175
194
  backgroundEnabled: runtime.getBackgroundScanEnabled(),
176
195
  serviceUUIDs: getBackgroundServiceUUIDs(currentAcceptedDevices, currentBackgroundSync.serviceUUIDs),
177
- // Series being recorded wait in the results queue's store, so one survives the app closing.
178
- seriesStorage: currentBackgroundSync.storage
196
+ // Series being recorded wait in the results queue's store, so one survives the app closing, each kept for
197
+ // the account it was recorded for.
198
+ seriesStorage: currentBackgroundSync.storage,
199
+ getOwnerKey: () => backgroundSyncRef.current?.getOwnerKey?.()
179
200
  } : undefined;
180
201
  const managerOptions = {
181
202
  ...backgroundOptions,