@ovok/native 1.12.1 → 1.13.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.
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +7 -5
- 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 +4 -5
- package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +12 -5
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js +18 -0
- package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js +70 -0
- package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +7 -5
- 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 +4 -5
- package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
- package/lib/module/modules/data-sync/services/managers/storage-manager.js +12 -5
- package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/module/modules/data-sync/types/health-sync-batch-error.js +18 -0
- package/lib/module/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
- package/lib/module/modules/data-sync/utils/identify-imported-observations.js +65 -0
- package/lib/module/modules/data-sync/utils/identify-imported-observations.js.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 +2 -2
- 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/storage-manager.d.ts +7 -2
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.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 +2 -2
- 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/storage-manager.d.ts +7 -2
- package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
- package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
- package/package.json +3 -3
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +0 -108
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +0 -100
- package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js +0 -103
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js +0 -95
- package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
- package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
- package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM } from "./fhir-systems.js";
|
|
4
|
+
import { getHealthRecordIdentifier } from "./get-health-record-sync-id.js";
|
|
5
|
+
import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
|
|
6
|
+
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
7
|
+
const getObservationTime = observation => {
|
|
8
|
+
if (observation.effectivePeriod) {
|
|
9
|
+
return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
|
|
10
|
+
}
|
|
11
|
+
return observation.effectiveDateTime?.slice(0, 19) ?? "unknown";
|
|
12
|
+
};
|
|
13
|
+
const getStableObservationId = ({
|
|
14
|
+
observation,
|
|
15
|
+
provider,
|
|
16
|
+
sourceId,
|
|
17
|
+
bodyIndex
|
|
18
|
+
}) => observation.id && !sourceId ? `${provider}:${observation.id}` : [provider, sourceId ?? getObservationTime(observation), getObservationCode(observation), bodyIndex].join(":");
|
|
19
|
+
const syncIdentifier = value => ({
|
|
20
|
+
system: OBSERVATION_SYNC_ID_SYSTEM,
|
|
21
|
+
value
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
|
|
26
|
+
* changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
|
|
27
|
+
* read of the same source again saves nothing new, or writes over a total that grew.
|
|
28
|
+
*/
|
|
29
|
+
const identifyImportedObservations = ({
|
|
30
|
+
groupedObservationBodies,
|
|
31
|
+
provider,
|
|
32
|
+
groupedObservationSyncIds,
|
|
33
|
+
groupedRecordIds,
|
|
34
|
+
mode
|
|
35
|
+
}) => groupedObservationBodies.map((observationBodies, groupIndex) => {
|
|
36
|
+
const recordId = groupedRecordIds?.[groupIndex];
|
|
37
|
+
return observationBodies.map((observationBody, bodyIndex) => {
|
|
38
|
+
const syncId = getStableObservationId({
|
|
39
|
+
observation: observationBody,
|
|
40
|
+
provider,
|
|
41
|
+
sourceId: groupedObservationSyncIds?.[groupIndex],
|
|
42
|
+
bodyIndex
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// A day's total saved before sync ids named their source carries its old id; naming the total by that id as
|
|
46
|
+
// well is what lets the save find it and write over it.
|
|
47
|
+
const legacySyncId = isDailyAggregateMode(mode) && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
|
|
48
|
+
return {
|
|
49
|
+
...observationBody,
|
|
50
|
+
identifier: [...(observationBody.identifier || []), {
|
|
51
|
+
system: OBSERVATION_SYNC_PROVIDER_SYSTEM,
|
|
52
|
+
value: provider
|
|
53
|
+
}, syncIdentifier(syncId), ...(legacySyncId && legacySyncId !== syncId ? [syncIdentifier(legacySyncId)] : []), ...(recordId ? [getHealthRecordIdentifier(provider, recordId)] : [])],
|
|
54
|
+
device: {
|
|
55
|
+
...(observationBody.device ?? {}),
|
|
56
|
+
identifier: {
|
|
57
|
+
system: OBSERVATION_SYNC_PROVIDER_SYSTEM,
|
|
58
|
+
value: provider
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
export { getStableObservationId, identifyImportedObservations };
|
|
65
|
+
//# sourceMappingURL=identify-imported-observations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","getHealthRecordIdentifier","isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","syncIdentifier","value","identifyImportedObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","mode","observationBodies","groupIndex","recordId","observationBody","syncId","legacySyncId","undefined","identifier","device"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/identify-imported-observations.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,EAAE,iBAAiB,IAAI;IACjF,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,EAAE,CACP,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACjF,CAAC;AAEF,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAkBzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAGA,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACnB,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAyBjF,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;
|
|
1
|
+
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,EAAE,iBAAiB,IAAI;IACjF,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,EAAE,CACP,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACjF,CAAC;AAEF,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAkBzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAGA,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACnB,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAyBjF,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;IA0H5B,OAAO,CAAC,yBAAyB;CAGlC"}
|
|
@@ -8,8 +8,8 @@ import { GetDataFromProviderProps } from "../../types/get-data-from-provider-pro
|
|
|
8
8
|
import { GetTotalCountProps } from "../../types/get-total-count-props";
|
|
9
9
|
import { HealthProvider } from "../../types/health-provider";
|
|
10
10
|
import { HealthSyncKey } from "../../types/health-sync-keys";
|
|
11
|
-
import { generateObservationEntry } from "../../utils/generate-observation-entry";
|
|
12
11
|
import { getLatestValidStartDate } from "../../utils/get-latest-valid-start-date";
|
|
12
|
+
import { identifyImportedObservations } from "../../utils/identify-imported-observations";
|
|
13
13
|
import { StorageManager } from "./storage-manager";
|
|
14
14
|
export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["dataToSync"] | AppleHealthSyncProps["dataToSync"], TTypeIdentifier extends string, TDataFromProvider> {
|
|
15
15
|
private client;
|
|
@@ -38,7 +38,7 @@ export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["d
|
|
|
38
38
|
anchor: string;
|
|
39
39
|
}>;
|
|
40
40
|
}>;
|
|
41
|
-
|
|
41
|
+
identifyObservations(observationBodies: Observation[][], observationSyncIds?: Array<string | undefined>, observationRecordIds?: Array<string | undefined>, mode?: Parameters<typeof identifyImportedObservations>[0]["mode"]): Observation[][];
|
|
42
42
|
getLatestValidStartDate(latestObservationDates: Array<{
|
|
43
43
|
code: string | undefined;
|
|
44
44
|
date: string | undefined;
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAsB,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAGL,aAAa,EACd,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"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"}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Bundle, Observation } from "@medplum/fhirtypes";
|
|
2
2
|
import { OvokClient } from "@ovok/core";
|
|
3
3
|
import { HealthProvider } from "../../types/health-provider";
|
|
4
|
-
import {
|
|
4
|
+
import { HealthDataMode } from "../../types/health-sync-keys";
|
|
5
5
|
export declare class StorageManager {
|
|
6
6
|
private client;
|
|
7
7
|
private provider;
|
|
@@ -24,7 +24,12 @@ export declare class StorageManager {
|
|
|
24
24
|
*/
|
|
25
25
|
private readonly inMemoryAnchors;
|
|
26
26
|
constructor(client: OvokClient, provider: HealthProvider);
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Saves a page of imported readings, each group one reading with its main observation first. An observation is
|
|
29
|
+
* created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
|
|
30
|
+
* out of that check: all of a reading's observations share it.
|
|
31
|
+
*/
|
|
32
|
+
saveObservations(groups: Observation[][], mode?: HealthDataMode): Promise<Bundle<Observation>>;
|
|
28
33
|
/** Deletes the observations imported from records the provider reports deleted. */
|
|
29
34
|
deleteObservations(recordIds: string[], patientId: string): Promise<void>;
|
|
30
35
|
saveAnchor(typeIdentifier: string, anchor: string): void;
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,qBAAa,cAAc;IAqBvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IArBlB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;gBAGnD,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,cAAc;IAGlC;;;;OAIG;IACG,gBAAgB,CACpB,MAAM,EAAE,WAAW,EAAE,EAAE,EACvB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAO/B,mFAAmF;IAC7E,kBAAkB,CACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAsBhB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYxD,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQrD,OAAO,CAAC,SAAS;IAIjB,WAAW,CACT,OAAO,EAAE,KAAK,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GACzD,IAAI;CAKR"}
|
package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-batch-error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-sync-batch-error.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/health-sync-batch-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,cAAM,oBAAqB,SAAQ,KAAK;aAKpB,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,gBAAgB;IAL5C,SAAgB,IAAI,0BAA0B;gBAG5C,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAI7C;
|
|
1
|
+
{"version":3,"file":"health-sync-batch-error.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/health-sync-batch-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,cAAM,oBAAqB,SAAQ,KAAK;aAKpB,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,gBAAgB;IAL5C,SAAgB,IAAI,0BAA0B;gBAG5C,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAI7C;AAsBD,QAAA,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KA2B3C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC"}
|
package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Observation } from "@medplum/fhirtypes";
|
|
2
|
+
import { HealthProvider } from "../types/health-provider";
|
|
3
|
+
import { HealthDataMode } from "../types/health-sync-keys";
|
|
4
|
+
type IdentifyImportedObservationsProps = {
|
|
5
|
+
groupedObservationBodies: Observation[][];
|
|
6
|
+
provider: HealthProvider;
|
|
7
|
+
groupedObservationSyncIds?: Array<string | undefined>;
|
|
8
|
+
/** Each group's source record, which a deletion of that record finds it by. */
|
|
9
|
+
groupedRecordIds?: Array<string | undefined>;
|
|
10
|
+
mode?: HealthDataMode;
|
|
11
|
+
};
|
|
12
|
+
declare const getStableObservationId: ({ observation, provider, sourceId, bodyIndex, }: {
|
|
13
|
+
observation: Observation;
|
|
14
|
+
provider: HealthProvider;
|
|
15
|
+
sourceId?: string;
|
|
16
|
+
bodyIndex: number;
|
|
17
|
+
}) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
|
|
20
|
+
* changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
|
|
21
|
+
* read of the same source again saves nothing new, or writes over a total that grew.
|
|
22
|
+
*/
|
|
23
|
+
declare const identifyImportedObservations: ({ groupedObservationBodies, provider, groupedObservationSyncIds, groupedRecordIds, mode, }: IdentifyImportedObservationsProps) => Observation[][];
|
|
24
|
+
export { getStableObservationId, identifyImportedObservations };
|
|
25
|
+
//# sourceMappingURL=identify-imported-observations.d.ts.map
|
package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identify-imported-observations.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/identify-imported-observations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,KAAK,iCAAiC,GAAG;IACvC,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAiBF,QAAA,MAAM,sBAAsB,GAAI,iDAK7B;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,MAQa,CAAC;AAOlB;;;;GAIG;AACH,QAAA,MAAM,4BAA4B,GAAI,4FAMnC,iCAAiC,KAAG,WAAW,EAAE,EAqChD,CAAC;AAEL,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,CAAC"}
|
package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,EAAE,iBAAiB,IAAI;IACjF,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,EAAE,CACP,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACjF,CAAC;AAEF,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAkBzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAGA,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACnB,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAyBjF,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;
|
|
1
|
+
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,EAAE,iBAAiB,IAAI;IACjF,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,EAAE,CACP,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACjF,CAAC;AAEF,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAkBzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAhB1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAGA,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC,EACnB,OAAO,EAAE,iBAAiB,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAyBjF,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;IA0H5B,OAAO,CAAC,yBAAyB;CAGlC"}
|
|
@@ -8,8 +8,8 @@ import { GetDataFromProviderProps } from "../../types/get-data-from-provider-pro
|
|
|
8
8
|
import { GetTotalCountProps } from "../../types/get-total-count-props";
|
|
9
9
|
import { HealthProvider } from "../../types/health-provider";
|
|
10
10
|
import { HealthSyncKey } from "../../types/health-sync-keys";
|
|
11
|
-
import { generateObservationEntry } from "../../utils/generate-observation-entry";
|
|
12
11
|
import { getLatestValidStartDate } from "../../utils/get-latest-valid-start-date";
|
|
12
|
+
import { identifyImportedObservations } from "../../utils/identify-imported-observations";
|
|
13
13
|
import { StorageManager } from "./storage-manager";
|
|
14
14
|
export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["dataToSync"] | AppleHealthSyncProps["dataToSync"], TTypeIdentifier extends string, TDataFromProvider> {
|
|
15
15
|
private client;
|
|
@@ -38,7 +38,7 @@ export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["d
|
|
|
38
38
|
anchor: string;
|
|
39
39
|
}>;
|
|
40
40
|
}>;
|
|
41
|
-
|
|
41
|
+
identifyObservations(observationBodies: Observation[][], observationSyncIds?: Array<string | undefined>, observationRecordIds?: Array<string | undefined>, mode?: Parameters<typeof identifyImportedObservations>[0]["mode"]): Observation[][];
|
|
42
42
|
getLatestValidStartDate(latestObservationDates: Array<{
|
|
43
43
|
code: string | undefined;
|
|
44
44
|
date: string | undefined;
|
package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAsB,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAGL,aAAa,EACd,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Bundle, Observation } from "@medplum/fhirtypes";
|
|
2
2
|
import { OvokClient } from "@ovok/core";
|
|
3
3
|
import { HealthProvider } from "../../types/health-provider";
|
|
4
|
-
import {
|
|
4
|
+
import { HealthDataMode } from "../../types/health-sync-keys";
|
|
5
5
|
export declare class StorageManager {
|
|
6
6
|
private client;
|
|
7
7
|
private provider;
|
|
@@ -24,7 +24,12 @@ export declare class StorageManager {
|
|
|
24
24
|
*/
|
|
25
25
|
private readonly inMemoryAnchors;
|
|
26
26
|
constructor(client: OvokClient, provider: HealthProvider);
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Saves a page of imported readings, each group one reading with its main observation first. An observation is
|
|
29
|
+
* created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
|
|
30
|
+
* out of that check: all of a reading's observations share it.
|
|
31
|
+
*/
|
|
32
|
+
saveObservations(groups: Observation[][], mode?: HealthDataMode): Promise<Bundle<Observation>>;
|
|
28
33
|
/** Deletes the observations imported from records the provider reports deleted. */
|
|
29
34
|
deleteObservations(recordIds: string[], patientId: string): Promise<void>;
|
|
30
35
|
saveAnchor(typeIdentifier: string, anchor: string): void;
|
package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,qBAAa,cAAc;IAqBvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IArBlB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;gBAGnD,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,cAAc;IAGlC;;;;OAIG;IACG,gBAAgB,CACpB,MAAM,EAAE,WAAW,EAAE,EAAE,EACvB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAO/B,mFAAmF;IAC7E,kBAAkB,CACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAsBhB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYxD,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQrD,OAAO,CAAC,SAAS;IAIjB,WAAW,CACT,OAAO,EAAE,KAAK,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GACzD,IAAI;CAKR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-sync-batch-error.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/health-sync-batch-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,cAAM,oBAAqB,SAAQ,KAAK;aAKpB,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,gBAAgB;IAL5C,SAAgB,IAAI,0BAA0B;gBAG5C,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAI7C;
|
|
1
|
+
{"version":3,"file":"health-sync-batch-error.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/health-sync-batch-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,cAAM,oBAAqB,SAAQ,KAAK;aAKpB,MAAM,CAAC,EAAE,MAAM;aACf,OAAO,CAAC,EAAE,gBAAgB;IAL5C,SAAgB,IAAI,0BAA0B;gBAG5C,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,CAAC,EAAE,gBAAgB,YAAA;CAI7C;AAsBD,QAAA,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,KA2B3C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Observation } from "@medplum/fhirtypes";
|
|
2
|
+
import { HealthProvider } from "../types/health-provider";
|
|
3
|
+
import { HealthDataMode } from "../types/health-sync-keys";
|
|
4
|
+
type IdentifyImportedObservationsProps = {
|
|
5
|
+
groupedObservationBodies: Observation[][];
|
|
6
|
+
provider: HealthProvider;
|
|
7
|
+
groupedObservationSyncIds?: Array<string | undefined>;
|
|
8
|
+
/** Each group's source record, which a deletion of that record finds it by. */
|
|
9
|
+
groupedRecordIds?: Array<string | undefined>;
|
|
10
|
+
mode?: HealthDataMode;
|
|
11
|
+
};
|
|
12
|
+
declare const getStableObservationId: ({ observation, provider, sourceId, bodyIndex, }: {
|
|
13
|
+
observation: Observation;
|
|
14
|
+
provider: HealthProvider;
|
|
15
|
+
sourceId?: string;
|
|
16
|
+
bodyIndex: number;
|
|
17
|
+
}) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
|
|
20
|
+
* changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
|
|
21
|
+
* read of the same source again saves nothing new, or writes over a total that grew.
|
|
22
|
+
*/
|
|
23
|
+
declare const identifyImportedObservations: ({ groupedObservationBodies, provider, groupedObservationSyncIds, groupedRecordIds, mode, }: IdentifyImportedObservationsProps) => Observation[][];
|
|
24
|
+
export { getStableObservationId, identifyImportedObservations };
|
|
25
|
+
//# sourceMappingURL=identify-imported-observations.d.ts.map
|
package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identify-imported-observations.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/utils/identify-imported-observations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,KAAK,iCAAiC,GAAG;IACvC,wBAAwB,EAAE,WAAW,EAAE,EAAE,CAAC;IAC1C,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEtD,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,CAAC;AAiBF,QAAA,MAAM,sBAAsB,GAAI,iDAK7B;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,MAQa,CAAC;AAOlB;;;;GAIG;AACH,QAAA,MAAM,4BAA4B,GAAI,4FAMnC,iCAAiC,KAAG,WAAW,EAAE,EAqChD,CAAC;AAEL,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ovok/native",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "React native component sdk for OVOK",
|
|
5
5
|
"source": "./src/index.tsx",
|
|
6
6
|
"main": "./lib/commonjs/index.js",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"@medplum/react-hooks": "3.2.23",
|
|
108
108
|
"@opentelemetry/api": "^1.9.1",
|
|
109
109
|
"@opentelemetry/api-logs": "^0.222.0",
|
|
110
|
-
"@ovok/core": "^0.4.
|
|
110
|
+
"@ovok/core": "^0.4.42",
|
|
111
111
|
"@react-native-community/datetimepicker": "^9.1.0",
|
|
112
112
|
"@react-native-community/netinfo": "^12.0.1",
|
|
113
113
|
"@react-native-google-signin/google-signin": "^16.1.2",
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
"@kingstinct/react-native-healthkit": "*",
|
|
190
190
|
"@opentelemetry/api": "^1.9.1",
|
|
191
191
|
"@opentelemetry/api-logs": "^0.222.0",
|
|
192
|
-
"@ovok/core": ">=0.4.
|
|
192
|
+
"@ovok/core": ">=0.4.42",
|
|
193
193
|
"@react-native-community/datetimepicker": "*",
|
|
194
194
|
"@react-native-community/netinfo": "*",
|
|
195
195
|
"@react-native-google-signin/google-signin": "*",
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getStableObservationId = exports.generateObservationEntry = 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
|
-
var _replacesSavedObservation = require("./replaces-saved-observation.js");
|
|
11
|
-
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
12
|
-
const getObservationTime = observation => {
|
|
13
|
-
if (observation.effectivePeriod) {
|
|
14
|
-
return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
|
|
15
|
-
}
|
|
16
|
-
return observation.effectiveDateTime?.slice(0, 19) ?? "unknown";
|
|
17
|
-
};
|
|
18
|
-
const getStableObservationId = ({
|
|
19
|
-
observation,
|
|
20
|
-
provider,
|
|
21
|
-
sourceId,
|
|
22
|
-
bodyIndex
|
|
23
|
-
}) => observation.id && !sourceId ? `${provider}:${observation.id}` : [provider, sourceId ?? getObservationTime(observation), getObservationCode(observation), bodyIndex].join(":");
|
|
24
|
-
exports.getStableObservationId = getStableObservationId;
|
|
25
|
-
const createBundleUuid = () => {
|
|
26
|
-
const cryptoApi = globalThis.crypto;
|
|
27
|
-
const randomUuid = typeof cryptoApi === "object" && cryptoApi !== null && "randomUUID" in cryptoApi && typeof cryptoApi.randomUUID === "function" ? cryptoApi.randomUUID : undefined;
|
|
28
|
-
if (randomUuid) {
|
|
29
|
-
return randomUuid.call(cryptoApi);
|
|
30
|
-
}
|
|
31
|
-
const bytes = Array.from({
|
|
32
|
-
length: 16
|
|
33
|
-
}, () => Math.floor(Math.random() * 256));
|
|
34
|
-
bytes[6] = bytes[6] & 0x0f | 0x40;
|
|
35
|
-
bytes[8] = bytes[8] & 0x3f | 0x80;
|
|
36
|
-
const hex = bytes.map(byte => byte.toString(16).padStart(2, "0")).join("");
|
|
37
|
-
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
38
|
-
};
|
|
39
|
-
const generateObservationEntry = ({
|
|
40
|
-
groupedObservationBodies,
|
|
41
|
-
provider,
|
|
42
|
-
groupedObservationSyncIds,
|
|
43
|
-
groupedRecordIds,
|
|
44
|
-
patientId,
|
|
45
|
-
mode
|
|
46
|
-
}) => {
|
|
47
|
-
return groupedObservationBodies.map((observationBodies, groupIndex) => {
|
|
48
|
-
const fullUrls = observationBodies.map(() => `urn:uuid:${createBundleUuid()}`);
|
|
49
|
-
const recordId = groupedRecordIds?.[groupIndex];
|
|
50
|
-
return observationBodies.map((observationBody, bodyIndex) => {
|
|
51
|
-
const syncIdentifier = getStableObservationId({
|
|
52
|
-
observation: observationBody,
|
|
53
|
-
provider,
|
|
54
|
-
sourceId: groupedObservationSyncIds?.[groupIndex],
|
|
55
|
-
bodyIndex
|
|
56
|
-
});
|
|
57
|
-
const fullUrl = fullUrls[bodyIndex];
|
|
58
|
-
const searchParams = new URLSearchParams();
|
|
59
|
-
const isDailyAggregate = (0, _isDailyAggregateMode.isDailyAggregateMode)(mode);
|
|
60
|
-
const replaces = (0, _replacesSavedObservation.replacesSavedObservation)(mode);
|
|
61
|
-
const legacySyncIdentifier = isDailyAggregate && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
|
|
62
|
-
const syncIdentifiers = Array.from(new Set([syncIdentifier, legacySyncIdentifier].filter(Boolean)));
|
|
63
|
-
searchParams.set("identifier", syncIdentifiers.map(identifier => `${_fhirSystems.OBSERVATION_SYNC_ID_SYSTEM}|${identifier}`).join(","));
|
|
64
|
-
if (patientId) {
|
|
65
|
-
searchParams.set("subject", `Patient/${patientId}`);
|
|
66
|
-
}
|
|
67
|
-
const search = searchParams.toString();
|
|
68
|
-
const observationResource = {
|
|
69
|
-
...observationBody
|
|
70
|
-
};
|
|
71
|
-
if (replaces) {
|
|
72
|
-
delete observationResource.id;
|
|
73
|
-
}
|
|
74
|
-
return {
|
|
75
|
-
fullUrl,
|
|
76
|
-
request: {
|
|
77
|
-
method: replaces ? "PUT" : "POST",
|
|
78
|
-
url: replaces ? `Observation?${search}` : "Observation",
|
|
79
|
-
...(replaces ? {} : {
|
|
80
|
-
ifNoneExist: search
|
|
81
|
-
})
|
|
82
|
-
},
|
|
83
|
-
resource: {
|
|
84
|
-
...observationResource,
|
|
85
|
-
identifier: [...(observationBody.identifier || []), {
|
|
86
|
-
system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
|
|
87
|
-
value: provider
|
|
88
|
-
}, {
|
|
89
|
-
system: _fhirSystems.OBSERVATION_SYNC_ID_SYSTEM,
|
|
90
|
-
value: syncIdentifier
|
|
91
|
-
}, ...(recordId ? [(0, _getHealthRecordSyncId.getHealthRecordIdentifier)(provider, recordId)] : [])],
|
|
92
|
-
device: {
|
|
93
|
-
...(observationBody.device ?? {}),
|
|
94
|
-
identifier: {
|
|
95
|
-
system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
|
|
96
|
-
value: provider
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
hasMember: bodyIndex === 0 ? [] : [{
|
|
100
|
-
reference: fullUrls[0]
|
|
101
|
-
}]
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
});
|
|
105
|
-
}).flat();
|
|
106
|
-
};
|
|
107
|
-
exports.generateObservationEntry = generateObservationEntry;
|
|
108
|
-
//# sourceMappingURL=generate-observation-entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_isDailyAggregateMode","_replacesSavedObservation","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","exports","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","patientId","mode","observationBodies","groupIndex","fullUrls","recordId","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","isDailyAggregateMode","replaces","replacesSavedObservation","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","OBSERVATION_SYNC_ID_SYSTEM","search","observationResource","request","method","url","ifNoneExist","resource","OBSERVATION_SYNC_PROVIDER_SYSTEM","value","getHealthRecordIdentifier","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.splitHealthImportEntries = exports.saveBundleObservations = exports.MAX_HEALTH_IMPORT_BUNDLE_BYTES = void 0;
|
|
7
|
-
var _healthSyncBatchError = require("../types/health-sync-batch-error.js");
|
|
8
|
-
const MAX_HEALTH_IMPORT_BUNDLE_BYTES = exports.MAX_HEALTH_IMPORT_BUNDLE_BYTES = 900_000;
|
|
9
|
-
const getByteLength = value => {
|
|
10
|
-
const TextEncoderConstructor = globalThis.TextEncoder;
|
|
11
|
-
if (TextEncoderConstructor) {
|
|
12
|
-
return new TextEncoderConstructor().encode(value).byteLength;
|
|
13
|
-
}
|
|
14
|
-
return encodeURIComponent(value).replace(/%[0-9A-F]{2}|./g, "_").length;
|
|
15
|
-
};
|
|
16
|
-
const getBundleByteLength = entries => getByteLength(JSON.stringify({
|
|
17
|
-
resourceType: "Bundle",
|
|
18
|
-
type: "batch",
|
|
19
|
-
entry: entries
|
|
20
|
-
}));
|
|
21
|
-
const getMemberReference = entry => {
|
|
22
|
-
const observation = entry.resource;
|
|
23
|
-
return observation?.hasMember?.[0]?.reference;
|
|
24
|
-
};
|
|
25
|
-
const groupMeasurementEntries = entries => {
|
|
26
|
-
const rootUrls = new Set(entries.map(entry => entry.fullUrl).filter(Boolean));
|
|
27
|
-
const groups = new Map();
|
|
28
|
-
entries.forEach((entry, index) => {
|
|
29
|
-
const key = getMemberReference(entry) && rootUrls.has(getMemberReference(entry)) ? getMemberReference(entry) : entry.fullUrl ?? `entry-${index}`;
|
|
30
|
-
const group = groups.get(key) ?? [];
|
|
31
|
-
group.push(entry);
|
|
32
|
-
groups.set(key, group);
|
|
33
|
-
});
|
|
34
|
-
return [...groups.values()];
|
|
35
|
-
};
|
|
36
|
-
const serializeBatch = entries => getBundleByteLength(entries);
|
|
37
|
-
const splitHealthImportEntries = (entries, maxBytes = MAX_HEALTH_IMPORT_BUNDLE_BYTES) => {
|
|
38
|
-
const batches = [];
|
|
39
|
-
let current = [];
|
|
40
|
-
for (const group of groupMeasurementEntries(entries)) {
|
|
41
|
-
const candidate = [...current, ...group];
|
|
42
|
-
if (current.length > 0 && serializeBatch(candidate) > maxBytes) {
|
|
43
|
-
batches.push(current);
|
|
44
|
-
current = [];
|
|
45
|
-
}
|
|
46
|
-
current.push(...group);
|
|
47
|
-
}
|
|
48
|
-
if (current.length > 0) {
|
|
49
|
-
batches.push(current);
|
|
50
|
-
}
|
|
51
|
-
return batches;
|
|
52
|
-
};
|
|
53
|
-
exports.splitHealthImportEntries = splitHealthImportEntries;
|
|
54
|
-
const createBatchError = (bundle, expectedEntries) => {
|
|
55
|
-
const responseEntries = bundle.entry ?? [];
|
|
56
|
-
const statusCounts = new Map();
|
|
57
|
-
responseEntries.forEach(entry => {
|
|
58
|
-
const status = entry.response?.status ?? "missing status";
|
|
59
|
-
if (status.startsWith("2")) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
|
|
63
|
-
});
|
|
64
|
-
const missingCount = Math.max(expectedEntries - responseEntries.length, 0);
|
|
65
|
-
if (missingCount > 0) {
|
|
66
|
-
statusCounts.set("missing status", (statusCounts.get("missing status") ?? 0) + missingCount);
|
|
67
|
-
}
|
|
68
|
-
const summary = [...statusCounts.entries()].map(([status, count]) => `${status} × ${count}`).join(", ");
|
|
69
|
-
const error = new _healthSyncBatchError.HealthSyncBatchError(`Health import batch did not save every entry (${summary || "unknown status"})`, bundle);
|
|
70
|
-
return error;
|
|
71
|
-
};
|
|
72
|
-
const saveBundleObservations = async ({
|
|
73
|
-
entries,
|
|
74
|
-
client
|
|
75
|
-
}) => {
|
|
76
|
-
const responseBundles = [];
|
|
77
|
-
for (const batchEntries of splitHealthImportEntries(entries)) {
|
|
78
|
-
const bundle = await client.executeBatch({
|
|
79
|
-
resourceType: "Bundle",
|
|
80
|
-
type: "batch",
|
|
81
|
-
entry: batchEntries
|
|
82
|
-
});
|
|
83
|
-
const responseEntries = bundle.entry ?? [];
|
|
84
|
-
const hasMissingResponse = responseEntries.length !== batchEntries.length;
|
|
85
|
-
const hasRejectedEntry = responseEntries.some(entry => !entry.response?.status.startsWith("2"));
|
|
86
|
-
if (hasMissingResponse || hasRejectedEntry) {
|
|
87
|
-
throw createBatchError(bundle, batchEntries.length);
|
|
88
|
-
}
|
|
89
|
-
responseBundles.push(bundle);
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
...(responseBundles[0] ?? {
|
|
93
|
-
resourceType: "Bundle",
|
|
94
|
-
type: "batch-response"
|
|
95
|
-
}),
|
|
96
|
-
entry: responseBundles.flatMap(bundle => bundle.entry ?? [])
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
exports.saveBundleObservations = saveBundleObservations;
|
|
100
|
-
//# sourceMappingURL=save-bundle-observations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_healthSyncBatchError","require","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","HealthSyncBatchError","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":[]}
|