@ovok/native 1.6.8 → 1.6.10
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.
- package/README.md +5 -3
- package/lib/commonjs/modules/data-sync/constants.js +13 -0
- package/lib/commonjs/modules/data-sync/constants.js.map +1 -0
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +10 -7
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js +10 -3
- package/lib/commonjs/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +2 -1
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js +2 -1
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/retry-save.js +68 -24
- package/lib/commonjs/modules/data-sync/utils/retry-save.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +88 -16
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +1 -1
- package/lib/commonjs/modules/questionnaire-response-form/README.md +24 -11
- package/lib/module/modules/data-sync/constants.js +9 -0
- package/lib/module/modules/data-sync/constants.js.map +1 -0
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +10 -7
- package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/data-processor.js +1 -1
- package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js +10 -3
- package/lib/module/modules/data-sync/services/managers/sync-progress-manager.js.map +1 -1
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js +1 -1
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +2 -1
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js +2 -1
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/module/modules/data-sync/utils/retry-save.js +68 -24
- package/lib/module/modules/data-sync/utils/retry-save.js.map +1 -1
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js +88 -16
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +1 -1
- package/lib/module/modules/questionnaire-response-form/README.md +24 -11
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +2 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/retry-save.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +5 -3
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts +7 -0
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts +2 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/sync-progress-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts +2 -0
- package/lib/typescript/module/src/modules/data-sync/types/sync-progress.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/retry-save.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +5 -3
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -3,28 +3,100 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.saveBundleObservations = void 0;
|
|
6
|
+
exports.splitHealthImportEntries = exports.saveBundleObservations = exports.MAX_HEALTH_IMPORT_BUNDLE_BYTES = void 0;
|
|
7
|
+
const MAX_HEALTH_IMPORT_BUNDLE_BYTES = exports.MAX_HEALTH_IMPORT_BUNDLE_BYTES = 900_000;
|
|
8
|
+
const getByteLength = value => {
|
|
9
|
+
const TextEncoderConstructor = globalThis.TextEncoder;
|
|
10
|
+
if (TextEncoderConstructor) {
|
|
11
|
+
return new TextEncoderConstructor().encode(value).byteLength;
|
|
12
|
+
}
|
|
13
|
+
return encodeURIComponent(value).replace(/%[0-9A-F]{2}|./g, "_").length;
|
|
14
|
+
};
|
|
15
|
+
const getBundleByteLength = entries => getByteLength(JSON.stringify({
|
|
16
|
+
resourceType: "Bundle",
|
|
17
|
+
type: "batch",
|
|
18
|
+
entry: entries
|
|
19
|
+
}));
|
|
20
|
+
const getMemberReference = entry => {
|
|
21
|
+
const observation = entry.resource;
|
|
22
|
+
return observation?.hasMember?.[0]?.reference;
|
|
23
|
+
};
|
|
24
|
+
const groupMeasurementEntries = entries => {
|
|
25
|
+
const rootUrls = new Set(entries.map(entry => entry.fullUrl).filter(Boolean));
|
|
26
|
+
const groups = new Map();
|
|
27
|
+
entries.forEach((entry, index) => {
|
|
28
|
+
const key = getMemberReference(entry) && rootUrls.has(getMemberReference(entry)) ? getMemberReference(entry) : entry.fullUrl ?? `entry-${index}`;
|
|
29
|
+
const group = groups.get(key) ?? [];
|
|
30
|
+
group.push(entry);
|
|
31
|
+
groups.set(key, group);
|
|
32
|
+
});
|
|
33
|
+
return [...groups.values()];
|
|
34
|
+
};
|
|
35
|
+
const serializeBatch = entries => getBundleByteLength(entries);
|
|
36
|
+
const splitHealthImportEntries = (entries, maxBytes = MAX_HEALTH_IMPORT_BUNDLE_BYTES) => {
|
|
37
|
+
const batches = [];
|
|
38
|
+
let current = [];
|
|
39
|
+
for (const group of groupMeasurementEntries(entries)) {
|
|
40
|
+
const candidate = [...current, ...group];
|
|
41
|
+
if (current.length > 0 && serializeBatch(candidate) > maxBytes) {
|
|
42
|
+
batches.push(current);
|
|
43
|
+
current = [];
|
|
44
|
+
}
|
|
45
|
+
current.push(...group);
|
|
46
|
+
}
|
|
47
|
+
if (current.length > 0) {
|
|
48
|
+
batches.push(current);
|
|
49
|
+
}
|
|
50
|
+
return batches;
|
|
51
|
+
};
|
|
52
|
+
exports.splitHealthImportEntries = splitHealthImportEntries;
|
|
53
|
+
const createBatchError = (bundle, expectedEntries) => {
|
|
54
|
+
const responseEntries = bundle.entry ?? [];
|
|
55
|
+
const statusCounts = new Map();
|
|
56
|
+
responseEntries.forEach(entry => {
|
|
57
|
+
const status = entry.response?.status ?? "missing status";
|
|
58
|
+
if (status.startsWith("2")) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
|
|
62
|
+
});
|
|
63
|
+
const missingCount = Math.max(expectedEntries - responseEntries.length, 0);
|
|
64
|
+
if (missingCount > 0) {
|
|
65
|
+
statusCounts.set("missing status", (statusCounts.get("missing status") ?? 0) + missingCount);
|
|
66
|
+
}
|
|
67
|
+
const summary = [...statusCounts.entries()].map(([status, count]) => `${status} × ${count}`).join(", ");
|
|
68
|
+
const error = new Error(`Health import batch did not save every entry (${summary || "unknown status"})`);
|
|
69
|
+
Object.assign(error, {
|
|
70
|
+
bundle
|
|
71
|
+
});
|
|
72
|
+
return error;
|
|
73
|
+
};
|
|
7
74
|
const saveBundleObservations = async ({
|
|
8
75
|
entries,
|
|
9
76
|
client
|
|
10
77
|
}) => {
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const hasMissingResponse = responseEntries.length !== entries.length;
|
|
18
|
-
const rejectedEntries = responseEntries.filter(entry => !entry.response?.status.startsWith("2"));
|
|
19
|
-
if (hasMissingResponse || rejectedEntries.length > 0) {
|
|
20
|
-
const statuses = responseEntries.map(entry => entry.response?.status ?? "missing status");
|
|
21
|
-
const error = new Error(`Health import batch did not save every entry (${statuses.join(", ")})`);
|
|
22
|
-
Object.assign(error, {
|
|
23
|
-
bundle
|
|
78
|
+
const responseBundles = [];
|
|
79
|
+
for (const batchEntries of splitHealthImportEntries(entries)) {
|
|
80
|
+
const bundle = await client.executeBatch({
|
|
81
|
+
resourceType: "Bundle",
|
|
82
|
+
type: "batch",
|
|
83
|
+
entry: batchEntries
|
|
24
84
|
});
|
|
25
|
-
|
|
85
|
+
const responseEntries = bundle.entry ?? [];
|
|
86
|
+
const hasMissingResponse = responseEntries.length !== batchEntries.length;
|
|
87
|
+
const hasRejectedEntry = responseEntries.some(entry => !entry.response?.status.startsWith("2"));
|
|
88
|
+
if (hasMissingResponse || hasRejectedEntry) {
|
|
89
|
+
throw createBatchError(bundle, batchEntries.length);
|
|
90
|
+
}
|
|
91
|
+
responseBundles.push(bundle);
|
|
26
92
|
}
|
|
27
|
-
return
|
|
93
|
+
return {
|
|
94
|
+
...(responseBundles[0] ?? {
|
|
95
|
+
resourceType: "Bundle",
|
|
96
|
+
type: "batch-response"
|
|
97
|
+
}),
|
|
98
|
+
entry: responseBundles.flatMap(bundle => bundle.entry ?? [])
|
|
99
|
+
};
|
|
28
100
|
};
|
|
29
101
|
exports.saveBundleObservations = saveBundleObservations;
|
|
30
102
|
//# sourceMappingURL=save-bundle-observations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["MAX_HEALTH_IMPORT_BUNDLE_BYTES","exports","getByteLength","value","TextEncoderConstructor","globalThis","TextEncoder","encode","byteLength","encodeURIComponent","replace","length","getBundleByteLength","entries","JSON","stringify","resourceType","type","entry","getMemberReference","observation","resource","hasMember","reference","groupMeasurementEntries","rootUrls","Set","map","fullUrl","filter","Boolean","groups","Map","forEach","index","key","has","group","get","push","set","values","serializeBatch","splitHealthImportEntries","maxBytes","batches","current","candidate","createBatchError","bundle","expectedEntries","responseEntries","statusCounts","status","response","startsWith","missingCount","Math","max","summary","count","join","error","Error","Object","assign","saveBundleObservations","client","responseBundles","batchEntries","executeBatch","hasMissingResponse","hasRejectedEntry","some","flatMap"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/save-bundle-observations.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
A component for rendering FHIR-based questionnaires with multi-page navigation and various input types.
|
|
4
4
|
|
|
5
|
+
The full integration reference lives in
|
|
6
|
+
[`doc/docs/components/questionnaire-response-form/index.md`](../../../doc/docs/components/questionnaire-response-form/index.md).
|
|
7
|
+
This README is kept as a source-local contract summary.
|
|
8
|
+
|
|
5
9
|
## Features
|
|
6
10
|
|
|
7
11
|
- Renders FHIR-compatible questionnaires
|
|
@@ -14,12 +18,13 @@ A component for rendering FHIR-based questionnaires with multi-page navigation a
|
|
|
14
18
|
- Number
|
|
15
19
|
- Provides form validation
|
|
16
20
|
- Supports conditional questions with default values
|
|
17
|
-
-
|
|
21
|
+
- Can create a FHIR-compatible QuestionnaireResponse in the SDK-managed submission mode
|
|
18
22
|
|
|
19
23
|
## Usage
|
|
20
24
|
|
|
21
25
|
```tsx
|
|
22
|
-
import { QuestionnaireForm
|
|
26
|
+
import { QuestionnaireForm } from "@ovok/native/questionnaire-response-form";
|
|
27
|
+
import type { QuestionnaireFormValues } from "@ovok/native/questionnaire-response-form";
|
|
23
28
|
|
|
24
29
|
const MyComponent = () => {
|
|
25
30
|
const questionnaire = {
|
|
@@ -46,8 +51,9 @@ const MyComponent = () => {
|
|
|
46
51
|
],
|
|
47
52
|
};
|
|
48
53
|
|
|
49
|
-
const handleSubmit = (
|
|
50
|
-
|
|
54
|
+
const handleSubmit = async (values: QuestionnaireFormValues) => {
|
|
55
|
+
// The host owns persistence in the onSubmit mode.
|
|
56
|
+
await saveAnswers(values);
|
|
51
57
|
};
|
|
52
58
|
|
|
53
59
|
return (
|
|
@@ -69,7 +75,11 @@ const MyComponent = () => {
|
|
|
69
75
|
| style | ViewStyle | Optional styles for the container |
|
|
70
76
|
| testID | string | Test ID for testing |
|
|
71
77
|
|
|
72
|
-
|
|
78
|
+
Choose either the host-owned `onSubmit(values, formikHelpers?)` mode or the SDK-managed
|
|
79
|
+
`onSuccess(response)` mode. `onError(error)` is optional in the SDK-managed mode. The
|
|
80
|
+
SDK-managed path requires the active `@ovok/core` client/profile context, creates a
|
|
81
|
+
completed `QuestionnaireResponse`, adds the patient subject and a stable identifier,
|
|
82
|
+
and persists it with `createResourceIfNoneExist`.
|
|
73
83
|
|
|
74
84
|
## Extended Properties
|
|
75
85
|
|
|
@@ -170,10 +180,10 @@ The form provides a context and hooks for advanced customization:
|
|
|
170
180
|
|
|
171
181
|
The form includes utility classes for various operations:
|
|
172
182
|
|
|
173
|
-
-
|
|
174
|
-
|
|
175
|
-
- **
|
|
176
|
-
|
|
183
|
+
- The implementation uses internal form initialization, conditional-question, and
|
|
184
|
+
validation utilities.
|
|
185
|
+
- **QuestionnaireSubmitUtils** is the public response-construction utility; it creates
|
|
186
|
+
a FHIR response object but does not persist it or choose an upload policy.
|
|
177
187
|
|
|
178
188
|
## Upgraded QuestionnaireForm API
|
|
179
189
|
|
|
@@ -246,8 +256,11 @@ const MyComponent = () => {
|
|
|
246
256
|
| Prop | Type | Description |
|
|
247
257
|
| ------------- | ----------------------------------------- | ----------------------------------- |
|
|
248
258
|
| questionnaire | Questionnaire | The questionnaire object to render |
|
|
249
|
-
| onSubmit | (
|
|
250
|
-
|
|
|
259
|
+
| onSubmit | (values: QuestionnaireFormValues, formikHelpers?) => Promise<void> | Host-owned submit callback |
|
|
260
|
+
| onSuccess | (response: QuestionnaireResponse) => void | Called after SDK-managed persistence |
|
|
261
|
+
| onError | (error: Error) => void | Called when SDK-managed persistence fails |
|
|
262
|
+
| initialValues | Partial<QuestionnaireFormValues> | Initial values for the form |
|
|
263
|
+
| paged | boolean | Whether to show one item at a time; defaults to true |
|
|
251
264
|
| style | StyleProp<ViewStyle> | Style for the container |
|
|
252
265
|
| testID | string | Test ID for the component |
|
|
253
266
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Keeps provider pages comfortably below Medplum's synchronous request limit.
|
|
5
|
+
* The save helper also enforces the byte limit because an observation's size
|
|
6
|
+
* is not constant.
|
|
7
|
+
*/
|
|
8
|
+
export const DEFAULT_HEALTH_SYNC_CHUNK_SIZE = 250;
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE"],"sourceRoot":"../../../../src","sources":["modules/data-sync/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,8BAA8B,GAAG,GAAG","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
/* eslint-disable max-lines */
|
|
4
4
|
|
|
5
5
|
import { recordOvokDuration, recordOvokMetric, withOvokSpan } from "../../helpers/utils/telemetry.js";
|
|
6
|
+
import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
|
|
6
7
|
import { getHealthDataMode } from "../types/health-sync-keys.js";
|
|
7
8
|
import { isSyncRetryCancelled, withSyncRetries } from "../utils/retry-save.js";
|
|
8
9
|
import { DataProcessor } from "./managers/data-processor.js";
|
|
@@ -18,7 +19,7 @@ export class BaseHealthSyncService {
|
|
|
18
19
|
this.progressManager = new SyncProgressManager(props.updateProgress, props.dataToSync);
|
|
19
20
|
this.stateManager = new SyncStateManager();
|
|
20
21
|
this.storageManager = new StorageManager(props.client, this.getProviderName());
|
|
21
|
-
this.dataProcessor = new DataProcessor(props.client, props.patientId, this.getProviderName(), props.chunkSize ??
|
|
22
|
+
this.dataProcessor = new DataProcessor(props.client, props.patientId, this.getProviderName(), props.chunkSize ?? DEFAULT_HEALTH_SYNC_CHUNK_SIZE, this.storageManager, this.getTotalCountsFunction(), this.getDataFromProviderFunction(), this.getConverterFunction());
|
|
22
23
|
}
|
|
23
24
|
/** One run at a time; see `SyncStateManager.once` for why that matters. */
|
|
24
25
|
async startSync() {
|
|
@@ -91,15 +92,15 @@ export class BaseHealthSyncService {
|
|
|
91
92
|
}
|
|
92
93
|
async syncDataByType(measurementTypeKey, data) {
|
|
93
94
|
const latestValidStartDate = this.dataProcessor.getLatestValidStartDate(this.stateManager.latestObservationDates, data, getHealthDataMode(measurementTypeKey, data.mode));
|
|
94
|
-
let
|
|
95
|
-
while (
|
|
95
|
+
let hasMore = true;
|
|
96
|
+
while (hasMore && !this.stateManager.shouldStopSync) {
|
|
96
97
|
const {
|
|
97
98
|
observationBodies,
|
|
98
99
|
observationSyncIds,
|
|
99
|
-
|
|
100
|
+
hasMore: currentHasMore,
|
|
100
101
|
anchors
|
|
101
102
|
} = await this.dataProcessor.getObservationBodiesForType(measurementTypeKey, data, latestValidStartDate);
|
|
102
|
-
|
|
103
|
+
hasMore = currentHasMore;
|
|
103
104
|
if (this.stateManager.shouldStopSync) {
|
|
104
105
|
break;
|
|
105
106
|
}
|
|
@@ -111,7 +112,9 @@ export class BaseHealthSyncService {
|
|
|
111
112
|
if (this.stateManager.shouldStopSync) {
|
|
112
113
|
return;
|
|
113
114
|
}
|
|
114
|
-
const
|
|
115
|
+
const responseEntries = result.entry ?? [];
|
|
116
|
+
const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : entries.length;
|
|
117
|
+
const createdCount = responseEntries.filter(entry => entry.response?.status.startsWith("201")).length;
|
|
115
118
|
recordOvokMetric("ovok.health.samples.imported", createdCount, {
|
|
116
119
|
provider: this.getProviderName(),
|
|
117
120
|
measurementTypeKey
|
|
@@ -120,7 +123,7 @@ export class BaseHealthSyncService {
|
|
|
120
123
|
provider: this.getProviderName()
|
|
121
124
|
});
|
|
122
125
|
this.stateManager.addResult(result);
|
|
123
|
-
this.progressManager.incrementSyncedObservations(measurementTypeKey, createdCount);
|
|
126
|
+
this.progressManager.incrementSyncedObservations(measurementTypeKey, savedCount, createdCount);
|
|
124
127
|
this.storageManager.saveAnchors(anchors);
|
|
125
128
|
} catch (error) {
|
|
126
129
|
if (isSyncRetryCancelled(error) || this.stateManager.shouldStopSync) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","getProviderName","dataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","once","provider","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","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","
|
|
1
|
+
{"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","getProviderName","dataProcessor","chunkSize","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","startSync","once","provider","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","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","currentHasMore","anchors","getObservationBodiesForType","entries","generateObservationEntries","length","startedAt","Date","now","result","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","addResult","incrementSyncedObservations","saveAnchors"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":";;AAAA;;AAKA,SACEA,kBAAkB,EAClBC,gBAAgB,EAChBC,YAAY,QACP,kCAA+B;AACtC,SAASC,8BAA8B,QAAQ,iBAAc;AAS7D,SAASC,iBAAiB,QAAuB,8BAA2B;AAE5E,SAASC,oBAAoB,EAAEC,eAAe,QAAQ,wBAAqB;AAE3E,SAASC,aAAa,QAAQ,8BAA2B;AACzD,SAASC,cAAc,QAAQ,+BAA4B;AAC3D,SAASC,mBAAmB,QAAQ,qCAAkC;AACtE,SAASC,gBAAgB,QAAQ,kCAA+B;AAEhE,OAAO,MAAeC,qBAAqB,CAKzC;EAeAC,WAAWA,CAACC,KAAoC,EAAE;IAChD,IAAI,CAACC,MAAM,GAAGD,KAAK,CAACC,MAAM;IAC1B,IAAI,CAACC,SAAS,GAAGF,KAAK,CAACE,SAAS;IAChC,IAAI,CAACC,UAAU,GAAGH,KAAK,CAACG,UAAU;IAClC,IAAI,CAACC,WAAW,GAAGJ,KAAK,CAACI,WAAW;IAEpC,IAAI,CAACC,eAAe,GAAG,IAAIT,mBAAmB,CAC5CI,KAAK,CAACM,cAAc,EACpBN,KAAK,CAACG,UACR,CAAC;IACD,IAAI,CAACI,YAAY,GAAG,IAAIV,gBAAgB,CAAC,CAAC;IAC1C,IAAI,CAACW,cAAc,GAAG,IAAIb,cAAc,CACtCK,KAAK,CAACC,MAAM,EACZ,IAAI,CAACQ,eAAe,CAAC,CACvB,CAAC;IACD,IAAI,CAACC,aAAa,GAAG,IAAIhB,aAAa,CACpCM,KAAK,CAACC,MAAM,EACZD,KAAK,CAACE,SAAS,EACf,IAAI,CAACO,eAAe,CAAC,CAAC,EACtBT,KAAK,CAACW,SAAS,IAAIrB,8BAA8B,EACjD,IAAI,CAACkB,cAAc,EACnB,IAAI,CAACI,sBAAsB,CAAC,CAAC,EAC7B,IAAI,CAACC,2BAA2B,CAAC,CAAC,EAClC,IAAI,CAACC,oBAAoB,CAAC,CAC5B,CAAC;EACH;EAgBA;EACA,MAAaC,SAASA,CAAA,EAAkB;IACtC,OAAO,IAAI,CAACR,YAAY,CAACS,IAAI,CAAC,MAC5B3B,YAAY,CAAC,eAAe,EAAE;MAAE4B,QAAQ,EAAE,IAAI,CAACR,eAAe,CAAC;IAAE,CAAC,EAAE,MAClE,IAAI,CAACS,OAAO,CAAC,CACf,CACF,CAAC;EACH;EAEA,MAAcA,OAAOA,CAAA,EAAkB;IACrC,IAAI;MACF,IAAI,CAAC,IAAI,CAACjB,MAAM,CAACkB,aAAa,EAAE;QAC9B,IAAI,CAACf,WAAW,CAAC,IAAIgB,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAErD;MACF;MAEA,IAAI,CAAC,IAAI,CAAClB,SAAS,EAAE;QACnB,IAAI,CAACE,WAAW,CAAC,IAAIgB,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEhD;MACF;MAEA,IAAI,CAACb,YAAY,CAACc,MAAM,CAAC,CAAC;MAC1B,IAAI,CAAChB,eAAe,CAACiB,qBAAqB,CAAC,CAAC;MAE5C,IAAI,CAAC,IAAI,CAACf,YAAY,CAACgB,kBAAkB,EAAE;QACzC,MAAM,IAAI,CAACC,cAAc,CAAC,CAAC;MAC7B;MAEA,MAAM,IAAI,CAACC,mBAAmB,CAAC,CAAC;MAEhC,IAAI,CAACpB,eAAe,CAACqB,gBAAgB,CAAC,IAAI,CAACnB,YAAY,CAACoB,WAAW,CAAC;IACtE,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,IAAI,CAACxB,WAAW,CAACwB,KAAc,CAAC;IAClC;EACF;EAEA,MAAaC,QAAQA,CAAA,EAAkB;IACrC,IAAI,CAACxB,eAAe,CAACyB,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAACvB,YAAY,CAACwB,KAAK,CAAC,CAAC;IACzB,IAAI,CAACxB,YAAY,CAACyB,cAAc,GAAG,IAAI;EACzC;EAEA,MAAaC,SAASA,CAACC,MAAwB,EAAiB;IAC9D,IAAI,CAAC3B,YAAY,CAAC4B,KAAK,CAACD,MAAM,CAAC;IAC/B,IAAI,CAAC7B,eAAe,CAACqB,gBAAgB,CAACQ,MAAM,CAAC;EAC/C;EAEA,MAAcV,cAAcA,CAAA,EAAkB;IAC5C,MAAMY,sBAAsB,GAC1B,MAAM,IAAI,CAAC1B,aAAa,CAAC2B,yBAAyB,CAAC,IAAI,CAAClC,UAAU,CAAC;IAErE,IAAI,CAACI,YAAY,CAAC6B,sBAAsB,GAAGA,sBAAsB;IAEjE,MAAM,IAAI,CAACE,oBAAoB,CAAC,CAAC;IACjC,IAAI,CAAC/B,YAAY,CAACgB,kBAAkB,GAAG,IAAI;EAC7C;EAEA,MAAce,oBAAoBA,CAAA,EAAkB;IAClD,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACtC,UAAqC,CAAC,EAAE;MACzE,MAAMuC,kBAAkB,GAAGH,GAAoB;MAC/C,MAAMI,IAAI,GAAG,IAAI,CAACC,yBAAyB,CAACF,kBAAkB,CAAC;MAE/D,IAAI,CAACC,IAAI,EAAE;QACT;MACF;MAEA,MAAME,oBAAoB,GAAG,IAAI,CAACnC,aAAa,CAACoC,uBAAuB,CACrE,IAAI,CAACvC,YAAY,CAAC6B,sBAAsB,EACxCO,IAAI,EACJpD,iBAAiB,CAACmD,kBAAkB,EAAEC,IAAI,CAACI,IAAI,CACjD,CAAC;MAED,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACtC,aAAa,CAACuC,2BAA2B,CACrEP,kBAAkB,EAClBC,IAAI,EACJE,oBACF,CAAC;MAED,IAAI,CAACxC,eAAe,CAAC6C,oBAAoB,CAACR,kBAAkB,EAAEM,UAAU,CAAC;IAC3E;EACF;EAEA,MAAcvB,mBAAmBA,CAAA,EAAkB;IACjD,KAAK,MAAMc,GAAG,IAAIC,MAAM,CAACC,IAAI,CAC3B,IAAI,CAACtC,UACP,CAAC,EAAE;MACD,IAAI,IAAI,CAACI,YAAY,CAACyB,cAAc,EAAE;QACpC;MACF;MAEA,MAAMU,kBAAkB,GAAGH,GAAoB;MAC/C,MAAMI,IAAI,GAAG,IAAI,CAACC,yBAAyB,CAACF,kBAAkB,CAAC;MAE/D,IAAI,CAACC,IAAI,EAAE;QACT,IAAI,CAACtC,eAAe,CAAC8C,SAAS,CAACT,kBAAkB,EAAE,MAAM,CAAC;QAC1D;MACF;MAEA,IAAI,CAACrC,eAAe,CAAC8C,SAAS,CAACT,kBAAkB,EAAE,SAAS,CAAC;MAC7D,MAAM,IAAI,CAACU,cAAc,CAACV,kBAAkB,EAAEC,IAAI,CAAC;IACrD;EACF;EAEA,MAAcS,cAAcA,CAC1BV,kBAAiC,EACjCC,IAA6C,EAC9B;IACf,MAAME,oBAAoB,GAAG,IAAI,CAACnC,aAAa,CAACoC,uBAAuB,CACrE,IAAI,CAACvC,YAAY,CAAC6B,sBAAsB,EACxCO,IAAI,EACJpD,iBAAiB,CAACmD,kBAAkB,EAAEC,IAAI,CAACI,IAAI,CACjD,CAAC;IAED,IAAIM,OAAO,GAAG,IAAI;IAElB,OAAOA,OAAO,IAAI,CAAC,IAAI,CAAC9C,YAAY,CAACyB,cAAc,EAAE;MACnD,MAAM;QACJsB,iBAAiB;QACjBC,kBAAkB;QAClBF,OAAO,EAAEG,cAAc;QACvBC;MACF,CAAC,GAAG,MAAM,IAAI,CAAC/C,aAAa,CAACgD,2BAA2B,CACtDhB,kBAAkB,EAClBC,IAAI,EACJE,oBACF,CAAC;MAEDQ,OAAO,GAAGG,cAAc;MAExB,IAAI,IAAI,CAACjD,YAAY,CAACyB,cAAc,EAAE;QACpC;MACF;MAEA,MAAM2B,OAAO,GAAG,IAAI,CAACjD,aAAa,CAACkD,0BAA0B,CAC3DN,iBAAiB,EACjBC,kBAAkB,EAClBhE,iBAAiB,CAACmD,kBAAkB,EAAEC,IAAI,CAACI,IAAI,CACjD,CAAC;MAED,IAAIY,OAAO,CAACE,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAACtD,YAAY,CAACyB,cAAc,EAAE;QAC7D,IAAI;UACF,MAAM8B,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;UAE5B,MAAMC,MAAM,GAAG,MAAMxE,eAAe,CAClC,MAAM,IAAI,CAACe,cAAc,CAAC0D,gBAAgB,CAACP,OAAO,CAAC,EACnD,MAAM,IAAI,CAACpD,YAAY,CAACyB,cAC1B,CAAC;UAED,IAAI,IAAI,CAACzB,YAAY,CAACyB,cAAc,EAAE;YACpC;UACF;UAEA,MAAMmC,eAAe,GAAGF,MAAM,CAACG,KAAK,IAAI,EAAE;UAE1C,MAAMC,UAAU,GAAGF,eAAe,CAACN,MAAM,GACrCM,eAAe,CAACG,MAAM,CAAEF,KAAK,IAC3BA,KAAK,CAACG,QAAQ,EAAEC,MAAM,CAACC,UAAU,CAAC,GAAG,CACvC,CAAC,CAACZ,MAAM,GACRF,OAAO,CAACE,MAAM;UAElB,MAAMa,YAAY,GAAGP,eAAe,CAACG,MAAM,CAAEF,KAAK,IAChDA,KAAK,CAACG,QAAQ,EAAEC,MAAM,CAACC,UAAU,CAAC,KAAK,CACzC,CAAC,CAACZ,MAAM;UAERzE,gBAAgB,CAAC,8BAA8B,EAAEsF,YAAY,EAAE;YAC7DzD,QAAQ,EAAE,IAAI,CAACR,eAAe,CAAC,CAAC;YAChCiC;UACF,CAAC,CAAC;UACFvD,kBAAkB,CAChB,gCAAgC,EAChC4E,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS,EACtB;YACE7C,QAAQ,EAAE,IAAI,CAACR,eAAe,CAAC;UACjC,CACF,CAAC;UAED,IAAI,CAACF,YAAY,CAACoE,SAAS,CAACV,MAAM,CAAC;UACnC,IAAI,CAAC5D,eAAe,CAACuE,2BAA2B,CAC9ClC,kBAAkB,EAClB2B,UAAU,EACVK,YACF,CAAC;UAED,IAAI,CAAClE,cAAc,CAACqE,WAAW,CAACpB,OAAO,CAAC;QAC1C,CAAC,CAAC,OAAO7B,KAAK,EAAE;UACd,IAAIpC,oBAAoB,CAACoC,KAAK,CAAC,IAAI,IAAI,CAACrB,YAAY,CAACyB,cAAc,EAAE;YACnE;UACF;UAEA,IAAI,CAAC3B,eAAe,CAAC8C,SAAS,CAACT,kBAAkB,EAAE,QAAQ,CAAC;UAC5D,IAAI,CAACtC,WAAW,CAACwB,KAAc,CAAC;UAEhC;QACF;MACF,CAAC,MAAM;QACL,IAAI,CAACpB,cAAc,CAACqE,WAAW,CAACpB,OAAO,CAAC;MAC1C;IACF;IAEA,IAAI,CAACpD,eAAe,CAAC8C,SAAS,CAC5BT,kBAAkB,EAClB,IAAI,CAACnC,YAAY,CAACyB,cAAc,GAAG,MAAM,GAAG,WAC9C,CAAC;EACH;EAEQY,yBAAyBA,CAACF,kBAAiC,EAAE;IACnE,OAAO,IAAI,CAACvC,UAAU,CAACuC,kBAAkB,CAAC;EAC5C;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","generateObservationEntry","getHealthRecordSyncId","getLatestObservationDatesByCode","getLatestValidStartDate","groupSleepSamples","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","Object","values","flatMap","data","typeIdentifiers","map","identifier","code","getLatestObservationDates","codes","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","mode","totalCounts","Promise","all","typeIdentifier","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","typeIdentifierCodes","fromEntries","String","results","newAnchors","result","flat","filter","Boolean","allData","dataGroups","sleep","bloodPressure","Array","from","groups","sample","value","key","Date","getTime","endDate","group","get","push","set","Map","observationBodies","length","undefined","observationSyncIds","
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","generateObservationEntry","getHealthRecordSyncId","getLatestObservationDatesByCode","getLatestValidStartDate","groupSleepSamples","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","Object","values","flatMap","data","typeIdentifiers","map","identifier","code","getLatestObservationDates","codes","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","mode","totalCounts","Promise","all","typeIdentifier","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","typeIdentifierCodes","fromEntries","String","results","newAnchors","result","flat","filter","Boolean","allData","dataGroups","sleep","bloodPressure","Array","from","groups","sample","value","key","Date","getTime","endDate","group","get","push","set","Map","observationBodies","length","undefined","observationSyncIds","hasMore","some","anchors","generateObservationEntries","groupedObservationBodies","groupedObservationSyncIds","latestObservationDates"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const defaultSyncData = {
|
|
4
4
|
syncedObservations: null,
|
|
5
|
+
createdObservations: null,
|
|
5
6
|
totalObservations: null,
|
|
6
7
|
status: "idle"
|
|
7
8
|
};
|
|
@@ -35,18 +36,24 @@ export class SyncProgressManager {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
getProgress(measurementTypeKey) {
|
|
39
|
+
const data = this.syncData[measurementTypeKey];
|
|
38
40
|
return {
|
|
39
|
-
done:
|
|
40
|
-
total:
|
|
41
|
+
done: data?.syncedObservations ?? 0,
|
|
42
|
+
total: data?.totalObservations ?? 0,
|
|
43
|
+
...(data?.createdObservations === null || data?.createdObservations === undefined ? {} : {
|
|
44
|
+
created: data.createdObservations
|
|
45
|
+
})
|
|
41
46
|
};
|
|
42
47
|
}
|
|
43
48
|
setTotalObservations(measurementTypeKey, total) {
|
|
44
49
|
this.syncData[measurementTypeKey].totalObservations = total;
|
|
45
50
|
this.notifyProgress(measurementTypeKey, "idle");
|
|
46
51
|
}
|
|
47
|
-
incrementSyncedObservations(measurementTypeKey, count) {
|
|
52
|
+
incrementSyncedObservations(measurementTypeKey, count, createdCount = 0) {
|
|
48
53
|
this.syncData[measurementTypeKey].syncedObservations ??= 0;
|
|
49
54
|
this.syncData[measurementTypeKey].syncedObservations += count;
|
|
55
|
+
this.syncData[measurementTypeKey].createdObservations ??= 0;
|
|
56
|
+
this.syncData[measurementTypeKey].createdObservations += createdCount;
|
|
50
57
|
this.notifyProgress(measurementTypeKey, "syncing");
|
|
51
58
|
}
|
|
52
59
|
setStatus(measurementTypeKey, status, reason) {
|
|
@@ -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","
|
|
1
|
+
{"version":3,"names":["defaultSyncData","syncedObservations","createdObservations","totalObservations","status","SyncProgressManager","syncData","constructor","updateProgress","dataToSync","key","Object","keys","measurementTypeKey","setPauseStatuses","reason","currentStatus","getStatus","setStatus","setNotStartedStatuses","getProgress","data","done","total","undefined","created","setTotalObservations","notifyProgress","incrementSyncedObservations","count","createdCount","resetAll","forEach","progress"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/sync-progress-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("
|
|
3
|
+
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
4
4
|
const getObservationTime = observation => {
|
|
5
5
|
if (observation.effectivePeriod) {
|
|
6
6
|
return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { addSeconds, startOfDay, subDays } from "date-fns";
|
|
4
4
|
import { aggregateGroupByPeriod, readRecords } from "react-native-health-connect";
|
|
5
|
+
import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
|
|
5
6
|
export const getRecordsFromHealthConnect = async ({
|
|
6
7
|
typeIdentifier,
|
|
7
8
|
startDate: _startDate,
|
|
8
|
-
chunkSize =
|
|
9
|
+
chunkSize = DEFAULT_HEALTH_SYNC_CHUNK_SIZE,
|
|
9
10
|
anchor,
|
|
10
11
|
mode = "point"
|
|
11
12
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["addSeconds","startOfDay","subDays","aggregateGroupByPeriod","readRecords","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","anchor","mode","getDailyAggregates","Date","toISOString","endDate","result","timeRangeFilter","operator","startTime","endTime","pageSize","pageToken","data","records","undefined","aggregateType","today","groups","recordType","timeRangeSlicer","period","length","flatMap","group","end","measurement","aggregateMeasurement","dataOrigins","kind","sourceApp","average","numberValue","BPM_AVG","unit","minimum","BPM_MIN","maximum","BPM_MAX","value","COUNT_TOTAL","nestedNumber","DISTANCE","ACTIVE_CALORIES_TOTAL","FLOORS_CLIMBED_TOTAL","scale","EXERCISE_DURATION_TOTAL","Number","isFinite","key","factor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-records-from-health-connect.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,UAAU,EAAEC,OAAO,QAAQ,UAAU;AAC1D,SACEC,sBAAsB,EAEtBC,WAAW,QAGN,6BAA6B;
|
|
1
|
+
{"version":3,"names":["addSeconds","startOfDay","subDays","aggregateGroupByPeriod","readRecords","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getRecordsFromHealthConnect","typeIdentifier","startDate","_startDate","chunkSize","anchor","mode","getDailyAggregates","Date","toISOString","endDate","result","timeRangeFilter","operator","startTime","endTime","pageSize","pageToken","data","records","undefined","aggregateType","today","groups","recordType","timeRangeSlicer","period","length","flatMap","group","end","measurement","aggregateMeasurement","dataOrigins","kind","sourceApp","average","numberValue","BPM_AVG","unit","minimum","BPM_MIN","maximum","BPM_MAX","value","COUNT_TOTAL","nestedNumber","DISTANCE","ACTIVE_CALORIES_TOTAL","FLOORS_CLIMBED_TOTAL","scale","EXERCISE_DURATION_TOTAL","Number","isFinite","key","factor"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-records-from-health-connect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
import Healthkit, { HKStatisticsOptions, HKWorkoutTypeIdentifier, UnitOfEnergy } from "@kingstinct/react-native-healthkit";
|
|
4
4
|
import { addDays, addSeconds, startOfDay, subDays } from "date-fns";
|
|
5
|
+
import { DEFAULT_HEALTH_SYNC_CHUNK_SIZE } from "../constants.js";
|
|
5
6
|
import { healthUnitFor } from "./health-units.js";
|
|
6
7
|
export const getSamplesFromHealth = async ({
|
|
7
8
|
startDate: _startDate,
|
|
8
9
|
typeIdentifier,
|
|
9
10
|
anchor,
|
|
10
|
-
chunkSize =
|
|
11
|
+
chunkSize = DEFAULT_HEALTH_SYNC_CHUNK_SIZE,
|
|
11
12
|
mode = "point"
|
|
12
13
|
}) => {
|
|
13
14
|
const startDate = _startDate ? addSeconds(new Date(_startDate), 1) : subDays(new Date(), 30);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","addSeconds","startOfDay","subDays","healthUnitFor","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","Date","endDate","isQuantityIdentifier","data","undefined","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","samples","newAnchor","isCategoryIdentifier","queryCategorySamplesWithAnchor","queryQuantitySamplesWithAnchor","unit","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value","startsWith"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":";;AAAA,OAAOA,SAAS,IAIdC,mBAAmB,EACnBC,uBAAuB,EACvBC,YAAY,QACP,oCAAoC;AAC3C,SAASC,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAEC,OAAO,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"names":["Healthkit","HKStatisticsOptions","HKWorkoutTypeIdentifier","UnitOfEnergy","addDays","addSeconds","startOfDay","subDays","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","healthUnitFor","getSamplesFromHealth","startDate","_startDate","typeIdentifier","anchor","chunkSize","mode","Date","endDate","isQuantityIdentifier","data","undefined","getDailyStatistics","options","from","to","limit","queryWorkoutSamplesWithAnchor","result","energyUnit","Kilocalories","distanceUnit","samples","newAnchor","isCategoryIdentifier","queryCategorySamplesWithAnchor","queryQuantitySamplesWithAnchor","unit","firstDay","today","cumulativeSum","discreteAverage","discreteMin","discreteMax","statistics","queryStatisticsCollectionForQuantity","day","flatMap","statistic","index","dayStart","dayEnd","total","sumQuantity","quantity","average","averageQuantity","minimum","minimumQuantity","maximum","maximumQuantity","kind","value","startsWith"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-samples-from-health.ts"],"mappings":";;AAAA,OAAOA,SAAS,IAIdC,mBAAmB,EACnBC,uBAAuB,EACvBC,YAAY,QACP,oCAAoC;AAC3C,SAASC,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAEC,OAAO,QAAQ,UAAU;AAEnE,SAASC,8BAA8B,QAAQ,iBAAc;AAK7D,SAASC,aAAa,QAAQ,mBAAgB;AAE9C,OAAO,MAAMC,oBAAoB,GAAG,MAAAA,CAAO;EACzCC,SAAS,EAAEC,UAAU;EACrBC,cAAc;EACdC,MAAM;EACNC,SAAS,GAAGP,8BAA8B;EAC1CQ,IAAI,GAAG;AACyC,CAAC,KAAK;EACtD,MAAML,SAAS,GAAGC,UAAU,GACxBP,UAAU,CAAC,IAAIY,IAAI,CAACL,UAAU,CAAC,EAAE,CAAC,CAAC,GACnCL,OAAO,CAAC,IAAIU,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;EAE3B,MAAMC,OAAO,GAAG,IAAID,IAAI,CAAC,CAAC;EAE1B,IAAID,IAAI,KAAK,aAAa,IAAIA,IAAI,KAAK,eAAe,EAAE;IACtD,IAAI,CAACG,oBAAoB,CAACN,cAAc,CAAC,EAAE;MACzC,OAAO;QAAEO,IAAI,EAAE,EAAE;QAAEN,MAAM,EAAEO;MAAU,CAAC;IACxC;IAEA,OAAOC,kBAAkB,CAACT,cAAc,EAAEG,IAAI,EAAEL,SAAS,EAAEO,OAAO,CAAC;EACrE;EAEA,MAAMK,OAAO,GAAG;IACdC,IAAI,EAAEb,SAAS;IACfc,EAAE,EAAEP,OAAO;IACXQ,KAAK,EAAEX,SAAS;IAChBD;EACF,CAAC;EAED,IACED,cAAc,KAAKX,uBAAuB,IAC1C,OAAOF,SAAS,CAAC2B,6BAA6B,KAAK,UAAU,EAC7D;IACA,MAAMC,MAAM,GAAG,MAAM5B,SAAS,CAAC2B,6BAA6B,CAAC;MAC3D,GAAGJ,OAAO;MACVM,UAAU,EAAE1B,YAAY,CAAC2B,YAAY;MACrCC,YAAY,EAAE;IAChB,CAAC,CAAC;IAEF,IAAI,CAACH,MAAM,EAAE;MACX,OAAO;QAAER,IAAI,EAAE,EAAE;QAAEN,MAAM,EAAEO;MAAU,CAAC;IACxC;IAEA,OAAO;MACLD,IAAI,EAAE,CAAC,GAAGQ,MAAM,CAACI,OAAO,CAAC;MACzBlB,MAAM,EAAEc,MAAM,CAACK,SAAS,GACpB;QAAEpB,cAAc;QAAEC,MAAM,EAAEc,MAAM,CAACK;MAAU,CAAC,GAC5CZ;IACN,CAAC;EACH;EAEA,IACEa,oBAAoB,CAACrB,cAAc,CAAC,IACpC,OAAOb,SAAS,CAACmC,8BAA8B,KAAK,UAAU,EAC9D;IACA,MAAMP,MAAM,GAAG,MAAM5B,SAAS,CAACmC,8BAA8B,CAC3DtB,cAAc,EACdU,OACF,CAAC;IAED,IAAI,CAACK,MAAM,EAAE;MACX,OAAO;QAAER,IAAI,EAAE,EAAE;QAAEN,MAAM,EAAEO;MAAU,CAAC;IACxC;IAEA,OAAO;MACLD,IAAI,EAAE,CAAC,GAAGQ,MAAM,CAACI,OAAO,CAAC;MACzBlB,MAAM,EAAEc,MAAM,CAACK,SAAS,GACpB;QAAEpB,cAAc;QAAEC,MAAM,EAAEc,MAAM,CAACK;MAAU,CAAC,GAC5CZ;IACN,CAAC;EACH;EAEA,MAAMO,MAAM,GAAG,MAAM5B,SAAS,CAACoC,8BAA8B,CAC3DvB,cAAc,EACd;IACE,GAAGU,OAAO;IACVc,IAAI,EAAE5B,aAAa,CAACI,cAA0C;EAChE,CACF,CAAC;EAED,IAAI,CAACe,MAAM,EAAE;IACX,OAAO;MAAER,IAAI,EAAE,EAAE;MAAEN,MAAM,EAAEO;IAAU,CAAC;EACxC;EAEA,OAAO;IACLD,IAAI,EAAE,CAAC,GAAGQ,MAAM,CAACI,OAAO,CAAC;IACzBlB,MAAM,EAAEc,MAAM,CAACK,SAAS,GACpB;MAAEpB,cAAc;MAAEC,MAAM,EAAEc,MAAM,CAACK;IAAU,CAAC,GAC5CZ;EACN,CAAC;AACH,CAAC;AAED,MAAMC,kBAAkB,GAAG,MAAAA,CACzBT,cAAwC,EACxCG,IAA8D,EAC9DL,SAAe,EACfO,OAAa,KACoD;EACjE,MAAMoB,QAAQ,GAAGhC,UAAU,CAACK,SAAS,CAAC;EACtC,MAAM4B,KAAK,GAAGjC,UAAU,CAACY,OAAO,CAAC;EAEjC,MAAMK,OAAO,GACXP,IAAI,KAAK,aAAa,GAClB,CAACf,mBAAmB,CAACuC,aAAa,CAAC,GACnC,CACEvC,mBAAmB,CAACwC,eAAe,EACnCxC,mBAAmB,CAACyC,WAAW,EAC/BzC,mBAAmB,CAAC0C,WAAW,CAChC;EAEP,MAAMC,UAAU,GAAG,MAAM5C,SAAS,CAAC6C,oCAAoC,CACrEhC,cAAc,EACdU,OAAO,EACPjB,UAAU,CAAC,IAAIW,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAChC;IAAE6B,GAAG,EAAE;EAAE,CAAC,EACVR,QAAQ,EACRC,KAAK,EACL9B,aAAa,CAACI,cAAc,CAC9B,CAAC;EAED,MAAMO,IAAI,GAAGwB,UAAU,CAACG,OAAO,CAAC,CAACC,SAAS,EAAEC,KAAK,KAAK;IACpD,MAAMC,QAAQ,GAAG9C,OAAO,CAACkC,QAAQ,EAAEW,KAAK,CAAC;IACzC,MAAME,MAAM,GAAG/C,OAAO,CAAC8C,QAAQ,EAAE,CAAC,CAAC;IACnC,MAAME,KAAK,GAAGJ,SAAS,CAACK,WAAW,EAAEC,QAAQ;IAC7C,MAAMC,OAAO,GAAGP,SAAS,CAACQ,eAAe,EAAEF,QAAQ;IACnD,MAAMG,OAAO,GAAGT,SAAS,CAACU,eAAe,EAAEJ,QAAQ;IACnD,MAAMK,OAAO,GAAGX,SAAS,CAACY,eAAe,EAAEN,QAAQ;IAEnD,IACEH,MAAM,GAAGZ,KAAK,KACbvB,IAAI,KAAK,aAAa,GAAGoC,KAAK,KAAK/B,SAAS,GAAGkC,OAAO,KAAKlC,SAAS,CAAC,EACtE;MACA,OAAO,EAAE;IACX;IAEA,OAAO,CACL;MACEwC,IAAI,EAAE7C,IAAI;MACVH,cAAc;MACdF,SAAS,EAAEuC,QAAQ;MACnBhC,OAAO,EAAEiC,MAAM;MACfd,IAAI,EACFW,SAAS,CAACK,WAAW,EAAEhB,IAAI,IAC3BW,SAAS,CAACQ,eAAe,EAAEnB,IAAI,IAC/B5B,aAAa,CAACI,cAAc,CAAC,IAC7B,GAAG;MACL,IAAIG,IAAI,KAAK,aAAa,GACtB;QAAE8C,KAAK,EAAEV;MAAM,CAAC,GAChB;QAAEG,OAAO;QAAEE,OAAO;QAAEE;MAAQ,CAAC;IACnC,CAAC,CACF;EACH,CAAC,CAAC;EAEF,OAAO;IAAEvC,IAAI;IAAEN,MAAM,EAAEO;EAAU,CAAC;AACpC,CAAC;AAED,MAAMa,oBAAoB,GACxBrB,cAAsC,IACS;EAC/C,OACE,OAAOA,cAAc,KAAK,QAAQ,IAClCA,cAAc,CAACkD,UAAU,CAAC,0BAA0B,CAAC;AAEzD,CAAC;AAED,MAAM5C,oBAAoB,GACxBN,cAAsC,IAEtC,CAACqB,oBAAoB,CAACrB,cAAc,CAAC,IAAIA,cAAc,KAAKX,uBAAuB","ignoreList":[]}
|