@ovok/core 0.2.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/README.md +40 -0
  2. package/dist/client/ai-fhir/methods/AIFhirResources.d.ts +14 -0
  3. package/dist/client/ai-fhir/methods/AIFhirResources.js +16 -0
  4. package/dist/client/ai-fhir/methods/index.d.ts +1 -0
  5. package/dist/client/ai-fhir/methods/index.js +17 -0
  6. package/dist/client/ai-fhir/types/AIFhirPlan.d.ts +6 -0
  7. package/dist/client/ai-fhir/types/AIFhirPlan.js +2 -0
  8. package/dist/client/ai-fhir/types/AIFhirPlanRequest.d.ts +5 -0
  9. package/dist/client/ai-fhir/types/AIFhirPlanRequest.js +2 -0
  10. package/dist/client/ai-fhir/types/AIFhirRequest.d.ts +7 -0
  11. package/dist/client/ai-fhir/types/AIFhirRequest.js +2 -0
  12. package/dist/client/ai-fhir/types/AIFhirResponse.d.ts +18 -0
  13. package/dist/client/ai-fhir/types/AIFhirResponse.js +2 -0
  14. package/dist/client/ai-fhir/types/index.d.ts +4 -0
  15. package/dist/client/ai-fhir/types/index.js +20 -0
  16. package/dist/client/auth/methods/appleLogin.d.ts +4 -0
  17. package/dist/client/auth/methods/appleLogin.js +11 -0
  18. package/dist/client/auth/methods/changePassword.d.ts +4 -0
  19. package/dist/client/auth/methods/changePassword.js +6 -0
  20. package/dist/client/auth/methods/googleLogin.d.ts +4 -0
  21. package/dist/client/auth/methods/googleLogin.js +11 -0
  22. package/dist/client/auth/methods/index.d.ts +8 -0
  23. package/dist/client/auth/methods/index.js +24 -0
  24. package/dist/client/auth/methods/login.d.ts +4 -0
  25. package/dist/client/auth/methods/login.js +38 -0
  26. package/dist/client/auth/methods/refetchProfile.d.ts +2 -0
  27. package/dist/client/auth/methods/refetchProfile.js +9 -0
  28. package/dist/client/auth/methods/register.d.ts +4 -0
  29. package/dist/client/auth/methods/register.js +15 -0
  30. package/dist/client/auth/methods/requestDeleteUser.d.ts +11 -0
  31. package/dist/client/auth/methods/requestDeleteUser.js +13 -0
  32. package/dist/client/auth/methods/resetPassword.d.ts +13 -0
  33. package/dist/client/auth/methods/resetPassword.js +19 -0
  34. package/dist/client/auth/types/AppleLoginBody.d.ts +68 -0
  35. package/dist/client/auth/types/AppleLoginBody.js +17 -0
  36. package/dist/client/auth/types/AuthResponse.d.ts +15 -0
  37. package/dist/client/auth/types/AuthResponse.js +2 -0
  38. package/dist/client/auth/types/ChangePasswordBody.d.ts +5 -0
  39. package/dist/client/auth/types/ChangePasswordBody.js +2 -0
  40. package/dist/client/auth/types/GoogleLoginBody.d.ts +26 -0
  41. package/dist/client/auth/types/GoogleLoginBody.js +2 -0
  42. package/dist/client/auth/types/LoginBody.d.ts +26 -0
  43. package/dist/client/auth/types/LoginBody.js +2 -0
  44. package/dist/client/auth/types/RegisterBody.d.ts +8 -0
  45. package/dist/client/auth/types/RegisterBody.js +2 -0
  46. package/dist/client/auth/types/RequestDeleteUserBody.d.ts +11 -0
  47. package/dist/client/auth/types/RequestDeleteUserBody.js +2 -0
  48. package/dist/client/auth/types/RequestDeleteUserResponse.d.ts +12 -0
  49. package/dist/client/auth/types/RequestDeleteUserResponse.js +2 -0
  50. package/dist/client/auth/types/ResetPasswordBody.d.ts +14 -0
  51. package/dist/client/auth/types/ResetPasswordBody.js +2 -0
  52. package/dist/client/auth/types/StartLoginResponse.d.ts +34 -0
  53. package/dist/client/auth/types/StartLoginResponse.js +2 -0
  54. package/dist/client/bot/methods/executeBot.d.ts +10 -0
  55. package/dist/client/bot/methods/executeBot.js +14 -0
  56. package/dist/client/bot/methods/index.d.ts +1 -0
  57. package/dist/client/bot/methods/index.js +17 -0
  58. package/dist/client/chat/ai/methods/createAiSession.d.ts +4 -0
  59. package/dist/client/chat/ai/methods/createAiSession.js +17 -0
  60. package/dist/client/chat/ai/methods/index.d.ts +1 -0
  61. package/dist/client/chat/ai/methods/index.js +17 -0
  62. package/dist/client/chat/ai/types/CreateAiSessionProps.d.ts +51 -0
  63. package/dist/client/chat/ai/types/CreateAiSessionProps.js +2 -0
  64. package/dist/client/chat/ai/types/CreateAiSessionResponse.d.ts +21 -0
  65. package/dist/client/chat/ai/types/CreateAiSessionResponse.js +2 -0
  66. package/dist/client/chat/ai/types/SessionMessagesResponse.d.ts +9 -0
  67. package/dist/client/chat/ai/types/SessionMessagesResponse.js +2 -0
  68. package/dist/client/observation/methods/generateObservationBodiesByMeasurement.d.ts +4 -0
  69. package/dist/client/observation/methods/generateObservationBodiesByMeasurement.js +40 -0
  70. package/dist/client/observation/methods/getLatestObservationsByCodes.d.ts +4 -0
  71. package/dist/client/observation/methods/getLatestObservationsByCodes.js +19 -0
  72. package/dist/client/observation/methods/index.d.ts +2 -0
  73. package/dist/client/observation/methods/index.js +18 -0
  74. package/dist/client/observation/services/base-observation-service.d.ts +22 -0
  75. package/dist/client/observation/services/base-observation-service.js +70 -0
  76. package/dist/client/observation/services/blood-glucose.d.ts +12 -0
  77. package/dist/client/observation/services/blood-glucose.js +36 -0
  78. package/dist/client/observation/services/blood-oxygen.d.ts +14 -0
  79. package/dist/client/observation/services/blood-oxygen.js +57 -0
  80. package/dist/client/observation/services/blood-pressure.d.ts +15 -0
  81. package/dist/client/observation/services/blood-pressure.js +72 -0
  82. package/dist/client/observation/services/body-temperature.d.ts +13 -0
  83. package/dist/client/observation/services/body-temperature.js +36 -0
  84. package/dist/client/observation/services/body-weight.d.ts +13 -0
  85. package/dist/client/observation/services/body-weight.js +36 -0
  86. package/dist/client/observation/services/creator.d.ts +10 -0
  87. package/dist/client/observation/services/creator.js +54 -0
  88. package/dist/client/observation/services/ecg.d.ts +16 -0
  89. package/dist/client/observation/services/ecg.js +110 -0
  90. package/dist/client/observation/services/heart-rate-variability.d.ts +13 -0
  91. package/dist/client/observation/services/heart-rate-variability.js +38 -0
  92. package/dist/client/observation/services/heart-rate.d.ts +13 -0
  93. package/dist/client/observation/services/heart-rate.js +39 -0
  94. package/dist/client/observation/services/index.d.ts +1 -0
  95. package/dist/client/observation/services/index.js +17 -0
  96. package/dist/client/observation/services/respiratory-rate.d.ts +13 -0
  97. package/dist/client/observation/services/respiratory-rate.js +38 -0
  98. package/dist/client/observation/services/resting-heart-rate.d.ts +13 -0
  99. package/dist/client/observation/services/resting-heart-rate.js +38 -0
  100. package/dist/client/observation/services/step-count.d.ts +15 -0
  101. package/dist/client/observation/services/step-count.js +55 -0
  102. package/dist/client/observation/services/uric-acid-service.d.ts +21 -0
  103. package/dist/client/observation/services/uric-acid-service.js +120 -0
  104. package/dist/client/observation/services/vo2-max.d.ts +13 -0
  105. package/dist/client/observation/services/vo2-max.js +38 -0
  106. package/dist/client/observation/services/walking-heart-rate-average.d.ts +12 -0
  107. package/dist/client/observation/services/walking-heart-rate-average.js +38 -0
  108. package/dist/client/observation/types/GetLatestObservationsByCodeParams.d.ts +9 -0
  109. package/dist/client/observation/types/GetLatestObservationsByCodeParams.js +2 -0
  110. package/dist/client/observation/types/IObservationService.d.ts +15 -0
  111. package/dist/client/observation/types/IObservationService.js +2 -0
  112. package/dist/client/observation/types/MeasurementTypeKey.d.ts +20 -0
  113. package/dist/client/observation/types/MeasurementTypeKey.js +24 -0
  114. package/dist/client/observation/types/ObservationCode.d.ts +37 -0
  115. package/dist/client/observation/types/ObservationCode.js +41 -0
  116. package/dist/client/observation/types/generate-measurement/HealthConnectTypes.d.ts +641 -0
  117. package/dist/client/observation/types/generate-measurement/HealthConnectTypes.js +45 -0
  118. package/dist/client/observation/types/generate-measurement/Sample.d.ts +32 -0
  119. package/dist/client/observation/types/generate-measurement/Sample.js +2 -0
  120. package/dist/client/observation/types/generate-observation-body/BodyWeightValueParams.d.ts +1 -0
  121. package/dist/client/observation/types/generate-observation-body/BodyWeightValueParams.js +2 -0
  122. package/dist/client/observation/types/generate-observation-body/GenerateObservationBodyParams.d.ts +7 -0
  123. package/dist/client/observation/types/generate-observation-body/GenerateObservationBodyParams.js +2 -0
  124. package/dist/client/observation/types/generate-observation-body/ObservationValue.d.ts +14 -0
  125. package/dist/client/observation/types/generate-observation-body/ObservationValue.js +2 -0
  126. package/dist/client/observation/types/measurement/BloodGlucoseMeasurement.d.ts +6 -0
  127. package/dist/client/observation/types/measurement/BloodGlucoseMeasurement.js +2 -0
  128. package/dist/client/observation/types/measurement/BloodPressureMeasurement.d.ts +10 -0
  129. package/dist/client/observation/types/measurement/BloodPressureMeasurement.js +2 -0
  130. package/dist/client/observation/types/measurement/BloodPressureStates.d.ts +7 -0
  131. package/dist/client/observation/types/measurement/BloodPressureStates.js +11 -0
  132. package/dist/client/observation/types/measurement/BodyTemperatureMeasurement.d.ts +6 -0
  133. package/dist/client/observation/types/measurement/BodyTemperatureMeasurement.js +2 -0
  134. package/dist/client/observation/types/measurement/BodyWeightMeasurmement.d.ts +7 -0
  135. package/dist/client/observation/types/measurement/BodyWeightMeasurmement.js +2 -0
  136. package/dist/client/observation/types/measurement/EcgDiagnosticFlag.d.ts +15 -0
  137. package/dist/client/observation/types/measurement/EcgDiagnosticFlag.js +19 -0
  138. package/dist/client/observation/types/measurement/EcgMeasurement.d.ts +13 -0
  139. package/dist/client/observation/types/measurement/EcgMeasurement.js +2 -0
  140. package/dist/client/observation/types/measurement/HeartRateMeasurement.d.ts +6 -0
  141. package/dist/client/observation/types/measurement/HeartRateMeasurement.js +2 -0
  142. package/dist/client/observation/types/measurement/HeartRateVariabilityMeasurement.d.ts +6 -0
  143. package/dist/client/observation/types/measurement/HeartRateVariabilityMeasurement.js +2 -0
  144. package/dist/client/observation/types/measurement/Measurement.d.ts +4 -0
  145. package/dist/client/observation/types/measurement/Measurement.js +2 -0
  146. package/dist/client/observation/types/measurement/MeasurementDevice.d.ts +7 -0
  147. package/dist/client/observation/types/measurement/MeasurementDevice.js +2 -0
  148. package/dist/client/observation/types/measurement/PulseOximeterMeasurement.d.ts +9 -0
  149. package/dist/client/observation/types/measurement/PulseOximeterMeasurement.js +2 -0
  150. package/dist/client/observation/types/measurement/RespiratoryRateMeasurement.d.ts +6 -0
  151. package/dist/client/observation/types/measurement/RespiratoryRateMeasurement.js +2 -0
  152. package/dist/client/observation/types/measurement/RestingHeartRateMeasurement.d.ts +6 -0
  153. package/dist/client/observation/types/measurement/RestingHeartRateMeasurement.js +2 -0
  154. package/dist/client/observation/types/measurement/SpirometryMeasurement.d.ts +21 -0
  155. package/dist/client/observation/types/measurement/SpirometryMeasurement.js +2 -0
  156. package/dist/client/observation/types/measurement/StepCountMeasurement.d.ts +8 -0
  157. package/dist/client/observation/types/measurement/StepCountMeasurement.js +2 -0
  158. package/dist/client/observation/types/measurement/UrineAnalyzeMeasurement.d.ts +23 -0
  159. package/dist/client/observation/types/measurement/UrineAnalyzeMeasurement.js +2 -0
  160. package/dist/client/observation/types/measurement/Vo2MaxMeasurement.d.ts +6 -0
  161. package/dist/client/observation/types/measurement/Vo2MaxMeasurement.js +2 -0
  162. package/dist/client/observation/types/measurement/WalkingHeartRateAverageMeasurement.d.ts +6 -0
  163. package/dist/client/observation/types/measurement/WalkingHeartRateAverageMeasurement.js +2 -0
  164. package/dist/client/observation/types/measurement/index.d.ts +11 -0
  165. package/dist/client/observation/types/measurement/index.js +27 -0
  166. package/dist/client/observation/types/service/ObservationMetadata.d.ts +8 -0
  167. package/dist/client/observation/types/service/ObservationMetadata.js +2 -0
  168. package/dist/client/observation/utils/getDeviceObject.d.ts +3 -0
  169. package/dist/client/observation/utils/getDeviceObject.js +34 -0
  170. package/dist/client/observation/utils/getObservationValueDisplay.d.ts +15 -0
  171. package/dist/client/observation/utils/getObservationValueDisplay.js +25 -0
  172. package/dist/client/observation/utils/index.d.ts +1 -0
  173. package/dist/client/observation/utils/index.js +17 -0
  174. package/dist/client/ovok-client.d.ts +35 -0
  175. package/dist/client/ovok-client.js +85 -0
  176. package/dist/client/questionnaire-response/methods/createQuestionnaireResponseWithObservations.d.ts +3 -0
  177. package/dist/client/questionnaire-response/methods/createQuestionnaireResponseWithObservations.js +28 -0
  178. package/dist/client/questionnaire-response/methods/index.d.ts +1 -0
  179. package/dist/client/questionnaire-response/methods/index.js +17 -0
  180. package/dist/hooks/index.d.ts +7 -0
  181. package/dist/hooks/index.js +58 -0
  182. package/dist/index.d.ts +666 -0
  183. package/dist/index.js +49 -0
  184. package/dist/types/ValidationError.d.ts +6 -0
  185. package/dist/types/ValidationError.js +2 -0
  186. package/dist/types/index.d.ts +17 -0
  187. package/dist/types/index.js +38 -0
  188. package/dist/utils/auth/exchange-code.d.ts +14 -0
  189. package/dist/utils/auth/exchange-code.js +17 -0
  190. package/dist/utils/auth/generate-code-challenge-and-verifier.d.ts +6 -0
  191. package/dist/utils/auth/generate-code-challenge-and-verifier.js +45 -0
  192. package/dist/utils/auth/handle-tenant-code.d.ts +6 -0
  193. package/dist/utils/auth/handle-tenant-code.js +21 -0
  194. package/dist/utils/auth/sha256.d.ts +8 -0
  195. package/dist/utils/auth/sha256.js +300 -0
  196. package/dist/utils/auth/start-login.d.ts +10 -0
  197. package/dist/utils/auth/start-login.js +19 -0
  198. package/dist/utils/index.d.ts +2 -0
  199. package/dist/utils/index.js +18 -0
  200. package/dist/utils/patch/getPatchOperationType.d.ts +2 -0
  201. package/dist/utils/patch/getPatchOperationType.js +16 -0
  202. package/package.json +83 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BloodPressureService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class BloodPressureService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.bloodPressure;
