@awell-health/awell-extensions 2.0.24 → 2.0.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. package/dist/extensions/healthie/actions/createPatient/config/datapoints.d.ts +6 -0
  2. package/dist/extensions/healthie/actions/createPatient/config/datapoints.js +10 -0
  3. package/dist/extensions/healthie/actions/createPatient/config/datapoints.js.map +1 -0
  4. package/dist/extensions/healthie/actions/createPatient/config/fields.d.ts +29 -0
  5. package/dist/extensions/healthie/actions/createPatient/config/fields.js +12 -1
  6. package/dist/extensions/healthie/actions/createPatient/config/fields.js.map +1 -1
  7. package/dist/extensions/healthie/actions/createPatient/config/index.d.ts +2 -1
  8. package/dist/extensions/healthie/actions/createPatient/config/index.js +16 -3
  9. package/dist/extensions/healthie/actions/createPatient/config/index.js.map +1 -1
  10. package/dist/extensions/healthie/actions/createPatient/createPatient.d.ts +1 -8
  11. package/dist/extensions/healthie/actions/createPatient/createPatient.js +44 -76
  12. package/dist/extensions/healthie/actions/createPatient/createPatient.js.map +1 -1
  13. package/dist/extensions/healthie/actions/createPatient/createPatient.test.js +67 -27
  14. package/dist/extensions/healthie/actions/createPatient/createPatient.test.js.map +1 -1
  15. package/dist/extensions/healthie/actions/createPatient/lib/errors.d.ts +6 -0
  16. package/dist/extensions/healthie/actions/createPatient/lib/errors.js +27 -0
  17. package/dist/extensions/healthie/actions/createPatient/lib/errors.js.map +1 -0
  18. package/dist/extensions/healthie/lib/sdk/genql/generated/schema.d.ts +109 -2
  19. package/dist/extensions/healthie/lib/sdk/genql/generated/schema.js +19 -5
  20. package/dist/extensions/healthie/lib/sdk/genql/generated/schema.js.map +1 -1
  21. package/dist/extensions/healthie/lib/sdk/genql/generated/types.d.ts +37 -1
  22. package/dist/extensions/healthie/lib/sdk/genql/generated/types.js +352 -262
  23. package/dist/extensions/healthie/lib/sdk/genql/generated/types.js.map +1 -1
  24. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ export declare const dataPoints: {
2
+ healthiePatientId: {
3
+ key: string;
4
+ valueType: "string";
5
+ };
6
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataPoints = void 0;
4
+ exports.dataPoints = {
5
+ healthiePatientId: {
6
+ key: 'healthiePatientId',
7
+ valueType: 'string',
8
+ },
9
+ };
10
+ //# sourceMappingURL=datapoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datapoints.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createPatient/config/datapoints.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG;IACxB,iBAAiB,EAAE;QACjB,GAAG,EAAE,mBAAmB;QACxB,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { FieldType, StringType } from '@awell-health/extensions-core';
2
+ import { z } from 'zod';
2
3
  export declare const fields: {
3
4
  first_name: {
4
5
  id: string;
@@ -53,3 +54,31 @@ export declare const fields: {
53
54
  type: FieldType.STRING;
54
55
  };
55
56
  };
57
+ export declare const FieldsValidationSchema: z.ZodObject<{
58
+ first_name: z.ZodString;
59
+ last_name: z.ZodString;
60
+ legal_name: z.ZodOptional<z.ZodString>;
61
+ skipped_email: z.ZodOptional<z.ZodBoolean>;
62
+ email: z.ZodString;
63
+ phone_number: z.ZodOptional<z.ZodString>;
64
+ send_invite: z.ZodOptional<z.ZodBoolean>;
65
+ provider_id: z.ZodOptional<z.ZodString>;
66
+ }, "strip", z.ZodTypeAny, {
67
+ email: string;
68
+ first_name: string;
69
+ last_name: string;
70
+ provider_id?: string | undefined;
71
+ legal_name?: string | undefined;
72
+ skipped_email?: boolean | undefined;
73
+ phone_number?: string | undefined;
74
+ send_invite?: boolean | undefined;
75
+ }, {
76
+ email: string;
77
+ first_name: string;
78
+ last_name: string;
79
+ provider_id?: string | undefined;
80
+ legal_name?: string | undefined;
81
+ skipped_email?: boolean | undefined;
82
+ phone_number?: string | undefined;
83
+ send_invite?: boolean | undefined;
84
+ }>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fields = void 0;
3
+ exports.FieldsValidationSchema = exports.fields = void 0;
4
4
  const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const zod_1 = require("zod");
5
6
  exports.fields = {
6
7
  first_name: {
7
8
  id: 'first_name',
@@ -56,4 +57,14 @@ exports.fields = {
56
57
  type: extensions_core_1.FieldType.STRING,
57
58
  },
58
59
  };
60
+ exports.FieldsValidationSchema = zod_1.z.object({
61
+ first_name: zod_1.z.string().min(1),
62
+ last_name: zod_1.z.string().min(1),
63
+ legal_name: zod_1.z.string().optional(),
64
+ skipped_email: zod_1.z.boolean().optional(),
65
+ email: zod_1.z.string().min(1).email(),
66
+ phone_number: zod_1.z.string().optional(),
67
+ send_invite: zod_1.z.boolean().optional(),
68
+ provider_id: zod_1.z.string().optional(),
69
+ });
59
70
  //# sourceMappingURL=fields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createPatient/config/fields.ts"],"names":[],"mappings":";;;AAAA,mEAIsC;AAEzB,QAAA,MAAM,GAAG;IACpB,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,2FAA2F;QAC7F,IAAI,EAAE,2BAAS,CAAC,MAAM;KACvB;IACD,aAAa,EAAE;QACb,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,gEAAgE;QAClE,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI,EAAE,wFAAwF;KACzG;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,sEAAsE;QACxE,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2HAA2H;QAC7H,IAAI,EAAE,2BAAS,CAAC,MAAM;KACvB;CAC8B,CAAA"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createPatient/config/fields.ts"],"names":[],"mappings":";;;AAAA,mEAIsC;AACtC,6BAAwC;AAE3B,QAAA,MAAM,GAAG;IACpB,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,+BAA+B;QAC5C,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,2FAA2F;QAC7F,IAAI,EAAE,2BAAS,CAAC,MAAM;KACvB;IACD,aAAa,EAAE;QACb,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,gEAAgE;QAClE,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI,EAAE,wFAAwF;KACzG;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,sEAAsE;QACxE,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2HAA2H;QAC7H,IAAI,EAAE,2BAAS,CAAC,MAAM;KACvB;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;IAChC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACe,CAAC,CAAA"}
@@ -1 +1,2 @@
1
- export { fields } from './fields';
1
+ export * from './fields';
2
+ export * from './datapoints';
@@ -1,6 +1,19 @@
1
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
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fields = void 0;
4
- var fields_1 = require("./fields");
5
- Object.defineProperty(exports, "fields", { enumerable: true, get: function () { return fields_1.fields; } });
17
+ __exportStar(require("./fields"), exports);
18
+ __exportStar(require("./datapoints"), exports);
6
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createPatient/config/index.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAAxB,gGAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createPatient/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,+CAA4B"}
@@ -1,11 +1,4 @@
1
1
  import { type Action } from '@awell-health/extensions-core';
2
2
  import { type settings } from '../../settings';
3
- import { fields } from './config';
4
- declare const dataPoints: {
5
- healthiePatientId: {
6
- key: string;
7
- valueType: "string";
8
- };
9
- };
3
+ import { fields, dataPoints } from './config';
10
4
  export declare const createPatient: Action<typeof fields, typeof settings, keyof typeof dataPoints>;
11
- export {};
@@ -3,103 +3,71 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPatient = void 0;
4
4
  const lodash_1 = require("lodash");
5
5
  const extensions_core_1 = require("@awell-health/extensions-core");
6
- const sdk_1 = require("../../lib/sdk/graphql-codegen/generated/sdk");
7
- const graphqlClient_1 = require("../../lib/sdk/graphql-codegen/graphqlClient");
8
6
  const errors_1 = require("../../lib/sdk/graphql-codegen/errors");
9
7
  const config_1 = require("./config");
10
- const dataPoints = {
11
- healthiePatientId: {
12
- key: 'healthiePatientId',
13
- valueType: 'string',
14
- },
15
- };
8
+ const validatePayloadAndCreateSdk_1 = require("../../lib/sdk/validatePayloadAndCreateSdk");
9
+ const errors_2 = require("./lib/errors");
16
10
  exports.createPatient = {
17
11
  key: 'createPatient',
18
12
  category: extensions_core_1.Category.EHR_INTEGRATIONS,
19
13
  title: 'Create a patient',
20
14
  description: 'Create a patient in Healthie.',
21
15
  fields: config_1.fields,
22
- dataPoints,
16
+ dataPoints: config_1.dataPoints,
23
17
  previewable: true,
24
- onActivityCreated: async (payload, onComplete, onError) => {
25
- var _a, _b;
26
- const { fields, settings } = payload;
27
- const { first_name, last_name, email, phone_number, provider_id, legal_name, send_invite, skipped_email, } = fields;
18
+ onEvent: async ({ payload, onComplete, onError, helpers }) => {
19
+ var _a, _b, _c, _d;
20
+ const { fields, healthieSdk } = await (0, validatePayloadAndCreateSdk_1.validatePayloadAndCreateSdk)({
21
+ fieldsSchema: config_1.FieldsValidationSchema,
22
+ payload,
23
+ });
24
+ const dont_send_welcome = fields.send_invite !== true;
28
25
  try {
29
- if ((0, lodash_1.isNil)(first_name) || (0, lodash_1.isNil)(last_name)) {
30
- await onError({
31
- events: [
32
- {
33
- date: new Date().toISOString(),
34
- text: { en: 'Fields are missing' },
35
- error: {
36
- category: 'MISSING_FIELDS',
37
- message: '`first_name` or `last_name` is missing',
38
- },
26
+ const res = await healthieSdk.client.mutation({
27
+ createClient: {
28
+ __args: {
29
+ input: {
30
+ first_name: fields.first_name,
31
+ last_name: fields.last_name,
32
+ legal_name: fields.legal_name,
33
+ email: fields.email,
34
+ phone_number: fields.phone_number,
35
+ dietitian_id: fields.provider_id === '' ? undefined : fields.provider_id,
36
+ skipped_email: fields.skipped_email,
37
+ dont_send_welcome,
39
38
  },
40
- ],
41
- });
42
- return;
43
- }
44
- const dont_send_welcome = send_invite !== true;
45
- const client = (0, graphqlClient_1.initialiseClient)(settings);
46
- if (client !== undefined) {
47
- const sdk = (0, sdk_1.getSdk)(client);
48
- const { data } = await sdk.createPatient({
49
- input: {
50
- first_name,
51
- last_name,
52
- legal_name,
53
- email,
54
- phone_number,
55
- dietitian_id: provider_id === '' ? undefined : provider_id,
56
- skipped_email,
57
- dont_send_welcome,
58
39
  },
59
- });
60
- const healthiePatientId = (_b = (_a = data.createClient) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id;
61
- await onComplete({
62
- data_points: {
63
- healthiePatientId,
40
+ user: {
41
+ id: true,
42
+ set_password_link: true, // for testing
64
43
  },
65
- });
66
- }
67
- else {
44
+ messages: {
45
+ __scalar: true,
46
+ },
47
+ },
48
+ });
49
+ if ((0, lodash_1.isEmpty)((_b = (_a = res === null || res === void 0 ? void 0 : res.createClient) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id))
50
+ throw new errors_2.HealthiePatientNotCreated(res);
51
+ await onComplete({
52
+ data_points: {
53
+ healthiePatientId: (_d = (_c = res.createClient) === null || _c === void 0 ? void 0 : _c.user) === null || _d === void 0 ? void 0 : _d.id,
54
+ },
55
+ });
56
+ }
57
+ catch (error) {
58
+ if (error instanceof errors_2.HealthiePatientNotCreated) {
68
59
  await onError({
69
- events: [
70
- {
71
- date: new Date().toISOString(),
72
- text: { en: 'API client requires an API url and API key' },
73
- error: {
74
- category: 'MISSING_SETTINGS',
75
- message: 'Missing api url or api key',
76
- },
77
- },
78
- ],
60
+ events: [(0, errors_2.parseHealthiePatientNotCreatedError)(error.errors)],
79
61
  });
80
62
  }
81
- }
82
- catch (err) {
83
- if (err instanceof errors_1.HealthieError) {
84
- const errors = (0, errors_1.mapHealthieToActivityError)(err.errors);
63
+ else if (error instanceof errors_1.HealthieError) {
64
+ const errors = (0, errors_1.mapHealthieToActivityError)(error.errors);
85
65
  await onError({
86
66
  events: errors,
87
67
  });
88
68
  }
89
69
  else {
90
- const error = err;
91
- await onError({
92
- events: [
93
- {
94
- date: new Date().toISOString(),
95
- text: { en: 'Healthie API reported an error' },
96
- error: {
97
- category: 'SERVER_ERROR',
98
- message: error.message,
99
- },
100
- },
101
- ],
102
- });
70
+ throw error;
103
71
  }
104
72
  }
105
73
  },
@@ -1 +1 @@
1
- {"version":3,"file":"createPatient.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createPatient/createPatient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createPatient.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createPatient/createPatient.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,mEAAwD;AAExD,iEAG6C;AAC7C,qCAAqE;AACrE,2FAAuF;AACvF,yCAGqB;AACR,QAAA,aAAa,GAItB;IACF,GAAG,EAAE,eAAe;IACpB,QAAQ,EAAE,0BAAQ,CAAC,gBAAgB;IACnC,KAAK,EAAE,kBAAkB;IACzB,WAAW,EAAE,+BAA+B;IAC5C,MAAM,EAAN,eAAM;IACN,UAAU,EAAV,mBAAU;IACV,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;;QAC3D,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,IAAA,yDAA2B,EAAC;YAChE,YAAY,EAAE,+BAAsB;YACpC,OAAO;SACR,CAAC,CAAA;QAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,KAAK,IAAI,CAAA;QAErD,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC5C,YAAY,EAAE;oBACZ,MAAM,EAAE;wBACN,KAAK,EAAE;4BACL,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;4BAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,YAAY,EAAE,MAAM,CAAC,YAAY;4BACjC,YAAY,EACV,MAAM,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;4BAC5D,aAAa,EAAE,MAAM,CAAC,aAAa;4BACnC,iBAAiB;yBAClB;qBACF;oBACD,IAAI,EAAE;wBACJ,EAAE,EAAE,IAAI;wBACR,iBAAiB,EAAE,IAAI,EAAE,cAAc;qBACxC;oBACD,QAAQ,EAAE;wBACR,QAAQ,EAAE,IAAI;qBACf;iBACF;aACF,CAAC,CAAA;YAEF,IAAI,IAAA,gBAAO,EAAC,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,YAAY,0CAAE,IAAI,0CAAE,EAAE,CAAC;gBACtC,MAAM,IAAI,kCAAyB,CAAC,GAAG,CAAC,CAAA;YAE1C,MAAM,UAAU,CAAC;gBACf,WAAW,EAAE;oBACX,iBAAiB,EAAE,MAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,IAAI,0CAAE,EAAE;iBAC9C;aACF,CAAC,CAAA;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,KAAK,YAAY,kCAAyB,EAAE;gBAC9C,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE,CAAC,IAAA,4CAAmC,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC5D,CAAC,CAAA;aACH;iBAAM,IAAI,KAAK,YAAY,sBAAa,EAAE;gBACzC,MAAM,MAAM,GAAG,IAAA,mCAA0B,EAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACvD,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE,MAAM;iBACf,CAAC,CAAA;aACH;iBAAM;gBACL,MAAM,KAAK,CAAA;aACZ;SACF;IACH,CAAC;CACF,CAAA"}
@@ -1,38 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tests_1 = require("../../../../src/tests");
4
- const sdk_1 = require("../../lib/sdk/graphql-codegen/generated/sdk");
5
- const sdk_2 = require("../../lib/sdk/graphql-codegen/generated/__mocks__/sdk");
4
+ const genql_1 = require("@extensions/healthie/lib/sdk/genql");
6
5
  const createPatient_1 = require("../createPatient");
7
- jest.mock('../../lib/sdk/graphql-codegen/generated/sdk');
8
- jest.mock('../../lib/sdk/graphql-codegen/graphqlClient');
9
- describe('createPatient action', () => {
10
- const onComplete = jest.fn();
11
- beforeAll(() => {
12
- const mockSdk = sdk_1.getSdk;
13
- mockSdk.mockImplementation(sdk_2.mockGetSdk);
14
- });
6
+ const extensions_core_1 = require("@awell-health/extensions-core");
7
+ const config_1 = require("./config");
8
+ jest.mock('@extensions/healthie/lib/sdk/genql', () => ({
9
+ HealthieSdk: jest.fn().mockImplementation(() => ({
10
+ client: {
11
+ mutation: jest.fn().mockResolvedValue({
12
+ createClient: {
13
+ user: {
14
+ id: 'patient-1',
15
+ set_password_link: 'https://securestaging.gethealthie.com/set_initial_password?signup_token=MOCK_TOKEN',
16
+ },
17
+ },
18
+ }),
19
+ },
20
+ })),
21
+ }));
22
+ const mockedHealthieSdk = jest.mocked(genql_1.HealthieSdk);
23
+ describe('Healthie - createPatient', () => {
24
+ const { extensionAction: action, onComplete, onError, helpers, clearMocks, } = extensions_core_1.TestHelpers.fromAction(createPatient_1.createPatient);
15
25
  beforeEach(() => {
16
26
  jest.clearAllMocks();
17
27
  });
28
+ test('Field validation', async () => {
29
+ const fields = {
30
+ first_name: 'Test',
31
+ last_name: 'Test',
32
+ legal_name: undefined,
33
+ email: 'test+lol11@test.com',
34
+ phone_number: undefined,
35
+ provider_id: undefined,
36
+ skipped_email: undefined,
37
+ send_invite: false,
38
+ };
39
+ const result = config_1.FieldsValidationSchema.safeParse(fields);
40
+ if (!result.success) {
41
+ console.log(result.error.errors);
42
+ }
43
+ expect(result.success).toBe(true);
44
+ if (result.success) {
45
+ expect(result.data).toEqual({
46
+ first_name: 'Test',
47
+ last_name: 'Test',
48
+ email: 'test+lol11@test.com',
49
+ send_invite: false,
50
+ });
51
+ }
52
+ });
18
53
  test('Should create a new patient', async () => {
19
- await createPatient_1.createPatient.onActivityCreated((0, tests_1.generateTestPayload)({
20
- fields: {
21
- first_name: 'test',
22
- last_name: 'test',
23
- legal_name: undefined,
24
- email: 'test@test.com',
25
- phone_number: undefined,
26
- provider_id: undefined,
27
- skipped_email: undefined,
28
- send_invite: undefined,
29
- },
30
- settings: {
31
- apiKey: 'apiKey',
32
- apiUrl: 'test-url',
33
- },
34
- }), onComplete, jest.fn());
35
- expect(sdk_2.mockGetSdkReturn.createPatient).toHaveBeenCalled();
54
+ await action.onEvent({
55
+ payload: (0, tests_1.generateTestPayload)({
56
+ fields: {
57
+ first_name: 'Test',
58
+ last_name: 'Test',
59
+ legal_name: 'Official Test Name',
60
+ email: 'test+lol142@test.com',
61
+ phone_number: '+1234567890',
62
+ provider_id: undefined,
63
+ skipped_email: undefined,
64
+ send_invite: false,
65
+ },
66
+ settings: {
67
+ apiUrl: 'https://staging-api.gethealthie.com/graphql',
68
+ apiKey: 'apiKey',
69
+ },
70
+ }),
71
+ onComplete,
72
+ onError,
73
+ helpers,
74
+ });
75
+ expect(mockedHealthieSdk).toHaveBeenCalled();
36
76
  expect(onComplete).toHaveBeenCalledWith({
37
77
  data_points: {
38
78
  healthiePatientId: 'patient-1',
@@ -1 +1 @@
1
- {"version":3,"file":"createPatient.test.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createPatient/createPatient.test.ts"],"names":[],"mappings":";;AAAA,iDAA2D;AAC3D,qEAAoE;AACpE,+EAG8D;AAC9D,oDAAgD;AAEhD,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;AACxD,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;AAExD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAE5B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,YAAmB,CAAA;QACnC,OAAO,CAAC,kBAAkB,CAAC,gBAAU,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,6BAAa,CAAC,iBAAkB,CACpC,IAAA,2BAAmB,EAAC;YAClB,MAAM,EAAE;gBACN,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,MAAM;gBACjB,UAAU,EAAE,SAAS;gBACrB,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,SAAS;gBACvB,WAAW,EAAE,SAAS;gBACtB,aAAa,EAAE,SAAS;gBACxB,WAAW,EAAE,SAAS;aACvB;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,UAAU;aACnB;SACF,CAAC,EACF,UAAU,EACV,IAAI,CAAC,EAAE,EAAE,CACV,CAAA;QAED,MAAM,CAAC,sBAAgB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACzD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC;YACtC,WAAW,EAAE;gBACX,iBAAiB,EAAE,WAAW;aAC/B;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"createPatient.test.js","sourceRoot":"","sources":["../../../../../extensions/healthie/actions/createPatient/createPatient.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type ActivityEvent } from '@awell-health/extensions-core';
2
+ export declare class HealthiePatientNotCreated extends Error {
3
+ errors: Record<string, unknown>;
4
+ constructor(errors: Record<string, unknown>);
5
+ }
6
+ export declare const parseHealthiePatientNotCreatedError: (error: Record<string, unknown>) => ActivityEvent;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHealthiePatientNotCreatedError = exports.HealthiePatientNotCreated = void 0;
4
+ class HealthiePatientNotCreated extends Error {
5
+ constructor(errors) {
6
+ super('Failed to create patient in Healthie.');
7
+ this.name = 'HealthiePatientNotCreated';
8
+ this.errors = errors;
9
+ }
10
+ }
11
+ exports.HealthiePatientNotCreated = HealthiePatientNotCreated;
12
+ const parseHealthiePatientNotCreatedError = (error) => {
13
+ const category = 'BAD_REQUEST';
14
+ const message = JSON.stringify(error, null, 2);
15
+ return {
16
+ date: new Date().toISOString(),
17
+ text: {
18
+ en: message,
19
+ },
20
+ error: {
21
+ category,
22
+ message,
23
+ },
24
+ };
25
+ };
26
+ exports.parseHealthiePatientNotCreatedError = parseHealthiePatientNotCreatedError;
27
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../../extensions/healthie/actions/createPatient/lib/errors.ts"],"names":[],"mappings":";;;AAEA,MAAa,yBAA0B,SAAQ,KAAK;IAGlD,YAAY,MAA+B;QACzC,KAAK,CAAC,uCAAuC,CAAC,CAAA;QAC9C,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CACF;AARD,8DAQC;AAEM,MAAM,mCAAmC,GAAG,CACjD,KAA8B,EACf,EAAE;IACjB,MAAM,QAAQ,GAAG,aAAa,CAAA;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAE9C,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,IAAI,EAAE;YACJ,EAAE,EAAE,OAAO;SACZ;QACD,KAAK,EAAE;YACL,QAAQ;YACR,OAAO;SACR;KACF,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,mCAAmC,uCAgB/C"}