@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.
Files changed (53) hide show
  1. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +7 -5
  2. package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  3. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js +4 -5
  4. package/lib/commonjs/modules/data-sync/services/managers/data-processor.js.map +1 -1
  5. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js +12 -5
  6. package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  7. package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js +18 -0
  8. package/lib/commonjs/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
  9. package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js +70 -0
  10. package/lib/commonjs/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
  11. package/lib/module/modules/data-sync/services/base-health-sync-service.js +7 -5
  12. package/lib/module/modules/data-sync/services/base-health-sync-service.js.map +1 -1
  13. package/lib/module/modules/data-sync/services/managers/data-processor.js +4 -5
  14. package/lib/module/modules/data-sync/services/managers/data-processor.js.map +1 -1
  15. package/lib/module/modules/data-sync/services/managers/storage-manager.js +12 -5
  16. package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
  17. package/lib/module/modules/data-sync/types/health-sync-batch-error.js +18 -0
  18. package/lib/module/modules/data-sync/types/health-sync-batch-error.js.map +1 -1
  19. package/lib/module/modules/data-sync/utils/identify-imported-observations.js +65 -0
  20. package/lib/module/modules/data-sync/utils/identify-imported-observations.js.map +1 -0
  21. package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  22. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts +2 -2
  23. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  24. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +7 -2
  25. package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
  28. package/lib/typescript/commonjs/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
  29. package/lib/typescript/module/src/modules/data-sync/services/base-health-sync-service.d.ts.map +1 -1
  30. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts +2 -2
  31. package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
  32. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +7 -2
  33. package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts.map +1 -1
  34. package/lib/typescript/module/src/modules/data-sync/types/health-sync-batch-error.d.ts.map +1 -1
  35. package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts +25 -0
  36. package/lib/typescript/module/src/modules/data-sync/utils/identify-imported-observations.d.ts.map +1 -0
  37. package/package.json +3 -3
  38. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +0 -108
  39. package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
  40. package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js +0 -100
  41. package/lib/commonjs/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
  42. package/lib/module/modules/data-sync/utils/generate-observation-entry.js +0 -103
  43. package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +0 -1
  44. package/lib/module/modules/data-sync/utils/save-bundle-observations.js +0 -95
  45. package/lib/module/modules/data-sync/utils/save-bundle-observations.js.map +0 -1
  46. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
  47. package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
  48. package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
  49. package/lib/typescript/commonjs/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
  50. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +0 -21
  51. package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +0 -1
  52. package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts +0 -11
  53. package/lib/typescript/module/src/modules/data-sync/utils/save-bundle-observations.d.ts.map +0 -1
