@awell-health/awell-extensions 1.0.116 → 1.0.118

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 (42) hide show
  1. package/dist/extensions/docuSign/settings.d.ts +2 -2
  2. package/dist/extensions/healthie/actions/createMetricEntry/config/fields.d.ts +38 -0
  3. package/dist/extensions/healthie/actions/createMetricEntry/config/fields.js +34 -0
  4. package/dist/extensions/healthie/actions/createMetricEntry/config/fields.js.map +1 -0
  5. package/dist/extensions/healthie/actions/createMetricEntry/config/index.d.ts +1 -0
  6. package/dist/extensions/healthie/actions/createMetricEntry/config/index.js +7 -0
  7. package/dist/extensions/healthie/actions/createMetricEntry/config/index.js.map +1 -0
  8. package/dist/extensions/healthie/actions/createMetricEntry/createMetricEntry.d.ts +4 -0
  9. package/dist/extensions/healthie/actions/createMetricEntry/createMetricEntry.js +81 -0
  10. package/dist/extensions/healthie/actions/createMetricEntry/createMetricEntry.js.map +1 -0
  11. package/dist/extensions/healthie/actions/createMetricEntry/createMetricEntry.test.d.ts +1 -0
  12. package/dist/extensions/healthie/actions/createMetricEntry/createMetricEntry.test.js +35 -0
  13. package/dist/extensions/healthie/actions/createMetricEntry/createMetricEntry.test.js.map +1 -0
  14. package/dist/extensions/healthie/actions/createMetricEntry/index.d.ts +1 -0
  15. package/dist/extensions/healthie/actions/createMetricEntry/index.js +6 -0
  16. package/dist/extensions/healthie/actions/createMetricEntry/index.js.map +1 -0
  17. package/dist/extensions/healthie/actions/index.d.ts +75 -8
  18. package/dist/extensions/healthie/actions/index.js +4 -0
  19. package/dist/extensions/healthie/actions/index.js.map +1 -1
  20. package/dist/extensions/healthie/actions/updatePatientQuickNote/config/fields.d.ts +36 -0
  21. package/dist/extensions/healthie/actions/updatePatientQuickNote/config/fields.js +32 -0
  22. package/dist/extensions/healthie/actions/updatePatientQuickNote/config/fields.js.map +1 -0
  23. package/dist/extensions/healthie/actions/updatePatientQuickNote/config/index.d.ts +1 -0
  24. package/dist/extensions/healthie/actions/updatePatientQuickNote/config/index.js +7 -0
  25. package/dist/extensions/healthie/actions/updatePatientQuickNote/config/index.js.map +1 -0
  26. package/dist/extensions/healthie/actions/updatePatientQuickNote/index.d.ts +1 -0
  27. package/dist/extensions/healthie/actions/updatePatientQuickNote/index.js +6 -0
  28. package/dist/extensions/healthie/actions/updatePatientQuickNote/index.js.map +1 -0
  29. package/dist/extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.d.ts +4 -0
  30. package/dist/extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.js +91 -0
  31. package/dist/extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.js.map +1 -0
  32. package/dist/extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.test.d.ts +1 -0
  33. package/dist/extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.test.js +35 -0
  34. package/dist/extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.test.js.map +1 -0
  35. package/dist/extensions/healthie/gql/sdk.d.ts +5569 -1709
  36. package/dist/extensions/healthie/gql/sdk.js +28 -1
  37. package/dist/extensions/healthie/gql/sdk.js.map +1 -1
  38. package/dist/extensions/healthie/settings.d.ts +11 -0
  39. package/dist/extensions/healthie/settings.js +10 -1
  40. package/dist/extensions/healthie/settings.js.map +1 -1
  41. package/dist/extensions/markdown.json +2 -2
  42. package/package.json +1 -1
