@awell-health/awell-extensions 2.1.204 → 2.1.205
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/markdown.json +1 -1
- package/dist/extensions/medplum/actions/createResource/config/dataPoints.d.ts +6 -6
- package/dist/extensions/medplum/actions/executeStoredBundle/config/dataPoints.d.ts +0 -8
- package/dist/extensions/medplum/actions/executeStoredBundle/config/dataPoints.js +1 -1
- package/dist/extensions/medplum/actions/executeStoredBundle/config/dataPoints.js.map +1 -1
- package/dist/extensions/medplum/actions/executeStoredBundle/executeStoredBundle.js +3 -1
- package/dist/extensions/medplum/actions/executeStoredBundle/executeStoredBundle.js.map +1 -1
- package/dist/extensions/medplum/utils/index.d.ts +1 -1
- package/dist/extensions/medplum/utils/index.js +3 -1
- package/dist/extensions/medplum/utils/index.js.map +1 -1
- package/dist/extensions/medplum/utils/summarizeBatchResult.d.ts +22 -2
- package/dist/extensions/medplum/utils/summarizeBatchResult.js +22 -6
- package/dist/extensions/medplum/utils/summarizeBatchResult.js.map +1 -1
- package/package.json +1 -1
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
},
|
|
154
154
|
"medplum": {
|
|
155
155
|
"readme": "---\ntitle: Medplum\ndescription: Medplum is the open source healthcare developer platform that helps you build, test, and deliver any healthcare product or service.\n---\n\n# Medplum\n\nMedplum is the open source healthcare developer platform that helps you build, test, and deliver any healthcare product or service.\n\n## Extension settings\n\nThe following settings are required to configure the Medplum extension:\n\n- **Client ID**: Used to authenticate with Medplum's API (required)\n- **Client Secret**: Used to authenticate with Medplum's API (required)\n- **Base URL**: Optional custom base URL for your Medplum server (e.g., `https://api.medplum.com/`). Leave empty to use the default Medplum server.\n",
|
|
156
|
-
"changelog": "# Medplum changelog\n\n## Unreleased\n\n- Added the `Execute stored bundle` action: executes a FHIR Bundle (transaction or batch) in Medplum, reading it from a reference instead of from a field, so a bundle too large to pass between care flow steps, such as one stored by the Metriport `Store Webhook Bundle` action, can still be imported. The stored object must be a `transaction` or `batch` Bundle. It returns
|
|
156
|
+
"changelog": "# Medplum changelog\n\n## Unreleased\n\n- Added the `Execute stored bundle` action: executes a FHIR Bundle (transaction or batch) in Medplum, reading it from a reference instead of from a field, so a bundle too large to pass between care flow steps, such as one stored by the Metriport `Store Webhook Bundle` action, can still be imported. The stored object must be a `transaction` or `batch` Bundle. It returns only `bundleId` and `bundleType`. `Find or create resource` also returns `resourceIds` and `resourcesCreated`, which grow with the number of entries, so a bundle too large to pass between steps could be answered by a result that is too large too.\n- Added `Fail if patient not found?` (`failIfNotFound`) field to the `searchPatient` action. When enabled, a search that returns no patient fails the action with a `SERVER_ERROR` instead of completing with an empty patient. Defaults to `false`, so existing care flows are unchanged.\n- Opted `searchPatient` in to automated retries (`supports_automated_retries`). Combined with `failIfNotFound`, this lets a care flow recover from the race where the search runs before the patient exists in Medplum.\n"
|
|
157
157
|
},
|
|
158
158
|
"messagebird": {
|
|
159
159
|
"readme": "---\ntitle: MessageBird\ndescription: MessageBird is a cloud-based SMS marketing platform designed to help businesses engage with customers across a variety of channels including WhatsApp, voice, live chat and more.\n---\n# MessageBird\n\nMessageBird is a cloud-based SMS marketing platform designed to help businesses engage with customers across a variety of channels including WhatsApp, voice, live chat and more.\n\n## Extension settings\n\nIn order to set up this extension, you will need to provide a MessageBird [API key](https://developers.messagebird.com/quickstarts/voice-calling/test-credits-api-keys/#get-your-api-keys) and [report URL](https://support.messagebird.com/hc/en-us/articles/360001854898-Receiving-Delivery-Reports-DLRs-#:~:text=To%20configure%20the%20status%20report,need%20to%20be%20sent%20to.) (only required if you want to use WhatsApp messaging).\n\n## Custom Actions\n\n### Send SMS\n\nMessageBird's Programmable SMS API enables you to programmatically send SMS messages from within a care flow.\n\n[Read the official documentation](https://developers.messagebird.com/api/sms-messaging/#send-outbound-sms)\n\n### Send voice (text-to-speech) message\n\nMessageBird's Voice Messaging API enables you to transform text messages into voice messages to any country.\n\n[Read the official documentation](https://developers.messagebird.com/api/voice-messaging/#send-a-voice-message)\n\n### Send WhatsApp message\n\nSend a message to a recipient via WhatsApp. If an active conversation already exists for the recipient, the conversation will be resumed. In case there's no active conversation a new one is created.\n\n[Learn how to get started with MessageBird and WhatsApp](https://messagebird.com/omnichannel/whatsapp)",
|
|
@@ -11,20 +11,20 @@ export declare const dataPoints: {
|
|
|
11
11
|
key: string;
|
|
12
12
|
valueType: "boolean";
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
resourceIds: {
|
|
15
15
|
key: string;
|
|
16
16
|
valueType: "string";
|
|
17
17
|
};
|
|
18
|
-
|
|
18
|
+
resourcesCreated: {
|
|
19
19
|
key: string;
|
|
20
|
-
valueType: "
|
|
20
|
+
valueType: "json";
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
bundleId: {
|
|
23
23
|
key: string;
|
|
24
24
|
valueType: "string";
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
bundleType: {
|
|
27
27
|
key: string;
|
|
28
|
-
valueType: "
|
|
28
|
+
valueType: "string";
|
|
29
29
|
};
|
|
30
30
|
};
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.dataPoints = void 0;
|
|
4
4
|
const utils_1 = require("../../../utils");
|
|
5
|
-
exports.dataPoints = utils_1.
|
|
5
|
+
exports.dataPoints = utils_1.bundleResultDataPoints;
|
|
6
6
|
//# sourceMappingURL=dataPoints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataPoints.js","sourceRoot":"","sources":["../../../../../../extensions/medplum/actions/executeStoredBundle/config/dataPoints.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"dataPoints.js","sourceRoot":"","sources":["../../../../../../extensions/medplum/actions/executeStoredBundle/config/dataPoints.ts"],"names":[],"mappings":";;;AAAA,0CAAuD;AAE1C,QAAA,UAAU,GAAG,8BAAsB,CAAA"}
|
|
@@ -44,7 +44,9 @@ exports.executeStoredBundle = {
|
|
|
44
44
|
entries: (_b = (_a = bundle.entry) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
|
|
45
45
|
}, '[executeStoredBundle] Executing Medplum bundle');
|
|
46
46
|
const result = await medplumSdk.executeBatch(bundle);
|
|
47
|
-
|
|
47
|
+
// Not what Medplum did with each resource: that grows with the bundle, and
|
|
48
|
+
// a bundle too large to pass between steps can be answered by one too large.
|
|
49
|
+
await onComplete({ data_points: (0, utils_1.summarizeBundleResult)(result) });
|
|
48
50
|
}
|
|
49
51
|
catch (error) {
|
|
50
52
|
const message = `Failed to execute bundle: ${error.message}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeStoredBundle.js","sourceRoot":"","sources":["../../../../../extensions/medplum/actions/executeStoredBundle/executeStoredBundle.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AAErE,
|
|
1
|
+
{"version":3,"file":"executeStoredBundle.js","sourceRoot":"","sources":["../../../../../extensions/medplum/actions/executeStoredBundle/executeStoredBundle.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AAErE,uCAA+E;AAC/E,qCAAqE;AAExD,QAAA,mBAAmB,GAI5B;IACF,GAAG,EAAE,qBAAqB;IAC1B,QAAQ,EAAE,0BAAQ,CAAC,gBAAgB;IACnC,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EACT,8RAA8R;IAChS,MAAM,EAAN,eAAM;IACN,WAAW,EAAE,KAAK;IAClB,UAAU,EAAV,mBAAU;IACV,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAiB,EAAE;;QAC1E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,kCAA0B,EAAC;YACrE,YAAY,EAAE,+BAAsB;YACpC,OAAO;SACR,CAAC,CAAA;QAEF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAE7D,0EAA0E;YAC1E,kEAAkE;YAClE,IAAI,MAAM,CAAA;YACV,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAC7B,CAAC;YAAC,WAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,SAAS,oBAAoB,CAAC,CAAA;YACvE,CAAC;YACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,MAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,SAAS,uBAAuB,CAAC,CAAA;YAC1E,CAAC;YACD,wEAAwE;YACxE,gFAAgF;YAChF,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CACb,iBAAiB,KAAK,CAAC,SAAS,uCAAuC,CACxE,CAAA;YACH,CAAC;YAED,yEAAyE;YACzE,OAAO,CAAC,GAAG,CACT;gBACE,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,OAAO,EAAE,MAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,mCAAI,CAAC;aACnC,EACD,gDAAgD,CACjD,CAAA;YAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAEpD,2EAA2E;YAC3E,6EAA6E;YAC7E,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,IAAA,6BAAqB,EAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,6BAA8B,KAAe,CAAC,OAAO,EAAE,CAAA;YACvE,MAAM,OAAO,CAAC;gBACZ,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;wBACrB,KAAK,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE;qBAC7C;iBACF;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { validateAndCreateSdkClient } from './validateAndCreateSdkClient';
|
|
2
|
-
export { summarizeBatchResult, batchResultDataPoints } from './summarizeBatchResult';
|
|
2
|
+
export { summarizeBatchResult, summarizeBundleResult, batchResultDataPoints, bundleResultDataPoints, } from './summarizeBatchResult';
|
|
3
3
|
export declare const AWELL_IDENTIFIER_SYSTEM = "https://www.awellhealth.com/";
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AWELL_IDENTIFIER_SYSTEM = exports.batchResultDataPoints = exports.summarizeBatchResult = exports.validateAndCreateSdkClient = void 0;
|
|
3
|
+
exports.AWELL_IDENTIFIER_SYSTEM = exports.bundleResultDataPoints = exports.batchResultDataPoints = exports.summarizeBundleResult = exports.summarizeBatchResult = exports.validateAndCreateSdkClient = void 0;
|
|
4
4
|
var validateAndCreateSdkClient_1 = require("./validateAndCreateSdkClient");
|
|
5
5
|
Object.defineProperty(exports, "validateAndCreateSdkClient", { enumerable: true, get: function () { return validateAndCreateSdkClient_1.validateAndCreateSdkClient; } });
|
|
6
6
|
var summarizeBatchResult_1 = require("./summarizeBatchResult");
|
|
7
7
|
Object.defineProperty(exports, "summarizeBatchResult", { enumerable: true, get: function () { return summarizeBatchResult_1.summarizeBatchResult; } });
|
|
8
|
+
Object.defineProperty(exports, "summarizeBundleResult", { enumerable: true, get: function () { return summarizeBatchResult_1.summarizeBundleResult; } });
|
|
8
9
|
Object.defineProperty(exports, "batchResultDataPoints", { enumerable: true, get: function () { return summarizeBatchResult_1.batchResultDataPoints; } });
|
|
10
|
+
Object.defineProperty(exports, "bundleResultDataPoints", { enumerable: true, get: function () { return summarizeBatchResult_1.bundleResultDataPoints; } });
|
|
9
11
|
exports.AWELL_IDENTIFIER_SYSTEM = 'https://www.awellhealth.com/';
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../extensions/medplum/utils/index.ts"],"names":[],"mappings":";;;AAAA,2EAAyE;AAAhE,wIAAA,0BAA0B,OAAA;AACnC,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../extensions/medplum/utils/index.ts"],"names":[],"mappings":";;;AAAA,2EAAyE;AAAhE,wIAAA,0BAA0B,OAAA;AACnC,+DAK+B;AAJ7B,4HAAA,oBAAoB,OAAA;AACpB,6HAAA,qBAAqB,OAAA;AACrB,6HAAA,qBAAqB,OAAA;AACrB,8HAAA,sBAAsB,OAAA;AAGX,QAAA,uBAAuB,GAAG,8BAA8B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Bundle } from '@medplum/fhirtypes';
|
|
2
|
-
/** The data points `
|
|
3
|
-
export declare const
|
|
2
|
+
/** The data points `summarizeBundleResult` fills: what the result is, not what is in it. */
|
|
3
|
+
export declare const bundleResultDataPoints: {
|
|
4
4
|
bundleId: {
|
|
5
5
|
key: string;
|
|
6
6
|
valueType: "string";
|
|
@@ -9,6 +9,13 @@ export declare const batchResultDataPoints: {
|
|
|
9
9
|
key: string;
|
|
10
10
|
valueType: "string";
|
|
11
11
|
};
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The data points `summarizeBatchResult` fills. The last two grow with the
|
|
15
|
+
* number of entries, so an action whose bundle can be large leaves them out and
|
|
16
|
+
* returns only `bundleResultDataPoints`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const batchResultDataPoints: {
|
|
12
19
|
resourceIds: {
|
|
13
20
|
key: string;
|
|
14
21
|
valueType: "string";
|
|
@@ -17,6 +24,19 @@ export declare const batchResultDataPoints: {
|
|
|
17
24
|
key: string;
|
|
18
25
|
valueType: "json";
|
|
19
26
|
};
|
|
27
|
+
bundleId: {
|
|
28
|
+
key: string;
|
|
29
|
+
valueType: "string";
|
|
30
|
+
};
|
|
31
|
+
bundleType: {
|
|
32
|
+
key: string;
|
|
33
|
+
valueType: "string";
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
/** The id and type of an executed bundle's result. */
|
|
37
|
+
export declare const summarizeBundleResult: (result: Bundle) => {
|
|
38
|
+
bundleId: string;
|
|
39
|
+
bundleType: string;
|
|
20
40
|
};
|
|
21
41
|
/**
|
|
22
42
|
* The data points that describe what Medplum did with an executed bundle: the
|
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.summarizeBatchResult = exports.batchResultDataPoints = void 0;
|
|
3
|
+
exports.summarizeBatchResult = exports.summarizeBundleResult = exports.batchResultDataPoints = exports.bundleResultDataPoints = void 0;
|
|
4
4
|
const LOCATION = /(?:^|\/)([^/]+)\/([^/]+)(?:\/|$)/;
|
|
5
|
-
/** The data points `
|
|
6
|
-
exports.
|
|
5
|
+
/** The data points `summarizeBundleResult` fills: what the result is, not what is in it. */
|
|
6
|
+
exports.bundleResultDataPoints = {
|
|
7
7
|
bundleId: { key: 'bundleId', valueType: 'string' },
|
|
8
8
|
bundleType: { key: 'bundleType', valueType: 'string' },
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* The data points `summarizeBatchResult` fills. The last two grow with the
|
|
12
|
+
* number of entries, so an action whose bundle can be large leaves them out and
|
|
13
|
+
* returns only `bundleResultDataPoints`.
|
|
14
|
+
*/
|
|
15
|
+
exports.batchResultDataPoints = {
|
|
16
|
+
...exports.bundleResultDataPoints,
|
|
9
17
|
resourceIds: { key: 'resourceIds', valueType: 'string' },
|
|
10
18
|
resourcesCreated: { key: 'resourcesCreated', valueType: 'json' },
|
|
11
19
|
};
|
|
20
|
+
/** The id and type of an executed bundle's result. */
|
|
21
|
+
const summarizeBundleResult = (result) => {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
return ({
|
|
24
|
+
bundleId: (_a = result.id) !== null && _a !== void 0 ? _a : '',
|
|
25
|
+
bundleType: (_b = result.type) !== null && _b !== void 0 ? _b : '',
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
exports.summarizeBundleResult = summarizeBundleResult;
|
|
12
29
|
/**
|
|
13
30
|
* The data points that describe what Medplum did with an executed bundle: the
|
|
14
31
|
* id of every resource it touched, and for each its type, status and location.
|
|
15
32
|
*/
|
|
16
33
|
const summarizeBatchResult = (result) => {
|
|
17
|
-
var _a, _b, _c, _d
|
|
34
|
+
var _a, _b, _c, _d;
|
|
18
35
|
const resourceIds = (_b = (_a = result.entry) === null || _a === void 0 ? void 0 : _a.map((entry) => {
|
|
19
36
|
var _a, _b;
|
|
20
37
|
if (((_a = entry.response) === null || _a === void 0 ? void 0 : _a.location) !== undefined &&
|
|
@@ -62,9 +79,8 @@ const summarizeBatchResult = (result) => {
|
|
|
62
79
|
};
|
|
63
80
|
}).filter((resource) => resource.id !== '')) !== null && _d !== void 0 ? _d : [];
|
|
64
81
|
return {
|
|
65
|
-
|
|
82
|
+
...(0, exports.summarizeBundleResult)(result),
|
|
66
83
|
resourceIds,
|
|
67
|
-
bundleType: (_f = result.type) !== null && _f !== void 0 ? _f : '',
|
|
68
84
|
resourcesCreated: JSON.stringify(resourcesCreated),
|
|
69
85
|
};
|
|
70
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeBatchResult.js","sourceRoot":"","sources":["../../../../extensions/medplum/utils/summarizeBatchResult.ts"],"names":[],"mappings":";;;AAGA,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AAEnD,
|
|
1
|
+
{"version":3,"file":"summarizeBatchResult.js","sourceRoot":"","sources":["../../../../extensions/medplum/utils/summarizeBatchResult.ts"],"names":[],"mappings":"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"}
|