10
+ this.measurementTypeName = "blood pressure";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.SYSTOLIC_BLOOD_PRESSURE,
14
+ additionalCodes: [],
15
+ display: "Systolic Blood Pressure",
16
+ unit: "mmHg",
17
+ valueKey: "systolic",
18
+ toFixed: 0,
19
+ },
20
+ {
21
+ primaryCode: types_1.ObservationCode.DIASTOLIC_BLOOD_PRESSURE,
22
+ additionalCodes: [],
23
+ display: "Diastolic Blood Pressure",
24
+ unit: "mmHg",
25
+ valueKey: "diastolic",
26
+ toFixed: 0,
27
+ },
28
+ {
29
+ primaryCode: types_1.ObservationCode.BLOOD_PRESSURE_HEART_RATE,
30
+ additionalCodes: [
31
+ types_1.ObservationCode.HEART_RATE,
32
+ types_1.ObservationCode.BLOOD_PRESSURE_HEART_RATE,
33
+ ],
34
+ display: "Blood Pressure Heart Rate",
35
+ unit: "bpm",
36
+ valueKey: "heartRate",
37
+ toFixed: 0,
38
+ },
39
+ ];
40
+ }
41
+ getMeasurementDisplay(measurement) {
42
+ const castedMeasurement = this.getCastedMeasurement(measurement);
43
+ return `${castedMeasurement.systolic}/${castedMeasurement.diastolic}`;
44
+ }
45
+ getObservationDisplay(observations) {
46
+ var _a, _b, _c, _d;
47
+ const systolic = (_b = (_a = observations === null || observations === void 0 ? void 0 : observations.find((x) => { var _a, _b, _c; return ((_c = (_b = (_a = x.code) === null || _a === void 0 ? void 0 : _a.coding) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.code) === types_1.ObservationCode.SYSTOLIC_BLOOD_PRESSURE; })) === null || _a === void 0 ? void 0 : _a.valueQuantity) === null || _b === void 0 ? void 0 : _b.value;
48
+ const diastolic = (_d = (_c = observations === null || observations === void 0 ? void 0 : observations.find((x) => { var _a, _b, _c; return ((_c = (_b = (_a = x.code) === null || _a === void 0 ? void 0 : _a.coding) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.code) === types_1.ObservationCode.DIASTOLIC_BLOOD_PRESSURE; })) === null || _c === void 0 ? void 0 : _c.valueQuantity) === null || _d === void 0 ? void 0 : _d.value;
49
+ if (!systolic || !diastolic) {
50
+ return undefined;
51
+ }
52
+ return `${systolic}/${diastolic}`;
53
+ }
54
+ convertSamplesToMeasurement(samples) {
55
+ const systolic = samples.find((x) => x.quantityType === "HKQuantityTypeIdentifierBloodPressureSystolic");
56
+ const diastolic = samples.find((x) => x.quantityType === "HKQuantityTypeIdentifierBloodPressureDiastolic");
57
+ return {
58
+ systolic: systolic === null || systolic === void 0 ? void 0 : systolic.quantity,
59
+ diastolic: diastolic === null || diastolic === void 0 ? void 0 : diastolic.quantity,
60
+ measurementTypeKey: types_1.MeasurementTypeKey.bloodPressure,
61
+ };
62
+ }
63
+ convertRecordToMeasurement(record) {
64
+ const bloodPressureRecord = record;
65
+ return {
66
+ systolic: bloodPressureRecord.systolic.inMillimetersOfMercury,
67
+ diastolic: bloodPressureRecord.diastolic.inMillimetersOfMercury,
68
+ measurementTypeKey: types_1.MeasurementTypeKey.bloodPressure,
69
+ };
70
+ }
71
+ }
72
+ exports.BloodPressureService = BloodPressureService;
@@ -0,0 +1,13 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
3
+ import { Sample } from "../types/generate-measurement/Sample";
4
+ import { BodyTemperatureMeasurement } from "../types/measurement/BodyTemperatureMeasurement";
5
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
6
+ import { BaseObservationService } from "./base-observation-service";
7
+ export declare class BodyTemperatureService extends BaseObservationService<BodyTemperatureMeasurement> {
8
+ protected measurementTypeKey: MeasurementTypeKey;
9
+ protected measurementTypeName: string;
10
+ protected observationMetadata: ObservationMetadata<BodyTemperatureMeasurement>[];
11
+ convertSamplesToMeasurement(samples: Sample[]): BodyTemperatureMeasurement;
12
+ convertRecordToMeasurement(record: RecordResult<RecordType>): BodyTemperatureMeasurement;
13
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BodyTemperatureService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class BodyTemperatureService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.temperature;
10
+ this.measurementTypeName = "body temperature";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.BODY_TEMPERATURE,
14
+ additionalCodes: [],
15
+ display: "Body Temperature",
16
+ unit: "°C",
17
+ valueKey: "bodyTemp",
18
+ toFixed: 0,
19
+ },
20
+ ];
21
+ }
22
+ convertSamplesToMeasurement(samples) {
23
+ return {
24
+ bodyTemp: samples.length > 0 ? samples[0].quantity : undefined,
25
+ measurementTypeKey: types_1.MeasurementTypeKey.temperature,
26
+ };
27
+ }
28
+ convertRecordToMeasurement(record) {
29
+ const bodyTemperatureRecord = record;
30
+ return {
31
+ bodyTemp: bodyTemperatureRecord.temperature.inCelsius,
32
+ measurementTypeKey: types_1.MeasurementTypeKey.temperature,
33
+ };
34
+ }
35
+ }
36
+ exports.BodyTemperatureService = BodyTemperatureService;
@@ -0,0 +1,13 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
3
+ import { Sample } from "../types/generate-measurement/Sample";
4
+ import { BodyWeightMeasurement } from "../types/measurement/BodyWeightMeasurmement";
5
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
6
+ import { BaseObservationService } from "./base-observation-service";
7
+ export declare class BodyWeightService extends BaseObservationService<BodyWeightMeasurement> {
8
+ protected measurementTypeKey: MeasurementTypeKey;
9
+ protected measurementTypeName: string;
10
+ protected observationMetadata: ObservationMetadata<BodyWeightMeasurement>[];
11
+ convertSamplesToMeasurement(samples: Sample[]): BodyWeightMeasurement;
12
+ convertRecordToMeasurement(record: RecordResult<RecordType>): BodyWeightMeasurement;
13
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BodyWeightService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class BodyWeightService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.bodyWeight;
10
+ this.measurementTypeName = "body weight";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.BODY_WEIGHT,
14
+ additionalCodes: [],
15
+ display: "Body Weight",
16
+ unit: "kg",
17
+ valueKey: "bodyWeight",
18
+ toFixed: 2,
19
+ },
20
+ ];
21
+ }
22
+ convertSamplesToMeasurement(samples) {
23
+ return {
24
+ bodyWeight: samples.length > 0 ? samples[0].quantity : undefined,
25
+ measurementTypeKey: types_1.MeasurementTypeKey.bodyWeight,
26
+ };
27
+ }
28
+ convertRecordToMeasurement(record) {
29
+ const weightRecord = record;
30
+ return {
31
+ bodyWeight: weightRecord.weight.inKilograms,
32
+ measurementTypeKey: types_1.MeasurementTypeKey.bodyWeight,
33
+ };
34
+ }
35
+ }
36
+ exports.BodyWeightService = BodyWeightService;
@@ -0,0 +1,10 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { IObservationService } from "../types/IObservationService";
3
+ export declare class ObservationServiceCreator {
4
+ private static instance;
5
+ private services;
6
+ private constructor();
7
+ static getInstance(): ObservationServiceCreator;
8
+ private initializeServices;
9
+ getService(type: MeasurementTypeKey): IObservationService;
10
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObservationServiceCreator = void 0;
4
+ const types_1 = require("../../../types");
5
+ const blood_glucose_1 = require("./blood-glucose");
6
+ const blood_oxygen_1 = require("./blood-oxygen");
7
+ const blood_pressure_1 = require("./blood-pressure");
8
+ const body_temperature_1 = require("./body-temperature");
9
+ const body_weight_1 = require("./body-weight");
10
+ const ecg_1 = require("./ecg");
11
+ const heart_rate_1 = require("./heart-rate");
12
+ const heart_rate_variability_1 = require("./heart-rate-variability");
13
+ const respiratory_rate_1 = require("./respiratory-rate");
14
+ const resting_heart_rate_1 = require("./resting-heart-rate");
15
+ const step_count_1 = require("./step-count");
16
+ const uric_acid_service_1 = require("./uric-acid-service");
17
+ const vo2_max_1 = require("./vo2-max");
18
+ const walking_heart_rate_average_1 = require("./walking-heart-rate-average");
19
+ class ObservationServiceCreator {
20
+ constructor() {
21
+ this.services = new Map();
22
+ this.initializeServices();
23
+ }
24
+ static getInstance() {
25
+ if (!ObservationServiceCreator.instance) {
26
+ ObservationServiceCreator.instance = new ObservationServiceCreator();
27
+ }
28
+ return ObservationServiceCreator.instance;
29
+ }
30
+ initializeServices() {
31
+ this.services.set(types_1.MeasurementTypeKey.bodyWeight, new body_weight_1.BodyWeightService());
32
+ this.services.set(types_1.MeasurementTypeKey.bloodPressure, new blood_pressure_1.BloodPressureService());
33
+ this.services.set(types_1.MeasurementTypeKey.bloodGlucose, new blood_glucose_1.BloodGlucoseService());
34
+ this.services.set(types_1.MeasurementTypeKey.temperature, new body_temperature_1.BodyTemperatureService());
35
+ this.services.set(types_1.MeasurementTypeKey.bloodOxygenPulseRate, new blood_oxygen_1.BloodOxygenService());
36
+ this.services.set(types_1.MeasurementTypeKey.ecg, new ecg_1.EcgService());
37
+ this.services.set(types_1.MeasurementTypeKey.stepCount, new step_count_1.StepCountService());
38
+ this.services.set(types_1.MeasurementTypeKey.restingHeartRate, new resting_heart_rate_1.RestingHeartRateService());
39
+ this.services.set(types_1.MeasurementTypeKey.walkingHeartRateAverage, new walking_heart_rate_average_1.WalkingHeartRateAverageService());
40
+ this.services.set(types_1.MeasurementTypeKey.heartRateVariability, new heart_rate_variability_1.HeartRateVariabilityService());
41
+ this.services.set(types_1.MeasurementTypeKey.heartRate, new heart_rate_1.HeartRateService());
42
+ this.services.set(types_1.MeasurementTypeKey.respiratoryRate, new respiratory_rate_1.RespiratoryRateService());
43
+ this.services.set(types_1.MeasurementTypeKey.vo2Max, new vo2_max_1.Vo2MaxService());
44
+ this.services.set(types_1.MeasurementTypeKey.uricAcid, new uric_acid_service_1.UricAcidService());
45
+ }
46
+ getService(type) {
47
+ const service = this.services.get(type);
48
+ if (!service) {
49
+ throw new Error(`Service not found for type: ${type}`);
50
+ }
51
+ return service;
52
+ }
53
+ }
54
+ exports.ObservationServiceCreator = ObservationServiceCreator;
@@ -0,0 +1,16 @@
1
+ import { Observation } from "@medplum/fhirtypes";
2
+ import { EcgMeasurement, Measurement, MeasurementTypeKey } from "../../../types";
3
+ import { ObservationValue } from "../types/generate-observation-body/ObservationValue";
4
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
5
+ import { BaseObservationService } from "./base-observation-service";
6
+ export declare class EcgService extends BaseObservationService<EcgMeasurement> {
7
+ protected measurementTypeKey: MeasurementTypeKey;
8
+ protected measurementTypeName: string;
9
+ protected observationMetadata: ObservationMetadata<EcgMeasurement>[];
10
+ generateValues(measurement: Measurement): ObservationValue[];
11
+ getAdditionalProperties(measurement: Measurement): Partial<Observation>[];
12
+ getMeasurementDisplay(measurement: Measurement): string;
13
+ getObservationDisplay(observations: Observation[]): string | undefined;
14
+ convertSamplesToMeasurement(): EcgMeasurement;
15
+ convertRecordToMeasurement(): EcgMeasurement;
16
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EcgService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class EcgService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.ecg;
10
+ this.measurementTypeName = "ECG";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.ECG,
14
+ additionalCodes: [],
15
+ display: "ECG",
16
+ unit: "mV",
17
+ valueKey: "diagramPoints",
18
+ toFixed: 0,
19
+ },
20
+ {
21
+ primaryCode: types_1.ObservationCode.ECG_HEART_RATE,
22
+ additionalCodes: [types_1.ObservationCode.HEART_RATE],
23
+ display: "ECG Heart Rate",
24
+ unit: "bpm",
25
+ valueKey: "heartRate",
26
+ toFixed: 0,
27
+ },
28
+ ];
29
+ }
30
+ generateValues(measurement) {
31
+ const castedMeasurement = this.getCastedMeasurement(measurement);
32
+ const values = [];
33
+ const heartRate = castedMeasurement.heartRate;
34
+ const diagramPoints = castedMeasurement.diagramPoints;
35
+ if (diagramPoints === null || diagramPoints === void 0 ? void 0 : diagramPoints.length) {
36
+ values.push({
37
+ valueSampledData: {
38
+ origin: { value: 0, unit: "mV" },
39
+ period: 1,
40
+ dimensions: 1,
41
+ data: diagramPoints.join(" "),
42
+ },
43
+ });
44
+ }
45
+ if (typeof heartRate === "number") {
46
+ const fixedValue = heartRate.toFixed(this.observationMetadata[1].toFixed);
47
+ values.push({
48
+ valueQuantity: {
49
+ value: Number(fixedValue),
50
+ unit: "bpm",
51
+ code: types_1.ObservationCode.ECG_HEART_RATE,
52
+ system: "http://loinc.org",
53
+ },
54
+ });
55
+ }
56
+ return values;
57
+ }
58
+ getAdditionalProperties(measurement) {
59
+ const castedMeasurement = this.getCastedMeasurement(measurement);
60
+ const additionalProperties = [
61
+ {
62
+ effectiveDateTime: new Date().toISOString(),
63
+ interpretation: [
64
+ {
65
+ text: castedMeasurement.diagnosticResult,
66
+ },
67
+ ],
68
+ component: [
69
+ {
70
+ code: {
71
+ text: "measurement-duration",
72
+ coding: [
73
+ {
74
+ code: "measurement-duration",
75
+ },
76
+ ],
77
+ },
78
+ id: "measurement-duration",
79
+ valueInteger: castedMeasurement.duration,
80
+ },
81
+ ],
82
+ },
83
+ {
84
+ effectiveDateTime: new Date().toISOString(),
85
+ },
86
+ ];
87
+ return additionalProperties;
88
+ }
89
+ getMeasurementDisplay(measurement) {
90
+ const castedMeasurement = this.getCastedMeasurement(measurement);
91
+ return castedMeasurement.diagnosticResult || "Unknown";
92
+ }
93
+ getObservationDisplay(observations) {
94
+ var _a, _b, _c;
95
+ return (_c = (_b = (_a = observations[0]) === null || _a === void 0 ? void 0 : _a.interpretation) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.text;
96
+ }
97
+ convertSamplesToMeasurement() {
98
+ return {
99
+ diagnosticResult: types_1.EcgDiagnosticFlag.REGULAR,
100
+ measurementTypeKey: types_1.MeasurementTypeKey.ecg,
101
+ };
102
+ }
103
+ convertRecordToMeasurement() {
104
+ return {
105
+ diagnosticResult: types_1.EcgDiagnosticFlag.REGULAR,
106
+ measurementTypeKey: types_1.MeasurementTypeKey.ecg,
107
+ };
108
+ }
109
+ }
110
+ exports.EcgService = EcgService;
@@ -0,0 +1,13 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
3
+ import { Sample } from "../types/generate-measurement/Sample";
4
+ import { HeartRateVariabilityMeasurement } from "../types/measurement/HeartRateVariabilityMeasurement";
5
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
6
+ import { BaseObservationService } from "./base-observation-service";
7
+ export declare class HeartRateVariabilityService extends BaseObservationService<HeartRateVariabilityMeasurement> {
8
+ protected measurementTypeKey: MeasurementTypeKey;
9
+ protected measurementTypeName: string;
10
+ protected observationMetadata: ObservationMetadata<HeartRateVariabilityMeasurement>[];
11
+ convertSamplesToMeasurement(samples: Sample[]): HeartRateVariabilityMeasurement;
12
+ convertRecordToMeasurement(record: RecordResult<RecordType>): HeartRateVariabilityMeasurement;
13
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeartRateVariabilityService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class HeartRateVariabilityService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.heartRateVariability;
10
+ this.measurementTypeName = "heart rate variability";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.HEART_RATE_VARIABILITY,
14
+ additionalCodes: [],
15
+ display: "Heart Rate Variability",
16
+ unit: "ms",
17
+ valueKey: "heartRateVariability",
18
+ toFixed: 1,
19
+ },
20
+ ];
21
+ }
22
+ convertSamplesToMeasurement(samples) {
23
+ var _a;
24
+ const heartRateVariabilityQuantity = (_a = samples.find((x) => x.quantityType === "HKQuantityTypeIdentifierHeartRateVariabilitySDNN")) === null || _a === void 0 ? void 0 : _a.quantity;
25
+ return {
26
+ heartRateVariability: heartRateVariabilityQuantity,
27
+ measurementTypeKey: types_1.MeasurementTypeKey.heartRateVariability,
28
+ };
29
+ }
30
+ convertRecordToMeasurement(record) {
31
+ const heartRateVariabilityRecord = record;
32
+ return {
33
+ heartRateVariability: heartRateVariabilityRecord.heartRateVariabilityMillis,
34
+ measurementTypeKey: types_1.MeasurementTypeKey.heartRateVariability,
35
+ };
36
+ }
37
+ }
38
+ exports.HeartRateVariabilityService = HeartRateVariabilityService;
@@ -0,0 +1,13 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
3
+ import { Sample } from "../types/generate-measurement/Sample";
4
+ import { HeartRateMeasurement } from "../types/measurement/HeartRateMeasurement";
5
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
6
+ import { BaseObservationService } from "./base-observation-service";
7
+ export declare class HeartRateService extends BaseObservationService<HeartRateMeasurement> {
8
+ protected measurementTypeKey: MeasurementTypeKey;
9
+ protected measurementTypeName: string;
10
+ protected observationMetadata: ObservationMetadata<HeartRateMeasurement>[];
11
+ convertSamplesToMeasurement(samples: Sample[]): HeartRateMeasurement;
12
+ convertRecordToMeasurement(record: RecordResult<RecordType>): HeartRateMeasurement;
13
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeartRateService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class HeartRateService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.heartRate;
10
+ this.measurementTypeName = "heart rate";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.HEART_RATE,
14
+ additionalCodes: [],
15
+ display: "Heart Rate",
16
+ unit: "bpm",
17
+ valueKey: "heartRate",
18
+ toFixed: 0,
19
+ },
20
+ ];
21
+ }
22
+ convertSamplesToMeasurement(samples) {
23
+ var _a;
24
+ const heartRateQuantity = (_a = samples.find((x) => x.quantityType === "HKQuantityTypeIdentifierHeartRate")) === null || _a === void 0 ? void 0 : _a.quantity;
25
+ return {
26
+ heartRate: heartRateQuantity,
27
+ measurementTypeKey: types_1.MeasurementTypeKey.heartRate,
28
+ };
29
+ }
30
+ convertRecordToMeasurement(record) {
31
+ var _a, _b;
32
+ const heartRateRecord = record;
33
+ return {
34
+ heartRate: (_b = (_a = heartRateRecord.samples) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.beatsPerMinute,
35
+ measurementTypeKey: types_1.MeasurementTypeKey.heartRate,
36
+ };
37
+ }
38
+ }
39
+ exports.HeartRateService = HeartRateService;
@@ -0,0 +1 @@
1
+ export * from "./creator";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./creator"), exports);
@@ -0,0 +1,13 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
3
+ import { Sample } from "../types/generate-measurement/Sample";
4
+ import { RespiratoryRateMeasurement } from "../types/measurement/RespiratoryRateMeasurement";
5
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
6
+ import { BaseObservationService } from "./base-observation-service";
7
+ export declare class RespiratoryRateService extends BaseObservationService<RespiratoryRateMeasurement> {
8
+ protected measurementTypeKey: MeasurementTypeKey;
9
+ protected measurementTypeName: string;
10
+ protected observationMetadata: ObservationMetadata<RespiratoryRateMeasurement>[];
11
+ convertSamplesToMeasurement(samples: Sample[]): RespiratoryRateMeasurement;
12
+ convertRecordToMeasurement(record: RecordResult<RecordType>): RespiratoryRateMeasurement;
13
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RespiratoryRateService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class RespiratoryRateService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.respiratoryRate;
10
+ this.measurementTypeName = "respiratory rate";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.RESPIRATORY_RATE,
14
+ additionalCodes: [],
15
+ display: "Respiratory Rate",
16
+ unit: "breaths/min",
17
+ valueKey: "respiratoryRate",
18
+ toFixed: 1,
19
+ },
20
+ ];
21
+ }
22
+ convertSamplesToMeasurement(samples) {
23
+ var _a;
24
+ const respiratoryRateQuantity = (_a = samples.find((x) => x.quantityType === "HKQuantityTypeIdentifierRespiratoryRate")) === null || _a === void 0 ? void 0 : _a.quantity;
25
+ return {
26
+ respiratoryRate: respiratoryRateQuantity,
27
+ measurementTypeKey: types_1.MeasurementTypeKey.respiratoryRate,
28
+ };
29
+ }
30
+ convertRecordToMeasurement(record) {
31
+ const respiratoryRateRecord = record;
32
+ return {
33
+ respiratoryRate: respiratoryRateRecord.rate,
34
+ measurementTypeKey: types_1.MeasurementTypeKey.respiratoryRate,
35
+ };
36
+ }
37
+ }
38
+ exports.RespiratoryRateService = RespiratoryRateService;
@@ -0,0 +1,13 @@
1
+ import { MeasurementTypeKey } from "../../../types";
2
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
3
+ import { Sample } from "../types/generate-measurement/Sample";
4
+ import { RestingHeartRateMeasurement } from "../types/measurement/RestingHeartRateMeasurement";
5
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
6
+ import { BaseObservationService } from "./base-observation-service";
7
+ export declare class RestingHeartRateService extends BaseObservationService<RestingHeartRateMeasurement> {
8
+ protected measurementTypeKey: MeasurementTypeKey;
9
+ protected measurementTypeName: string;
10
+ protected observationMetadata: ObservationMetadata<RestingHeartRateMeasurement>[];
11
+ convertSamplesToMeasurement(samples: Sample[]): RestingHeartRateMeasurement;
12
+ convertRecordToMeasurement(record: RecordResult<RecordType>): RestingHeartRateMeasurement;
13
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RestingHeartRateService = void 0;
4
+ const types_1 = require("../../../types");
5
+ const base_observation_service_1 = require("./base-observation-service");
6
+ class RestingHeartRateService extends base_observation_service_1.BaseObservationService {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.measurementTypeKey = types_1.MeasurementTypeKey.restingHeartRate;
10
+ this.measurementTypeName = "resting heart rate";
11
+ this.observationMetadata = [
12
+ {
13
+ primaryCode: types_1.ObservationCode.RESTING_HEART_RATE,
14
+ additionalCodes: [],
15
+ display: "Resting Heart Rate",
16
+ unit: "bpm",
17
+ valueKey: "restingHeartRate",
18
+ toFixed: 0,
19
+ },
20
+ ];
21
+ }
22
+ convertSamplesToMeasurement(samples) {
23
+ var _a;
24
+ const restingHeartRateQuantity = (_a = samples.find((x) => x.quantityType === "HKQuantityTypeIdentifierRestingHeartRate")) === null || _a === void 0 ? void 0 : _a.quantity;
25
+ return {
26
+ restingHeartRate: restingHeartRateQuantity,
27
+ measurementTypeKey: types_1.MeasurementTypeKey.restingHeartRate,
28
+ };
29
+ }
30
+ convertRecordToMeasurement(record) {
31
+ const restingHeartRateRecord = record;
32
+ return {
33
+ restingHeartRate: restingHeartRateRecord.beatsPerMinute,
34
+ measurementTypeKey: types_1.MeasurementTypeKey.restingHeartRate,
35
+ };
36
+ }
37
+ }
38
+ exports.RestingHeartRateService = RestingHeartRateService;
@@ -0,0 +1,15 @@
1
+ import { Observation } from "@medplum/fhirtypes";
2
+ import { Measurement, MeasurementTypeKey } from "../../../types";
3
+ import { RecordResult, RecordType } from "../types/generate-measurement/HealthConnectTypes";
4
+ import { Sample } from "../types/generate-measurement/Sample";
5
+ import { StepCountMeasurement } from "../types/measurement/StepCountMeasurement";
6
+ import { ObservationMetadata } from "../types/service/ObservationMetadata";
7
+ import { BaseObservationService } from "./base-observation-service";
8
+ export declare class StepCountService extends BaseObservationService<StepCountMeasurement> {
9
+ protected measurementTypeKey: MeasurementTypeKey;
10
+ protected measurementTypeName: string;
11
+ protected observationMetadata: ObservationMetadata<StepCountMeasurement>[];
12
+ getAdditionalProperties(measurement: Measurement): Partial<Observation>[];
13
+ convertSamplesToMeasurement(samples: Sample[]): StepCountMeasurement;
14
+ convertRecordToMeasurement(record: RecordResult<RecordType>): StepCountMeasurement;
15
+ }