@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.
- package/dist/extensions/healthie/actions/createPatient/config/datapoints.d.ts +6 -0
- package/dist/extensions/healthie/actions/createPatient/config/datapoints.js +10 -0
- package/dist/extensions/healthie/actions/createPatient/config/datapoints.js.map +1 -0
- package/dist/extensions/healthie/actions/createPatient/config/fields.d.ts +29 -0
- package/dist/extensions/healthie/actions/createPatient/config/fields.js +12 -1
- package/dist/extensions/healthie/actions/createPatient/config/fields.js.map +1 -1
- package/dist/extensions/healthie/actions/createPatient/config/index.d.ts +2 -1
- package/dist/extensions/healthie/actions/createPatient/config/index.js +16 -3
- package/dist/extensions/healthie/actions/createPatient/config/index.js.map +1 -1
- package/dist/extensions/healthie/actions/createPatient/createPatient.d.ts +1 -8
- package/dist/extensions/healthie/actions/createPatient/createPatient.js +44 -76
- package/dist/extensions/healthie/actions/createPatient/createPatient.js.map +1 -1
- package/dist/extensions/healthie/actions/createPatient/createPatient.test.js +67 -27
- package/dist/extensions/healthie/actions/createPatient/createPatient.test.js.map +1 -1
- package/dist/extensions/healthie/actions/createPatient/lib/errors.d.ts +6 -0
- package/dist/extensions/healthie/actions/createPatient/lib/errors.js +27 -0
- package/dist/extensions/healthie/actions/createPatient/lib/errors.js.map +1 -0
- package/dist/extensions/healthie/lib/sdk/genql/generated/schema.d.ts +109 -2
- package/dist/extensions/healthie/lib/sdk/genql/generated/schema.js +19 -5
- package/dist/extensions/healthie/lib/sdk/genql/generated/schema.js.map +1 -1
- package/dist/extensions/healthie/lib/sdk/genql/generated/types.d.ts +37 -1
- package/dist/extensions/healthie/lib/sdk/genql/generated/types.js +352 -262
- package/dist/extensions/healthie/lib/sdk/genql/generated/types.js.map +1 -1
- package/package.json +1 -1
@@ -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;
|
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
|
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
|
-
|
4
|
-
|
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":"
|
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
|
11
|
-
|
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
|
-
|
25
|
-
var _a, _b;
|
26
|
-
const { fields,
|
27
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
32
|
-
{
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
61
|
-
|
62
|
-
data_points: {
|
63
|
-
healthiePatientId,
|
40
|
+
user: {
|
41
|
+
id: true,
|
42
|
+
set_password_link: true, // for testing
|
64
43
|
},
|
65
|
-
|
66
|
-
|
67
|
-
|
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
|
-
|
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
|
-
|
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":";;;AAAA,
|
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
|
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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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,
|
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"}
|