@ovok/native 1.11.2 → 1.12.1
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/bt-device/constants/device-model.js +85 -0
- package/lib/commonjs/modules/bt-device/constants/device-model.js.map +1 -0
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js +21 -1
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -1
- package/lib/commonjs/modules/bt-device/hooks/use-supported-devices.js +16 -0
- package/lib/commonjs/modules/bt-device/hooks/use-supported-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-device/index.js +117 -0
- package/lib/commonjs/modules/bt-device/index.js.map +1 -1
- package/lib/commonjs/modules/bt-device/types/device-kind.js +2 -0
- package/lib/commonjs/modules/bt-device/types/device-kind.js.map +1 -0
- package/lib/commonjs/modules/bt-device/utils/device-query.js +57 -0
- package/lib/commonjs/modules/bt-device/utils/device-query.js.map +1 -0
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +3 -1
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/constants/blood-pressure-translated-exception-map.js +2 -1
- package/lib/commonjs/modules/bt-management/constants/blood-pressure-translated-exception-map.js.map +1 -1
- package/lib/commonjs/modules/bt-management/constants/measurement-feedback.js +25 -0
- package/lib/commonjs/modules/bt-management/constants/measurement-feedback.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js +8 -7
- package/lib/commonjs/modules/bt-management/hooks/use-bt-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-bt-devices.js +41 -0
- package/lib/commonjs/modules/bt-management/hooks/use-bt-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-open-series.js +18 -0
- package/lib/commonjs/modules/bt-management/hooks/use-open-series.js.map +1 -0
- package/lib/commonjs/modules/bt-management/hooks/use-queued-results.js +15 -0
- package/lib/commonjs/modules/bt-management/hooks/use-queued-results.js.map +1 -0
- package/lib/commonjs/modules/bt-management/index.js +60 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js +34 -1
- package/lib/commonjs/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +23 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js +2 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +13 -12
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +4 -3
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +10 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +6 -0
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js +4 -3
- package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js +2 -1
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/series-recorder.js +176 -0
- package/lib/commonjs/modules/bt-management/services/series-recorder.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/series-slots.js +93 -0
- package/lib/commonjs/modules/bt-management/services/series-slots.js.map +1 -0
- package/lib/commonjs/modules/bt-management/types/measurement-series.js +6 -0
- package/lib/commonjs/modules/bt-management/types/measurement-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/constants.js +14 -1
- package/lib/commonjs/modules/data-sync/constants.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +6 -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 +10 -7
- 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 +10 -4
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/types/health-data.js +5 -1
- package/lib/commonjs/modules/data-sync/types/health-data.js.map +1 -1
- package/lib/commonjs/modules/data-sync/types/health-sync-keys.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js +19 -5
- package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/fhir-systems.js +4 -1
- package/lib/commonjs/modules/data-sync/utils/fhir-systems.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js +10 -5
- package/lib/commonjs/modules/data-sync/utils/generate-observation-entry.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js +18 -12
- package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-latest-valid-start-date.js +6 -1
- package/lib/commonjs/modules/data-sync/utils/get-latest-valid-start-date.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +4 -0
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js +3 -2
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/health-connect-series.js +101 -0
- package/lib/commonjs/modules/data-sync/utils/health-connect-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/healthkit-series.js +44 -0
- package/lib/commonjs/modules/data-sync/utils/healthkit-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/hourly-series.js +57 -0
- package/lib/commonjs/modules/data-sync/utils/hourly-series.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/replaces-saved-observation.js +13 -0
- package/lib/commonjs/modules/data-sync/utils/replaces-saved-observation.js.map +1 -0
- package/lib/module/modules/bt-device/constants/device-model.js +77 -0
- package/lib/module/modules/bt-device/constants/device-model.js.map +1 -0
- package/lib/module/modules/bt-device/constants/supported-devices.js +21 -1
- package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -1
- package/lib/module/modules/bt-device/hooks/use-supported-devices.js +12 -0
- package/lib/module/modules/bt-device/hooks/use-supported-devices.js.map +1 -0
- package/lib/module/modules/bt-device/index.js +4 -0
- package/lib/module/modules/bt-device/index.js.map +1 -1
- package/lib/module/modules/bt-device/types/device-kind.js +2 -0
- package/lib/module/modules/bt-device/types/device-kind.js.map +1 -0
- package/lib/module/modules/bt-device/utils/device-query.js +50 -0
- package/lib/module/modules/bt-device/utils/device-query.js.map +1 -0
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +3 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/constants/blood-pressure-translated-exception-map.js +2 -1
- package/lib/module/modules/bt-management/constants/blood-pressure-translated-exception-map.js.map +1 -1
- package/lib/module/modules/bt-management/constants/measurement-feedback.js +22 -0
- package/lib/module/modules/bt-management/constants/measurement-feedback.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-bt-device.js +9 -8
- package/lib/module/modules/bt-management/hooks/use-bt-device.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-bt-devices.js +37 -0
- package/lib/module/modules/bt-management/hooks/use-bt-devices.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-open-series.js +13 -0
- package/lib/module/modules/bt-management/hooks/use-open-series.js.map +1 -0
- package/lib/module/modules/bt-management/hooks/use-queued-results.js +10 -0
- package/lib/module/modules/bt-management/hooks/use-queued-results.js.map +1 -0
- package/lib/module/modules/bt-management/index.js +5 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js +34 -1
- package/lib/module/modules/bt-management/services/background-sync/background-sync-coordinator.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +23 -1
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js +2 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +13 -12
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +4 -3
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +10 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +6 -0
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/f4/f4.device.js +4 -3
- package/lib/module/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js +2 -1
- package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/series-recorder.js +173 -0
- package/lib/module/modules/bt-management/services/series-recorder.js.map +1 -0
- package/lib/module/modules/bt-management/services/series-slots.js +85 -0
- package/lib/module/modules/bt-management/services/series-slots.js.map +1 -0
- package/lib/module/modules/bt-management/types/measurement-series.js +4 -0
- package/lib/module/modules/bt-management/types/measurement-series.js.map +1 -0
- package/lib/module/modules/data-sync/constants.js +14 -1
- package/lib/module/modules/data-sync/constants.js.map +1 -1
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +6 -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 +11 -8
- 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 +10 -4
- package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/module/modules/data-sync/types/health-data.js +6 -1
- package/lib/module/modules/data-sync/types/health-data.js.map +1 -1
- package/lib/module/modules/data-sync/types/health-sync-keys.js.map +1 -1
- package/lib/module/modules/data-sync/utils/convert-generic-health-data.js +19 -6
- package/lib/module/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
- package/lib/module/modules/data-sync/utils/fhir-systems.js +4 -1
- package/lib/module/modules/data-sync/utils/fhir-systems.js.map +1 -1
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js +10 -5
- package/lib/module/modules/data-sync/utils/generate-observation-entry.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js +16 -11
- package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-latest-valid-start-date.js +7 -2
- package/lib/module/modules/data-sync/utils/get-latest-valid-start-date.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +4 -0
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js +3 -2
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/module/modules/data-sync/utils/health-connect-series.js +97 -0
- package/lib/module/modules/data-sync/utils/health-connect-series.js.map +1 -0
- package/lib/module/modules/data-sync/utils/healthkit-series.js +40 -0
- package/lib/module/modules/data-sync/utils/healthkit-series.js.map +1 -0
- package/lib/module/modules/data-sync/utils/hourly-series.js +52 -0
- package/lib/module/modules/data-sync/utils/hourly-series.js.map +1 -0
- package/lib/module/modules/data-sync/utils/replaces-saved-observation.js +8 -0
- package/lib/module/modules/data-sync/utils/replaces-saved-observation.js.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/device-model.d.ts +35 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/device-model.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts +18 -1
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/hooks/use-supported-devices.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/bt-device/hooks/use-supported-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/types/device-kind.d.ts +16 -0
- package/lib/typescript/commonjs/src/modules/bt-device/types/device-kind.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/utils/device-query.d.ts +49 -0
- package/lib/typescript/commonjs/src/modules/bt-device/utils/device-query.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/constants/blood-pressure-translated-exception-map.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-feedback.d.ts +21 -0
- package/lib/typescript/commonjs/src/modules/bt-management/constants/measurement-feedback.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts +5 -4
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-devices.d.ts +24 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-bt-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-open-series.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-open-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-queued-results.d.ts +10 -0
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-queued-results.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +5 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +11 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +13 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts +56 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-recorder.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts +36 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/series-slots.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-series.d.ts +26 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/measurement-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts +6 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts +11 -1
- package/lib/typescript/commonjs/src/modules/data-sync/constants.d.ts.map +1 -1
- 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 +3 -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 +2 -1
- 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-data.d.ts +15 -2
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-data.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts +5 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/fhir-systems.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/fhir-systems.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts +3 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-health-record-sync-id.d.ts +9 -6
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-health-record-sync-id.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts +5 -2
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-connect-series.d.ts +9 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-connect-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts +12 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/hourly-series.d.ts +22 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/hourly-series.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/replaces-saved-observation.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/replaces-saved-observation.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/constants/device-model.d.ts +35 -0
- package/lib/typescript/module/src/modules/bt-device/constants/device-model.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts +18 -1
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/hooks/use-supported-devices.d.ts +9 -0
- package/lib/typescript/module/src/modules/bt-device/hooks/use-supported-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/index.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-device/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/types/device-kind.d.ts +16 -0
- package/lib/typescript/module/src/modules/bt-device/types/device-kind.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/utils/device-query.d.ts +49 -0
- package/lib/typescript/module/src/modules/bt-device/utils/device-query.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/constants/blood-pressure-translated-exception-map.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/constants/measurement-feedback.d.ts +21 -0
- package/lib/typescript/module/src/modules/bt-management/constants/measurement-feedback.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts +5 -4
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-devices.d.ts +24 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-bt-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-open-series.d.ts +12 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-open-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-queued-results.d.ts +10 -0
- package/lib/typescript/module/src/modules/bt-management/hooks/use-queued-results.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +5 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts +11 -1
- package/lib/typescript/module/src/modules/bt-management/services/background-sync/background-sync-coordinator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +13 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts +56 -0
- package/lib/typescript/module/src/modules/bt-management/services/series-recorder.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts +36 -0
- package/lib/typescript/module/src/modules/bt-management/services/series-slots.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/types/create-device-params.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/measurement-series.d.ts +26 -0
- package/lib/typescript/module/src/modules/bt-management/types/measurement-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts +6 -1
- package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts +11 -1
- package/lib/typescript/module/src/modules/data-sync/constants.d.ts.map +1 -1
- 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 +3 -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 +2 -1
- 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-data.d.ts +15 -2
- package/lib/typescript/module/src/modules/data-sync/types/health-data.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts +3 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-keys.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts +5 -1
- package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/fhir-systems.d.ts +3 -1
- package/lib/typescript/module/src/modules/data-sync/utils/fhir-systems.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts +3 -1
- package/lib/typescript/module/src/modules/data-sync/utils/generate-observation-entry.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-health-record-sync-id.d.ts +9 -6
- package/lib/typescript/module/src/modules/data-sync/utils/get-health-record-sync-id.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-latest-valid-start-date.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts +2 -2
- package/lib/typescript/module/src/modules/data-sync/utils/get-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts +5 -2
- package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/health-connect-series.d.ts +9 -0
- package/lib/typescript/module/src/modules/data-sync/utils/health-connect-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts +12 -0
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/hourly-series.d.ts +22 -0
- package/lib/typescript/module/src/modules/data-sync/utils/hourly-series.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/replaces-saved-observation.d.ts +7 -0
- package/lib/typescript/module/src/modules/data-sync/utils/replaces-saved-observation.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -9,5 +9,18 @@ const DEFAULT_HEALTH_SYNC_CHUNK_SIZE = 250;
|
|
|
9
9
|
|
|
10
10
|
/** How far back the first import of a type reaches when no watermark exists yet. */
|
|
11
11
|
const DEFAULT_SYNC_LOOKBACK_DAYS = 30;
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* How many already-imported days a daily total or summary is read again for:
|
|
15
|
+
* a wearable that syncs late still changes them. A day it changes later than
|
|
16
|
+
* this keeps the total imported before.
|
|
17
|
+
*/
|
|
18
|
+
const DAILY_REREAD_DAYS = 7;
|
|
19
|
+
|
|
20
|
+
/** A `series` slot: a minute, the finest step both health stores average by. */
|
|
21
|
+
const SERIES_SLOT_MS = 60_000;
|
|
22
|
+
|
|
23
|
+
/** How many already-imported hours a `series` type reads again, for a watch that syncs a little late. */
|
|
24
|
+
const SERIES_REREAD_HOURS = 3;
|
|
25
|
+
export { DAILY_REREAD_DAYS, SERIES_REREAD_HOURS, SERIES_SLOT_MS, DEFAULT_HEALTH_SYNC_CHUNK_SIZE, DEFAULT_SYNC_LOOKBACK_DAYS };
|
|
13
26
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE","DEFAULT_SYNC_LOOKBACK_DAYS"],"sourceRoot":"../../../../src","sources":["modules/data-sync/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,MAAMA,8BAA8B,GAAG,GAAG;;AAE1C;AACA,MAAMC,0BAA0B,GAAG,EAAE;
|
|
1
|
+
{"version":3,"names":["DEFAULT_HEALTH_SYNC_CHUNK_SIZE","DEFAULT_SYNC_LOOKBACK_DAYS","DAILY_REREAD_DAYS","SERIES_SLOT_MS","SERIES_REREAD_HOURS"],"sourceRoot":"../../../../src","sources":["modules/data-sync/constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,MAAMA,8BAA8B,GAAG,GAAG;;AAE1C;AACA,MAAMC,0BAA0B,GAAG,EAAE;;AAErC;AACA;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,CAAC;;AAE3B;AACA,MAAMC,cAAc,GAAG,MAAM;;AAE7B;AACA,MAAMC,mBAAmB,GAAG,CAAC;AAE7B,SACEF,iBAAiB,EACjBE,mBAAmB,EACnBD,cAAc,EACdH,8BAA8B,EAC9BC,0BAA0B","ignoreList":[]}
|
|
@@ -103,7 +103,8 @@ export class BaseHealthSyncService {
|
|
|
103
103
|
const {
|
|
104
104
|
observationBodies,
|
|
105
105
|
observationSyncIds,
|
|
106
|
-
|
|
106
|
+
observationRecordIds,
|
|
107
|
+
deletedRecordIds,
|
|
107
108
|
hasMore: currentHasMore,
|
|
108
109
|
anchors
|
|
109
110
|
} = await this.dataProcessor.getObservationBodiesForType(measurementTypeKey, data, latestValidStartDate);
|
|
@@ -111,8 +112,8 @@ export class BaseHealthSyncService {
|
|
|
111
112
|
if (this.stateManager.shouldStopSync) {
|
|
112
113
|
break;
|
|
113
114
|
}
|
|
114
|
-
const entries = this.dataProcessor.generateObservationEntries(observationBodies, observationSyncIds, getHealthDataMode(measurementTypeKey, data.mode));
|
|
115
|
-
if ((entries.length !== 0 ||
|
|
115
|
+
const entries = this.dataProcessor.generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, getHealthDataMode(measurementTypeKey, data.mode));
|
|
116
|
+
if ((entries.length !== 0 || deletedRecordIds.length !== 0) && !this.stateManager.shouldStopSync) {
|
|
116
117
|
try {
|
|
117
118
|
if (entries.length !== 0) {
|
|
118
119
|
const startedAt = Date.now();
|
|
@@ -133,8 +134,8 @@ export class BaseHealthSyncService {
|
|
|
133
134
|
this.stateManager.addResult(result);
|
|
134
135
|
this.progressManager.incrementSyncedObservations(measurementTypeKey, savedCount, createdCount);
|
|
135
136
|
}
|
|
136
|
-
if (
|
|
137
|
-
await this.storageManager.deleteObservations(
|
|
137
|
+
if (deletedRecordIds.length !== 0) {
|
|
138
|
+
await this.storageManager.deleteObservations(deletedRecordIds, this.patientId);
|
|
138
139
|
}
|
|
139
140
|
this.storageManager.saveAnchors(anchors);
|
|
140
141
|
} catch (error) {
|
|
@@ -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","
|
|
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":[]}
|
|
@@ -5,13 +5,12 @@
|
|
|
5
5
|
import { MeasurementTypeKey } from "@ovok/core";
|
|
6
6
|
import { getHealthDataMode, HealthDataType } from "../../types/health-sync-keys.js";
|
|
7
7
|
import { generateObservationEntry } from "../../utils/generate-observation-entry.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getHealthRecordSourceId, getHealthRecordSyncId } from "../../utils/get-health-record-sync-id.js";
|
|
9
9
|
import { getLatestObservationDatesByCode } from "../../utils/get-latest-observation-dates-by-code.js";
|
|
10
10
|
import { getLatestValidStartDate } from "../../utils/get-latest-valid-start-date.js";
|
|
11
11
|
import { groupSamplesByInterval } from "../../utils/group-samples-by-interval.js";
|
|
12
12
|
import { groupSleepSamples } from "../../utils/group-sleep-samples.js";
|
|
13
13
|
import { getHealthDataCoding } from "../../utils/health-data-catalog.js";
|
|
14
|
-
import { isDailyAggregateMode } from "../../utils/is-daily-aggregate-mode.js";
|
|
15
14
|
export class DataProcessor {
|
|
16
15
|
constructor(client, patientId, provider, chunkSize, storageManager, getTotalCountsFunction, getDataFromProviderFunction, getConverterFunction) {
|
|
17
16
|
this.client = client;
|
|
@@ -90,7 +89,7 @@ export class DataProcessor {
|
|
|
90
89
|
typeIdentifier,
|
|
91
90
|
result: await this.getDataFromProviderFunction({
|
|
92
91
|
typeIdentifier: typeIdentifier,
|
|
93
|
-
startDate:
|
|
92
|
+
startDate: latestValidStartDate?.toISOString(),
|
|
94
93
|
anchor,
|
|
95
94
|
chunkSize: this.chunkSize,
|
|
96
95
|
mode
|
|
@@ -103,10 +102,9 @@ export class DataProcessor {
|
|
|
103
102
|
const allData = results.flatMap(({
|
|
104
103
|
result
|
|
105
104
|
}) => result.data);
|
|
106
|
-
const
|
|
107
|
-
typeIdentifier,
|
|
105
|
+
const deletedRecordIds = results.flatMap(({
|
|
108
106
|
result
|
|
109
|
-
}) =>
|
|
107
|
+
}) => result.deletedRecordIds ?? []);
|
|
110
108
|
const dataGroups = this.provider === "apple-health" && measurementTypeKey === HealthDataType.sleep ? groupSleepSamples(allData) : this.provider === "apple-health" && measurementTypeKey === MeasurementTypeKey.bloodPressure ? groupSamplesByInterval(allData) : allData.map(data => [data]);
|
|
111
109
|
const observationBodies = await Promise.all(dataGroups.map(group => this.getConverterFunction({
|
|
112
110
|
data: group,
|
|
@@ -120,21 +118,26 @@ export class DataProcessor {
|
|
|
120
118
|
typeIdentifierCodeDisplays
|
|
121
119
|
})));
|
|
122
120
|
const observationSyncIds = dataGroups.map(group => getHealthRecordSyncId(group[0], measurementTypeKey));
|
|
121
|
+
|
|
122
|
+
// A group is named after its first record, as its sync id is.
|
|
123
|
+
const observationRecordIds = dataGroups.map(group => getHealthRecordSourceId(group[0]));
|
|
123
124
|
return {
|
|
124
125
|
observationBodies,
|
|
125
126
|
observationSyncIds,
|
|
126
|
-
|
|
127
|
+
observationRecordIds,
|
|
128
|
+
deletedRecordIds,
|
|
127
129
|
hasMore: results.some(({
|
|
128
130
|
result
|
|
129
131
|
}) => result.hasMore ?? ((result.data.length >= this.chunkSize || (result.deletedRecordIds?.length ?? 0) >= this.chunkSize) && Boolean(result.anchor))),
|
|
130
132
|
anchors: newAnchors
|
|
131
133
|
};
|
|
132
134
|
}
|
|
133
|
-
generateObservationEntries(observationBodies, observationSyncIds, mode) {
|
|
135
|
+
generateObservationEntries(observationBodies, observationSyncIds, observationRecordIds, mode) {
|
|
134
136
|
return generateObservationEntry({
|
|
135
137
|
groupedObservationBodies: observationBodies,
|
|
136
138
|
provider: this.provider,
|
|
137
139
|
groupedObservationSyncIds: observationSyncIds,
|
|
140
|
+
groupedRecordIds: observationRecordIds,
|
|
138
141
|
mode,
|
|
139
142
|
patientId: this.patientId
|
|
140
143
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","getHealthDataMode","HealthDataType","generateObservationEntry","
|
|
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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getHealthRecordIdentifier } from "../../utils/get-health-record-sync-id.js";
|
|
4
4
|
import { saveBundleObservations } from "../../utils/save-bundle-observations.js";
|
|
5
5
|
export class StorageManager {
|
|
6
6
|
/**
|
|
@@ -31,12 +31,18 @@ export class StorageManager {
|
|
|
31
31
|
client: this.client
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
|
|
35
|
+
/** Deletes the observations imported from records the provider reports deleted. */
|
|
36
|
+
async deleteObservations(recordIds, patientId) {
|
|
37
|
+
for (const recordId of new Set(recordIds)) {
|
|
38
|
+
const {
|
|
39
|
+
system,
|
|
40
|
+
value
|
|
41
|
+
} = getHealthRecordIdentifier(this.provider, recordId);
|
|
36
42
|
const observations = [];
|
|
37
43
|
for await (const page of this.client.searchResourcePages("Observation", {
|
|
38
44
|
subject: `Patient/${patientId}`,
|
|
39
|
-
identifier: `${
|
|
45
|
+
identifier: `${system}|${value}`
|
|
40
46
|
})) {
|
|
41
47
|
observations.push(...page);
|
|
42
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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,7 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const isAggregatedHealthData = value => {
|
|
4
4
|
const candidate = value;
|
|
5
5
|
return candidate?.kind === "daily-total" || candidate?.kind === "daily-summary";
|
|
6
6
|
};
|
|
7
|
+
|
|
8
|
+
/** One finished hour of a quantity in `series` mode: a value a minute, `null` for a minute without one. */
|
|
9
|
+
|
|
10
|
+
const isSeriesHealthData = value => value?.kind === "series";
|
|
11
|
+
export { isAggregatedHealthData, isSeriesHealthData };
|
|
7
12
|
//# sourceMappingURL=health-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isAggregatedHealthData","value","candidate","kind"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-data.ts"],"mappings":";;AAaA,
|
|
1
|
+
{"version":3,"names":["isAggregatedHealthData","value","candidate","kind","isSeriesHealthData"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-data.ts"],"mappings":";;AAaA,MAAMA,sBAAsB,GAC1BC,KAAc,IACoB;EAClC,MAAMC,SAAS,GAAGD,KAAkD;EAEpE,OACEC,SAAS,EAAEC,IAAI,KAAK,aAAa,IAAID,SAAS,EAAEC,IAAI,KAAK,eAAe;AAE5E,CAAC;;AAED;;AAWA,MAAMC,kBAAkB,GAAIH,KAAc,IACvCA,KAAK,EAA4CE,IAAI,KAAK,QAAQ;AAErE,SAASH,sBAAsB,EAAEI,kBAAkB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","HealthDataType","getHealthDataMode","key","configuredMode","stepCount","distance","activeEnergy","flightsClimbed","exerciseMinutes","heartRate","heartRateSummary","sleep","workout"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-keys.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAO/C;AAAA,IACKC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA,EAAdA,cAAc;
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","HealthDataType","getHealthDataMode","key","configuredMode","stepCount","distance","activeEnergy","flightsClimbed","exerciseMinutes","heartRate","heartRateSummary","sleep","workout"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/types/health-sync-keys.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAO/C;AAAA,IACKC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA,EAAdA,cAAc;AAyBnB,MAAMC,iBAAiB,GAAGA,CACxBC,GAAkB,EAClBC,cAA+B,KACZ;EACnB,IAAIA,cAAc,EAAE;IAClB,OAAOA,cAAc;EACvB;EAEA,QAAQD,GAAG;IACT,KAAKH,kBAAkB,CAACK,SAAS;IACjC,KAAKJ,cAAc,CAACK,QAAQ;IAC5B,KAAKL,cAAc,CAACM,YAAY;IAChC,KAAKN,cAAc,CAACO,cAAc;IAClC,KAAKP,cAAc,CAACQ,eAAe;MACjC,OAAO,aAAa;IACtB,KAAKT,kBAAkB,CAACU,SAAS;IACjC,KAAKT,cAAc,CAACU,gBAAgB;MAClC,OAAO,eAAe;IACxB,KAAKV,cAAc,CAACW,KAAK;IACzB,KAAKX,cAAc,CAACY,OAAO;MACzB,OAAO,SAAS;IAClB;MACE,OAAO,OAAO;EAClB;AACF,CAAC;AAED,SACEZ,cAAc,EACdC,iBAAiB","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
/* eslint-disable max-lines */
|
|
4
4
|
|
|
5
|
-
import { isAggregatedHealthData } from "../types/health-data.js";
|
|
5
|
+
import { isAggregatedHealthData, isSeriesHealthData } from "../types/health-data.js";
|
|
6
6
|
import { LOINC_SYSTEM, UCUM_SYSTEM } from "./fhir-systems.js";
|
|
7
7
|
import { getHealthObservationDevice } from "./health-observation-device.js";
|
|
8
8
|
const HEALTH_RECORD_DATA_EXTENSION = "https://api.ovok.com/fhir/StructureDefinition/health-record-data";
|
|
@@ -61,10 +61,13 @@ const convertGenericHealthDataToObservation = async ({
|
|
|
61
61
|
...(device ? {
|
|
62
62
|
device
|
|
63
63
|
} : {}),
|
|
64
|
-
extension
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
// A series' values are its sampled data; copying them into the record extension would store them twice.
|
|
65
|
+
...(isSeriesHealthData(first) ? {} : {
|
|
66
|
+
extension: [{
|
|
67
|
+
url: HEALTH_RECORD_DATA_EXTENSION,
|
|
68
|
+
valueString: JSON.stringify(data.map(toPortableRecordData))
|
|
69
|
+
}]
|
|
70
|
+
}),
|
|
68
71
|
...(interval ? {
|
|
69
72
|
effectivePeriod: {
|
|
70
73
|
start: interval.start.toISOString(),
|
|
@@ -105,6 +108,16 @@ const toPortableRecordData = value => {
|
|
|
105
108
|
};
|
|
106
109
|
const getMeasurement = (value, mode, interval, typeIdentifier) => {
|
|
107
110
|
const raw = value;
|
|
111
|
+
if (isSeriesHealthData(value)) {
|
|
112
|
+
return {
|
|
113
|
+
valueSampledData: {
|
|
114
|
+
origin: quantity(0, value.unit, typeIdentifier),
|
|
115
|
+
period: value.periodMs,
|
|
116
|
+
dimensions: 1,
|
|
117
|
+
data: value.values.map(slot => slot === null ? "E" : String(Number(slot.toFixed(2)))).join(" ")
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
108
121
|
if (isAggregatedHealthData(value)) {
|
|
109
122
|
const number = value.kind === "daily-summary" ? value.average : value.value;
|
|
110
123
|
return number === undefined ? {
|
|
@@ -292,5 +305,5 @@ const getStableObservationId = ({
|
|
|
292
305
|
const value = measurement.valueQuantity?.value ?? measurement.valueString ?? "empty";
|
|
293
306
|
return `health-${[typeIdentifier, code, time, value].join("-").replace(/[^a-zA-Z0-9.-]/g, "-").slice(0, 64)}`;
|
|
294
307
|
};
|
|
295
|
-
export { convertGenericHealthDataToObservation, getUcumCode };
|
|
308
|
+
export { convertGenericHealthDataToObservation, extractValue, getUcumCode };
|
|
296
309
|
//# sourceMappingURL=convert-generic-health-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isAggregatedHealthData","LOINC_SYSTEM","UCUM_SYSTEM","getHealthObservationDevice","HEALTH_RECORD_DATA_EXTENSION","HEALTHKIT_BODY_MASS_INDEX","convertGenericHealthDataToObservation","data","patientId","mode","typeIdentifier","configuredTypeIdentifier","typeIdentifierCodes","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","first","value","String","quantityType","categoryType","recordType","configuredCode","code","configuredSystem","system","isLoincCode","undefined","interval","getInterval","measurement","getMeasurement","metadata","getMetadata","device","observationDate","start","getDate","observation","resourceType","id","getStableObservationId","date","status","subject","reference","coding","display","extension","url","valueString","JSON","stringify","map","toPortableRecordData","effectivePeriod","toISOString","end","effectiveDateTime","component","minimum","unit","maximum","stageComponents","getSleepStageComponents","length","test","OMITTED_RECORD_FIELDS","Set","Date","Array","isArray","Object","fromEntries","entries","filter","key","has","child","raw","number","kind","average","valueQuantity","quantity","getTime","extracted","extractValue","candidates","containerKey","valueKey","fallbackUnit","container","normalizeUnit","scalarCandidates","intervals","item","startValue","startDate","startTime","time","endDate","endTime","endValue","Number","isNaN","Boolean","Math","min","max","parsed","sourceRevision","source","manufacturer","dataOrigin","model","sourceApp","name","recordingMethod","flatMap","stages","duration","isFinite","stage","label","text","getUcumCode","includes","normalized","kilometers","meters","miles","count","steps","kilograms","grams","milligrams","kilocalories","calories","minutes","seconds","beatsPerMinute","bpm","mmHg","degC","UCUM_CODES","join","replace","slice"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-generic-health-data.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["isAggregatedHealthData","isSeriesHealthData","LOINC_SYSTEM","UCUM_SYSTEM","getHealthObservationDevice","HEALTH_RECORD_DATA_EXTENSION","HEALTHKIT_BODY_MASS_INDEX","convertGenericHealthDataToObservation","data","patientId","mode","typeIdentifier","configuredTypeIdentifier","typeIdentifierCodes","typeIdentifierCodeSystems","typeIdentifierCodeDisplays","first","value","String","quantityType","categoryType","recordType","configuredCode","code","configuredSystem","system","isLoincCode","undefined","interval","getInterval","measurement","getMeasurement","metadata","getMetadata","device","observationDate","start","getDate","observation","resourceType","id","getStableObservationId","date","status","subject","reference","coding","display","extension","url","valueString","JSON","stringify","map","toPortableRecordData","effectivePeriod","toISOString","end","effectiveDateTime","component","minimum","unit","maximum","stageComponents","getSleepStageComponents","length","test","OMITTED_RECORD_FIELDS","Set","Date","Array","isArray","Object","fromEntries","entries","filter","key","has","child","raw","valueSampledData","origin","quantity","period","periodMs","dimensions","values","slot","Number","toFixed","join","number","kind","average","valueQuantity","getTime","extracted","extractValue","candidates","containerKey","valueKey","fallbackUnit","container","normalizeUnit","scalarCandidates","intervals","item","startValue","startDate","startTime","time","endDate","endTime","endValue","isNaN","Boolean","Math","min","max","parsed","sourceRevision","source","manufacturer","dataOrigin","model","sourceApp","name","recordingMethod","flatMap","stages","duration","isFinite","stage","label","text","getUcumCode","includes","normalized","kilometers","meters","miles","count","steps","kilograms","grams","milligrams","kilocalories","calories","minutes","seconds","beatsPerMinute","bpm","mmHg","degC","UCUM_CODES","replace","slice"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/convert-generic-health-data.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,5 +4,8 @@ const LOINC_SYSTEM = "http://loinc.org";
|
|
|
4
4
|
const UCUM_SYSTEM = "http://unitsofmeasure.org";
|
|
5
5
|
const OBSERVATION_SYNC_PROVIDER_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/observation-sync-provider";
|
|
6
6
|
const OBSERVATION_SYNC_ID_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/observation-sync-id";
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
/** The source record an imported observation came from, which is all a deletion reports. */
|
|
9
|
+
const OBSERVATION_SYNC_RECORD_SYSTEM = "https://api.ovok.com/fhir/StructureDefinition/observation-sync-record";
|
|
10
|
+
export { LOINC_SYSTEM, OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM, OBSERVATION_SYNC_RECORD_SYSTEM, UCUM_SYSTEM };
|
|
8
11
|
//# sourceMappingURL=fhir-systems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LOINC_SYSTEM","UCUM_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","OBSERVATION_SYNC_ID_SYSTEM"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/fhir-systems.ts"],"mappings":";;AAAA,MAAMA,YAAY,GAAG,kBAAkB;AACvC,MAAMC,WAAW,GAAG,2BAA2B;AAE/C,MAAMC,gCAAgC,GACpC,yEAAyE;AAE3E,MAAMC,0BAA0B,GAC9B,mEAAmE;
|
|
1
|
+
{"version":3,"names":["LOINC_SYSTEM","UCUM_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_RECORD_SYSTEM"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/fhir-systems.ts"],"mappings":";;AAAA,MAAMA,YAAY,GAAG,kBAAkB;AACvC,MAAMC,WAAW,GAAG,2BAA2B;AAE/C,MAAMC,gCAAgC,GACpC,yEAAyE;AAE3E,MAAMC,0BAA0B,GAC9B,mEAAmE;;AAErE;AACA,MAAMC,8BAA8B,GAClC,uEAAuE;AAEzE,SACEJ,YAAY,EACZG,0BAA0B,EAC1BD,gCAAgC,EAChCE,8BAA8B,EAC9BH,WAAW","ignoreList":[]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { OBSERVATION_SYNC_ID_SYSTEM, OBSERVATION_SYNC_PROVIDER_SYSTEM } from "./fhir-systems.js";
|
|
4
|
+
import { getHealthRecordIdentifier } from "./get-health-record-sync-id.js";
|
|
4
5
|
import { isDailyAggregateMode } from "./is-daily-aggregate-mode.js";
|
|
6
|
+
import { replacesSavedObservation } from "./replaces-saved-observation.js";
|
|
5
7
|
const getObservationCode = observation => observation.code?.coding?.map(coding => `${coding.system ?? ""}|${coding.code ?? ""}`).join("~") || observation.code?.text || "unknown";
|
|
6
8
|
const getObservationTime = observation => {
|
|
7
9
|
if (observation.effectivePeriod) {
|
|
@@ -33,11 +35,13 @@ const generateObservationEntry = ({
|
|
|
33
35
|
groupedObservationBodies,
|
|
34
36
|
provider,
|
|
35
37
|
groupedObservationSyncIds,
|
|
38
|
+
groupedRecordIds,
|
|
36
39
|
patientId,
|
|
37
40
|
mode
|
|
38
41
|
}) => {
|
|
39
42
|
return groupedObservationBodies.map((observationBodies, groupIndex) => {
|
|
40
43
|
const fullUrls = observationBodies.map(() => `urn:uuid:${createBundleUuid()}`);
|
|
44
|
+
const recordId = groupedRecordIds?.[groupIndex];
|
|
41
45
|
return observationBodies.map((observationBody, bodyIndex) => {
|
|
42
46
|
const syncIdentifier = getStableObservationId({
|
|
43
47
|
observation: observationBody,
|
|
@@ -48,6 +52,7 @@ const generateObservationEntry = ({
|
|
|
48
52
|
const fullUrl = fullUrls[bodyIndex];
|
|
49
53
|
const searchParams = new URLSearchParams();
|
|
50
54
|
const isDailyAggregate = isDailyAggregateMode(mode);
|
|
55
|
+
const replaces = replacesSavedObservation(mode);
|
|
51
56
|
const legacySyncIdentifier = isDailyAggregate && observationBody.id ? `${provider}:${observationBody.id}` : undefined;
|
|
52
57
|
const syncIdentifiers = Array.from(new Set([syncIdentifier, legacySyncIdentifier].filter(Boolean)));
|
|
53
58
|
searchParams.set("identifier", syncIdentifiers.map(identifier => `${OBSERVATION_SYNC_ID_SYSTEM}|${identifier}`).join(","));
|
|
@@ -58,15 +63,15 @@ const generateObservationEntry = ({
|
|
|
58
63
|
const observationResource = {
|
|
59
64
|
...observationBody
|
|
60
65
|
};
|
|
61
|
-
if (
|
|
66
|
+
if (replaces) {
|
|
62
67
|
delete observationResource.id;
|
|
63
68
|
}
|
|
64
69
|
return {
|
|
65
70
|
fullUrl,
|
|
66
71
|
request: {
|
|
67
|
-
method:
|
|
68
|
-
url:
|
|
69
|
-
...(
|
|
72
|
+
method: replaces ? "PUT" : "POST",
|
|
73
|
+
url: replaces ? `Observation?${search}` : "Observation",
|
|
74
|
+
...(replaces ? {} : {
|
|
70
75
|
ifNoneExist: search
|
|
71
76
|
})
|
|
72
77
|
},
|
|
@@ -78,7 +83,7 @@ const generateObservationEntry = ({
|
|
|
78
83
|
}, {
|
|
79
84
|
system: OBSERVATION_SYNC_ID_SYSTEM,
|
|
80
85
|
value: syncIdentifier
|
|
81
|
-
}],
|
|
86
|
+
}, ...(recordId ? [getHealthRecordIdentifier(provider, recordId)] : [])],
|
|
82
87
|
device: {
|
|
83
88
|
...(observationBody.device ?? {}),
|
|
84
89
|
identifier: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","isDailyAggregateMode","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","createBundleUuid","cryptoApi","globalThis","crypto","randomUuid","randomUUID","undefined","call","bytes","Array","from","length","Math","floor","random","hex","byte","toString","padStart","generateObservationEntry","groupedObservationBodies","groupedObservationSyncIds","patientId","mode","observationBodies","groupIndex","fullUrls","observationBody","syncIdentifier","fullUrl","searchParams","URLSearchParams","isDailyAggregate","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","search","observationResource","request","method","url","ifNoneExist","resource","value","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":";;AAKA,SAASA,0BAA0B,EAAEC,gCAAgC,QAAQ,mBAAgB;AAC7F,SAASC,oBAAoB,QAAQ,8BAA2B;
|
|
1
|
+
{"version":3,"names":["OBSERVATION_SYNC_ID_SYSTEM","OBSERVATION_SYNC_PROVIDER_SYSTEM","getHealthRecordIdentifier","isDailyAggregateMode","replacesSavedObservation","getObservationCode","observation","code","coding","map","system","join","text","getObservationTime","effectivePeriod","start","end","effectiveDateTime","slice","getStableObservationId","provider","sourceId","bodyIndex","id","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","replaces","legacySyncIdentifier","syncIdentifiers","Set","filter","Boolean","set","identifier","search","observationResource","request","method","url","ifNoneExist","resource","value","device","hasMember","reference","flat"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/generate-observation-entry.ts"],"mappings":";;AAKA,SAASA,0BAA0B,EAAEC,gCAAgC,QAAQ,mBAAgB;AAC7F,SAASC,yBAAyB,QAAQ,gCAA6B;AACvE,SAASC,oBAAoB,QAAQ,8BAA2B;AAChE,SAASC,wBAAwB,QAAQ,iCAA8B;AAavE,MAAMC,kBAAkB,GAAIC,WAAwB,IAClDA,WAAW,CAACC,IAAI,EAAEC,MAAM,EACpBC,GAAG,CAAED,MAAM,IAAK,GAAGA,MAAM,CAACE,MAAM,IAAI,EAAE,IAAIF,MAAM,CAACD,IAAI,IAAI,EAAE,EAAE,CAAC,CAC/DI,IAAI,CAAC,GAAG,CAAC,IACZL,WAAW,CAACC,IAAI,EAAEK,IAAI,IACtB,SAAS;AAEX,MAAMC,kBAAkB,GAAIP,WAAwB,IAAa;EAC/D,IAAIA,WAAW,CAACQ,eAAe,EAAE;IAC/B,OAAO,GAAGR,WAAW,CAACQ,eAAe,CAACC,KAAK,IAAI,EAAE,IAAIT,WAAW,CAACQ,eAAe,CAACE,GAAG,IAAI,EAAE,EAAE;EAC9F;EAEA,OAAOV,WAAW,CAACW,iBAAiB,EAAEC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS;AACjE,CAAC;AAED,MAAMC,sBAAsB,GAAGA,CAAC;EAC9Bb,WAAW;EACXc,QAAQ;EACRC,QAAQ;EACRC;AAMF,CAAC,KACChB,WAAW,CAACiB,EAAE,IAAI,CAACF,QAAQ,GACvB,GAAGD,QAAQ,IAAId,WAAW,CAACiB,EAAE,EAAE,GAC/B,CACEH,QAAQ,EACRC,QAAQ,IAAIR,kBAAkB,CAACP,WAAW,CAAC,EAC3CD,kBAAkB,CAACC,WAAW,CAAC,EAC/BgB,SAAS,CACV,CAACX,IAAI,CAAC,GAAG,CAAC;AAEjB,MAAMa,gBAAgB,GAAGA,CAAA,KAAc;EACrC,MAAMC,SAAS,GAAIC,UAAU,CAA0BC,MAAM;EAE7D,MAAMC,UAAU,GACd,OAAOH,SAAS,KAAK,QAAQ,IAC7BA,SAAS,KAAK,IAAI,IAClB,YAAY,IAAIA,SAAS,IACzB,OAAQA,SAAS,CAA8BI,UAAU,KAAK,UAAU,GACnEJ,SAAS,CAAkCI,UAAU,GACtDC,SAAS;EAEf,IAAIF,UAAU,EAAE;IACd,OAAOA,UAAU,CAACG,IAAI,CAACN,SAAS,CAAC;EACnC;EAEA,MAAMO,KAAK,GAAGC,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAE;EAAG,CAAC,EAAE,MACvCC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,GAAG,CAChC,CAAC;EAEDN,KAAK,CAAC,CAAC,CAAC,GAAIA,KAAK,CAAC,CAAC,CAAC,GAAI,IAAI,GAAI,IAAI;EACpCA,KAAK,CAAC,CAAC,CAAC,GAAIA,KAAK,CAAC,CAAC,CAAC,GAAI,IAAI,GAAI,IAAI;EAEpC,MAAMO,GAAG,GAAGP,KAAK,CAACvB,GAAG,CAAE+B,IAAI,IAAKA,IAAI,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC/B,IAAI,CAAC,EAAE,CAAC;EAE5E,OAAO,GAAG4B,GAAG,CAACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAIqB,GAAG,CAACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAIqB,GAAG,CAACrB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIqB,GAAG,CAACrB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAIqB,GAAG,CAACrB,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5G,CAAC;AAED,MAAMyB,wBAAwB,GAAGA,CAAC;EAChCC,wBAAwB;EACxBxB,QAAQ;EACRyB,yBAAyB;EACzBC,gBAAgB;EAChBC,SAAS;EACTC;AAC6B,CAAC,KAAiC;EAC/D,OAAOJ,wBAAwB,CAC5BnC,GAAG,CAAC,CAACwC,iBAAiB,EAAEC,UAAU,KAAK;IACtC,MAAMC,QAAQ,GAAGF,iBAAiB,CAACxC,GAAG,CACpC,MAAM,YAAYe,gBAAgB,CAAC,CAAC,EACtC,CAAC;IAED,MAAM4B,QAAQ,GAAGN,gBAAgB,GAAGI,UAAU,CAAC;IAE/C,OAAOD,iBAAiB,CAACxC,GAAG,CAAC,CAAC4C,eAAe,EAAE/B,SAAS,KAAK;MAC3D,MAAMgC,cAAc,GAAGnC,sBAAsB,CAAC;QAC5Cb,WAAW,EAAE+C,eAAe;QAC5BjC,QAAQ;QACRC,QAAQ,EAAEwB,yBAAyB,GAAGK,UAAU,CAAC;QACjD5B;MACF,CAAC,CAAC;MAEF,MAAMiC,OAAO,GAAGJ,QAAQ,CAAC7B,SAAS,CAAE;MAEpC,MAAMkC,YAAY,GAAG,IAAIC,eAAe,CAAC,CAAC;MAE1C,MAAMC,gBAAgB,GAAGvD,oBAAoB,CAAC6C,IAAI,CAAC;MACnD,MAAMW,QAAQ,GAAGvD,wBAAwB,CAAC4C,IAAI,CAAC;MAE/C,MAAMY,oBAAoB,GACxBF,gBAAgB,IAAIL,eAAe,CAAC9B,EAAE,GAClC,GAAGH,QAAQ,IAAIiC,eAAe,CAAC9B,EAAE,EAAE,GACnCO,SAAS;MAEf,MAAM+B,eAAe,GAAG5B,KAAK,CAACC,IAAI,CAChC,IAAI4B,GAAG,CAAC,CAACR,cAAc,EAAEM,oBAAoB,CAAC,CAACG,MAAM,CAACC,OAAO,CAAC,CAChE,CAAC;MAEDR,YAAY,CAACS,GAAG,CACd,YAAY,EACZJ,eAAe,CACZpD,GAAG,CAAEyD,UAAU,IAAK,GAAGlE,0BAA0B,IAAIkE,UAAU,EAAE,CAAC,CAClEvD,IAAI,CAAC,GAAG,CACb,CAAC;MAED,IAAIoC,SAAS,EAAE;QACbS,YAAY,CAACS,GAAG,CAAC,SAAS,EAAE,WAAWlB,SAAS,EAAE,CAAC;MACrD;MAEA,MAAMoB,MAAM,GAAGX,YAAY,CAACf,QAAQ,CAAC,CAAC;MAEtC,MAAM2B,mBAAmB,GAAG;QAAE,GAAGf;MAAgB,CAAC;MAElD,IAAIM,QAAQ,EAAE;QACZ,OAAOS,mBAAmB,CAAC7C,EAAE;MAC/B;MAEA,OAAO;QACLgC,OAAO;QACPc,OAAO,EAAE;UACPC,MAAM,EAAEX,QAAQ,GAAI,KAAK,GAAc,MAAgB;UACvDY,GAAG,EAAEZ,QAAQ,GAAG,eAAeQ,MAAM,EAAE,GAAG,aAAa;UACvD,IAAIR,QAAQ,GAAG,CAAC,CAAC,GAAG;YAAEa,WAAW,EAAEL;UAAO,CAAC;QAC7C,CAAC;QACDM,QAAQ,EAAE;UACR,GAAGL,mBAAmB;UACtBF,UAAU,EAAE,CACV,IAAIb,eAAe,CAACa,UAAU,IAAI,EAAE,CAAC,EACrC;YACExD,MAAM,EAAET,gCAAgC;YACxCyE,KAAK,EAAEtD;UACT,CAAC,EACD;YACEV,MAAM,EAAEV,0BAA0B;YAClC0E,KAAK,EAAEpB;UACT,CAAC,EACD,IAAIF,QAAQ,GAAG,CAAClD,yBAAyB,CAACkB,QAAQ,EAAEgC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CACrE;UACDuB,MAAM,EAAE;YACN,IAAItB,eAAe,CAACsB,MAAM,IAAI,CAAC,CAAC,CAAC;YACjCT,UAAU,EAAE;cACVxD,MAAM,EAAET,gCAAgC;cACxCyE,KAAK,EAAEtD;YACT;UACF,CAAC;UACDwD,SAAS,EACPtD,SAAS,KAAK,CAAC,GACX,EAAE,GACF,CACE;YACEuD,SAAS,EAAE1B,QAAQ,CAAC,CAAC;UACvB,CAAC;QAEX;MACF,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC,CACD2B,IAAI,CAAC,CAAC;AACX,CAAC;AAED,SAASnC,wBAAwB,EAAExB,sBAAsB","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { OBSERVATION_SYNC_RECORD_SYSTEM } from "./fhir-systems.js";
|
|
4
4
|
const asText = value => {
|
|
5
5
|
if (value instanceof Date) {
|
|
6
6
|
return value.toISOString();
|
|
@@ -8,6 +8,12 @@ const asText = value => {
|
|
|
8
8
|
return typeof value === "string" || typeof value === "number" ? String(value) : undefined;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
+
/** The record's own id: `uuid` in Apple Health, `metadata.id` in Health Connect. */
|
|
12
|
+
const getHealthRecordSourceId = record => {
|
|
13
|
+
const healthRecord = record;
|
|
14
|
+
return asText(healthRecord.uuid ?? healthRecord.metadata?.id);
|
|
15
|
+
};
|
|
16
|
+
|
|
11
17
|
/**
|
|
12
18
|
* Builds an import identity from the source record's type and interval.
|
|
13
19
|
* Values are deliberately excluded so an updated daily total replaces the
|
|
@@ -16,7 +22,7 @@ const asText = value => {
|
|
|
16
22
|
const getHealthRecordSyncId = (record, measurementTypeKey) => {
|
|
17
23
|
const healthRecord = record;
|
|
18
24
|
const type = asText(healthRecord.quantityType ?? healthRecord.categoryType ?? healthRecord.correlationType ?? healthRecord.recordType) ?? measurementTypeKey;
|
|
19
|
-
const sourceId =
|
|
25
|
+
const sourceId = getHealthRecordSourceId(record);
|
|
20
26
|
if (sourceId) {
|
|
21
27
|
return `${type}:${sourceId}`;
|
|
22
28
|
}
|
|
@@ -33,14 +39,13 @@ const getHealthRecordSyncId = (record, measurementTypeKey) => {
|
|
|
33
39
|
};
|
|
34
40
|
|
|
35
41
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* have no discriminator on the sample object.
|
|
42
|
+
* The identifier of every observation imported from a source record. A deletion
|
|
43
|
+
* reports only the record's id, so the import marks its observations with this
|
|
44
|
+
* and the deletion looks them up by it.
|
|
40
45
|
*/
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
};
|
|
45
|
-
export {
|
|
46
|
+
const getHealthRecordIdentifier = (provider, recordId) => ({
|
|
47
|
+
system: OBSERVATION_SYNC_RECORD_SYSTEM,
|
|
48
|
+
value: `${provider}:${recordId}`
|
|
49
|
+
});
|
|
50
|
+
export { getHealthRecordIdentifier, getHealthRecordSourceId, getHealthRecordSyncId };
|
|
46
51
|
//# sourceMappingURL=get-health-record-sync-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["OBSERVATION_SYNC_RECORD_SYSTEM","asText","value","Date","toISOString","String","undefined","getHealthRecordSourceId","record","healthRecord","uuid","metadata","id","getHealthRecordSyncId","measurementTypeKey","type","quantityType","categoryType","correlationType","recordType","sourceId","start","startDate","startTime","end","endDate","endTime","time","getHealthRecordIdentifier","provider","recordId","system"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/get-health-record-sync-id.ts"],"mappings":";;AAIA,SAASA,8BAA8B,QAAQ,mBAAgB;AAgB/D,MAAMC,MAAM,GAAIC,KAAc,IAAyB;EACrD,IAAIA,KAAK,YAAYC,IAAI,EAAE;IACzB,OAAOD,KAAK,CAACE,WAAW,CAAC,CAAC;EAC5B;EAEA,OAAO,OAAOF,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,GACzDG,MAAM,CAACH,KAAK,CAAC,GACbI,SAAS;AACf,CAAC;;AAED;AACA,MAAMC,uBAAuB,GAAIC,MAAe,IAAyB;EACvE,MAAMC,YAAY,GAAGD,MAA0B;EAE/C,OAAOP,MAAM,CAACQ,YAAY,CAACC,IAAI,IAAID,YAAY,CAACE,QAAQ,EAAEC,EAAE,CAAC;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,qBAAqB,GAAGA,CAC5BL,MAAe,EACfM,kBAA0B,KACH;EACvB,MAAML,YAAY,GAAGD,MAA0B;EAE/C,MAAMO,IAAI,GACRd,MAAM,CACJQ,YAAY,CAACO,YAAY,IACvBP,YAAY,CAACQ,YAAY,IACzBR,YAAY,CAACS,eAAe,IAC5BT,YAAY,CAACU,UACjB,CAAC,IAAIL,kBAAkB;EAEzB,MAAMM,QAAQ,GAAGb,uBAAuB,CAACC,MAAM,CAAC;EAEhD,IAAIY,QAAQ,EAAE;IACZ,OAAO,GAAGL,IAAI,IAAIK,QAAQ,EAAE;EAC9B;EAEA,MAAMC,KAAK,GAAGpB,MAAM,CAACQ,YAAY,CAACa,SAAS,IAAIb,YAAY,CAACc,SAAS,CAAC;EACtE,MAAMC,GAAG,GAAGvB,MAAM,CAACQ,YAAY,CAACgB,OAAO,IAAIhB,YAAY,CAACiB,OAAO,CAAC;EAEhE,IAAIL,KAAK,IAAIG,GAAG,EAAE;IAChB,OAAO,GAAGT,IAAI,IAAIM,KAAK,IAAIG,GAAG,IAAIA,GAAG,IAAIH,KAAK,EAAE;EAClD;EAEA,MAAMM,IAAI,GAAG1B,MAAM,CAACQ,YAAY,CAACkB,IAAI,CAAC;EAEtC,IAAIA,IAAI,EAAE;IACR,OAAO,GAAGZ,IAAI,IAAIY,IAAI,EAAE;EAC1B;EAEA,OAAOrB,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMsB,yBAAyB,GAAGA,CAChCC,QAAwB,EACxBC,QAAgB,MACA;EAChBC,MAAM,EAAE/B,8BAA8B;EACtCE,KAAK,EAAE,GAAG2B,QAAQ,IAAIC,QAAQ;AAChC,CAAC,CAAC;AAEF,SACEF,yBAAyB,EACzBrB,uBAAuB,EACvBM,qBAAqB","ignoreList":[]}
|