@awell-health/awell-extensions 2.0.171 → 2.0.174
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extensions/elation/webhooks/appointmentCreatedOrUpdated.js +1 -23
- package/dist/extensions/elation/webhooks/appointmentCreatedOrUpdated.js.map +1 -1
- package/dist/extensions/elation/webhooks/patientCreatedOrUpdated.js +1 -23
- package/dist/extensions/elation/webhooks/patientCreatedOrUpdated.js.map +1 -1
- package/dist/src/test-server.js +0 -5
- package/dist/src/test-server.js.map +1 -1
- package/package.json +2 -3
@@ -2,9 +2,6 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.appointmentCreatedOrUpdated = void 0;
|
4
4
|
const constants_1 = require("../constants");
|
5
|
-
const node_crypto_1 = require("node:crypto");
|
6
|
-
const settings_1 = require("../settings");
|
7
|
-
const lodash_1 = require("lodash");
|
8
5
|
const dataPoints = {
|
9
6
|
appointmentId: {
|
10
7
|
key: 'appointmentId',
|
@@ -18,32 +15,13 @@ const dataPoints = {
|
|
18
15
|
exports.appointmentCreatedOrUpdated = {
|
19
16
|
key: 'appointmentCreatedOrUpdated',
|
20
17
|
dataPoints,
|
21
|
-
onEvent: async ({ payload: { payload, settings }, onSuccess, onError
|
18
|
+
onEvent: async ({ payload: { payload, settings }, onSuccess, onError }) => {
|
22
19
|
const { action, resource, data } = payload;
|
23
20
|
const { id: appointmentId, patient: patientId } = data;
|
24
21
|
// skip non 'saved' actions for that webhook
|
25
22
|
if (action !== 'saved') {
|
26
23
|
return;
|
27
24
|
}
|
28
|
-
const rateLimitDuration = settings_1.rateLimitDurationSchema.parse(settings.rateLimitDuration);
|
29
|
-
if (!(0, lodash_1.isNil)(rateLimitDuration)) {
|
30
|
-
const rateLimiter = helpers.rateLimit(1, rateLimitDuration);
|
31
|
-
const strAppt = JSON.stringify(data);
|
32
|
-
const uniqueHash = (0, node_crypto_1.createHash)('sha256').update(strAppt).digest('hex');
|
33
|
-
// i'd rather use the unique hash here, but instead using an appointment ID
|
34
|
-
const { success } = await rateLimiter.limit(`elation-appointment-${appointmentId}`);
|
35
|
-
if (!success) {
|
36
|
-
console.log(`ELATION: Rate limited for appointment_id=${appointmentId}`);
|
37
|
-
// we're sending a 200 response to elation to avoid them retrying the request
|
38
|
-
await onError({
|
39
|
-
response: {
|
40
|
-
statusCode: 200,
|
41
|
-
message: 'Rate limit exceeded',
|
42
|
-
},
|
43
|
-
});
|
44
|
-
return;
|
45
|
-
}
|
46
|
-
}
|
47
25
|
if (resource !== 'appointments') {
|
48
26
|
await onError({
|
49
27
|
response: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"appointmentCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/appointmentCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAIA,4CAA6C;
|
1
|
+
{"version":3,"file":"appointmentCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/appointmentCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAIA,4CAA6C;AAG7C,MAAM,UAAU,GAAG;IACjB,aAAa,EAAE;QACb,GAAG,EAAE,eAAe;QACpB,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,GAAG,EAAE,aAAa;QAClB,SAAS,EAAE,MAAM;KAClB;CAC4C,CAAA;AAElC,QAAA,2BAA2B,GAGpC;IACF,GAAG,EAAE,6BAA6B;IAClC,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACxE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAEtD,6CAA6C;QAC7C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YAChC,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,gCAAgC;iBAC1C;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC;oBACpC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAClC;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,0BAAc;oBACtB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;iBACzB;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
|
@@ -1,9 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.patientCreatedOrUpdated = void 0;
|
4
|
-
const settings_1 = require("../settings");
|
5
|
-
const node_crypto_1 = require("node:crypto");
|
6
|
-
const lodash_1 = require("lodash");
|
7
4
|
const dataPoints = {
|
8
5
|
patientId: {
|
9
6
|
key: 'patientId',
|
@@ -17,32 +14,13 @@ const dataPoints = {
|
|
17
14
|
exports.patientCreatedOrUpdated = {
|
18
15
|
key: 'patientCreatedOrUpdated',
|
19
16
|
dataPoints,
|
20
|
-
onEvent: async ({ payload: { payload, settings }, onSuccess, onError
|
17
|
+
onEvent: async ({ payload: { payload, settings }, onSuccess, onError }) => {
|
21
18
|
const { data, resource, action } = payload;
|
22
19
|
const { id: patientId } = data;
|
23
20
|
// skip non 'saved' actions for that webhook
|
24
21
|
if (action !== 'saved') {
|
25
22
|
return;
|
26
23
|
}
|
27
|
-
const rateLimitDuration = settings_1.rateLimitDurationSchema.parse(settings.rateLimitDuration);
|
28
|
-
if (!(0, lodash_1.isNil)(rateLimitDuration)) {
|
29
|
-
const rateLimiter = helpers.rateLimit(1, rateLimitDuration);
|
30
|
-
const strPatient = JSON.stringify(data);
|
31
|
-
const uniqueHash = (0, node_crypto_1.createHash)('sha256').update(strPatient).digest('hex');
|
32
|
-
// i'd rather use the unique hash here, but instead using a patient ID
|
33
|
-
const { success } = await rateLimiter.limit(`elation-patient-${patientId}`);
|
34
|
-
if (!success) {
|
35
|
-
console.log(`ELATION: Rate limited for patient_id=${patientId}`);
|
36
|
-
// we're sending a 200 response to elation to avoid them retrying the request
|
37
|
-
await onError({
|
38
|
-
response: {
|
39
|
-
statusCode: 200,
|
40
|
-
message: 'Rate limit exceeded',
|
41
|
-
},
|
42
|
-
});
|
43
|
-
return;
|
44
|
-
}
|
45
|
-
}
|
46
24
|
if (resource !== 'patients') {
|
47
25
|
await onError({
|
48
26
|
response: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"patientCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/patientCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAMA,
|
1
|
+
{"version":3,"file":"patientCreatedOrUpdated.js","sourceRoot":"","sources":["../../../../extensions/elation/webhooks/patientCreatedOrUpdated.ts"],"names":[],"mappings":";;;AAMA,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE;QACT,GAAG,EAAE,WAAW;QAChB,SAAS,EAAE,QAAQ;KACpB;IACD,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,MAAM;KAClB;CAC4C,CAAA;AAElC,QAAA,uBAAuB,GAGhC;IACF,GAAG,EAAE,yBAAyB;IAC9B,UAAU;IACV,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACxE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAC1C,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAE9B,4CAA4C;QAC5C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC;gBACZ,QAAQ,EAAE;oBACR,UAAU,EAAE,GAAG;oBACf,OAAO,EAAE,2BAA2B;iBACrC;aACF,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC;gBACd,WAAW,EAAE;oBACX,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC9B;gBACD,iDAAiD;gBACjD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,gCAAgC;oBACxC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;iBACvB;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
|
package/dist/src/test-server.js
CHANGED
@@ -10,11 +10,6 @@ const extensions_core_1 = require("@awell-health/extensions-core");
|
|
10
10
|
const extensions_1 = require("../extensions");
|
11
11
|
const app = (0, express_1.default)();
|
12
12
|
const port = 3000;
|
13
|
-
// type QueueInput = (
|
14
|
-
// | Parameters<OnCompleteCallback>[0]
|
15
|
-
// | Parameters<OnErrorCallback>[0]
|
16
|
-
// ) & { response: 'success' | 'failure' }
|
17
|
-
// const queue: QueueInput[] = []
|
18
13
|
app.use(body_parser_1.default.json());
|
19
14
|
app.post('/', async (req, res) => {
|
20
15
|
console.log(req.body);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"test-server.js","sourceRoot":"","sources":["../../src/test-server.ts"],"names":[],"mappings":";;;;;AAAA,2DAA2D;AAC3D,sDAA6B;AAC7B,8DAAoC;AACpC,mEAKsC;AACtC,8CAA0C;AAE1C,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAA;AACrB,MAAM,IAAI,GAAG,IAAI,CAAA;AAEjB,
|
1
|
+
{"version":3,"file":"test-server.js","sourceRoot":"","sources":["../../src/test-server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@awell-health/awell-extensions",
|
3
|
-
"version": "2.0.
|
3
|
+
"version": "2.0.174",
|
4
4
|
"packageManager": "yarn@4.5.3",
|
5
5
|
"main": "dist/src/index.js",
|
6
6
|
"repository": {
|
@@ -79,7 +79,7 @@
|
|
79
79
|
},
|
80
80
|
"dependencies": {
|
81
81
|
"@awell-health/awell-sdk": "^0.1.20",
|
82
|
-
"@awell-health/extensions-core": "1.0.
|
82
|
+
"@awell-health/extensions-core": "1.0.18",
|
83
83
|
"@awell-health/healthie-sdk": "^0.1.1",
|
84
84
|
"@dropbox/sign": "^1.8.0",
|
85
85
|
"@hubspot/api-client": "^11.2.0",
|
@@ -91,7 +91,6 @@
|
|
91
91
|
"@sendgrid/helpers": "^7.7.0",
|
92
92
|
"@sendgrid/mail": "^7.7.0",
|
93
93
|
"@types/json-schema": "^7.0.15",
|
94
|
-
"@upstash/ratelimit": "^2.0.5",
|
95
94
|
"api": "^6.0.0",
|
96
95
|
"axios": "^1.6.8",
|
97
96
|
"body-parser": "^1.20.2",
|