@@ -51,16 +51,16 @@ export declare const SettingsValidationSchema: z.ZodObject<{
51
51
  baseApiUrl: z.ZodEffects<z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>, string, string | undefined>;
52
52
  returnUrlTemplate: z.ZodEffects<z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>, string, string | undefined>;
53
53
  }, "strip", z.ZodTypeAny, {
54
+ userId: string;
54
55
  integrationKey: string;
55
56
  accountId: string;
56
- userId: string;
57
57
  rsaKey: string;
58
58
  baseApiUrl: string;
59
59
  returnUrlTemplate: string;
60
60
  }, {
61
+ userId: string;
61
62
  integrationKey: string;
62
63
  accountId: string;
63
- userId: string;
64
64
  rsaKey: string;
65
65
  baseApiUrl?: string | undefined;
66
66
  returnUrlTemplate?: string | undefined;
@@ -0,0 +1,38 @@
1
+ import { FieldType } from '@awell-health/extensions-core';
2
+ import { z } from 'zod';
3
+ export declare const fields: {
4
+ userId: {
5
+ id: string;
6
+ label: string;
7
+ description: string;
8
+ type: FieldType.STRING;
9
+ required: true;
10
+ };
11
+ category: {
12
+ id: string;
13
+ label: string;
14
+ description: string;
15
+ type: FieldType.STRING;
16
+ required: true;
17
+ };
18
+ metricStat: {
19
+ id: string;
20
+ label: string;
21
+ description: string;
22
+ type: FieldType.NUMERIC;
23
+ required: true;
24
+ };
25
+ };
26
+ export declare const FieldsValidationSchema: z.ZodObject<{
27
+ userId: z.ZodString;
28
+ category: z.ZodString;
29
+ metricStat: z.ZodNumber;
30
+ }, "strip", z.ZodTypeAny, {
31
+ category: string;
32
+ userId: string;
33
+ metricStat: number;
34
+ }, {
35
+ category: string;
36
+ userId: string;
37
+ metricStat: number;
38
+ }>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldsValidationSchema = exports.fields = void 0;
4
+ const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const zod_1 = require("zod");
6
+ exports.fields = {
7
+ userId: {
8
+ id: 'userId',
9
+ label: 'User ID',
10
+ description: 'The ID of the patient that this entry should be attached to',
11
+ type: extensions_core_1.FieldType.STRING,
12
+ required: true,
13
+ },
14
+ category: {
15
+ id: 'category',
16
+ label: 'Category',
17
+ description: 'Specifies what kind of metric we are storing',
18
+ type: extensions_core_1.FieldType.STRING,
19
+ required: true,
20
+ },
21
+ metricStat: {
22
+ id: 'metricStat',
23
+ label: 'Metric stat',
24
+ description: 'The actual data value for the metric',
25
+ type: extensions_core_1.FieldType.NUMERIC,
26
+ required: true,
27
+ },
28
+ };
29
+ exports.FieldsValidationSchema = zod_1.z.object({
30
+ userId: zod_1.z.string().nonempty(),
31
+ category: zod_1.z.string().nonempty(),
32
+ metricStat: zod_1.z.number(),
33
+ });
34
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createMetricEntry/config/fields.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AACrE,6BAAwC;AAE3B,QAAA,MAAM,GAAG;IACpB,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,6DAA6D;QAC1E,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE,2BAAS,CAAC,OAAO;QACvB,QAAQ,EAAE,IAAI;KACf;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;CAC2B,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { fields, FieldsValidationSchema } from './fields';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldsValidationSchema = exports.fields = void 0;
4
+ var fields_1 = require("./fields");
5
+ Object.defineProperty(exports, "fields", { enumerable: true, get: function () { return fields_1.fields; } });
6
+ Object.defineProperty(exports, "FieldsValidationSchema", { enumerable: true, get: function () { return fields_1.FieldsValidationSchema; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createMetricEntry/config/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyD;AAAhD,gGAAA,MAAM,OAAA;AAAE,gHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { type Action } from '@awell-health/extensions-core';
2
+ import { type settings } from '../../settings';
3
+ import { fields } from './config';
4
+ export declare const createMetricEntry: Action<typeof fields, typeof settings>;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMetricEntry = void 0;
4
+ const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const extensions_core_2 = require("@awell-health/extensions-core");
6
+ const zod_1 = require("zod");
7
+ const zod_validation_error_1 = require("zod-validation-error");
8
+ const errors_1 = require("../../errors");
9
+ const sdk_1 = require("../../gql/sdk");
10
+ const graphqlClient_1 = require("../../graphqlClient");
11
+ const settings_1 = require("../../settings");
12
+ const config_1 = require("./config");
13
+ exports.createMetricEntry = {
14
+ key: 'createMetricEntry',
15
+ category: extensions_core_2.Category.EHR_INTEGRATIONS,
16
+ title: 'Create metric entry',
17
+ description: 'Create a metric entry for a patient in Healthie.',
18
+ fields: config_1.fields,
19
+ previewable: true,
20
+ onActivityCreated: async (payload, onComplete, onError) => {
21
+ try {
22
+ const { settings, fields: { userId, category, metricStat }, } = (0, extensions_core_1.validate)({
23
+ schema: zod_1.z.object({
24
+ settings: settings_1.settingsValidationSchema,
25
+ fields: config_1.FieldsValidationSchema,
26
+ }),
27
+ payload,
28
+ });
29
+ const client = (0, graphqlClient_1.initialiseClient)(settings);
30
+ if (client != null) {
31
+ const sdk = (0, sdk_1.getSdk)(client);
32
+ await sdk.createEntry({
33
+ metric_stat: String(metricStat),
34
+ user_id: userId,
35
+ type: 'MetricEntry',
36
+ category,
37
+ });
38
+ await onComplete({});
39
+ }
40
+ }
41
+ catch (err) {
42
+ if (err instanceof zod_1.ZodError) {
43
+ const error = (0, zod_validation_error_1.fromZodError)(err);
44
+ await onError({
45
+ events: [
46
+ {
47
+ date: new Date().toISOString(),
48
+ text: { en: error.message },
49
+ error: {
50
+ category: 'WRONG_INPUT',
51
+ message: error.message,
52
+ },
53
+ },
54
+ ],
55
+ });
56
+ }
57
+ else if (err instanceof errors_1.HealthieError) {
58
+ const errors = (0, errors_1.mapHealthieToActivityError)(err.errors);
59
+ await onError({
60
+ events: errors,
61
+ });
62
+ }
63
+ else {
64
+ const error = err;
65
+ await onError({
66
+ events: [
67
+ {
68
+ date: new Date().toISOString(),
69
+ text: { en: 'Healthie API reported an error' },
70
+ error: {
71
+ category: 'SERVER_ERROR',
72
+ message: error.message,
73
+ },
74
+ },
75
+ ],
76
+ });
77
+ }
78
+ }
79
+ },
80
+ };
81
+ //# sourceMappingURL=createMetricEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMetricEntry.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createMetricEntry/createMetricEntry.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AACrE,mEAAwD;AACxD,6BAAiC;AACjC,+DAAmD;AACnD,yCAAwE;AACxE,uCAAsC;AACtC,uDAAsD;AACtD,6CAAwE;AACxE,qCAAyD;AAE5C,QAAA,iBAAiB,GAA2C;IACvE,GAAG,EAAE,mBAAmB;IACxB,QAAQ,EAAE,0BAAQ,CAAC,gBAAgB;IACnC,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,kDAAkD;IAC/D,MAAM,EAAN,eAAM;IACN,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAiB,EAAE;QACvE,IAAI;YACF,MAAM,EACJ,QAAQ,EACR,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GACzC,GAAG,IAAA,0BAAQ,EAAC;gBACX,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC;oBACf,QAAQ,EAAE,mCAAwB;oBAClC,MAAM,EAAE,+BAAsB;iBAC/B,CAAC;gBACF,OAAO;aACR,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,IAAA,gCAAgB,EAAC,QAAQ,CAAC,CAAA;YACzC,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,MAAM,GAAG,GAAG,IAAA,YAAM,EAAC,MAAM,CAAC,CAAA;gBAC1B,MAAM,GAAG,CAAC,WAAW,CAAC;oBACpB,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;oBAC/B,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,aAAa;oBACnB,QAAQ;iBACT,CAAC,CAAA;gBACF,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;aACrB;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,cAAQ,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAA,mCAAY,EAAC,GAAG,CAAC,CAAA;gBAC/B,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE;4BAC3B,KAAK,EAAE;gCACL,QAAQ,EAAE,aAAa;gCACvB,OAAO,EAAE,KAAK,CAAC,OAAO;6BACvB;yBACF;qBACF;iBACF,CAAC,CAAA;aACH;iBAAM,IAAI,GAAG,YAAY,sBAAa,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAA,mCAA0B,EAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACrD,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE,MAAM;iBACf,CAAC,CAAA;aACH;iBAAM;gBACL,MAAM,KAAK,GAAG,GAAY,CAAA;gBAC1B,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,gCAAgC,EAAE;4BAC9C,KAAK,EAAE;gCACL,QAAQ,EAAE,cAAc;gCACxB,OAAO,EAAE,KAAK,CAAC,OAAO;6BACvB;yBACF;qBACF;iBACF,CAAC,CAAA;aACH;SACF;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tests_1 = require("../../../../src/tests");
4
+ const sdk_1 = require("../../gql/sdk");
5
+ const sdk_2 = require("../../gql/__mocks__/sdk");
6
+ const createMetricEntry_1 = require("../createMetricEntry");
7
+ jest.mock('../../gql/sdk');
8
+ jest.mock('../../graphqlClient');
9
+ describe('createMetricEntry action', () => {
10
+ const onComplete = jest.fn();
11
+ const onError = jest.fn();
12
+ beforeAll(() => {
13
+ ;
14
+ sdk_1.getSdk.mockImplementation(sdk_2.mockGetSdk);
15
+ });
16
+ beforeEach(() => {
17
+ jest.clearAllMocks();
18
+ });
19
+ test('Should create a metric entry', async () => {
20
+ await createMetricEntry_1.createMetricEntry.onActivityCreated((0, tests_1.generateTestPayload)({
21
+ fields: {
22
+ userId: '60',
23
+ category: 'Weight',
24
+ metricStat: 182,
25
+ },
26
+ settings: {
27
+ apiKey: 'apiKey',
28
+ apiUrl: 'test-url',
29
+ },
30
+ }), onComplete, onError);
31
+ expect(onComplete).toBeCalledTimes(1);
32
+ expect(onError).toBeCalledTimes(0);
33
+ });
34
+ });
35
+ //# sourceMappingURL=createMetricEntry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMetricEntry.test.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createMetricEntry/createMetricEntry.test.ts"],"names":[],"mappings":";;AAAA,iDAA2D;AAC3D,uCAAsC;AACtC,iDAAoD;AACpD,4DAAwD;AAExD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;AAEhC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,CAAC;QAAC,YAAoB,CAAC,kBAAkB,CAAC,gBAAU,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,qCAAiB,CAAC,iBAAiB,CACvC,IAAA,2BAAmB,EAAC;YAClB,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,GAAG;aAChB;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;aACnB;SACF,CAAC,EACF,UAAU,EACV,OAAO,CACR,CAAA;QACD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { createMetricEntry } from './createMetricEntry';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMetricEntry = void 0;
4
+ var createMetricEntry_1 = require("./createMetricEntry");
5
+ Object.defineProperty(exports, "createMetricEntry", { enumerable: true, get: function () { return createMetricEntry_1.createMetricEntry; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createMetricEntry/index.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA"}
@@ -255,10 +255,6 @@ export declare const actions: {
255
255
  description: string;
256
256
  type: import("@awell-health/extensions-core").FieldType.BOOLEAN;
257
257
  };
258
- /**
259
- * Specs of this API endpoint are unclear so we are not sure what
260
- * functional value it delivers in the current state. Needs to be revisited.
261
- **/
262
258
  provider_id: {
263
259
  id: string;
264
260
  label: string;
@@ -538,10 +534,7 @@ export declare const actions: {
538
534
  description: string;
539
535
  type: import("@awell-health/extensions-core").FieldType.NUMERIC;
540
536
  required: false;
541
- }; /**
542
- * There is bug in Healthie that prevents linking an address with a patient
543
- * Waiting for fix
544
- **/
537
+ };
545
538
  minute: {
546
539
  id: string;
547
540
  label: string;
@@ -776,4 +769,78 @@ export declare const actions: {
776
769
  description: string;
777
770
  };
778
771
  }, string, never>;
772
+ updatePatientQuickNote: import("@awell-health/extensions-core").Action<{
773
+ patientId: {
774
+ id: string;
775
+ label: string;
776
+ description: string;
777
+ type: import("@awell-health/extensions-core").FieldType.STRING;
778
+ required: true;
779
+ };
780
+ quickNote: {
781
+ id: string;
782
+ label: string;
783
+ description: string;
784
+ type: import("@awell-health/extensions-core").FieldType.HTML;
785
+ };
786
+ overwrite: {
787
+ id: string;
788
+ label: string;
789
+ description: string;
790
+ type: import("@awell-health/extensions-core").FieldType.BOOLEAN;
791
+ };
792
+ }, {
793
+ apiUrl: {
794
+ key: string;
795
+ label: string;
796
+ obfuscated: false;
797
+ required: true;
798
+ description: string;
799
+ };
800
+ apiKey: {
801
+ key: string;
802
+ label: string;
803
+ obfuscated: true;
804
+ required: true;
805
+ description: string;
806
+ };
807
+ }, string, never>;
808
+ createMetricEntry: import("@awell-health/extensions-core").Action<{
809
+ userId: {
810
+ id: string;
811
+ label: string;
812
+ description: string;
813
+ type: import("@awell-health/extensions-core").FieldType.STRING;
814
+ required: true;
815
+ };
816
+ category: {
817
+ id: string;
818
+ label: string;
819
+ description: string;
820
+ type: import("@awell-health/extensions-core").FieldType.STRING;
821
+ required: true;
822
+ };
823
+ metricStat: {
824
+ id: string;
825
+ label: string;
826
+ description: string;
827
+ type: import("@awell-health/extensions-core").FieldType.NUMERIC;
828
+ required: true;
829
+ };
830
+ }, {
831
+ apiUrl: {
832
+ key: string;
833
+ label: string;
834
+ obfuscated: false;
835
+ required: true;
836
+ description: string;
837
+ };
838
+ apiKey: {
839
+ key: string;
840
+ label: string;
841
+ obfuscated: true;
842
+ required: true;
843
+ description: string;
844
+ };
845
+ }, string, never>;
779
846
  };
@@ -20,6 +20,8 @@ const assignPatientToGroup_1 = require("./assignPatientToGroup");
20
20
  const updatePatient_1 = require("./updatePatient");
21
21
  const getPatient_1 = require("./getPatient");
22
22
  const applyTagToPatient_1 = require("./applyTagToPatient");
23
+ const updatePatientQuickNote_1 = require("./updatePatientQuickNote");
24
+ const createMetricEntry_1 = require("./createMetricEntry");
23
25
  exports.actions = {
24
26
  createAppointment: createAppointment_1.createAppointment,
25
27
  createTask: createTask_1.createTask,
@@ -49,5 +51,7 @@ exports.actions = {
49
51
  deleteTask: deleteTask_1.deleteTask,
50
52
  completeTask: completeTask_1.completeTask,
51
53
  assignPatientToGroup: assignPatientToGroup_1.assignPatientToGroup,
54
+ updatePatientQuickNote: updatePatientQuickNote_1.updatePatientQuickNote,
55
+ createMetricEntry: createMetricEntry_1.createMetricEntry,
52
56
  };
53
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../extensions/healthie/actions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAuD;AACvD,wDAAoD;AACpD,qDAAiD;AACjD,uDAAmD;AACnD,mDAA+C;AAC/C,iEAA6D;AAC7D,6DAAyD;AACzD,2EAAuE;AACvE,qDAAiD;AACjD,oDAAoD;AACpD,mEAA+D;AAC/D,2DAAuD;AACvD,2DAAuD;AACvD,6CAAyC;AACzC,iDAA6C;AAC7C,iEAA6D;AAC7D,mDAA+C;AAC/C,6CAAyC;AACzC,2DAAuD;AAE1C,QAAA,OAAO,GAAG;IACrB,iBAAiB,EAAjB,qCAAiB;IACjB,UAAU,EAAV,uBAAU;IACV,cAAc,EAAd,+BAAc;IACd,UAAU,EAAV,uBAAU;IACV,eAAe,EAAf,iCAAe;IACf,aAAa,EAAb,6BAAa;IACb,aAAa,EAAb,6BAAa;IACb,iBAAiB,EAAjB,qCAAiB;IACjB,oBAAoB,EAApB,2CAAoB;IACpB,kBAAkB,EAAlB,uCAAkB;IAClB,yBAAyB,EAAzB,qDAAyB;IACzB,cAAc,EAAd,+BAAc;IACd;;;QAGI;IACJ,kBAAkB;IAClB,qBAAqB,EAArB,6CAAqB;IACrB,iBAAiB,EAAjB,qCAAiB;IACjB,iBAAiB,EAAjB,qCAAiB;IACjB;;;QAGI;IACJ,sBAAsB;IACtB,UAAU,EAAV,uBAAU;IACV,YAAY,EAAZ,2BAAY;IACZ,oBAAoB,EAApB,2CAAoB;CACrB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../extensions/healthie/actions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAuD;AACvD,wDAAoD;AACpD,qDAAiD;AACjD,uDAAmD;AACnD,mDAA+C;AAC/C,iEAA6D;AAC7D,6DAAyD;AACzD,2EAAuE;AACvE,qDAAiD;AACjD,oDAAoD;AACpD,mEAA+D;AAC/D,2DAAuD;AACvD,2DAAuD;AACvD,6CAAyC;AACzC,iDAA6C;AAC7C,iEAA6D;AAC7D,mDAA+C;AAC/C,6CAAyC;AACzC,2DAAuD;AACvD,qEAAiE;AACjE,2DAAuD;AAE1C,QAAA,OAAO,GAAG;IACrB,iBAAiB,EAAjB,qCAAiB;IACjB,UAAU,EAAV,uBAAU;IACV,cAAc,EAAd,+BAAc;IACd,UAAU,EAAV,uBAAU;IACV,eAAe,EAAf,iCAAe;IACf,aAAa,EAAb,6BAAa;IACb,aAAa,EAAb,6BAAa;IACb,iBAAiB,EAAjB,qCAAiB;IACjB,oBAAoB,EAApB,2CAAoB;IACpB,kBAAkB,EAAlB,uCAAkB;IAClB,yBAAyB,EAAzB,qDAAyB;IACzB,cAAc,EAAd,+BAAc;IACd;;;QAGI;IACJ,kBAAkB;IAClB,qBAAqB,EAArB,6CAAqB;IACrB,iBAAiB,EAAjB,qCAAiB;IACjB,iBAAiB,EAAjB,qCAAiB;IACjB;;;QAGI;IACJ,sBAAsB;IACtB,UAAU,EAAV,uBAAU;IACV,YAAY,EAAZ,2BAAY;IACZ,oBAAoB,EAApB,2CAAoB;IACpB,sBAAsB,EAAtB,+CAAsB;IACtB,iBAAiB,EAAjB,qCAAiB;CAClB,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { FieldType } from '@awell-health/extensions-core';
2
+ import { z } from 'zod';
3
+ export declare const fields: {
4
+ patientId: {
5
+ id: string;
6
+ label: string;
7
+ description: string;
8
+ type: FieldType.STRING;
9
+ required: true;
10
+ };
11
+ quickNote: {
12
+ id: string;
13
+ label: string;
14
+ description: string;
15
+ type: FieldType.HTML;
16
+ };
17
+ overwrite: {
18
+ id: string;
19
+ label: string;
20
+ description: string;
21
+ type: FieldType.BOOLEAN;
22
+ };
23
+ };
24
+ export declare const FieldsValidationSchema: z.ZodObject<{
25
+ patientId: z.ZodString;
26
+ quickNote: z.ZodString;
27
+ overwrite: z.ZodBoolean;
28
+ }, "strip", z.ZodTypeAny, {
29
+ patientId: string;
30
+ quickNote: string;
31
+ overwrite: boolean;
32
+ }, {
33
+ patientId: string;
34
+ quickNote: string;
35
+ overwrite: boolean;
36
+ }>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldsValidationSchema = exports.fields = void 0;
4
+ const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const zod_1 = require("zod");
6
+ exports.fields = {
7
+ patientId: {
8
+ id: 'patientId',
9
+ label: 'Patient ID',
10
+ description: 'The ID of the patient in Healthie to update the quick note for',
11
+ type: extensions_core_1.FieldType.STRING,
12
+ required: true,
13
+ },
14
+ quickNote: {
15
+ id: 'quickNote',
16
+ label: 'Quick note',
17
+ description: '',
18
+ type: extensions_core_1.FieldType.HTML,
19
+ },
20
+ overwrite: {
21
+ id: 'overwrite',
22
+ label: 'Overwrite quick note?',
23
+ description: 'If true, the quick note will be replaced with the new content. If false, the content will be appended to the current content in the quick note.',
24
+ type: extensions_core_1.FieldType.BOOLEAN,
25
+ },
26
+ };
27
+ exports.FieldsValidationSchema = zod_1.z.object({
28
+ patientId: zod_1.z.string().nonempty(),
29
+ quickNote: zod_1.z.string().nonempty(),
30
+ overwrite: zod_1.z.boolean(),
31
+ });
32
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/updatePatientQuickNote/config/fields.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AACrE,6BAAwC;AAE3B,QAAA,MAAM,GAAG;IACpB,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,gEAAgE;QAClE,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,2BAAS,CAAC,IAAI;KACrB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,iJAAiJ;QACnJ,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE;CAC2B,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { fields, FieldsValidationSchema } from './fields';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldsValidationSchema = exports.fields = void 0;
4
+ var fields_1 = require("./fields");
5
+ Object.defineProperty(exports, "fields", { enumerable: true, get: function () { return fields_1.fields; } });
6
+ Object.defineProperty(exports, "FieldsValidationSchema", { enumerable: true, get: function () { return fields_1.FieldsValidationSchema; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/updatePatientQuickNote/config/index.ts"],"names":[],"mappings":";;;AAAA,mCAAyD;AAAhD,gGAAA,MAAM,OAAA;AAAE,gHAAA,sBAAsB,OAAA"}
@@ -0,0 +1 @@
1
+ export { updatePatientQuickNote } from './updatePatientQuickNote';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updatePatientQuickNote = void 0;
4
+ var updatePatientQuickNote_1 = require("./updatePatientQuickNote");
5
+ Object.defineProperty(exports, "updatePatientQuickNote", { enumerable: true, get: function () { return updatePatientQuickNote_1.updatePatientQuickNote; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/updatePatientQuickNote/index.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AAAxD,gIAAA,sBAAsB,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { type Action } from '@awell-health/extensions-core';
2
+ import { type settings } from '../../settings';
3
+ import { fields } from './config';
4
+ export declare const updatePatientQuickNote: Action<typeof fields, typeof settings>;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updatePatientQuickNote = void 0;
4
+ const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const extensions_core_2 = require("@awell-health/extensions-core");
6
+ const sdk_1 = require("../../gql/sdk");
7
+ const graphqlClient_1 = require("../../graphqlClient");
8
+ const settings_1 = require("../../settings");
9
+ const errors_1 = require("../../errors");
10
+ const zod_1 = require("zod");
11
+ const zod_validation_error_1 = require("zod-validation-error");
12
+ const config_1 = require("./config");
13
+ exports.updatePatientQuickNote = {
14
+ key: 'updatePatientQuickNote',
15
+ category: extensions_core_2.Category.EHR_INTEGRATIONS,
16
+ title: 'Update patient quick note',
17
+ description: 'Update a patient quick note in Healthie.',
18
+ fields: config_1.fields,
19
+ previewable: true,
20
+ onActivityCreated: async (payload, onComplete, onError) => {
21
+ var _a, _b;
22
+ try {
23
+ const { settings, fields: { patientId, overwrite, quickNote }, } = (0, extensions_core_1.validate)({
24
+ schema: zod_1.z.object({
25
+ settings: settings_1.settingsValidationSchema,
26
+ fields: config_1.FieldsValidationSchema,
27
+ }),
28
+ payload,
29
+ });
30
+ const client = (0, graphqlClient_1.initialiseClient)(settings);
31
+ if (client != null) {
32
+ const sdk = (0, sdk_1.getSdk)(client);
33
+ if (overwrite) {
34
+ await sdk.updatePatient({
35
+ input: { id: patientId, quick_notes: quickNote },
36
+ });
37
+ }
38
+ else {
39
+ const { data } = await sdk.getUser({ id: patientId });
40
+ const currentNotes = (_b = (_a = data === null || data === void 0 ? void 0 : data.user) === null || _a === void 0 ? void 0 : _a.quick_notes) !== null && _b !== void 0 ? _b : '';
41
+ await sdk.updatePatient({
42
+ input: {
43
+ id: patientId,
44
+ quick_notes: currentNotes.concat(quickNote),
45
+ },
46
+ });
47
+ }
48
+ await onComplete({});
49
+ }
50
+ }
51
+ catch (err) {
52
+ if (err instanceof zod_1.ZodError) {
53
+ const error = (0, zod_validation_error_1.fromZodError)(err);
54
+ await onError({
55
+ events: [
56
+ {
57
+ date: new Date().toISOString(),
58
+ text: { en: error.message },
59
+ error: {
60
+ category: 'WRONG_INPUT',
61
+ message: error.message,
62
+ },
63
+ },
64
+ ],
65
+ });
66
+ }
67
+ else if (err instanceof errors_1.HealthieError) {
68
+ const errors = (0, errors_1.mapHealthieToActivityError)(err.errors);
69
+ await onError({
70
+ events: errors,
71
+ });
72
+ }
73
+ else {
74
+ const error = err;
75
+ await onError({
76
+ events: [
77
+ {
78
+ date: new Date().toISOString(),
79
+ text: { en: 'Healthie API reported an error' },
80
+ error: {
81
+ category: 'SERVER_ERROR',
82
+ message: error.message,
83
+ },
84
+ },
85
+ ],
86
+ });
87
+ }
88
+ }
89
+ },
90
+ };
91
+ //# sourceMappingURL=updatePatientQuickNote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatePatientQuickNote.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tests_1 = require("../../../../src/tests");
4
+ const sdk_1 = require("../../gql/sdk");
5
+ const sdk_2 = require("../../gql/__mocks__/sdk");
6
+ const updatePatientQuickNote_1 = require("../updatePatientQuickNote");
7
+ jest.mock('../../gql/sdk');
8
+ jest.mock('../../graphqlClient');
9
+ describe('createMetricEntry action', () => {
10
+ const onComplete = jest.fn();
11
+ const onError = jest.fn();
12
+ beforeAll(() => {
13
+ ;
14
+ sdk_1.getSdk.mockImplementation(sdk_2.mockGetSdk);
15
+ });
16
+ beforeEach(() => {
17
+ jest.clearAllMocks();
18
+ });
19
+ test('Should update patient quick note', async () => {
20
+ await updatePatientQuickNote_1.updatePatientQuickNote.onActivityCreated((0, tests_1.generateTestPayload)({
21
+ fields: {
22
+ patientId: 'patient-id',
23
+ quickNote: 'QUICK NOTE',
24
+ overwrite: true,
25
+ },
26
+ settings: {
27
+ apiKey: 'apiKey',
28
+ apiUrl: 'test-url',
29
+ },
30
+ }), onComplete, onError);
31
+ expect(onComplete).toBeCalledTimes(1);
32
+ expect(onError).toBeCalledTimes(0);
33
+ });
34
+ });
35
+ //# sourceMappingURL=updatePatientQuickNote.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatePatientQuickNote.test.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/updatePatientQuickNote/updatePatientQuickNote.test.ts"],"names":[],"mappings":";;AAAA,iDAA2D;AAC3D,uCAAsC;AACtC,iDAAoD;AACpD,sEAAkE;AAElE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAC1B,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;AAEhC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,SAAS,CAAC,GAAG,EAAE;QACb,CAAC;QAAC,YAAoB,CAAC,kBAAkB,CAAC,gBAAU,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,+CAAsB,CAAC,iBAAiB,CAC5C,IAAA,2BAAmB,EAAC;YAClB,MAAM,EAAE;gBACN,SAAS,EAAE,YAAY;gBACvB,SAAS,EAAE,YAAY;gBACvB,SAAS,EAAE,IAAI;aAChB;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;aACnB;SACF,CAAC,EACF,UAAU,EACV,OAAO,CACR,CAAA;QACD,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}