@ovok/native 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/modules/data-sync/index.js +15 -0
- package/lib/commonjs/modules/data-sync/index.js.map +1 -1
- package/lib/commonjs/modules/data-sync/services/base-health-sync-service.js +25 -19
- 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 +73 -17
- 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 +14 -0
- package/lib/commonjs/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js +45 -7
- package/lib/commonjs/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js +15 -2
- package/lib/commonjs/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-records-from-health-connect.js +103 -8
- 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 +66 -23
- package/lib/commonjs/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-total-records-count.js +4 -1
- package/lib/commonjs/modules/data-sync/utils/get-total-records-count.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/get-total-samples-count.js +3 -3
- package/lib/commonjs/modules/data-sync/utils/get-total-samples-count.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/health-data-catalog.js +364 -0
- package/lib/commonjs/modules/data-sync/utils/health-data-catalog.js.map +1 -0
- package/lib/commonjs/modules/data-sync/utils/health-units.js +13 -11
- package/lib/commonjs/modules/data-sync/utils/health-units.js.map +1 -1
- package/lib/commonjs/modules/data-sync/utils/healthkit-data-types.js +34 -0
- package/lib/commonjs/modules/data-sync/utils/healthkit-data-types.js.map +1 -0
- package/lib/module/modules/data-sync/index.js +1 -0
- package/lib/module/modules/data-sync/index.js.map +1 -1
- package/lib/module/modules/data-sync/services/base-health-sync-service.js +25 -19
- 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 +74 -18
- 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 +14 -0
- package/lib/module/modules/data-sync/services/managers/storage-manager.js.map +1 -1
- package/lib/module/modules/data-sync/utils/convert-generic-health-data.js +45 -7
- package/lib/module/modules/data-sync/utils/convert-generic-health-data.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js +15 -2
- package/lib/module/modules/data-sync/utils/get-health-record-sync-id.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-records-from-health-connect.js +103 -8
- 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 +66 -22
- package/lib/module/modules/data-sync/utils/get-samples-from-health.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-total-records-count.js +4 -1
- package/lib/module/modules/data-sync/utils/get-total-records-count.js.map +1 -1
- package/lib/module/modules/data-sync/utils/get-total-samples-count.js +2 -2
- package/lib/module/modules/data-sync/utils/get-total-samples-count.js.map +1 -1
- package/lib/module/modules/data-sync/utils/health-data-catalog.js +360 -0
- package/lib/module/modules/data-sync/utils/health-data-catalog.js.map +1 -0
- package/lib/module/modules/data-sync/utils/health-units.js +13 -11
- package/lib/module/modules/data-sync/utils/health-units.js.map +1 -1
- package/lib/module/modules/data-sync/utils/healthkit-data-types.js +26 -0
- package/lib/module/modules/data-sync/utils/healthkit-data-types.js.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/index.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/index.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 +2 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts +2 -0
- 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/convert-data-props.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/data-sync/types/convert-data-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/data-from-provider-result.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/data-sync/types/data-from-provider-result.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts +6 -1
- package/lib/typescript/commonjs/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/convert-generic-health-data.d.ts +1 -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/get-health-record-sync-id.d.ts +9 -1
- 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-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-samples-from-health.d.ts +49 -4
- 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/get-total-records-count.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/get-total-samples-count.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-data-catalog.d.ts +30 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-data-catalog.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-units.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/health-units.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-data-types.d.ts +11 -0
- package/lib/typescript/commonjs/src/modules/data-sync/utils/healthkit-data-types.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/index.d.ts +1 -0
- package/lib/typescript/module/src/modules/data-sync/index.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 +2 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/services/managers/storage-manager.d.ts +2 -0
- 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/convert-data-props.d.ts +2 -0
- package/lib/typescript/module/src/modules/data-sync/types/convert-data-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/data-from-provider-result.d.ts +4 -0
- package/lib/typescript/module/src/modules/data-sync/types/data-from-provider-result.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts +6 -1
- package/lib/typescript/module/src/modules/data-sync/types/health-sync-props.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/convert-generic-health-data.d.ts +1 -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/get-health-record-sync-id.d.ts +9 -1
- 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-records-from-health-connect.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-samples-from-health.d.ts +49 -4
- 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/get-total-records-count.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/get-total-samples-count.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/health-data-catalog.d.ts +30 -0
- package/lib/typescript/module/src/modules/data-sync/utils/health-data-catalog.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/data-sync/utils/health-units.d.ts +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/health-units.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-data-types.d.ts +11 -0
- package/lib/typescript/module/src/modules/data-sync/utils/healthkit-data-types.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable max-lines */
|
|
4
|
+
|
|
5
|
+
import { healthUnitFor } from "./health-units.js";
|
|
6
|
+
const HEALTH_CONNECT_PERMISSION_PREFIX = "android.permission.health.READ_";
|
|
7
|
+
const HEALTH_CONNECT_CODE_SYSTEM = "urn:ovok:health-connect:record-type";
|
|
8
|
+
const HEALTHKIT_CODE_SYSTEM = "urn:ovok:healthkit:sample-type";
|
|
9
|
+
const APPLE_HEALTH_IDENTIFIERS = {
|
|
10
|
+
height: "HKQuantityTypeIdentifierHeight",
|
|
11
|
+
bodyMass: "HKQuantityTypeIdentifierBodyMass",
|
|
12
|
+
bodyTemperature: "HKQuantityTypeIdentifierBodyTemperature",
|
|
13
|
+
systolicBloodPressure: "HKQuantityTypeIdentifierBloodPressureSystolic",
|
|
14
|
+
diastolicBloodPressure: "HKQuantityTypeIdentifierBloodPressureDiastolic",
|
|
15
|
+
heartRate: "HKQuantityTypeIdentifierHeartRate",
|
|
16
|
+
restingHeartRate: "HKQuantityTypeIdentifierRestingHeartRate",
|
|
17
|
+
heartRateVariabilitySDNN: "HKQuantityTypeIdentifierHeartRateVariabilitySDNN",
|
|
18
|
+
respiratoryRate: "HKQuantityTypeIdentifierRespiratoryRate",
|
|
19
|
+
stepCount: "HKQuantityTypeIdentifierStepCount"
|
|
20
|
+
};
|
|
21
|
+
const appleLoincMappings = {
|
|
22
|
+
[APPLE_HEALTH_IDENTIFIERS.height]: {
|
|
23
|
+
code: "8302-2",
|
|
24
|
+
display: "Body height",
|
|
25
|
+
sourceUrl: "https://loinc.org/8302-2",
|
|
26
|
+
modes: ["point"]
|
|
27
|
+
},
|
|
28
|
+
[APPLE_HEALTH_IDENTIFIERS.bodyMass]: {
|
|
29
|
+
code: "29463-7",
|
|
30
|
+
display: "Body weight",
|
|
31
|
+
sourceUrl: "https://loinc.org/29463-7",
|
|
32
|
+
modes: ["point"]
|
|
33
|
+
},
|
|
34
|
+
[APPLE_HEALTH_IDENTIFIERS.bodyTemperature]: {
|
|
35
|
+
code: "8310-5",
|
|
36
|
+
display: "Body temperature",
|
|
37
|
+
sourceUrl: "https://loinc.org/8310-5",
|
|
38
|
+
modes: ["point"]
|
|
39
|
+
},
|
|
40
|
+
[APPLE_HEALTH_IDENTIFIERS.systolicBloodPressure]: {
|
|
41
|
+
code: "8480-6",
|
|
42
|
+
display: "Systolic blood pressure",
|
|
43
|
+
sourceUrl: "https://loinc.org/8480-6",
|
|
44
|
+
modes: ["point"]
|
|
45
|
+
},
|
|
46
|
+
[APPLE_HEALTH_IDENTIFIERS.diastolicBloodPressure]: {
|
|
47
|
+
code: "8462-4",
|
|
48
|
+
display: "Diastolic blood pressure",
|
|
49
|
+
sourceUrl: "https://loinc.org/8462-4",
|
|
50
|
+
modes: ["point"]
|
|
51
|
+
},
|
|
52
|
+
[APPLE_HEALTH_IDENTIFIERS.heartRate]: {
|
|
53
|
+
code: "8867-4",
|
|
54
|
+
display: "Heart rate",
|
|
55
|
+
sourceUrl: "https://loinc.org/8867-4",
|
|
56
|
+
modes: ["point"]
|
|
57
|
+
},
|
|
58
|
+
[APPLE_HEALTH_IDENTIFIERS.restingHeartRate]: {
|
|
59
|
+
code: "40443-4",
|
|
60
|
+
display: "Heart rate --resting",
|
|
61
|
+
sourceUrl: "https://loinc.org/40443-4",
|
|
62
|
+
modes: ["point"]
|
|
63
|
+
},
|
|
64
|
+
[APPLE_HEALTH_IDENTIFIERS.heartRateVariabilitySDNN]: {
|
|
65
|
+
code: "112429-6",
|
|
66
|
+
display: "Heart rate variability SDNN [Time]",
|
|
67
|
+
sourceUrl: "https://loinc.org/112429-6",
|
|
68
|
+
modes: ["point"]
|
|
69
|
+
},
|
|
70
|
+
[APPLE_HEALTH_IDENTIFIERS.respiratoryRate]: {
|
|
71
|
+
code: "9279-1",
|
|
72
|
+
display: "Respiratory rate",
|
|
73
|
+
sourceUrl: "https://loinc.org/9279-1",
|
|
74
|
+
modes: ["point"]
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// HKQuantityTypeIdentifier is type-only from the wrapper's shared native entry
|
|
79
|
+
// point. Keep the 8.7.2 identifiers here so the catalog is complete on Android,
|
|
80
|
+
// Jest, and other entry points where Object.values(enum) is empty.
|
|
81
|
+
const appleQuantityIdentifiers = ["HKQuantityTypeIdentifierBodyMassIndex", "HKQuantityTypeIdentifierBodyFatPercentage", "HKQuantityTypeIdentifierHeight", "HKQuantityTypeIdentifierBodyMass", "HKQuantityTypeIdentifierLeanBodyMass", "HKQuantityTypeIdentifierWaistCircumference", "HKQuantityTypeIdentifierStepCount", "HKQuantityTypeIdentifierDistanceWalkingRunning", "HKQuantityTypeIdentifierDistanceCycling", "HKQuantityTypeIdentifierDistanceWheelchair", "HKQuantityTypeIdentifierBasalEnergyBurned", "HKQuantityTypeIdentifierActiveEnergyBurned", "HKQuantityTypeIdentifierFlightsClimbed", "HKQuantityTypeIdentifierNikeFuel", "HKQuantityTypeIdentifierAppleExerciseTime", "HKQuantityTypeIdentifierPushCount", "HKQuantityTypeIdentifierDistanceSwimming", "HKQuantityTypeIdentifierSwimmingStrokeCount", "HKQuantityTypeIdentifierVO2Max", "HKQuantityTypeIdentifierDistanceDownhillSnowSports", "HKQuantityTypeIdentifierAppleStandTime", "HKQuantityTypeIdentifierHeartRate", "HKQuantityTypeIdentifierBodyTemperature", "HKQuantityTypeIdentifierBasalBodyTemperature", "HKQuantityTypeIdentifierBloodPressureSystolic", "HKQuantityTypeIdentifierBloodPressureDiastolic", "HKQuantityTypeIdentifierRespiratoryRate", "HKQuantityTypeIdentifierRestingHeartRate", "HKQuantityTypeIdentifierWalkingHeartRateAverage", "HKQuantityTypeIdentifierHeartRateVariabilitySDNN", "HKQuantityTypeIdentifierOxygenSaturation", "HKQuantityTypeIdentifierPeripheralPerfusionIndex", "HKQuantityTypeIdentifierBloodGlucose", "HKQuantityTypeIdentifierNumberOfTimesFallen", "HKQuantityTypeIdentifierElectrodermalActivity", "HKQuantityTypeIdentifierInhalerUsage", "HKQuantityTypeIdentifierInsulinDelivery", "HKQuantityTypeIdentifierBloodAlcoholContent", "HKQuantityTypeIdentifierForcedVitalCapacity", "HKQuantityTypeIdentifierForcedExpiratoryVolume1", "HKQuantityTypeIdentifierPeakExpiratoryFlowRate", "HKQuantityTypeIdentifierEnvironmentalAudioExposure", "HKQuantityTypeIdentifierHeadphoneAudioExposure", "HKQuantityTypeIdentifierDietaryFatTotal", "HKQuantityTypeIdentifierDietaryFatPolyunsaturated", "HKQuantityTypeIdentifierDietaryFatMonounsaturated", "HKQuantityTypeIdentifierDietaryFatSaturated", "HKQuantityTypeIdentifierDietaryCholesterol", "HKQuantityTypeIdentifierDietarySodium", "HKQuantityTypeIdentifierDietaryCarbohydrates", "HKQuantityTypeIdentifierDietaryFiber", "HKQuantityTypeIdentifierDietarySugar", "HKQuantityTypeIdentifierDietaryEnergyConsumed", "HKQuantityTypeIdentifierDietaryProtein", "HKQuantityTypeIdentifierDietaryVitaminA", "HKQuantityTypeIdentifierDietaryVitaminB6", "HKQuantityTypeIdentifierDietaryVitaminB12", "HKQuantityTypeIdentifierDietaryVitaminC", "HKQuantityTypeIdentifierDietaryVitaminD", "HKQuantityTypeIdentifierDietaryVitaminE", "HKQuantityTypeIdentifierDietaryVitaminK", "HKQuantityTypeIdentifierDietaryCalcium", "HKQuantityTypeIdentifierDietaryIron", "HKQuantityTypeIdentifierDietaryThiamin", "HKQuantityTypeIdentifierDietaryRiboflavin", "HKQuantityTypeIdentifierDietaryNiacin", "HKQuantityTypeIdentifierDietaryFolate", "HKQuantityTypeIdentifierDietaryBiotin", "HKQuantityTypeIdentifierDietaryPantothenicAcid", "HKQuantityTypeIdentifierDietaryPhosphorus", "HKQuantityTypeIdentifierDietaryIodine", "HKQuantityTypeIdentifierDietaryMagnesium", "HKQuantityTypeIdentifierDietaryZinc", "HKQuantityTypeIdentifierDietarySelenium", "HKQuantityTypeIdentifierDietaryCopper", "HKQuantityTypeIdentifierDietaryManganese", "HKQuantityTypeIdentifierDietaryChromium", "HKQuantityTypeIdentifierDietaryMolybdenum", "HKQuantityTypeIdentifierDietaryChloride", "HKQuantityTypeIdentifierDietaryPotassium", "HKQuantityTypeIdentifierDietaryCaffeine", "HKQuantityTypeIdentifierDietaryWater", "HKQuantityTypeIdentifierSixMinuteWalkTestDistance", "HKQuantityTypeIdentifierWalkingSpeed", "HKQuantityTypeIdentifierWalkingStepLength", "HKQuantityTypeIdentifierWalkingAsymmetryPercentage", "HKQuantityTypeIdentifierWalkingDoubleSupportPercentage", "HKQuantityTypeIdentifierStairAscentSpeed", "HKQuantityTypeIdentifierStairDescentSpeed", "HKQuantityTypeIdentifierUVExposure", "HKQuantityTypeIdentifierAppleMoveTime", "HKQuantityTypeIdentifierAppleWalkingSteadiness", "HKQuantityTypeIdentifierNumberOfAlcoholicBeverages", "HKQuantityTypeIdentifierAtrialFibrillationBurden", "HKQuantityTypeIdentifierUnderwaterDepth", "HKQuantityTypeIdentifierWaterTemperature", "HKQuantityTypeIdentifierAppleSleepingWristTemperature", "HKQuantityTypeIdentifierTimeInDaylight", "HKQuantityTypeIdentifierPhysicalEffort", "HKQuantityTypeIdentifierCyclingSpeed", "HKQuantityTypeIdentifierCyclingPower", "HKQuantityTypeIdentifierCyclingFunctionalThresholdPower", "HKQuantityTypeIdentifierCyclingCadence", "HKQuantityTypeIdentifierEnvironmentalSoundReduction", "HKQuantityTypeIdentifierHeartRateRecoveryOneMinute", "HKQuantityTypeIdentifierRunningGroundContactTime", "HKQuantityTypeIdentifierRunningStrideLength", "HKQuantityTypeIdentifierRunningPower", "HKQuantityTypeIdentifierRunningVerticalOscillation", "HKQuantityTypeIdentifierRunningSpeed", "HKQuantityTypeIdentifierCrossCountrySkiingSpeed", "HKQuantityTypeIdentifierDistanceCrossCountrySkiing", "HKQuantityTypeIdentifierDistancePaddleSports", "HKQuantityTypeIdentifierDistanceRowing", "HKQuantityTypeIdentifierDistanceSkatingSports", "HKQuantityTypeIdentifierEstimatedWorkoutEffortScore", "HKQuantityTypeIdentifierPaddleSportsSpeed", "HKQuantityTypeIdentifierRowingSpeed", "HKQuantityTypeIdentifierWorkoutEffortScore"];
|
|
82
|
+
|
|
83
|
+
// The HealthKit wrapper's native entry point does not export the category and
|
|
84
|
+
// correlation enums at runtime on every platform, so keep their identifiers as
|
|
85
|
+
// explicit catalog data instead of enumerating a platform-specific value.
|
|
86
|
+
const appleCategoryIdentifiers = ["HKCategoryTypeIdentifierSleepAnalysis", "HKCategoryTypeIdentifierAppleStandHour", "HKCategoryTypeIdentifierCervicalMucusQuality", "HKCategoryTypeIdentifierOvulationTestResult", "HKCategoryTypeIdentifierMenstrualFlow", "HKCategoryTypeIdentifierIntermenstrualBleeding", "HKCategoryTypeIdentifierSexualActivity", "HKCategoryTypeIdentifierMindfulSession", "HKCategoryTypeIdentifierHighHeartRateEvent", "HKCategoryTypeIdentifierLowHeartRateEvent", "HKCategoryTypeIdentifierIrregularHeartRhythmEvent", "HKCategoryTypeIdentifierAudioExposureEvent", "HKCategoryTypeIdentifierToothbrushingEvent", "HKCategoryTypeIdentifierLowCardioFitnessEvent", "HKCategoryTypeIdentifierContraceptive", "HKCategoryTypeIdentifierLactation", "HKCategoryTypeIdentifierPregnancy", "HKCategoryTypeIdentifierPregnancyTestResult", "HKCategoryTypeIdentifierProgesteroneTestResult", "HKCategoryTypeIdentifierEnvironmentalAudioExposureEvent", "HKCategoryTypeIdentifierHeadphoneAudioExposureEvent", "HKCategoryTypeIdentifierAppleWalkingSteadinessEvent", "HKCategoryTypeIdentifierHandwashingEvent", "HKCategoryTypeIdentifierAbdominalCramps", "HKCategoryTypeIdentifierAcne", "HKCategoryTypeIdentifierAppetiteChanges", "HKCategoryTypeIdentifierBladderIncontinence", "HKCategoryTypeIdentifierBloating", "HKCategoryTypeIdentifierBreastPain", "HKCategoryTypeIdentifierChestTightnessOrPain", "HKCategoryTypeIdentifierChills", "HKCategoryTypeIdentifierConstipation", "HKCategoryTypeIdentifierCoughing", "HKCategoryTypeIdentifierDiarrhea", "HKCategoryTypeIdentifierDizziness", "HKCategoryTypeIdentifierDrySkin", "HKCategoryTypeIdentifierFainting", "HKCategoryTypeIdentifierFatigue", "HKCategoryTypeIdentifierFever", "HKCategoryTypeIdentifierGeneralizedBodyAche", "HKCategoryTypeIdentifierHairLoss", "HKCategoryTypeIdentifierHeadache", "HKCategoryTypeIdentifierHeartburn", "HKCategoryTypeIdentifierHotFlashes", "HKCategoryTypeIdentifierLossOfSmell", "HKCategoryTypeIdentifierLossOfTaste", "HKCategoryTypeIdentifierLowerBackPain", "HKCategoryTypeIdentifierMemoryLapse", "HKCategoryTypeIdentifierMoodChanges", "HKCategoryTypeIdentifierNausea", "HKCategoryTypeIdentifierNightSweats", "HKCategoryTypeIdentifierPelvicPain", "HKCategoryTypeIdentifierRapidPoundingOrFlutteringHeartbeat", "HKCategoryTypeIdentifierRunnyNose", "HKCategoryTypeIdentifierShortnessOfBreath", "HKCategoryTypeIdentifierSinusCongestion", "HKCategoryTypeIdentifierSkippedHeartbeat", "HKCategoryTypeIdentifierSleepChanges", "HKCategoryTypeIdentifierSoreThroat", "HKCategoryTypeIdentifierVaginalDryness", "HKCategoryTypeIdentifierVomiting", "HKCategoryTypeIdentifierWheezing", "HKCategoryTypeIdentifierBleedingAfterPregnancy", "HKCategoryTypeIdentifierBleedingDuringPregnancy"];
|
|
87
|
+
const appleCorrelationIdentifiers = ["HKCorrelationTypeIdentifierBloodPressure", "HKCorrelationTypeIdentifierFood"];
|
|
88
|
+
const healthConnectLoincMappings = {
|
|
89
|
+
Height: appleLoincMappings[APPLE_HEALTH_IDENTIFIERS.height],
|
|
90
|
+
Weight: appleLoincMappings[APPLE_HEALTH_IDENTIFIERS.bodyMass],
|
|
91
|
+
HeartRate: appleLoincMappings[APPLE_HEALTH_IDENTIFIERS.heartRate],
|
|
92
|
+
RestingHeartRate: appleLoincMappings[APPLE_HEALTH_IDENTIFIERS.restingHeartRate],
|
|
93
|
+
RespiratoryRate: appleLoincMappings[APPLE_HEALTH_IDENTIFIERS.respiratoryRate],
|
|
94
|
+
BodyWaterMass: {
|
|
95
|
+
code: "101683-1",
|
|
96
|
+
display: "Body water mass",
|
|
97
|
+
sourceUrl: "https://loinc.org/101683-1",
|
|
98
|
+
modes: ["point"]
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const appleSupportedSamples = [...appleQuantityIdentifiers.map(identifier => ({
|
|
102
|
+
provider: "apple-health",
|
|
103
|
+
identifier,
|
|
104
|
+
category: "quantity",
|
|
105
|
+
shape: "sample",
|
|
106
|
+
readPermission: identifier,
|
|
107
|
+
readStrategy: "Anchored HealthKit quantity query",
|
|
108
|
+
fhirResource: "Observation",
|
|
109
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
110
|
+
unit: healthUnitFor(identifier) ?? "HealthKit preferred unit",
|
|
111
|
+
loincMapping: appleLoincMappings[identifier]
|
|
112
|
+
})), ...appleCategoryIdentifiers.map(identifier => ({
|
|
113
|
+
provider: "apple-health",
|
|
114
|
+
identifier,
|
|
115
|
+
category: "category",
|
|
116
|
+
shape: "interval",
|
|
117
|
+
readPermission: identifier,
|
|
118
|
+
readStrategy: "Anchored HealthKit category query",
|
|
119
|
+
fhirResource: "Observation",
|
|
120
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
121
|
+
unit: "not applicable"
|
|
122
|
+
})), ...appleCorrelationIdentifiers.map(identifier => ({
|
|
123
|
+
provider: "apple-health",
|
|
124
|
+
identifier,
|
|
125
|
+
category: "correlation",
|
|
126
|
+
shape: "sample",
|
|
127
|
+
readPermission: identifier,
|
|
128
|
+
readStrategy: "Non-anchored HealthKit date-window query",
|
|
129
|
+
fhirResource: "Observation",
|
|
130
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
131
|
+
unit: "record-specific",
|
|
132
|
+
limitation: "This wrapper does not expose a correlation anchor or deleted-sample cursor."
|
|
133
|
+
})), {
|
|
134
|
+
provider: "apple-health",
|
|
135
|
+
identifier: "HKWorkoutTypeIdentifier",
|
|
136
|
+
category: "workout",
|
|
137
|
+
shape: "interval",
|
|
138
|
+
readPermission: "HKWorkoutTypeIdentifier",
|
|
139
|
+
readStrategy: "Anchored HealthKit workout query",
|
|
140
|
+
fhirResource: "Observation",
|
|
141
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
142
|
+
unit: "record-specific"
|
|
143
|
+
}, {
|
|
144
|
+
provider: "apple-health",
|
|
145
|
+
identifier: "HKDataTypeIdentifierHeartbeatSeries",
|
|
146
|
+
category: "series",
|
|
147
|
+
shape: "series",
|
|
148
|
+
readPermission: "HKDataTypeIdentifierHeartbeatSeries",
|
|
149
|
+
readStrategy: "Anchored HealthKit heartbeat-series query",
|
|
150
|
+
fhirResource: "Observation",
|
|
151
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
152
|
+
unit: "count/min"
|
|
153
|
+
}, {
|
|
154
|
+
provider: "apple-health",
|
|
155
|
+
identifier: "HKStateOfMindTypeIdentifier",
|
|
156
|
+
category: "state of mind",
|
|
157
|
+
shape: "sample",
|
|
158
|
+
readPermission: "HKStateOfMindTypeIdentifier",
|
|
159
|
+
readStrategy: "Non-anchored HealthKit date-window query",
|
|
160
|
+
fhirResource: "Observation",
|
|
161
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
162
|
+
unit: "not applicable",
|
|
163
|
+
limitation: "Requires iOS 18 or later; this wrapper does not expose an anchor or deleted-sample cursor."
|
|
164
|
+
}];
|
|
165
|
+
const appleExcludedTypes = [{
|
|
166
|
+
provider: "apple-health",
|
|
167
|
+
identifier: "HKElectrocardiogramType",
|
|
168
|
+
category: "electrocardiogram",
|
|
169
|
+
shape: "series",
|
|
170
|
+
readPermission: "HKObjectType.electrocardiogramType()",
|
|
171
|
+
readStrategy: "not exposed by the pinned wrapper",
|
|
172
|
+
fhirResource: "Observation",
|
|
173
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
174
|
+
unit: "ECG samples",
|
|
175
|
+
limitation: "HealthKit exposes read-only ECG samples, but the pinned wrapper does not expose an ECG query or voltage-series serializer."
|
|
176
|
+
}, ...["AllergyRecord", "ClinicalNoteRecord", "ConditionRecord", "ImmunizationRecord", "LabResultRecord", "MedicationRecord", "ProcedureRecord", "VitalSignRecord", "CoverageRecord"].map(type => ({
|
|
177
|
+
provider: "apple-health",
|
|
178
|
+
identifier: `HKClinicalTypeIdentifier${type}`,
|
|
179
|
+
category: "clinical record",
|
|
180
|
+
shape: "sample",
|
|
181
|
+
readPermission: `HKObjectType.clinicalType(forIdentifier: .${type[0]?.toLowerCase()}${type.slice(1)})`,
|
|
182
|
+
readStrategy: "not exposed by the pinned wrapper",
|
|
183
|
+
fhirResource: "FHIR resource",
|
|
184
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
185
|
+
unit: "FHIR JSON",
|
|
186
|
+
limitation: "HealthKit clinical records contain source FHIR resources and require per-type authorization; the pinned wrapper exposes neither the query nor FHIR-resource serializer."
|
|
187
|
+
})), {
|
|
188
|
+
provider: "apple-health",
|
|
189
|
+
identifier: "HKDocumentTypeIdentifierCDA",
|
|
190
|
+
category: "clinical document",
|
|
191
|
+
shape: "sample",
|
|
192
|
+
readPermission: "HKObjectType.documentType(forIdentifier: .CDA)",
|
|
193
|
+
readStrategy: "not exposed by the pinned wrapper",
|
|
194
|
+
fhirResource: "FHIR resource",
|
|
195
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
196
|
+
unit: "CDA document",
|
|
197
|
+
limitation: "The pinned wrapper does not expose HealthKit document queries or a CDA document importer."
|
|
198
|
+
}, {
|
|
199
|
+
provider: "apple-health",
|
|
200
|
+
identifier: "HKVisionPrescriptionTypeIdentifier",
|
|
201
|
+
category: "vision prescription",
|
|
202
|
+
shape: "sample",
|
|
203
|
+
readPermission: "HKObjectType.visionPrescriptionType()",
|
|
204
|
+
readStrategy: "not exposed by the pinned wrapper",
|
|
205
|
+
fhirResource: "Observation",
|
|
206
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
207
|
+
unit: "prescription-specific",
|
|
208
|
+
limitation: "The pinned wrapper does not expose HealthKit vision-prescription queries or a prescription serializer."
|
|
209
|
+
}, {
|
|
210
|
+
provider: "apple-health",
|
|
211
|
+
identifier: "HKActivitySummaryTypeIdentifier",
|
|
212
|
+
category: "activity summary",
|
|
213
|
+
shape: "sample",
|
|
214
|
+
readPermission: "HKActivitySummaryTypeIdentifier",
|
|
215
|
+
readStrategy: "not exposed by the pinned wrapper",
|
|
216
|
+
fhirResource: "Observation",
|
|
217
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
218
|
+
unit: "record-specific",
|
|
219
|
+
limitation: "The pinned wrapper does not expose an activity-summary query."
|
|
220
|
+
}, {
|
|
221
|
+
provider: "apple-health",
|
|
222
|
+
identifier: "HKAudiogramSampleType",
|
|
223
|
+
category: "audiogram",
|
|
224
|
+
shape: "sample",
|
|
225
|
+
readPermission: "HKAudiogramSampleType",
|
|
226
|
+
readStrategy: "not exposed by the pinned wrapper",
|
|
227
|
+
fhirResource: "Observation",
|
|
228
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
229
|
+
unit: "record-specific",
|
|
230
|
+
limitation: "The pinned wrapper does not expose an audiogram query or serializer."
|
|
231
|
+
}, {
|
|
232
|
+
provider: "apple-health",
|
|
233
|
+
identifier: "HKWorkoutRouteTypeIdentifier",
|
|
234
|
+
category: "workout route",
|
|
235
|
+
shape: "series",
|
|
236
|
+
readPermission: "HKWorkoutRouteTypeIdentifier",
|
|
237
|
+
readStrategy: "getWorkoutRoutes(workoutUUID)",
|
|
238
|
+
fhirResource: "Observation",
|
|
239
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
240
|
+
unit: "geographic coordinates",
|
|
241
|
+
limitation: "The wrapper requires a known workout UUID and the route is not a pageable sample query; routes are excluded from automatic import."
|
|
242
|
+
}];
|
|
243
|
+
const appleCharacteristics = [["HKCharacteristicTypeIdentifierBiologicalSex", "getBiologicalSex"], ["HKCharacteristicTypeIdentifierBloodType", "getBloodType"], ["HKCharacteristicTypeIdentifierDateOfBirth", "getDateOfBirth"], ["HKCharacteristicTypeIdentifierFitzpatrickSkinType", "getFitzpatrickSkinType"], ["HKCharacteristicTypeIdentifierWheelchairUse", "getWheelchairUse"], ["HKCharacteristicTypeIdentifierActivityMoveMode", "not exposed by the pinned wrapper"]].map(([identifier, readStrategy]) => ({
|
|
244
|
+
provider: "apple-health",
|
|
245
|
+
identifier,
|
|
246
|
+
category: "characteristic",
|
|
247
|
+
shape: "characteristic",
|
|
248
|
+
readPermission: identifier,
|
|
249
|
+
readStrategy,
|
|
250
|
+
fhirResource: "Patient",
|
|
251
|
+
sourceCodeSystem: HEALTHKIT_CODE_SYSTEM,
|
|
252
|
+
unit: "not applicable",
|
|
253
|
+
limitation: "Characteristics are not HKSampleType values and are not accepted by dataToSync; they need a separate Patient mapping."
|
|
254
|
+
}));
|
|
255
|
+
const healthConnectRecords = [["ActiveCaloriesBurned", "Activity", "interval", "ACTIVE_CALORIES_BURNED", "kcal"], ["BasalBodyTemperature", "Cycle Tracking", "instantaneous", "BASAL_BODY_TEMPERATURE", "native temperature unit"], ["BasalMetabolicRate", "Body Measurement", "instantaneous", "BASAL_METABOLIC_RATE", "native power unit"], ["BloodGlucose", "Vitals", "instantaneous", "BLOOD_GLUCOSE", "native glucose unit"], ["BloodPressure", "Vitals", "instantaneous", "BLOOD_PRESSURE", "mm[Hg]"], ["BodyFat", "Body Measurement", "instantaneous", "BODY_FAT", "%"], ["BodyTemperature", "Vitals", "instantaneous", "BODY_TEMPERATURE", "native temperature unit"], ["BodyWaterMass", "Body Measurement", "instantaneous", "BODY_WATER_MASS", "kg"], ["BoneMass", "Body Measurement", "instantaneous", "BONE_MASS", "kg"], ["CervicalMucus", "Cycle Tracking", "instantaneous", "CERVICAL_MUCUS", "not applicable"], ["CyclingPedalingCadence", "Activity", "series", "EXERCISE", "rpm"], ["ElevationGained", "Activity", "interval", "ELEVATION_GAINED", "m"], ["ExerciseSession", "Activity", "interval", "EXERCISE", "record-specific"], ["FloorsClimbed", "Activity", "interval", "FLOORS_CLIMBED", "count"], ["HeartRate", "Vitals", "series", "HEART_RATE", "count/min"], ["RestingHeartRate", "Vitals", "instantaneous", "RESTING_HEART_RATE", "count/min"], ["Steps", "Activity", "interval", "STEPS", "count"], ["StepsCadence", "Activity", "series", "STEPS", "steps/min"], ["Distance", "Activity", "interval", "DISTANCE", "m"], ["Height", "Body Measurement", "instantaneous", "HEIGHT", "m"], ["Hydration", "Nutrition", "interval", "HYDRATION", "L"], ["HeartRateVariabilityRmssd", "Vitals", "instantaneous", "HEART_RATE_VARIABILITY", "ms"], ["SexualActivity", "Cycle Tracking", "instantaneous", "SEXUAL_ACTIVITY", "not applicable"], ["Weight", "Body Measurement", "instantaneous", "WEIGHT", "kg"], ["Nutrition", "Nutrition", "interval", "NUTRITION", "record-specific"], ["LeanBodyMass", "Body Measurement", "instantaneous", "LEAN_BODY_MASS", "kg"], ["IntermenstrualBleeding", "Cycle Tracking", "instantaneous", "INTERMENSTRUAL_BLEEDING", "not applicable"], ["Speed", "Activity", "series", "SPEED", "m/s"], ["MenstruationFlow", "Cycle Tracking", "instantaneous", "MENSTRUATION", "not applicable"], ["MenstruationPeriod", "Cycle Tracking", "interval", "MENSTRUATION", "not applicable"], ["SleepSession", "Sleep", "interval", "SLEEP", "min"], ["RespiratoryRate", "Vitals", "instantaneous", "RESPIRATORY_RATE", "count/min"], ["WheelchairPushes", "Activity", "interval", "WHEELCHAIR_PUSHES", "count"], ["Vo2Max", "Activity", "instantaneous", "VO2_MAX", "mL/kg/min"], ["OvulationTest", "Cycle Tracking", "instantaneous", "OVULATION_TEST", "not applicable"], ["TotalCaloriesBurned", "Activity", "interval", "TOTAL_CALORIES_BURNED", "kcal"], ["OxygenSaturation", "Vitals", "instantaneous", "OXYGEN_SATURATION", "%"], ["Power", "Activity", "series", "POWER", "W"]];
|
|
256
|
+
const readPermissionOverrides = {
|
|
257
|
+
CyclingPedalingCadence: "EXERCISE",
|
|
258
|
+
ExerciseSession: "EXERCISE",
|
|
259
|
+
HeartRateVariabilityRmssd: "HEART_RATE_VARIABILITY",
|
|
260
|
+
MenstruationFlow: "MENSTRUATION",
|
|
261
|
+
MenstruationPeriod: "MENSTRUATION",
|
|
262
|
+
StepsCadence: "STEPS"
|
|
263
|
+
};
|
|
264
|
+
const healthConnectCatalog = healthConnectRecords.map(([identifier, category, shape, permission, unit]) => ({
|
|
265
|
+
provider: "health-connect",
|
|
266
|
+
identifier,
|
|
267
|
+
category,
|
|
268
|
+
shape,
|
|
269
|
+
readPermission: `${HEALTH_CONNECT_PERMISSION_PREFIX}${readPermissionOverrides[identifier] ?? permission}`,
|
|
270
|
+
readStrategy: "readRecords pages followed by the Health Connect changes feed",
|
|
271
|
+
fhirResource: "Observation",
|
|
272
|
+
sourceCodeSystem: HEALTH_CONNECT_CODE_SYSTEM,
|
|
273
|
+
unit,
|
|
274
|
+
loincMapping: healthConnectLoincMappings[identifier]
|
|
275
|
+
}));
|
|
276
|
+
const healthConnectSpecialTypes = [{
|
|
277
|
+
provider: "health-connect",
|
|
278
|
+
identifier: "ExerciseRoute",
|
|
279
|
+
category: "route",
|
|
280
|
+
shape: "series",
|
|
281
|
+
readPermission: "per-session Health Connect consent dialog",
|
|
282
|
+
readStrategy: "ExerciseSessionRecord.exerciseRoute / requestExerciseRoute(recordId)",
|
|
283
|
+
fhirResource: "Observation",
|
|
284
|
+
sourceCodeSystem: HEALTH_CONNECT_CODE_SYSTEM,
|
|
285
|
+
unit: "geographic coordinates",
|
|
286
|
+
limitation: "Routes are returned with exercise sessions only when the user grants per-session route access; the SDK does not expose a standalone route selector or requestExerciseRoute flow."
|
|
287
|
+
}];
|
|
288
|
+
const catalogEntries = [...appleSupportedSamples, ...appleExcludedTypes, ...appleCharacteristics, ...healthConnectCatalog, ...healthConnectSpecialTypes];
|
|
289
|
+
const getLoincLimitation = entry => {
|
|
290
|
+
if (entry.provider === "apple-health" && entry.identifier === "HKQuantityTypeIdentifierBodyFatPercentage" || entry.provider === "health-connect" && entry.identifier === "BodyFat") {
|
|
291
|
+
return "Not mapped: LOINC 41982-0 specifies the Measured method, but neither platform record type establishes how the body-fat percentage was derived.";
|
|
292
|
+
}
|
|
293
|
+
if (entry.identifier === APPLE_HEALTH_IDENTIFIERS.stepCount || entry.provider === "health-connect" && entry.identifier === "Steps") {
|
|
294
|
+
return "Not mapped: the default daily-total result is a local-calendar-day count, while LOINC 41950-7 is a 24-hour count rate with UCUM unit {#}/(24.h). The local day can be shorter or longer at daylight-saving transitions; individual source intervals are not asserted to be a 24-hour rate either.";
|
|
295
|
+
}
|
|
296
|
+
if (entry.provider === "health-connect" && entry.identifier === "BloodPressure") {
|
|
297
|
+
return "Not mapped: this is a composite systolic/diastolic record. The importer must emit the paired component Observations (or a correctly coded panel) instead of attaching one code to the serialized record.";
|
|
298
|
+
}
|
|
299
|
+
if (entry.provider === "health-connect" && entry.identifier === "HeartRateVariabilityRmssd") {
|
|
300
|
+
return "Not mapped: this source is RMSSD; it must not be coded as the distinct SDNN measure (LOINC 112429-6).";
|
|
301
|
+
}
|
|
302
|
+
if (entry.provider === "health-connect" && entry.identifier === "BodyTemperature") {
|
|
303
|
+
return "Not mapped: Health Connect exposes temperature as a structured value and includes a measurement location. The generic Observation converter does not yet normalize that value to a numeric UCUM quantity or preserve the location in bodySite.";
|
|
304
|
+
}
|
|
305
|
+
if (entry.provider === "health-connect" && entry.identifier === "SleepSession") {
|
|
306
|
+
return "Not mapped: the current session value is elapsed session duration, not total time asleep; sleep stages can include awake intervals.";
|
|
307
|
+
}
|
|
308
|
+
if (entry.provider === "health-connect" && entry.identifier === "BasalMetabolicRate") {
|
|
309
|
+
return "Not mapped: the source value is power (W), while the matching LOINC candidate is a basal metabolic rate index; these representations are not interchangeable.";
|
|
310
|
+
}
|
|
311
|
+
if (entry.provider === "apple-health" && entry.identifier === "HKQuantityTypeIdentifierBodyMassIndex") {
|
|
312
|
+
return "Not mapped: the HealthKit quantity is dimensionless, while LOINC 39156-5 expects a body-mass-index ratio represented with kg/m2. The importer does not normalize this unit.";
|
|
313
|
+
}
|
|
314
|
+
if (entry.identifier === "BloodGlucose" || entry.identifier === "HKQuantityTypeIdentifierBloodGlucose") {
|
|
315
|
+
return "Not mapped: the platform type alone does not guarantee a compatible specimen, method, and unit combination for one LOINC glucose term.";
|
|
316
|
+
}
|
|
317
|
+
if (entry.category === "characteristic") {
|
|
318
|
+
return "This is a Patient characteristic, not a dated Observation; no Observation LOINC mapping is asserted.";
|
|
319
|
+
}
|
|
320
|
+
if (entry.category === "correlation") {
|
|
321
|
+
return "This is a composite correlation; a single LOINC code could misrepresent its component observations.";
|
|
322
|
+
}
|
|
323
|
+
if (entry.shape === "series") {
|
|
324
|
+
return "This time series needs a clinically reviewed panel or series mapping before a LOINC code can be assigned.";
|
|
325
|
+
}
|
|
326
|
+
if (entry.shape === "sample" && entry.unit === "record-specific") {
|
|
327
|
+
return "This structured sample needs its component/value semantics reviewed before a LOINC code can be assigned.";
|
|
328
|
+
}
|
|
329
|
+
return "No audited LOINC mapping is assigned for this identifier yet; this is not a claim that no valid LOINC term exists. The platform code is retained without asserting LOINC.";
|
|
330
|
+
};
|
|
331
|
+
const HEALTH_DATA_CATALOG = catalogEntries.map(entry => {
|
|
332
|
+
if (!entry.loincMapping) {
|
|
333
|
+
return {
|
|
334
|
+
...entry,
|
|
335
|
+
loincLimitation: getLoincLimitation(entry)
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
return entry.loincMapping.modes.length < 4 ? {
|
|
339
|
+
...entry,
|
|
340
|
+
loincLimitation: `The reviewed mapping applies only to ${entry.loincMapping.modes.join(", ")} mode; other representations retain the platform code.`
|
|
341
|
+
} : entry;
|
|
342
|
+
});
|
|
343
|
+
const getHealthDataCoding = (provider, identifier, mode) => {
|
|
344
|
+
const catalogProvider = provider === "apple-health" ? "apple-health" : "health-connect";
|
|
345
|
+
const entry = HEALTH_DATA_CATALOG.find(candidate => candidate.provider === catalogProvider && candidate.identifier === identifier);
|
|
346
|
+
const mapping = entry?.loincMapping;
|
|
347
|
+
if (mapping?.modes.includes(mode)) {
|
|
348
|
+
return {
|
|
349
|
+
code: mapping.code,
|
|
350
|
+
system: "http://loinc.org",
|
|
351
|
+
display: mapping.display
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
return {
|
|
355
|
+
code: identifier,
|
|
356
|
+
system: entry?.sourceCodeSystem ?? (catalogProvider === "apple-health" ? HEALTHKIT_CODE_SYSTEM : HEALTH_CONNECT_CODE_SYSTEM)
|
|
357
|
+
};
|
|
358
|
+
};
|
|
359
|
+
export { HEALTH_DATA_CATALOG, getHealthDataCoding };
|
|
360
|
+
//# sourceMappingURL=health-data-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["healthUnitFor","HEALTH_CONNECT_PERMISSION_PREFIX","HEALTH_CONNECT_CODE_SYSTEM","HEALTHKIT_CODE_SYSTEM","APPLE_HEALTH_IDENTIFIERS","height","bodyMass","bodyTemperature","systolicBloodPressure","diastolicBloodPressure","heartRate","restingHeartRate","heartRateVariabilitySDNN","respiratoryRate","stepCount","appleLoincMappings","code","display","sourceUrl","modes","appleQuantityIdentifiers","appleCategoryIdentifiers","appleCorrelationIdentifiers","healthConnectLoincMappings","Height","Weight","HeartRate","RestingHeartRate","RespiratoryRate","BodyWaterMass","appleSupportedSamples","map","identifier","provider","category","shape","readPermission","readStrategy","fhirResource","sourceCodeSystem","unit","loincMapping","limitation","appleExcludedTypes","type","toLowerCase","slice","appleCharacteristics","healthConnectRecords","readPermissionOverrides","CyclingPedalingCadence","ExerciseSession","HeartRateVariabilityRmssd","MenstruationFlow","MenstruationPeriod","StepsCadence","healthConnectCatalog","permission","healthConnectSpecialTypes","catalogEntries","getLoincLimitation","entry","HEALTH_DATA_CATALOG","loincLimitation","length","join","getHealthDataCoding","mode","catalogProvider","find","candidate","mapping","includes","system"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/health-data-catalog.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { HKQuantityTypeIdentifier } from "@kingstinct/react-native-healthkit";
|
|
4
3
|
const HEALTH_UNITS = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
HKQuantityTypeIdentifierBodyMass: "kg",
|
|
5
|
+
HKQuantityTypeIdentifierBodyFatPercentage: "%",
|
|
6
|
+
HKQuantityTypeIdentifierBodyTemperature: "degC",
|
|
7
|
+
HKQuantityTypeIdentifierBasalBodyTemperature: "degC",
|
|
8
|
+
HKQuantityTypeIdentifierBloodPressureSystolic: "mmHg",
|
|
9
|
+
HKQuantityTypeIdentifierBloodPressureDiastolic: "mmHg",
|
|
10
|
+
HKQuantityTypeIdentifierBloodGlucose: "mg/dL",
|
|
11
|
+
HKQuantityTypeIdentifierOxygenSaturation: "%",
|
|
12
|
+
HKQuantityTypeIdentifierHeartRate: "count/min",
|
|
13
|
+
HKQuantityTypeIdentifierHeartRateVariabilitySDNN: "ms",
|
|
14
|
+
HKQuantityTypeIdentifierRestingHeartRate: "count/min",
|
|
15
|
+
HKQuantityTypeIdentifierRespiratoryRate: "count/min",
|
|
16
|
+
HKQuantityTypeIdentifierWalkingHeartRateAverage: "count/min"
|
|
15
17
|
};
|
|
16
18
|
export const healthUnitFor = typeIdentifier => HEALTH_UNITS[typeIdentifier];
|
|
17
19
|
//# sourceMappingURL=health-units.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["HEALTH_UNITS","HKQuantityTypeIdentifierBodyMass","HKQuantityTypeIdentifierBodyFatPercentage","HKQuantityTypeIdentifierBodyTemperature","HKQuantityTypeIdentifierBasalBodyTemperature","HKQuantityTypeIdentifierBloodPressureSystolic","HKQuantityTypeIdentifierBloodPressureDiastolic","HKQuantityTypeIdentifierBloodGlucose","HKQuantityTypeIdentifierOxygenSaturation","HKQuantityTypeIdentifierHeartRate","HKQuantityTypeIdentifierHeartRateVariabilitySDNN","HKQuantityTypeIdentifierRestingHeartRate","HKQuantityTypeIdentifierRespiratoryRate","HKQuantityTypeIdentifierWalkingHeartRateAverage","healthUnitFor","typeIdentifier"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/health-units.ts"],"mappings":";;AAKA,MAAMA,YAA8C,GAAG;EACrDC,gCAAgC,EAAE,IAAI;EACtCC,yCAAyC,EAAE,GAAG;EAC9CC,uCAAuC,EAAE,MAAM;EAC/CC,4CAA4C,EAAE,MAAM;EACpDC,6CAA6C,EAAE,MAAM;EACrDC,8CAA8C,EAAE,MAAM;EACtDC,oCAAoC,EAAE,OAAO;EAC7CC,wCAAwC,EAAE,GAAG;EAC7CC,iCAAiC,EAAE,WAAW;EAC9CC,gDAAgD,EAAE,IAAI;EACtDC,wCAAwC,EAAE,WAAW;EACrDC,uCAAuC,EAAE,WAAW;EACpDC,+CAA+C,EAAE;AACnD,CAAC;AAED,OAAO,MAAMC,aAAa,GACxBC,cAAiB,IAEjBf,YAAY,CAACe,cAAc,CAAqC","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const isCategoryIdentifier = typeIdentifier => typeof typeIdentifier === "string" && typeIdentifier.startsWith("HKCategoryTypeIdentifier");
|
|
4
|
+
const isQuantityIdentifier = typeIdentifier => typeof typeIdentifier === "string" && typeIdentifier.startsWith("HKQuantityTypeIdentifier");
|
|
5
|
+
const isCorrelationIdentifier = typeIdentifier => typeof typeIdentifier === "string" && typeIdentifier.startsWith("HKCorrelationTypeIdentifier");
|
|
6
|
+
const unsupportedHealthKitTypeReason = typeIdentifier => {
|
|
7
|
+
switch (typeIdentifier) {
|
|
8
|
+
case "HKActivitySummaryTypeIdentifier":
|
|
9
|
+
return "The pinned HealthKit wrapper does not expose an activity-summary query.";
|
|
10
|
+
case "HKAudiogramSampleType":
|
|
11
|
+
return "The pinned HealthKit wrapper does not expose an audiogram query/serializer.";
|
|
12
|
+
case "HKWorkoutRouteTypeIdentifier":
|
|
13
|
+
return "The wrapper can read routes only when given a workout UUID; it does not expose a route sample query.";
|
|
14
|
+
default:
|
|
15
|
+
return "The pinned HealthKit wrapper does not expose a compatible read query for this type.";
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
class UnsupportedHealthKitDataError extends Error {
|
|
19
|
+
constructor(typeIdentifier, reason) {
|
|
20
|
+
super(`Cannot import ${typeIdentifier}: ${reason}`);
|
|
21
|
+
this.typeIdentifier = typeIdentifier;
|
|
22
|
+
this.name = "UnsupportedHealthKitDataError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export { isCategoryIdentifier, isCorrelationIdentifier, isQuantityIdentifier, UnsupportedHealthKitDataError, unsupportedHealthKitTypeReason };
|
|
26
|
+
//# sourceMappingURL=healthkit-data-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isCategoryIdentifier","typeIdentifier","startsWith","isQuantityIdentifier","isCorrelationIdentifier","unsupportedHealthKitTypeReason","UnsupportedHealthKitDataError","Error","constructor","reason","name"],"sourceRoot":"../../../../../src","sources":["modules/data-sync/utils/healthkit-data-types.ts"],"mappings":";;AAOA,MAAMA,oBAAoB,GACxBC,cAAsC,IAEtC,OAAOA,cAAc,KAAK,QAAQ,IAClCA,cAAc,CAACC,UAAU,CAAC,0BAA0B,CAAC;AAEvD,MAAMC,oBAAoB,GACxBF,cAAsC,IAEtC,OAAOA,cAAc,KAAK,QAAQ,IAClCA,cAAc,CAACC,UAAU,CAAC,0BAA0B,CAAC;AAEvD,MAAME,uBAAuB,GAC3BH,cAAsC,IAEtC,OAAOA,cAAc,KAAK,QAAQ,IAClCA,cAAc,CAACC,UAAU,CAAC,6BAA6B,CAAC;AAE1D,MAAMG,8BAA8B,GAClCJ,cAAsC,IAC3B;EACX,QAAQA,cAAc;IACpB,KAAK,iCAAiC;MACpC,OAAO,yEAAyE;IAClF,KAAK,uBAAuB;MAC1B,OAAO,6EAA6E;IACtF,KAAK,8BAA8B;MACjC,OAAO,sGAAsG;IAC/G;MACE,OAAO,qFAAqF;EAChG;AACF,CAAC;AAED,MAAMK,6BAA6B,SAASC,KAAK,CAAC;EAChDC,WAAWA,CACAP,cAAsB,EAC/BQ,MAAc,EACd;IACA,KAAK,CAAC,iBAAiBR,cAAc,KAAKQ,MAAM,EAAE,CAAC;IAAC,KAH3CR,cAAsB,GAAtBA,cAAsB;IAI/B,IAAI,CAACS,IAAI,GAAG,+BAA+B;EAC7C;AACF;AAEA,SACEV,oBAAoB,EACpBI,uBAAuB,EACvBD,oBAAoB,EACpBG,6BAA6B,EAC7BD,8BAA8B","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ export * from "./types/health-authorization-status";
|
|
|
7
7
|
export * from "./types/health-sync-keys";
|
|
8
8
|
export * from "./types/health-sync-batch-error";
|
|
9
9
|
export * from "./hooks/use-health-import";
|
|
10
|
+
export { HEALTH_DATA_CATALOG, getHealthDataCoding } from "./utils/health-data-catalog";
|
|
10
11
|
export { HealthAuthorizationContext, useHealthAuthorization, } from "./contexts/health-authorization-context";
|
|
11
12
|
export type { HealthAuthorizationValue } from "./contexts/health-authorization-context";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/data-sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oDAAoD,CAAC;AACnE,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/data-sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oDAAoD,CAAC;AACnE,cAAc,uBAAuB,CAAC;AACtC,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/base-health-sync-service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAEU,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC;IA2BhD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,cAAc;IAEpD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAC3C,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC;IAEpB,SAAS,CAAC,QAAQ,CAAC,2BAA2B,IAAI,CAChD,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAExE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CACzC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KACvC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3B,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;
|
|
1
|
+
{"version":3,"file":"base-health-sync-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/services/base-health-sync-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,8BAAsB,qBAAqB,CACzC,WAAW,SACT,sBAAsB,CAAC,YAAY,CAAC,GAAG,oBAAoB,CAAC,YAAY,CAAC,EAC3E,eAAe,SAAS,MAAM,EAC9B,iBAAiB,GAAG,OAAO;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI5B;gBAEU,KAAK,EAAE,gBAAgB,CAAC,WAAW,CAAC;IA2BhD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,cAAc;IAEpD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,IAAI,CAC3C,KAAK,EAAE,kBAAkB,CAAC,eAAe,CAAC,KACvC,OAAO,CAAC,MAAM,CAAC;IAEpB,SAAS,CAAC,QAAQ,CAAC,2BAA2B,IAAI,CAChD,KAAK,EAAE,wBAAwB,CAAC,eAAe,CAAC,KAC7C,OAAO,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAExE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,CACzC,KAAK,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KACvC,OAAO,CAAC,WAAW,EAAE,CAAC;IAE3B,2EAA2E;IAC9D,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAQzB,OAAO;IA6BR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAKjD,cAAc;YAUd,oBAAoB;YA0BpB,mBAAmB;YAqBnB,cAAc;IAoH5B,OAAO,CAAC,yBAAyB;CAGlC"}
|
|
@@ -30,6 +30,7 @@ export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["d
|
|
|
30
30
|
getObservationBodiesForType(measurementTypeKey: HealthSyncKey, data: NonNullable<TDataToSync[HealthSyncKey]>, latestValidStartDate: Date | undefined): Promise<{
|
|
31
31
|
observationBodies: Observation[][];
|
|
32
32
|
observationSyncIds: Array<string | undefined>;
|
|
33
|
+
deletedObservationSyncIds: string[];
|
|
33
34
|
hasMore: boolean;
|
|
34
35
|
anchors: Array<{
|
|
35
36
|
typeIdentifier: string;
|
|
@@ -40,6 +41,6 @@ export declare class DataProcessor<TDataToSync extends AndroidHealthSyncProps["d
|
|
|
40
41
|
getLatestValidStartDate(latestObservationDates: Array<{
|
|
41
42
|
code: string | undefined;
|
|
42
43
|
date: string | undefined;
|
|
43
|
-
}>, data: NonNullable<TDataToSync[HealthSyncKey]>, mode?: Parameters<typeof getLatestValidStartDate>[0]["mode"]): Date | undefined;
|
|
44
|
+
}>, data: NonNullable<TDataToSync[HealthSyncKey]>, measurementTypeKey: HealthSyncKey, mode?: Parameters<typeof getLatestValidStartDate>[0]["mode"]): Date | undefined;
|
|
44
45
|
}
|
|
45
46
|
//# sourceMappingURL=data-processor.d.ts.map
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/data-processor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-processor.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/data-processor.ts"],"names":[],"mappings":"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"}
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { saveBundleObservations } from "../../utils/save-bundle-observations";
|
|
|
5
5
|
export declare class StorageManager {
|
|
6
6
|
private client;
|
|
7
7
|
private provider;
|
|
8
|
+
private static readonly SYNC_ID_SYSTEM;
|
|
8
9
|
/**
|
|
9
10
|
* Where an anchor goes when the host client has no storage.
|
|
10
11
|
*
|
|
@@ -25,6 +26,7 @@ export declare class StorageManager {
|
|
|
25
26
|
private readonly inMemoryAnchors;
|
|
26
27
|
constructor(client: OvokClient, provider: HealthProvider);
|
|
27
28
|
saveObservations(entries: Parameters<typeof saveBundleObservations>[0]["entries"]): Promise<Bundle<Observation>>;
|
|
29
|
+
deleteObservations(syncIds: string[], patientId: string): Promise<void>;
|
|
28
30
|
saveAnchor(typeIdentifier: string, anchor: string): void;
|
|
29
31
|
getAnchor(typeIdentifier: string): string | undefined;
|
|
30
32
|
private anchorKey;
|
package/lib/typescript/commonjs/src/modules/data-sync/services/managers/storage-manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"storage-manager.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/data-sync/services/managers/storage-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,qBAAa,cAAc;IAwBvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAxBlB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CACgC;IAEtE;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;gBAGnD,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,cAAc;IAG5B,gBAAgB,CACpB,OAAO,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAOzB,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAqBhB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAYxD,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQrD,OAAO,CAAC,SAAS;IAIjB,WAAW,CACT,OAAO,EAAE,KAAK,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GACzD,IAAI;CAKR"}
|
|
@@ -8,5 +8,7 @@ export type ConvertDataProps<TData> = {
|
|
|
8
8
|
typeIdentifier?: string;
|
|
9
9
|
mode?: HealthDataMode;
|
|
10
10
|
typeIdentifierCodes?: Readonly<Record<string, string>>;
|
|
11
|
+
typeIdentifierCodeSystems?: Readonly<Record<string, string>>;
|
|
12
|
+
typeIdentifierCodeDisplays?: Readonly<Record<string, string>>;
|
|
11
13
|
};
|
|
12
14
|
//# sourceMappingURL=convert-data-props.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert-data-props.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/convert-data-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,MAAM,gBAAgB,CAAC,KAAK,IAAI;IACpC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,aAAa,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"convert-data-props.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/convert-data-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,MAAM,gBAAgB,CAAC,KAAK,IAAI;IACpC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,aAAa,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,yBAAyB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,0BAA0B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/D,CAAC"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export type DataFromProviderResult<TData, TTypeIdentifier> = {
|
|
2
2
|
data: TData[];
|
|
3
|
+
/** Source record IDs removed since the provider cursor was last saved. */
|
|
4
|
+
deletedRecordIds?: string[];
|
|
5
|
+
/** Whether the provider has another page, including deletion-only pages. */
|
|
6
|
+
hasMore?: boolean;
|
|
3
7
|
anchor?: {
|
|
4
8
|
typeIdentifier: TTypeIdentifier;
|
|
5
9
|
anchor: string;
|
package/lib/typescript/commonjs/src/modules/data-sync/types/data-from-provider-result.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-from-provider-result.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/data-from-provider-result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,CAAC,KAAK,EAAE,eAAe,IAAI;IAC3D,IAAI,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"data-from-provider-result.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/data-sync/types/data-from-provider-result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,CAAC,KAAK,EAAE,eAAe,IAAI;IAC3D,IAAI,EAAE,KAAK,EAAE,CAAC;IAEd,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,cAAc,EAAE,eAAe,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC"}
|