@@ -115,17 +115,19 @@ class BaseHealthSyncService {
115
115
  if (this.stateManager.shouldStopSync) {
116
116
  break;
117
117
  }
118
- const entries = this.dataProcessor.generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, (0, _healthSyncKeys.getHealthDataMode)(measurementTypeKey, data.mode));
119
- if ((entries.length !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
118
+ const mode = (0, _healthSyncKeys.getHealthDataMode)(measurementTypeKey, data.mode);
119
+ const groups = this.dataProcessor.identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode);
120
+ const observationCount = groups.flat().length;
121
+ if ((observationCount !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
120
122
  try {
121
- if (entries.length !== 0) {
123
+ if (observationCount !== 0) {
122
124
  const startedAt = Date.now();
123
- const result = await (0, _retrySave.withSyncRetries)(() => this.storageManager.saveObservations(entries), () => this.stateManager.shouldStopSync);
125
+ const result = await (0, _retrySave.withSyncRetries)(() => this.storageManager.saveObservations(groups, mode), () => this.stateManager.shouldStopSync);
124
126
  if (this.stateManager.shouldStopSync) {
125
127
  return;
126
128
  }
127
129
  const responseEntries = result.entry ?? [];
128
- const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : entries.length;
130
+ const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : observationCount;
129
131
  const createdCount = responseEntries.filter(entry => entry.response?.status.startsWith("201")).length;
130
132
  (0, _telemetry.recordOvokMetric)("ovok.health.samples.imported", createdCount, {
131
133
  provider: this.adapter.provider,
@@ -1 +1 @@
1
- {"version":3,"names":["_telemetry","require","_constants","_healthSyncBatchError","_healthSyncKeys","_retrySave","_dataProcessor","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","provider","dataProcessor","DataProcessor","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getTotalCount","getData","convert","startSync","once","withOvokSpan","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","pauseReason","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","reason","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","getHealthDataMode","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","entries","generateObservationEntries","length","startedAt","Date","now","result","withSyncRetries","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","recordOvokMetric","recordOvokDuration","addResult","incrementSyncedObservations","deleteObservations","saveAnchors","isSyncRetryCancelled","toHealthSyncError","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":";;;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAD,OAAA;AASA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AAEA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AA3BA;;AA6BA;;AAUO,MAAeS,qBAAqB,CAKzC;EAeAC,WAAWA,CACTC,KAAoC,EACnBC,OAA8D,EAC/E;IAAA,KADiBA,OAA8D,GAA9DA,OAA8D;IAE/E,IAAI,CAACC,MAAM,GAAGF,KAAK,CAACE,MAAM;IAC1B,IAAI,CAACC,SAAS,GAAGH,KAAK,CAACG,SAAS;IAChC,IAAI,CAACC,UAAU,GAAGJ,KAAK,CAACI,UAAU;IAClC,IAAI,CAACC,WAAW,GAAGL,KAAK,CAACK,WAAW;IAEpC,IAAI,CAACC,eAAe,GAAG,IAAIC,wCAAmB,CAC5CP,KAAK,CAACQ,cAAc,EACpBR,KAAK,CAACI,UACR,CAAC;IACD,IAAI,CAACK,YAAY,GAAG,IAAIC,kCAAgB,CAAC,CAAC;IAC1C,IAAI,CAACC,cAAc,GAAG,IAAIC,8BAAc,CAACZ,KAAK,CAACE,MAAM,EAAED,OAAO,CAACY,QAAQ,CAAC;IACxE,IAAI,CAACC,aAAa,GAAG,IAAIC,4BAAa,CACpCf,KAAK,CAACE,MAAM,EACZF,KAAK,CAACG,SAAS,EACf,IAAI,CAACF,OAAO,CAACY,QAAQ,EACrBb,KAAK,CAACgB,SAAS,IAAIC,yCAA8B,EACjD,IAAI,CAACN,cAAc,EACnBV,OAAO,CAACiB,aAAa,EACrBjB,OAAO,CAACkB,OAAO,EACflB,OAAO,CAACmB,OACV,CAAC;EACH;;EAEA;EACA,MAAaC,SAASA,CAAA,EAAkB;IACtC,OAAO,IAAI,CAACZ,YAAY,CAACa,IAAI,CAAC,MAC5B,IAAAC,uBAAY,EAAC,eAAe,EAAE;MAAEV,QAAQ,EAAE,IAAI,CAACZ,OAAO,CAACY;IAAS,CAAC,EAAE,MACjE,IAAI,CAACW,OAAO,CAAC,CACf,CACF,CAAC;EACH;EAEA,MAAcA,OAAOA,CAAA,EAAkB;IACrC,IAAI;MACF,IAAI,CAAC,IAAI,CAACtB,MAAM,CAACuB,aAAa,EAAE;QAC9B,IAAI,CAACpB,WAAW,CAAC,IAAIqB,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAErD;MACF;MAEA,IAAI,CAAC,IAAI,CAACvB,SAAS,EAAE;QACnB,IAAI,CAACE,WAAW,CAAC,IAAIqB,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEhD;MACF;MAEA,IAAI,CAACjB,YAAY,CAACkB,MAAM,CAAC,CAAC;MAC1B,IAAI,CAACrB,eAAe,CAACsB,qBAAqB,CAAC,CAAC;MAE5C,IAAI,CAAC,IAAI,CAACnB,YAAY,CAACoB,kBAAkB,EAAE;QACzC,MAAM,IAAI,CAACC,cAAc,CAAC,CAAC;MAC7B;MAEA,MAAM,IAAI,CAACC,mBAAmB,CAAC,CAAC;MAEhC,IAAI,CAACzB,eAAe,CAAC0B,gBAAgB,CAAC,IAAI,CAACvB,YAAY,CAACwB,WAAW,CAAC;IACtE,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,IAAI,CAAC7B,WAAW,CAAC6B,KAAc,CAAC;IAClC;EACF;EAEA,MAAaC,QAAQA,CAAA,EAAkB;IACrC,IAAI,CAAC7B,eAAe,CAAC8B,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC3B,YAAY,CAAC4B,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC5B,YAAY,CAAC6B,cAAc,GAAG,IAAI;EACzC;EAEA,MAAaC,SAASA,CAACC,MAAwB,EAAiB;IAC9D,IAAI,CAAC/B,YAAY,CAACgC,KAAK,CAACD,MAAM,CAAC;IAC/B,IAAI,CAAClC,eAAe,CAAC0B,gBAAgB,CAACQ,MAAM,CAAC;EAC/C;EAEA,MAAcV,cAAcA,CAAA,EAAkB;IAC5C,MAAMY,sBAAsB,GAC1B,MAAM,IAAI,CAAC5B,aAAa,CAAC6B,yBAAyB,CAAC,IAAI,CAACvC,UAAU,CAAC;IAErE,IAAI,CAACK,YAAY,CAACiC,sBAAsB,GAAGA,sBAAsB;IAEjE,MAAM,IAAI,CAACE,oBAAoB,CAAC,CAAC;IACjC,IAAI,CAACnC,YAAY,CAACoB,kBAAkB,GAAG,IAAI;EAC7C;EAEA,MAAce,oBAAoBA,CAAA,EAAkB;IAClD,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC3C,UAAqC,CAAC,EAAE;MACzE,MAAM4C,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,CAACrC,aAAa,CAACsC,uBAAuB,CACrE,IAAI,CAAC3C,YAAY,CAACiC,sBAAsB,EACxCO,IAAI,EACJD,kBAAkB,EAClB,IAAAK,iCAAiB,EAACL,kBAAkB,EAAEC,IAAI,CAACK,IAAI,CACjD,CAAC;MAED,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACzC,aAAa,CAAC0C,2BAA2B,CACrER,kBAAkB,EAClBC,IAAI,EACJE,oBACF,CAAC;MAED,IAAI,CAAC7C,eAAe,CAACmD,oBAAoB,CAACT,kBAAkB,EAAEO,UAAU,CAAC;IAC3E;EACF;EAEA,MAAcxB,mBAAmBA,CAAA,EAAkB;IACjD,KAAK,MAAMc,GAAG,IAAIC,MAAM,CAACC,IAAI,CAC3B,IAAI,CAAC3C,UACP,CAAC,EAAE;MACD,IAAI,IAAI,CAACK,YAAY,CAAC6B,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,CAAC3C,eAAe,CAACoD,SAAS,CAACV,kBAAkB,EAAE,MAAM,CAAC;QAC1D;MACF;MAEA,IAAI,CAAC1C,eAAe,CAACoD,SAAS,CAACV,kBAAkB,EAAE,SAAS,CAAC;MAC7D,MAAM,IAAI,CAACW,cAAc,CAACX,kBAAkB,EAAEC,IAAI,CAAC;IACrD;EACF;EAEA,MAAcU,cAAcA,CAC1BX,kBAAiC,EACjCC,IAA6C,EAC9B;IACf,MAAME,oBAAoB,GAAG,IAAI,CAACrC,aAAa,CAACsC,uBAAuB,CACrE,IAAI,CAAC3C,YAAY,CAACiC,sBAAsB,EACxCO,IAAI,EACJD,kBAAkB,EAClB,IAAAK,iCAAiB,EAACL,kBAAkB,EAAEC,IAAI,CAACK,IAAI,CACjD,CAAC;IAED,IAAIM,OAAO,GAAG,IAAI;IAElB,OAAOA,OAAO,IAAI,CAAC,IAAI,CAACnD,YAAY,CAAC6B,cAAc,EAAE;MACnD,MAAM;QACJuB,iBAAiB;QACjBC,kBAAkB;QAClBC,oBAAoB;QACpBC,gBAAgB;QAChBJ,OAAO,EAAEK,cAAc;QACvBC;MACF,CAAC,GAAG,MAAM,IAAI,CAACpD,aAAa,CAACqD,2BAA2B,CACtDnB,kBAAkB,EAClBC,IAAI,EACJE,oBACF,CAAC;MAEDS,OAAO,GAAGK,cAAc;MAExB,IAAI,IAAI,CAACxD,YAAY,CAAC6B,cAAc,EAAE;QACpC;MACF;MAEA,MAAM8B,OAAO,GAAG,IAAI,CAACtD,aAAa,CAACuD,0BAA0B,CAC3DR,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpB,IAAAV,iCAAiB,EAACL,kBAAkB,EAAEC,IAAI,CAACK,IAAI,CACjD,CAAC;MAED,IACE,CAACc,OAAO,CAACE,MAAM,KAAK,CAAC,IAAIN,gBAAgB,CAACM,MAAM,KAAK,CAAC,KACtD,CAAC,IAAI,CAAC7D,YAAY,CAAC6B,cAAc,EACjC;QACA,IAAI;UACF,IAAI8B,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;YACxB,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;YAE5B,MAAMC,MAAM,GAAG,MAAM,IAAAC,0BAAe,EAClC,MAAM,IAAI,CAAChE,cAAc,CAACiE,gBAAgB,CAACR,OAAO,CAAC,EACnD,MAAM,IAAI,CAAC3D,YAAY,CAAC6B,cAC1B,CAAC;YAED,IAAI,IAAI,CAAC7B,YAAY,CAAC6B,cAAc,EAAE;cACpC;YACF;YAEA,MAAMuC,eAAe,GAAGH,MAAM,CAACI,KAAK,IAAI,EAAE;YAE1C,MAAMC,UAAU,GAAGF,eAAe,CAACP,MAAM,GACrCO,eAAe,CAACG,MAAM,CAAEF,KAAK,IAC3BA,KAAK,CAACG,QAAQ,EAAEC,MAAM,CAACC,UAAU,CAAC,GAAG,CACvC,CAAC,CAACb,MAAM,GACRF,OAAO,CAACE,MAAM;YAElB,MAAMc,YAAY,GAAGP,eAAe,CAACG,MAAM,CAAEF,KAAK,IAChDA,KAAK,CAACG,QAAQ,EAAEC,MAAM,CAACC,UAAU,CAAC,KAAK,CACzC,CAAC,CAACb,MAAM;YAER,IAAAe,2BAAgB,EAAC,8BAA8B,EAAED,YAAY,EAAE;cAC7DvE,QAAQ,EAAE,IAAI,CAACZ,OAAO,CAACY,QAAQ;cAC/BmC;YACF,CAAC,CAAC;YACF,IAAAsC,6BAAkB,EAChB,gCAAgC,EAChCd,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS,EACtB;cACE1D,QAAQ,EAAE,IAAI,CAACZ,OAAO,CAACY;YACzB,CACF,CAAC;YAED,IAAI,CAACJ,YAAY,CAAC8E,SAAS,CAACb,MAAM,CAAC;YACnC,IAAI,CAACpE,eAAe,CAACkF,2BAA2B,CAC9CxC,kBAAkB,EAClB+B,UAAU,EACVK,YACF,CAAC;UACH;UAEA,IAAIpB,gBAAgB,CAACM,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,CAAC3D,cAAc,CAAC8E,kBAAkB,CAC1CzB,gBAAgB,EAChB,IAAI,CAAC7D,SACP,CAAC;UACH;UAEA,IAAI,CAACQ,cAAc,CAAC+E,WAAW,CAACxB,OAAO,CAAC;QAC1C,CAAC,CAAC,OAAOhC,KAAK,EAAE;UACd,IAAI,IAAAyD,+BAAoB,EAACzD,KAAK,CAAC,IAAI,IAAI,CAACzB,YAAY,CAAC6B,cAAc,EAAE;YACnE;UACF;UAEA,IAAI,CAAChC,eAAe,CAACoD,SAAS,CAACV,kBAAkB,EAAE,QAAQ,CAAC;UAC5D,IAAI,CAAC3C,WAAW,CAAC,IAAAuF,uCAAiB,EAAC1D,KAAK,CAAC,CAAC;UAE1C;QACF;MACF,CAAC,MAAM;QACL,IAAI,CAACvB,cAAc,CAAC+E,WAAW,CAACxB,OAAO,CAAC;MAC1C;IACF;IAEA,IAAI,CAAC5D,eAAe,CAACoD,SAAS,CAC5BV,kBAAkB,EAClB,IAAI,CAACvC,YAAY,CAAC6B,cAAc,GAAG,MAAM,GAAG,WAC9C,CAAC;EACH;EAEQY,yBAAyBA,CAACF,kBAAiC,EAAE;IACnE,OAAO,IAAI,CAAC5C,UAAU,CAAC4C,kBAAkB,CAAC;EAC5C;AACF;AAAC6C,OAAA,CAAA/F,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_telemetry","require","_constants","_healthSyncBatchError","_healthSyncKeys","_retrySave","_dataProcessor","_storageManager","_syncProgressManager","_syncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","SyncProgressManager","updateProgress","stateManager","SyncStateManager","storageManager","StorageManager","provider","dataProcessor","DataProcessor","chunkSize","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","getTotalCount","getData","convert","startSync","once","withOvokSpan","runSync","isInitialized","Error","resume","setNotStartedStatuses","initialDataFetched","initializeSync","processAllDataTypes","setPauseStatuses","pauseReason","error","stopSync","resetAll","reset","shouldStopSync","pauseSync","reason","pause","latestObservationDates","getLatestObservationDates","calculateTotalCounts","key","Object","keys","measurementTypeKey","data","getDataForMeasurementType","latestValidStartDate","getLatestValidStartDate","getHealthDataMode","mode","totalCount","getTotalRecordsCountForType","setTotalObservations","setStatus","syncDataByType","hasMore","observationBodies","observationSyncIds","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","groups","identifyObservations","observationCount","flat","length","startedAt","Date","now","result","withSyncRetries","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","recordOvokMetric","recordOvokDuration","addResult","incrementSyncedObservations","deleteObservations","saveAnchors","isSyncRetryCancelled","toHealthSyncError","exports"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":";;;;;;AAKA,IAAAA,UAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAD,OAAA;AASA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AAEA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AA3BA;;AA6BA;;AAUO,MAAeS,qBAAqB,CAKzC;EAeAC,WAAWA,CACTC,KAAoC,EACnBC,OAA8D,EAC/E;IAAA,KADiBA,OAA8D,GAA9DA,OAA8D;IAE/E,IAAI,CAACC,MAAM,GAAGF,KAAK,CAACE,MAAM;IAC1B,IAAI,CAACC,SAAS,GAAGH,KAAK,CAACG,SAAS;IAChC,IAAI,CAACC,UAAU,GAAGJ,KAAK,CAACI,UAAU;IAClC,IAAI,CAACC,WAAW,GAAGL,KAAK,CAACK,WAAW;IAEpC,IAAI,CAACC,eAAe,GAAG,IAAIC,wCAAmB,CAC5CP,KAAK,CAACQ,cAAc,EACpBR,KAAK,CAACI,UACR,CAAC;IACD,IAAI,CAACK,YAAY,GAAG,IAAIC,kCAAgB,CAAC,CAAC;IAC1C,IAAI,CAACC,cAAc,GAAG,IAAIC,8BAAc,CAACZ,KAAK,CAACE,MAAM,EAAED,OAAO,CAACY,QAAQ,CAAC;IACxE,IAAI,CAACC,aAAa,GAAG,IAAIC,4BAAa,CACpCf,KAAK,CAACE,MAAM,EACZF,KAAK,CAACG,SAAS,EACf,IAAI,CAACF,OAAO,CAACY,QAAQ,EACrBb,KAAK,CAACgB,SAAS,IAAIC,yCAA8B,EACjD,IAAI,CAACN,cAAc,EACnBV,OAAO,CAACiB,aAAa,EACrBjB,OAAO,CAACkB,OAAO,EACflB,OAAO,CAACmB,OACV,CAAC;EACH;;EAEA;EACA,MAAaC,SAASA,CAAA,EAAkB;IACtC,OAAO,IAAI,CAACZ,YAAY,CAACa,IAAI,CAAC,MAC5B,IAAAC,uBAAY,EAAC,eAAe,EAAE;MAAEV,QAAQ,EAAE,IAAI,CAACZ,OAAO,CAACY;IAAS,CAAC,EAAE,MACjE,IAAI,CAACW,OAAO,CAAC,CACf,CACF,CAAC;EACH;EAEA,MAAcA,OAAOA,CAAA,EAAkB;IACrC,IAAI;MACF,IAAI,CAAC,IAAI,CAACtB,MAAM,CAACuB,aAAa,EAAE;QAC9B,IAAI,CAACpB,WAAW,CAAC,IAAIqB,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAErD;MACF;MAEA,IAAI,CAAC,IAAI,CAACvB,SAAS,EAAE;QACnB,IAAI,CAACE,WAAW,CAAC,IAAIqB,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEhD;MACF;MAEA,IAAI,CAACjB,YAAY,CAACkB,MAAM,CAAC,CAAC;MAC1B,IAAI,CAACrB,eAAe,CAACsB,qBAAqB,CAAC,CAAC;MAE5C,IAAI,CAAC,IAAI,CAACnB,YAAY,CAACoB,kBAAkB,EAAE;QACzC,MAAM,IAAI,CAACC,cAAc,CAAC,CAAC;MAC7B;MAEA,MAAM,IAAI,CAACC,mBAAmB,CAAC,CAAC;MAEhC,IAAI,CAACzB,eAAe,CAAC0B,gBAAgB,CAAC,IAAI,CAACvB,YAAY,CAACwB,WAAW,CAAC;IACtE,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,IAAI,CAAC7B,WAAW,CAAC6B,KAAc,CAAC;IAClC;EACF;EAEA,MAAaC,QAAQA,CAAA,EAAkB;IACrC,IAAI,CAAC7B,eAAe,CAAC8B,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC3B,YAAY,CAAC4B,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC5B,YAAY,CAAC6B,cAAc,GAAG,IAAI;EACzC;EAEA,MAAaC,SAASA,CAACC,MAAwB,EAAiB;IAC9D,IAAI,CAAC/B,YAAY,CAACgC,KAAK,CAACD,MAAM,CAAC;IAC/B,IAAI,CAAClC,eAAe,CAAC0B,gBAAgB,CAACQ,MAAM,CAAC;EAC/C;EAEA,MAAcV,cAAcA,CAAA,EAAkB;IAC5C,MAAMY,sBAAsB,GAC1B,MAAM,IAAI,CAAC5B,aAAa,CAAC6B,yBAAyB,CAAC,IAAI,CAACvC,UAAU,CAAC;IAErE,IAAI,CAACK,YAAY,CAACiC,sBAAsB,GAAGA,sBAAsB;IAEjE,MAAM,IAAI,CAACE,oBAAoB,CAAC,CAAC;IACjC,IAAI,CAACnC,YAAY,CAACoB,kBAAkB,GAAG,IAAI;EAC7C;EAEA,MAAce,oBAAoBA,CAAA,EAAkB;IAClD,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC3C,UAAqC,CAAC,EAAE;MACzE,MAAM4C,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,CAACrC,aAAa,CAACsC,uBAAuB,CACrE,IAAI,CAAC3C,YAAY,CAACiC,sBAAsB,EACxCO,IAAI,EACJD,kBAAkB,EAClB,IAAAK,iCAAiB,EAACL,kBAAkB,EAAEC,IAAI,CAACK,IAAI,CACjD,CAAC;MAED,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACzC,aAAa,CAAC0C,2BAA2B,CACrER,kBAAkB,EAClBC,IAAI,EACJE,oBACF,CAAC;MAED,IAAI,CAAC7C,eAAe,CAACmD,oBAAoB,CAACT,kBAAkB,EAAEO,UAAU,CAAC;IAC3E;EACF;EAEA,MAAcxB,mBAAmBA,CAAA,EAAkB;IACjD,KAAK,MAAMc,GAAG,IAAIC,MAAM,CAACC,IAAI,CAC3B,IAAI,CAAC3C,UACP,CAAC,EAAE;MACD,IAAI,IAAI,CAACK,YAAY,CAAC6B,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,CAAC3C,eAAe,CAACoD,SAAS,CAACV,kBAAkB,EAAE,MAAM,CAAC;QAC1D;MACF;MAEA,IAAI,CAAC1C,eAAe,CAACoD,SAAS,CAACV,kBAAkB,EAAE,SAAS,CAAC;MAC7D,MAAM,IAAI,CAACW,cAAc,CAACX,kBAAkB,EAAEC,IAAI,CAAC;IACrD;EACF;EAEA,MAAcU,cAAcA,CAC1BX,kBAAiC,EACjCC,IAA6C,EAC9B;IACf,MAAME,oBAAoB,GAAG,IAAI,CAACrC,aAAa,CAACsC,uBAAuB,CACrE,IAAI,CAAC3C,YAAY,CAACiC,sBAAsB,EACxCO,IAAI,EACJD,kBAAkB,EAClB,IAAAK,iCAAiB,EAACL,kBAAkB,EAAEC,IAAI,CAACK,IAAI,CACjD,CAAC;IAED,IAAIM,OAAO,GAAG,IAAI;IAElB,OAAOA,OAAO,IAAI,CAAC,IAAI,CAACnD,YAAY,CAAC6B,cAAc,EAAE;MACnD,MAAM;QACJuB,iBAAiB;QACjBC,kBAAkB;QAClBC,oBAAoB;QACpBC,gBAAgB;QAChBJ,OAAO,EAAEK,cAAc;QACvBC;MACF,CAAC,GAAG,MAAM,IAAI,CAACpD,aAAa,CAACqD,2BAA2B,CACtDnB,kBAAkB,EAClBC,IAAI,EACJE,oBACF,CAAC;MAEDS,OAAO,GAAGK,cAAc;MAExB,IAAI,IAAI,CAACxD,YAAY,CAAC6B,cAAc,EAAE;QACpC;MACF;MAEA,MAAMgB,IAAI,GAAG,IAAAD,iCAAiB,EAACL,kBAAkB,EAAEC,IAAI,CAACK,IAAI,CAAC;MAE7D,MAAMc,MAAM,GAAG,IAAI,CAACtD,aAAa,CAACuD,oBAAoB,CACpDR,iBAAiB,EACjBC,kBAAkB,EAClBC,oBAAoB,EACpBT,IACF,CAAC;MAED,MAAMgB,gBAAgB,GAAGF,MAAM,CAACG,IAAI,CAAC,CAAC,CAACC,MAAM;MAE7C,IACE,CAACF,gBAAgB,KAAK,CAAC,IAAIN,gBAAgB,CAACQ,MAAM,KAAK,CAAC,KACxD,CAAC,IAAI,CAAC/D,YAAY,CAAC6B,cAAc,EACjC;QACA,IAAI;UACF,IAAIgC,gBAAgB,KAAK,CAAC,EAAE;YAC1B,MAAMG,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;YAE5B,MAAMC,MAAM,GAAG,MAAM,IAAAC,0BAAe,EAClC,MAAM,IAAI,CAAClE,cAAc,CAACmE,gBAAgB,CAACV,MAAM,EAAEd,IAAI,CAAC,EACxD,MAAM,IAAI,CAAC7C,YAAY,CAAC6B,cAC1B,CAAC;YAED,IAAI,IAAI,CAAC7B,YAAY,CAAC6B,cAAc,EAAE;cACpC;YACF;YAEA,MAAMyC,eAAe,GAAGH,MAAM,CAACI,KAAK,IAAI,EAAE;YAE1C,MAAMC,UAAU,GAAGF,eAAe,CAACP,MAAM,GACrCO,eAAe,CAACG,MAAM,CAAEF,KAAK,IAC3BA,KAAK,CAACG,QAAQ,EAAEC,MAAM,CAACC,UAAU,CAAC,GAAG,CACvC,CAAC,CAACb,MAAM,GACRF,gBAAgB;YAEpB,MAAMgB,YAAY,GAAGP,eAAe,CAACG,MAAM,CAAEF,KAAK,IAChDA,KAAK,CAACG,QAAQ,EAAEC,MAAM,CAACC,UAAU,CAAC,KAAK,CACzC,CAAC,CAACb,MAAM;YAER,IAAAe,2BAAgB,EAAC,8BAA8B,EAAED,YAAY,EAAE;cAC7DzE,QAAQ,EAAE,IAAI,CAACZ,OAAO,CAACY,QAAQ;cAC/BmC;YACF,CAAC,CAAC;YACF,IAAAwC,6BAAkB,EAChB,gCAAgC,EAChCd,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS,EACtB;cACE5D,QAAQ,EAAE,IAAI,CAACZ,OAAO,CAACY;YACzB,CACF,CAAC;YAED,IAAI,CAACJ,YAAY,CAACgF,SAAS,CAACb,MAAM,CAAC;YACnC,IAAI,CAACtE,eAAe,CAACoF,2BAA2B,CAC9C1C,kBAAkB,EAClBiC,UAAU,EACVK,YACF,CAAC;UACH;UAEA,IAAItB,gBAAgB,CAACQ,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,CAAC7D,cAAc,CAACgF,kBAAkB,CAC1C3B,gBAAgB,EAChB,IAAI,CAAC7D,SACP,CAAC;UACH;UAEA,IAAI,CAACQ,cAAc,CAACiF,WAAW,CAAC1B,OAAO,CAAC;QAC1C,CAAC,CAAC,OAAOhC,KAAK,EAAE;UACd,IAAI,IAAA2D,+BAAoB,EAAC3D,KAAK,CAAC,IAAI,IAAI,CAACzB,YAAY,CAAC6B,cAAc,EAAE;YACnE;UACF;UAEA,IAAI,CAAChC,eAAe,CAACoD,SAAS,CAACV,kBAAkB,EAAE,QAAQ,CAAC;UAC5D,IAAI,CAAC3C,WAAW,CAAC,IAAAyF,uCAAiB,EAAC5D,KAAK,CAAC,CAAC;UAE1C;QACF;MACF,CAAC,MAAM;QACL,IAAI,CAACvB,cAAc,CAACiF,WAAW,CAAC1B,OAAO,CAAC;MAC1C;IACF;IAEA,IAAI,CAAC5D,eAAe,CAACoD,SAAS,CAC5BV,kBAAkB,EAClB,IAAI,CAACvC,YAAY,CAAC6B,cAAc,GAAG,MAAM,GAAG,WAC9C,CAAC;EACH;EAEQY,yBAAyBA,CAACF,kBAAiC,EAAE;IACnE,OAAO,IAAI,CAAC5C,UAAU,CAAC4C,kBAAkB,CAAC;EAC5C;AACF;AAAC+C,OAAA,CAAAjG,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.DataProcessor = void 0;
7
7
  var _core = require("@ovok/core");
8
8
  var _healthSyncKeys = require("../../types/health-sync-keys.js");
9
- var _generateObservationEntry = require("../../utils/generate-observation-entry.js");
10
9
  var _getHealthRecordSyncId = require("../../utils/get-health-record-sync-id.js");
11
10
  var _getLatestObservationDatesByCode = require("../../utils/get-latest-observation-dates-by-code.js");
12
11
  var _getLatestValidStartDate = require("../../utils/get-latest-valid-start-date.js");
13
12
  var _groupSamplesByInterval = require("../../utils/group-samples-by-interval.js");
14
13
  var _groupSleepSamples = require("../../utils/group-sleep-samples.js");
15
14
  var _healthDataCatalog = require("../../utils/health-data-catalog.js");
15
+ var _identifyImportedObservations = require("../../utils/identify-imported-observations.js");
16
16
  /* eslint-disable max-lines */
17
17
 
18
18
  class DataProcessor {
@@ -136,14 +136,13 @@ class DataProcessor {
136
136
  anchors: newAnchors
137
137
  };
138
138
  }
139
- generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, mode) {
140
- return (0, _generateObservationEntry.generateObservationEntry)({
139
+ identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode) {
140
+ return (0, _identifyImportedObservations.identifyImportedObservations)({
141
141
  groupedObservationBodies: observationBodies,
142
142
  provider: this.provider,
143
143
  groupedObservationSyncIds: observationSyncIds,
144
144
  groupedRecordIds: observationRecordIds,
145
- mode,
146
- patientId: this.patientId
145
+ mode
147
146
  });
148
147
  }
149
148
  getLatestValidStartDate(latestObservationDates, data, measurementTypeKey, mode) {
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_healthSyncKeys","_generateObservationEntry","_getHealthRecordSyncId","_getLatestObservationDatesByCode","_getLatestValidStartDate","_groupSamplesByInterval","_groupSleepSamples","_healthDataCatalog","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","getHealthDataCoding","getHealthDataMode","mode","getLatestObservationDates","codes","getLatestObservationDatesByCode","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","HealthDataType","sleep","groupSleepSamples","MeasurementTypeKey","bloodPressure","groupSamplesByInterval","observationBodies","group","length","observationSyncIds","getHealthRecordSyncId","observationRecordIds","getHealthRecordSourceId","hasMore","some","anchors","generateObservationEntries","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","getLatestValidStartDate","latestObservationDates","resolvedMode","resolvedData","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_healthSyncKeys","_getHealthRecordSyncId","_getLatestObservationDatesByCode","_getLatestValidStartDate","_groupSamplesByInterval","_groupSleepSamples","_healthDataCatalog","_identifyImportedObservations","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","getHealthDataCoding","getHealthDataMode","mode","getLatestObservationDates","codes","getLatestObservationDatesByCode","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","HealthDataType","sleep","groupSleepSamples","MeasurementTypeKey","bloodPressure","groupSamplesByInterval","observationBodies","group","length","observationSyncIds","getHealthRecordSyncId","observationRecordIds","getHealthRecordSourceId","hasMore","some","anchors","identifyObservations","identifyImportedObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","getLatestValidStartDate","latestObservationDates","resolvedMode","resolvedData","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.StorageManager = void 0;
7
+ var _fhirSystems = require("../../utils/fhir-systems.js");
7
8
  var _getHealthRecordSyncId = require("../../utils/get-health-record-sync-id.js");
8
- var _saveBundleObservations = require("../../utils/save-bundle-observations.js");
9
+ var _replacesSavedObservation = require("../../utils/replaces-saved-observation.js");
9
10
  class StorageManager {
10
11
  /**
11
12
  * Where an anchor goes when the host client has no storage.
@@ -29,10 +30,16 @@ class StorageManager {
29
30
  this.client = client;
30
31
  this.provider = provider;
31
32
  }
32
- async saveObservations(entries) {
33
- return (0, _saveBundleObservations.saveBundleObservations)({
34
- entries,
35
- client: this.client
33
+
34
+ /**
35
+ * Saves a page of imported readings, each group one reading with its main observation first. An observation is
36
+ * created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
37
+ * out of that check: all of a reading's observations share it.
38
+ */
39
+ async saveObservations(groups, mode) {
40
+ return this.client.saveObservationGroups(groups, {
41
+ identifierSystems: [_fhirSystems.OBSERVATION_SYNC_ID_SYSTEM],
42
+ replace: (0, _replacesSavedObservation.replacesSavedObservation)(mode)
36
43
  });
37
44
  }
38
45
 
@@ -1 +1 @@
1
- {"version":3,"names":["_getHealthRecordSyncId","require","_saveBundleObservations","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","entries","saveBundleObservations","deleteObservations","recordIds","patientId","recordId","Set","system","value","getHealthRecordIdentifier","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;;;;;AAIA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAEO,MAAME,cAAc,CAAC;EAC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACmBC,eAAe,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE5DC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;EAEH,MAAMC,gBAAgBA,CACpBC,OAAgE,EAClC;IAC9B,OAAO,IAAAC,8CAAsB,EAAC;MAC5BD,OAAO;MACPH,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;;EAEA;EACA,MAAMK,kBAAkBA,CACtBC,SAAmB,EACnBC,SAAiB,EACF;IACf,KAAK,MAAMC,QAAQ,IAAI,IAAIC,GAAG,CAACH,SAAS,CAAC,EAAE;MACzC,MAAM;QAAEI,MAAM;QAAEC;MAAM,CAAC,GAAG,IAAAC,gDAAyB,EAAC,IAAI,CAACX,QAAQ,EAAEO,QAAQ,CAAC;MAC5E,MAAMK,YAAY,GAAG,EAAE;MAEvB,WAAW,MAAMC,IAAI,IAAI,IAAI,CAACd,MAAM,CAACe,mBAAmB,CAAC,aAAa,EAAE;QACtEC,OAAO,EAAE,WAAWT,SAAS,EAAE;QAC/BU,UAAU,EAAE,GAAGP,MAAM,IAAIC,KAAK;MAChC,CAAC,CAAC,EAAE;QACFE,YAAY,CAACK,IAAI,CAAC,GAAGJ,IAAI,CAAC;MAC5B;MAEA,MAAMK,OAAO,CAACC,GAAG,CACfP,YAAY,CACTQ,MAAM,CAAEC,WAAW,IAAKA,WAAW,CAACC,EAAE,CAAC,CACvCC,GAAG,CAAEF,WAAW,IACf,IAAI,CAACtB,MAAM,CAACyB,cAAc,CAAC,aAAa,EAAEH,WAAW,CAACC,EAAG,CAC3D,CACJ,CAAC;IACH;EACF;EAEAG,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,IAAI,IAAI,CAAC3B,MAAM,CAAC+B,aAAa,EAAE;MAC7B,IAAI,CAAC/B,MAAM,CAAC+B,aAAa,CAACC,SAAS,CAACH,GAAG,EAAED,MAAM,CAAC;MAEhD;IACF;IAEA,IAAI,CAAC/B,eAAe,CAACoC,GAAG,CAACJ,GAAG,EAAED,MAAM,CAAC;EACvC;EAEAM,SAASA,CAACP,cAAsB,EAAsB;IACpD,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,OAAO,IAAI,CAAC3B,MAAM,CAAC+B,aAAa,GAC5B,IAAI,CAAC/B,MAAM,CAAC+B,aAAa,CAACI,SAAS,CAACN,GAAG,CAAC,GACxC,IAAI,CAAChC,eAAe,CAACuC,GAAG,CAACP,GAAG,CAAC;EACnC;EAEQC,SAASA,CAACH,cAAsB,EAAU;IAChD,OAAO,GAAG,IAAI,CAAC1B,QAAQ,SAAS0B,cAAc,SAAS;EACzD;EAEAU,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAEZ,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;AAACY,OAAA,CAAA5C,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_replacesSavedObservation","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","groups","mode","saveObservationGroups","identifierSystems","OBSERVATION_SYNC_ID_SYSTEM","replace","replacesSavedObservation","deleteObservations","recordIds","patientId","recordId","Set","system","value","getHealthRecordIdentifier","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach","exports"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -14,10 +14,28 @@ class HealthSyncBatchError extends Error {
14
14
  }
15
15
  }
16
16
  exports.HealthSyncBatchError = HealthSyncBatchError;
17
+ const isBundle = value => value?.resourceType === "Bundle";
18
+
19
+ /** What the entries a batch didn't save answered, as "409 Conflict × 2, 500 Internal Server Error × 1". */
20
+ const summarizeUnsavedEntries = bundle => {
21
+ const statusCounts = new Map();
22
+ for (const entry of bundle.entry ?? []) {
23
+ const status = entry.response?.status ?? "missing status";
24
+ if (!status.startsWith("2")) {
25
+ statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
26
+ }
27
+ }
28
+ return [...statusCounts].map(([status, count]) => `${status} × ${count}`).join(", ");
29
+ };
17
30
  const toHealthSyncError = error => {
18
31
  if (error instanceof HealthSyncBatchError) {
19
32
  return error;
20
33
  }
34
+
35
+ // Core's save throws the response of a request that didn't save every entry.
36
+ if (isBundle(error)) {
37
+ return new HealthSyncBatchError(`Health import batch did not save every entry (${summarizeUnsavedEntries(error) || "an entry was not answered"})`, error);
38
+ }
21
39
  const record = typeof error === "object" && error !== null ? error : undefined;
22
40
  if (record?.outcome) {
23
41
  return new HealthSyncBatchError(error instanceof Error ? error.message : String(error), undefined, record.outcome);
@@ -1 +1 @@
1
- {"version":3,"names":["_toError","require","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","exports","toHealthSyncError","error","record","undefined","String","toError"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAACC,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AAED,MAAMQ,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYT,oBAAoB,EAAE;IACzC,OAAOS,KAAK;EACd;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAEJ,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BS,KAAK,YAAYR,KAAK,GAAGQ,KAAK,CAACL,OAAO,GAAGQ,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAACJ,OACT,CAAC;EACH;EAEA,OAAO,IAAAO,gBAAO,EAACJ,KAAK,CAAC;AACvB,CAAC;AAACF,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_toError","require","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","exports","isBundle","value","resourceType","summarizeUnsavedEntries","statusCounts","Map","entry","status","response","startsWith","set","get","map","count","join","toHealthSyncError","error","record","undefined","String","toError"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;;;;;AAEA,IAAAA,QAAA,GAAAC,OAAA;AAEA,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAACC,OAAA,CAAAP,oBAAA,GAAAA,oBAAA;AAED,MAAMQ,QAAQ,GAAIC,KAAc,IAC7BA,KAAK,EAAyBC,YAAY,KAAK,QAAQ;;AAE1D;AACA,MAAMC,uBAAuB,GAAIN,MAAc,IAAa;EAC1D,MAAMO,YAAY,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE9C,KAAK,MAAMC,KAAK,IAAIT,MAAM,CAACS,KAAK,IAAI,EAAE,EAAE;IACtC,MAAMC,MAAM,GAAGD,KAAK,CAACE,QAAQ,EAAED,MAAM,IAAI,gBAAgB;IAEzD,IAAI,CAACA,MAAM,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;MAC3BL,YAAY,CAACM,GAAG,CAACH,MAAM,EAAE,CAACH,YAAY,CAACO,GAAG,CAACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D;EACF;EAEA,OAAO,CAAC,GAAGH,YAAY,CAAC,CACrBQ,GAAG,CAAC,CAAC,CAACL,MAAM,EAAEM,KAAK,CAAC,KAAK,GAAGN,MAAM,MAAMM,KAAK,EAAE,CAAC,CAChDC,IAAI,CAAC,IAAI,CAAC;AACf,CAAC;AAED,MAAMC,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYxB,oBAAoB,EAAE;IACzC,OAAOwB,KAAK;EACd;;EAEA;EACA,IAAIhB,QAAQ,CAACgB,KAAK,CAAC,EAAE;IACnB,OAAO,IAAIxB,oBAAoB,CAC7B,iDAAiDW,uBAAuB,CAACa,KAAK,CAAC,IAAI,2BAA2B,GAAG,EACjHA,KACF,CAAC;EACH;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAEnB,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BwB,KAAK,YAAYvB,KAAK,GAAGuB,KAAK,CAACpB,OAAO,GAAGuB,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAACnB,OACT,CAAC;EACH;EAEA,OAAO,IAAAsB,gBAAO,EAACJ,KAAK,CAAC;AACvB,CAAC;AAACjB,OAAA,CAAAgB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.identifyImportedObservations = exports.getStableObservationId = void 0;
7
+ var _fhirSystems = require("./fhir-systems.js");
8
+ var _getHealthRecordSyncId = require("./get-health-record-sync-id.js");
9
+ var _isDailyAggregateMode = require("./is-daily-aggregate-mode.js");
10
+ const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
11
+ const getObservationTime = observation => {
12
+ if (observation.effectivePeriod) {
13
+ return `${observation.effectivePeriod.start ?? ""}:${observation.effectivePeriod.end ?? ""}`;
14
+ }
15
+ return observation.effectiveDateTime?.slice(0, 19) ?? "unknown";
16
+ };
17
+ const getStableObservationId = ({
18
+ observation,
19
+ provider,
20
+ sourceId,
21
+ bodyIndex
22
+ }) => observation.id && !sourceId ? `${provider}:${observation.id}` : [provider, sourceId ?? getObservationTime(observation), getObservationCode(observation), bodyIndex].join(":");
23
+ exports.getStableObservationId = getStableObservationId;
24
+ const syncIdentifier = value => ({
25
+ system: _fhirSystems.OBSERVATION_SYNC_ID_SYSTEM,
26
+ value
27
+ });
28
+
29
+ /**
30
+ * Names each imported observation for good: by its provider, by a sync id that stays the same when the source value
31
+ * changes, and by the record it came from. Core's `saveObservationGroups` finds an earlier import by the sync id, so a
32
+ * read of the same source again saves nothing new, or writes over a total that grew.
33
+ */
34
+ const identifyImportedObservations = ({
35
+ groupedObservationBodies,
36
+ provider,
37
+ groupedObservationSyncIds,
38
+ groupedRecordIds,
39
+ mode
40
+ }) => groupedObservationBodies.map((observationBodies, groupIndex) => {
41
+ const recordId = groupedRecordIds?.[groupIndex];
42
+ return observationBodies.map((observationBody, bodyIndex) => {
43
+ const syncId = getStableObservationId({
44
+ observation: observationBody,
45
+ provider,
46
+ sourceId: groupedObservationSyncIds?.[groupIndex],
47
+ bodyIndex
48
+ });
49
+
50
+ // A day's total saved before sync ids named their source carries its old id; naming the total by that id as
51
+ // well is what lets the save find it and write over it.
52
+ const legacySyncId = (0, _isDailyAggregateMode.isDailyAggregateMode)(mode) && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
53
+ return {
54
+ ...observationBody,
55
+ identifier: [...(observationBody.identifier || []), {
56
+ system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
57
+ value: provider
58
+ }, syncIdentifier(syncId), ...(legacySyncId && legacySyncId !== syncId ? [syncIdentifier(legacySyncId)] : []), ...(recordId ? [(0, _getHealthRecordSyncId.getHealthRecordIdentifier)(provider, recordId)] : [])],
59
+ device: {
60
+ ...(observationBody.device ?? {}),
61
+ identifier: {
62
+ system: _fhirSystems.OBSERVATION_SYNC_PROVIDER_SYSTEM,
63
+ value: provider
64
+ }
65
+ }
66
+ };
67
+ });
68
+ });
69
+ exports.identifyImportedObservations = identifyImportedObservations;
70
+ //# sourceMappingURL=identify-imported-observations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_fhirSystems","require","_getHealthRecordSyncId","_isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","exports","syncIdentifier","value","OBSERVATION_SYNC_ID_SYSTEM","identifyImportedObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","mode","observationBodies","groupIndex","recordId","observationBody","syncId","legacySyncId","isDailyAggregateMode","undefined","identifier","OBSERVATION_SYNC_PROVIDER_SYSTEM","getHealthRecordIdentifier","device"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/identify-imported-observations.ts"],"mappings":"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","ignoreList":[]}
@@ -112,17 +112,19 @@ export class BaseHealthSyncService {
112
112
  if (this.stateManager.shouldStopSync) {
113
113
  break;
114
114
  }
115
- const entries = this.dataProcessor.generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, getHealthDataMode(measurementTypeKey, data.mode));
116
- if ((entries.length !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
115
+ const mode = getHealthDataMode(measurementTypeKey, data.mode);
116
+ const groups = this.dataProcessor.identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode);
117
+ const observationCount = groups.flat().length;
118
+ if ((observationCount !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
117
119
  try {
118
- if (entries.length !== 0) {
120
+ if (observationCount !== 0) {
119
121
  const startedAt = Date.now();
120
- const result = await withSyncRetries(() => this.storageManager.saveObservations(entries), () => this.stateManager.shouldStopSync);
122
+ const result = await withSyncRetries(() => this.storageManager.saveObservations(groups, mode), () => this.stateManager.shouldStopSync);
121
123
  if (this.stateManager.shouldStopSync) {
122
124
  return;
123
125
  }
124
126
  const responseEntries = result.entry ?? [];
125
- const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : entries.length;
127
+ const savedCount = responseEntries.length ? responseEntries.filter(entry => entry.response?.status.startsWith("2")).length : observationCount;
126
128
  const createdCount = responseEntries.filter(entry => entry.response?.status.startsWith("201")).length;
127
129
  recordOvokMetric("ovok.health.samples.imported", createdCount, {
128
130
  provider: this.adapter.provider,
@@ -1 +1 @@
1
- {"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","toHealthSyncError","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","provider","dataProcessor","chunkSize","getTotalCount","getData","convert","startSync","once","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","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","entries","generateObservationEntries","length","startedAt","Date","now","result","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","addResult","incrementSyncedObservations","deleteObservations","saveAnchors"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["recordOvokDuration","recordOvokMetric","withOvokSpan","DEFAULT_HEALTH_SYNC_CHUNK_SIZE","toHealthSyncError","getHealthDataMode","isSyncRetryCancelled","withSyncRetries","DataProcessor","StorageManager","SyncProgressManager","SyncStateManager","BaseHealthSyncService","constructor","props","adapter","client","patientId","dataToSync","onSyncError","progressManager","updateProgress","stateManager","storageManager","provider","dataProcessor","chunkSize","getTotalCount","getData","convert","startSync","once","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","observationRecordIds","deletedRecordIds","currentHasMore","anchors","getObservationBodiesForType","groups","identifyObservations","observationCount","flat","length","startedAt","Date","now","result","saveObservations","responseEntries","entry","savedCount","filter","response","status","startsWith","createdCount","addResult","incrementSyncedObservations","deleteObservations","saveAnchors"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/services/base-health-sync-service.ts"],"mappings":"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","ignoreList":[]}
@@ -4,13 +4,13 @@
4
4
 
5
5
  import { MeasurementTypeKey } from "@ovok/core";
6
6
  import { getHealthDataMode, HealthDataType } from "../../types/health-sync-keys.js";
7
- import { generateObservationEntry } from "../../utils/generate-observation-entry.js";
8
7
  import { getHealthRecordSourceId, getHealthRecordSyncId } from "../../utils/get-health-record-sync-id.js";
9
8
  import { getLatestObservationDatesByCode } from "../../utils/get-latest-observation-dates-by-code.js";
10
9
  import { getLatestValidStartDate } from "../../utils/get-latest-valid-start-date.js";
11
10
  import { groupSamplesByInterval } from "../../utils/group-samples-by-interval.js";
12
11
  import { groupSleepSamples } from "../../utils/group-sleep-samples.js";
13
12
  import { getHealthDataCoding } from "../../utils/health-data-catalog.js";
13
+ import { identifyImportedObservations } from "../../utils/identify-imported-observations.js";
14
14
  export class DataProcessor {
15
15
  constructor(client, patientId, provider, chunkSize, storageManager, getTotalCountsFunction, getDataFromProviderFunction, getConverterFunction) {
16
16
  this.client = client;
@@ -132,14 +132,13 @@ export class DataProcessor {
132
132
  anchors: newAnchors
133
133
  };
134
134
  }
135
- generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, mode) {
136
- return generateObservationEntry({
135
+ identifyObservations(observationBodies, observationSyncIds, observationRecordIds, mode) {
136
+ return identifyImportedObservations({
137
137
  groupedObservationBodies: observationBodies,
138
138
  provider: this.provider,
139
139
  groupedObservationSyncIds: observationSyncIds,
140
140
  groupedRecordIds: observationRecordIds,
141
- mode,
142
- patientId: this.patientId
141
+ mode
143
142
  });
144
143
  }
145
144
  getLatestValidStartDate(latestObservationDates, data, measurementTypeKey, mode) {
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","generateObservationEntry","getHealthRecordSourceId","getHealthRecordSyncId","getLatestObservationDatesByCode","getLatestValidStartDate","groupSamplesByInterval","groupSleepSamples","getHealthDataCoding","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","mode","getLatestObservationDates","codes","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","sleep","bloodPressure","observationBodies","group","length","observationSyncIds","observationRecordIds","hasMore","some","anchors","generateObservationEntries","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","latestObservationDates","resolvedMode","resolvedData"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","getHealthRecordSourceId","getHealthRecordSyncId","getLatestObservationDatesByCode","getLatestValidStartDate","groupSamplesByInterval","groupSleepSamples","getHealthDataCoding","identifyImportedObservations","DataProcessor","constructor","client","patientId","provider","chunkSize","storageManager","getTotalCountsFunction","getDataFromProviderFunction","getConverterFunction","extractCodes","dataToSync","entries","Object","flatMap","key","data","typeIdentifiers","map","typeIdentifier","code","String","mode","getLatestObservationDates","codes","getTotalRecordsCountForType","measurementTypeKey","latestValidStartDate","totalCounts","Promise","all","anchor","getAnchor","startDate","toISOString","reduce","acc","count","getObservationBodiesForType","configuredCodings","system","display","catalogCoding","undefined","typeIdentifierCodes","fromEntries","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","results","result","newAnchors","flat","filter","Boolean","allData","deletedRecordIds","dataGroups","sleep","bloodPressure","observationBodies","group","length","observationSyncIds","observationRecordIds","hasMore","some","anchors","identifyObservations","groupedObservationBodies","groupedObservationSyncIds","groupedRecordIds","latestObservationDates","resolvedMode","resolvedData"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/data-processor.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
 
3
+ import { OBSERVATION_SYNC_ID_SYSTEM } from "../../utils/fhir-systems.js";
3
4
  import { getHealthRecordIdentifier } from "../../utils/get-health-record-sync-id.js";
4
- import { saveBundleObservations } from "../../utils/save-bundle-observations.js";
5
+ import { replacesSavedObservation } from "../../utils/replaces-saved-observation.js";
5
6
  export class StorageManager {
6
7
  /**
7
8
  * Where an anchor goes when the host client has no storage.
@@ -25,10 +26,16 @@ export class StorageManager {
25
26
  this.client = client;
26
27
  this.provider = provider;
27
28
  }
28
- async saveObservations(entries) {
29
- return saveBundleObservations({
30
- entries,
31
- client: this.client
29
+
30
+ /**
31
+ * Saves a page of imported readings, each group one reading with its main observation first. An observation is
32
+ * created once per sync id, or with a mode that replaces, written over the one saved under it. The record id stays
33
+ * out of that check: all of a reading's observations share it.
34
+ */
35
+ async saveObservations(groups, mode) {
36
+ return this.client.saveObservationGroups(groups, {
37
+ identifierSystems: [OBSERVATION_SYNC_ID_SYSTEM],
38
+ replace: replacesSavedObservation(mode)
32
39
  });
33
40
  }
34
41
 
@@ -1 +1 @@
1
- {"version":3,"names":["getHealthRecordIdentifier","saveBundleObservations","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","entries","deleteObservations","recordIds","patientId","recordId","Set","system","value","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":";;AAIA,SAASA,yBAAyB,QAAQ,0CAAuC;AACjF,SAASC,sBAAsB,QAAQ,yCAAsC;AAE7E,OAAO,MAAMC,cAAc,CAAC;EAC1B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACmBC,eAAe,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE5DC,WAAWA,CACDC,MAAkB,EAClBC,QAAwB,EAChC;IAAA,KAFQD,MAAkB,GAAlBA,MAAkB;IAAA,KAClBC,QAAwB,GAAxBA,QAAwB;EAC/B;EAEH,MAAMC,gBAAgBA,CACpBC,OAAgE,EAClC;IAC9B,OAAOR,sBAAsB,CAAC;MAC5BQ,OAAO;MACPH,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;;EAEA;EACA,MAAMI,kBAAkBA,CACtBC,SAAmB,EACnBC,SAAiB,EACF;IACf,KAAK,MAAMC,QAAQ,IAAI,IAAIC,GAAG,CAACH,SAAS,CAAC,EAAE;MACzC,MAAM;QAAEI,MAAM;QAAEC;MAAM,CAAC,GAAGhB,yBAAyB,CAAC,IAAI,CAACO,QAAQ,EAAEM,QAAQ,CAAC;MAC5E,MAAMI,YAAY,GAAG,EAAE;MAEvB,WAAW,MAAMC,IAAI,IAAI,IAAI,CAACZ,MAAM,CAACa,mBAAmB,CAAC,aAAa,EAAE;QACtEC,OAAO,EAAE,WAAWR,SAAS,EAAE;QAC/BS,UAAU,EAAE,GAAGN,MAAM,IAAIC,KAAK;MAChC,CAAC,CAAC,EAAE;QACFC,YAAY,CAACK,IAAI,CAAC,GAAGJ,IAAI,CAAC;MAC5B;MAEA,MAAMK,OAAO,CAACC,GAAG,CACfP,YAAY,CACTQ,MAAM,CAAEC,WAAW,IAAKA,WAAW,CAACC,EAAE,CAAC,CACvCC,GAAG,CAAEF,WAAW,IACf,IAAI,CAACpB,MAAM,CAACuB,cAAc,CAAC,aAAa,EAAEH,WAAW,CAACC,EAAG,CAC3D,CACJ,CAAC;IACH;EACF;EAEAG,UAAUA,CAACC,cAAsB,EAAEC,MAAc,EAAQ;IACvD,MAAMC,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,IAAI,IAAI,CAACzB,MAAM,CAAC6B,aAAa,EAAE;MAC7B,IAAI,CAAC7B,MAAM,CAAC6B,aAAa,CAACC,SAAS,CAACH,GAAG,EAAED,MAAM,CAAC;MAEhD;IACF;IAEA,IAAI,CAAC7B,eAAe,CAACkC,GAAG,CAACJ,GAAG,EAAED,MAAM,CAAC;EACvC;EAEAM,SAASA,CAACP,cAAsB,EAAsB;IACpD,MAAME,GAAG,GAAG,IAAI,CAACC,SAAS,CAACH,cAAc,CAAC;IAE1C,OAAO,IAAI,CAACzB,MAAM,CAAC6B,aAAa,GAC5B,IAAI,CAAC7B,MAAM,CAAC6B,aAAa,CAACI,SAAS,CAACN,GAAG,CAAC,GACxC,IAAI,CAAC9B,eAAe,CAACqC,GAAG,CAACP,GAAG,CAAC;EACnC;EAEQC,SAASA,CAACH,cAAsB,EAAU;IAChD,OAAO,GAAG,IAAI,CAACxB,QAAQ,SAASwB,cAAc,SAAS;EACzD;EAEAU,WAAWA,CACTC,OAA0D,EACpD;IACNA,OAAO,CAACC,OAAO,CAAC,CAAC;MAAEZ,cAAc;MAAEC;IAAO,CAAC,KAAK;MAC9C,IAAI,CAACF,UAAU,CAACC,cAAc,EAAEC,MAAM,CAAC;IACzC,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
1
+ {"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","getHealthRecordIdentifier","replacesSavedObservation","StorageManager","inMemoryAnchors","Map","constructor","client","provider","saveObservations","groups","mode","saveObservationGroups","identifierSystems","replace","deleteObservations","recordIds","patientId","recordId","Set","system","value","observations","page","searchResourcePages","subject","identifier","push","Promise","all","filter","observation","id","map","deleteResource","saveAnchor","typeIdentifier","anchor","key","anchorKey","clientStorage","setString","set","getAnchor","getString","get","saveAnchors","anchors","forEach"],"sourceRoot":"../../../../../../src","sources":["modules/data-sync/services/managers/storage-manager.ts"],"mappings":"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","ignoreList":[]}
@@ -9,10 +9,28 @@ class HealthSyncBatchError extends Error {
9
9
  this.outcome = outcome;
10
10
  }
11
11
  }
12
+ const isBundle = value => value?.resourceType === "Bundle";
13
+
14
+ /** What the entries a batch didn't save answered, as "409 Conflict × 2, 500 Internal Server Error × 1". */
15
+ const summarizeUnsavedEntries = bundle => {
16
+ const statusCounts = new Map();
17
+ for (const entry of bundle.entry ?? []) {
18
+ const status = entry.response?.status ?? "missing status";
19
+ if (!status.startsWith("2")) {
20
+ statusCounts.set(status, (statusCounts.get(status) ?? 0) + 1);
21
+ }
22
+ }
23
+ return [...statusCounts].map(([status, count]) => `${status} × ${count}`).join(", ");
24
+ };
12
25
  const toHealthSyncError = error => {
13
26
  if (error instanceof HealthSyncBatchError) {
14
27
  return error;
15
28
  }
29
+
30
+ // Core's save throws the response of a request that didn't save every entry.
31
+ if (isBundle(error)) {
32
+ return new HealthSyncBatchError(`Health import batch did not save every entry (${summarizeUnsavedEntries(error) || "an entry was not answered"})`, error);
33
+ }
16
34
  const record = typeof error === "object" && error !== null ? error : undefined;
17
35
  if (record?.outcome) {
18
36
  return new HealthSyncBatchError(error instanceof Error ? error.message : String(error), undefined, record.outcome);
@@ -1 +1 @@
1
- {"version":3,"names":["toError","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","toHealthSyncError","error","record","undefined","String"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;AAEA,SAASA,OAAO,QAAQ,iCAA8B;AAEtD,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAEA,MAAMC,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYR,oBAAoB,EAAE;IACzC,OAAOQ,KAAK;EACd;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAEH,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BQ,KAAK,YAAYP,KAAK,GAAGO,KAAK,CAACJ,OAAO,GAAGO,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAACH,OACT,CAAC;EACH;EAEA,OAAOP,OAAO,CAACS,KAAK,CAAC;AACvB,CAAC;AAED,SAASR,oBAAoB,EAAEO,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["toError","HealthSyncBatchError","Error","name","constructor","message","bundle","outcome","isBundle","value","resourceType","summarizeUnsavedEntries","statusCounts","Map","entry","status","response","startsWith","set","get","map","count","join","toHealthSyncError","error","record","undefined","String"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-batch-error.ts"],"mappings":";;AAEA,SAASA,OAAO,QAAQ,iCAA8B;AAEtD,MAAMC,oBAAoB,SAASC,KAAK,CAAC;EACvBC,IAAI,GAAG,sBAAsB;EAEtCC,WAAWA,CAChBC,OAAe,EACCC,MAAe,EACfC,OAA0B,EAC1C;IACA,KAAK,CAACF,OAAO,CAAC;IAAC,KAHCC,MAAe,GAAfA,MAAe;IAAA,KACfC,OAA0B,GAA1BA,OAA0B;EAG5C;AACF;AAEA,MAAMC,QAAQ,GAAIC,KAAc,IAC7BA,KAAK,EAAyBC,YAAY,KAAK,QAAQ;;AAE1D;AACA,MAAMC,uBAAuB,GAAIL,MAAc,IAAa;EAC1D,MAAMM,YAAY,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAE9C,KAAK,MAAMC,KAAK,IAAIR,MAAM,CAACQ,KAAK,IAAI,EAAE,EAAE;IACtC,MAAMC,MAAM,GAAGD,KAAK,CAACE,QAAQ,EAAED,MAAM,IAAI,gBAAgB;IAEzD,IAAI,CAACA,MAAM,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;MAC3BL,YAAY,CAACM,GAAG,CAACH,MAAM,EAAE,CAACH,YAAY,CAACO,GAAG,CAACJ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D;EACF;EAEA,OAAO,CAAC,GAAGH,YAAY,CAAC,CACrBQ,GAAG,CAAC,CAAC,CAACL,MAAM,EAAEM,KAAK,CAAC,KAAK,GAAGN,MAAM,MAAMM,KAAK,EAAE,CAAC,CAChDC,IAAI,CAAC,IAAI,CAAC;AACf,CAAC;AAED,MAAMC,iBAAiB,GAAIC,KAAc,IAAY;EACnD,IAAIA,KAAK,YAAYvB,oBAAoB,EAAE;IACzC,OAAOuB,KAAK;EACd;;EAEA;EACA,IAAIhB,QAAQ,CAACgB,KAAK,CAAC,EAAE;IACnB,OAAO,IAAIvB,oBAAoB,CAC7B,iDAAiDU,uBAAuB,CAACa,KAAK,CAAC,IAAI,2BAA2B,GAAG,EACjHA,KACF,CAAC;EACH;EAEA,MAAMC,MAAM,GACV,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,GACtCA,KAAK,GACNE,SAAS;EAEf,IAAID,MAAM,EAAElB,OAAO,EAAE;IACnB,OAAO,IAAIN,oBAAoB,CAC7BuB,KAAK,YAAYtB,KAAK,GAAGsB,KAAK,CAACnB,OAAO,GAAGsB,MAAM,CAACH,KAAK,CAAC,EACtDE,SAAS,EACTD,MAAM,CAAClB,OACT,CAAC;EACH;EAEA,OAAOP,OAAO,CAACwB,KAAK,CAAC;AACvB,CAAC;AAED,SAASvB,oBAAoB,EAAEsB,iBAAiB","ignoreList":[]}