@awell-health/awell-extensions 1.1.36 → 1.1.40
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/extensions/collectData/v1/actions/collectMedication/collectMedication.js +1 -1
- package/dist/extensions/collectData/v1/actions/collectMedication/collectMedication.js.map +1 -1
- package/dist/extensions/collectData/v1/actions/collectMedication/collectMedication.test.js +5 -3
- package/dist/extensions/collectData/v1/actions/collectMedication/collectMedication.test.js.map +1 -1
- package/dist/extensions/collectData/v1/actions/collectMedication/config/fields.d.ts +17 -2
- package/dist/extensions/collectData/v1/actions/collectMedication/config/fields.js +13 -2
- package/dist/extensions/collectData/v1/actions/collectMedication/config/fields.js.map +1 -1
- package/dist/extensions/experimental/index.js +0 -1
- package/dist/extensions/experimental/index.js.map +1 -1
- package/dist/extensions/experimental/v1/actions/index.d.ts +0 -1
- package/dist/extensions/experimental/v1/actions/index.js +1 -3
- package/dist/extensions/experimental/v1/actions/index.js.map +1 -1
- package/dist/extensions/markdown.json +2 -2
- package/dist/extensions/math/index.js +4 -0
- package/dist/extensions/math/index.js.map +1 -1
- package/dist/extensions/{experimental/v1/actions/enterMedication/config/datapoints.d.ts → math/v1/actions/divide/config/dataPoints.d.ts} +2 -2
- package/dist/extensions/{experimental/v1/actions/enterMedication/config/datapoints.js → math/v1/actions/divide/config/dataPoints.js} +4 -4
- package/dist/extensions/math/v1/actions/divide/config/dataPoints.js.map +1 -0
- package/dist/extensions/math/v1/actions/divide/config/fields.d.ts +28 -0
- package/dist/extensions/math/v1/actions/divide/config/fields.js +26 -0
- package/dist/extensions/math/v1/actions/divide/config/fields.js.map +1 -0
- package/dist/extensions/{experimental/v1/actions/enterMedication → math/v1/actions/divide}/config/index.d.ts +1 -1
- package/dist/extensions/{experimental/v1/actions/enterMedication → math/v1/actions/divide}/config/index.js +3 -3
- package/dist/extensions/math/v1/actions/divide/config/index.js.map +1 -0
- package/dist/extensions/{experimental/v1/actions/enterMedication/enterMedication.d.ts → math/v1/actions/divide/divide.d.ts} +1 -1
- package/dist/extensions/math/v1/actions/divide/divide.js +28 -0
- package/dist/extensions/math/v1/actions/divide/divide.js.map +1 -0
- package/dist/extensions/math/v1/actions/divide/divide.test.js +38 -0
- package/dist/extensions/math/v1/actions/divide/divide.test.js.map +1 -0
- package/dist/extensions/math/v1/actions/divide/index.d.ts +1 -0
- package/dist/extensions/math/v1/actions/divide/index.js +6 -0
- package/dist/extensions/math/v1/actions/divide/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/index.d.ts +4 -0
- package/dist/extensions/math/v1/actions/index.js +9 -1
- package/dist/extensions/math/v1/actions/index.js.map +1 -1
- package/dist/extensions/math/v1/actions/multiply/config/dataPoints.d.ts +6 -0
- package/dist/extensions/math/v1/actions/multiply/config/dataPoints.js +10 -0
- package/dist/extensions/math/v1/actions/multiply/config/dataPoints.js.map +1 -0
- package/dist/extensions/math/v1/actions/multiply/config/fields.d.ts +208 -0
- package/dist/extensions/math/v1/actions/multiply/config/fields.js +170 -0
- package/dist/extensions/math/v1/actions/multiply/config/fields.js.map +1 -0
- package/dist/extensions/math/v1/actions/multiply/config/index.d.ts +2 -0
- package/dist/extensions/math/v1/actions/multiply/config/index.js +9 -0
- package/dist/extensions/math/v1/actions/multiply/config/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/multiply/index.d.ts +1 -0
- package/dist/extensions/math/v1/actions/multiply/index.js +6 -0
- package/dist/extensions/math/v1/actions/multiply/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/multiply/multiply.d.ts +4 -0
- package/dist/extensions/math/v1/actions/multiply/multiply.js +31 -0
- package/dist/extensions/math/v1/actions/multiply/multiply.js.map +1 -0
- package/dist/extensions/math/v1/actions/multiply/multiply.test.d.ts +1 -0
- package/dist/extensions/math/v1/actions/multiply/multiply.test.js +74 -0
- package/dist/extensions/math/v1/actions/multiply/multiply.test.js.map +1 -0
- package/dist/extensions/math/v1/actions/subtract/config/dataPoints.d.ts +10 -0
- package/dist/extensions/math/v1/actions/subtract/config/dataPoints.js +14 -0
- package/dist/extensions/math/v1/actions/subtract/config/dataPoints.js.map +1 -0
- package/dist/extensions/math/v1/actions/subtract/config/fields.d.ts +28 -0
- package/dist/extensions/math/v1/actions/subtract/config/fields.js +26 -0
- package/dist/extensions/math/v1/actions/subtract/config/fields.js.map +1 -0
- package/dist/extensions/math/v1/actions/subtract/config/index.d.ts +2 -0
- package/dist/extensions/math/v1/actions/subtract/config/index.js +9 -0
- package/dist/extensions/math/v1/actions/subtract/config/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/subtract/index.d.ts +1 -0
- package/dist/extensions/math/v1/actions/subtract/index.js +6 -0
- package/dist/extensions/math/v1/actions/subtract/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/subtract/subtract.d.ts +4 -0
- package/dist/extensions/math/v1/actions/subtract/subtract.js +29 -0
- package/dist/extensions/math/v1/actions/subtract/subtract.js.map +1 -0
- package/dist/extensions/math/v1/actions/subtract/subtract.test.d.ts +1 -0
- package/dist/extensions/math/v1/actions/subtract/subtract.test.js +39 -0
- package/dist/extensions/math/v1/actions/subtract/subtract.test.js.map +1 -0
- package/dist/extensions/math/v1/actions/sum/config/dataPoints.d.ts +6 -0
- package/dist/extensions/math/v1/actions/sum/config/dataPoints.js +10 -0
- package/dist/extensions/math/v1/actions/sum/config/dataPoints.js.map +1 -0
- package/dist/extensions/math/v1/actions/sum/config/fields.d.ts +208 -0
- package/dist/extensions/math/v1/actions/sum/config/fields.js +170 -0
- package/dist/extensions/math/v1/actions/sum/config/fields.js.map +1 -0
- package/dist/extensions/math/v1/actions/sum/config/index.d.ts +2 -0
- package/dist/extensions/math/v1/actions/sum/config/index.js +9 -0
- package/dist/extensions/math/v1/actions/sum/config/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/sum/index.d.ts +1 -0
- package/dist/extensions/math/v1/actions/sum/index.js +6 -0
- package/dist/extensions/math/v1/actions/sum/index.js.map +1 -0
- package/dist/extensions/math/v1/actions/sum/sum.d.ts +4 -0
- package/dist/extensions/math/v1/actions/sum/sum.js +31 -0
- package/dist/extensions/math/v1/actions/sum/sum.js.map +1 -0
- package/dist/extensions/math/v1/actions/sum/sum.test.d.ts +1 -0
- package/dist/extensions/math/v1/actions/sum/sum.test.js +74 -0
- package/dist/extensions/math/v1/actions/sum/sum.test.js.map +1 -0
- package/package.json +1 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/config/datapoints.js.map +0 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/config/fields.d.ts +0 -18
- package/dist/extensions/experimental/v1/actions/enterMedication/config/fields.js +0 -18
- package/dist/extensions/experimental/v1/actions/enterMedication/config/fields.js.map +0 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/config/index.js.map +0 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/enterMedication.js +0 -24
- package/dist/extensions/experimental/v1/actions/enterMedication/enterMedication.js.map +0 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/enterMedication.test.js +0 -23
- package/dist/extensions/experimental/v1/actions/enterMedication/enterMedication.test.js.map +0 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/index.d.ts +0 -1
- package/dist/extensions/experimental/v1/actions/enterMedication/index.js +0 -6
- package/dist/extensions/experimental/v1/actions/enterMedication/index.js.map +0 -1
- /package/dist/extensions/{experimental/v1/actions/enterMedication/enterMedication.test.d.ts → math/v1/actions/divide/divide.test.d.ts} +0 -0
@@ -7,7 +7,7 @@ exports.collectMedication = {
|
|
7
7
|
key: 'collectMedication',
|
8
8
|
category: extensions_core_1.Category.FORMS,
|
9
9
|
title: 'Collect medication',
|
10
|
-
description: 'Collect medication
|
10
|
+
description: 'Collect medication from the user',
|
11
11
|
fields: config_1.fields,
|
12
12
|
dataPoints: config_1.dataPoints,
|
13
13
|
options: {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"collectMedication.js","sourceRoot":"","sources":["../../../../../../extensions/collectData/v1/actions/collectMedication/collectMedication.ts"],"names":[],"mappings":";;;AAEA,mEAAwD;AACxD,qCAA6C;AAEhC,QAAA,iBAAiB,GAA2C;IACvE,GAAG,EAAE,mBAAmB;IACxB,QAAQ,EAAE,0BAAQ,CAAC,KAAK;IACxB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,
|
1
|
+
{"version":3,"file":"collectMedication.js","sourceRoot":"","sources":["../../../../../../extensions/collectData/v1/actions/collectMedication/collectMedication.ts"],"names":[],"mappings":";;;AAEA,mEAAwD;AACxD,qCAA6C;AAEhC,QAAA,iBAAiB,GAA2C;IACvE,GAAG,EAAE,mBAAmB;IACxB,QAAQ,EAAE,0BAAQ,CAAC,KAAK;IACxB,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,kCAAkC;IAC/C,MAAM,EAAN,eAAM;IACN,UAAU,EAAV,mBAAU;IACV,OAAO,EAAE;QACP,YAAY,EAAE;YACZ,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,QAAQ;SACf;KACF;IACD,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAiB,EAAE;QACvE,qCAAqC;IACvC,CAAC;CACF,CAAA"}
|
@@ -10,12 +10,14 @@ describe('Advanced data collection - Collect medication', () => {
|
|
10
10
|
});
|
11
11
|
test('Should work', async () => {
|
12
12
|
const mockOnActivityCreateParams = (0, tests_1.generateTestPayload)({
|
13
|
-
fields: {
|
13
|
+
fields: {
|
14
|
+
label: 'Test',
|
15
|
+
},
|
14
16
|
settings: {},
|
15
17
|
});
|
16
18
|
await _1.collectMedication.onActivityCreated(mockOnActivityCreateParams, onComplete, onError);
|
17
|
-
expect(onError).not.
|
18
|
-
expect(onComplete).not.
|
19
|
+
expect(onError).not.toHaveBeenCalled();
|
20
|
+
expect(onComplete).not.toHaveBeenCalled();
|
19
21
|
});
|
20
22
|
});
|
21
23
|
//# sourceMappingURL=collectMedication.test.js.map
|
package/dist/extensions/collectData/v1/actions/collectMedication/collectMedication.test.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"collectMedication.test.js","sourceRoot":"","sources":["../../../../../../extensions/collectData/v1/actions/collectMedication/collectMedication.test.ts"],"names":[],"mappings":";;AAAA,wBAAqC;AACrC,oDAA8D;AAE9D,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,0BAA0B,GAAG,IAAA,2BAAmB,EAAC;YACrD,MAAM,EAAE,EAAE;
|
1
|
+
{"version":3,"file":"collectMedication.test.js","sourceRoot":"","sources":["../../../../../../extensions/collectData/v1/actions/collectMedication/collectMedication.test.ts"],"names":[],"mappings":";;AAAA,wBAAqC;AACrC,oDAA8D;AAE9D,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,0BAA0B,GAAG,IAAA,2BAAmB,EAAC;YACrD,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM;aACd;YACD,QAAQ,EAAE,EAAE;SACb,CAAC,CAAA;QAEF,MAAM,oBAAiB,CAAC,iBAAiB,CACvC,0BAA0B,EAC1B,UAAU,EACV,OAAO,CACR,CAAA;QAED,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QACtC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
@@ -1,3 +1,18 @@
|
|
1
|
+
import { FieldType } from '@awell-health/extensions-core';
|
1
2
|
import { z } from 'zod';
|
2
|
-
export declare const fields: {
|
3
|
-
|
3
|
+
export declare const fields: {
|
4
|
+
label: {
|
5
|
+
id: string;
|
6
|
+
label: string;
|
7
|
+
type: FieldType.STRING;
|
8
|
+
required: false;
|
9
|
+
description: string;
|
10
|
+
};
|
11
|
+
};
|
12
|
+
export declare const FieldsValidationSchema: z.ZodObject<{
|
13
|
+
label: z.ZodOptional<z.ZodString>;
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
15
|
+
label?: string | undefined;
|
16
|
+
}, {
|
17
|
+
label?: string | undefined;
|
18
|
+
}>;
|
@@ -1,7 +1,18 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.FieldsValidationSchema = exports.fields = void 0;
|
4
|
+
const extensions_core_1 = require("@awell-health/extensions-core");
|
4
5
|
const zod_1 = require("zod");
|
5
|
-
exports.fields = {
|
6
|
-
|
6
|
+
exports.fields = {
|
7
|
+
label: {
|
8
|
+
id: 'label',
|
9
|
+
label: 'Label',
|
10
|
+
type: extensions_core_1.FieldType.STRING,
|
11
|
+
required: false,
|
12
|
+
description: 'A label or description that will be shown above the question',
|
13
|
+
},
|
14
|
+
};
|
15
|
+
exports.FieldsValidationSchema = zod_1.z.object({
|
16
|
+
label: zod_1.z.string().optional(),
|
17
|
+
});
|
7
18
|
//# sourceMappingURL=fields.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/collectData/v1/actions/collectMedication/config/fields.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/collectData/v1/actions/collectMedication/config/fields.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AACrE,6BAAwC;AAE3B,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,8DAA8D;KAC5E;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACqB,CAAC,CAAA"}
|
@@ -18,7 +18,6 @@ exports.Experimental = {
|
|
18
18
|
schemas: schemas_1.schemas,
|
19
19
|
actions: {
|
20
20
|
requestVideoVisit: actions_1.requestVideoVisit,
|
21
|
-
enterMedication: actions_1.enterMedication,
|
22
21
|
wait: actions_1.wait,
|
23
22
|
patientRecommendation: actions_1.patientRecommendation,
|
24
23
|
redirect: actions_1.redirect,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/experimental/index.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/experimental/index.ts"],"names":[],"mappings":";;;AAAA,0CAMqB;AAErB,yCAAqC;AACrC,uCAAmC;AACnC,mEAAoE;AAEvD,QAAA,YAAY,GAAc;IACrC,GAAG,EAAE,cAAc;IACnB,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE,yDAAyD;IACnE,WAAW,EAAE,qCAAqC;IAClD,QAAQ,EAAE,0BAAQ,CAAC,QAAQ;IAC3B,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,QAAQ,EAAR,mBAAQ;IACR,OAAO,EAAP,iBAAO;IACP,OAAO,EAAE;QACP,iBAAiB,EAAjB,2BAAiB;QACjB,IAAI,EAAJ,cAAI;QACJ,qBAAqB,EAArB,+BAAqB;QACrB,QAAQ,EAAR,kBAAQ;QACR,YAAY,EAAZ,sBAAY;KACb;CACF,CAAA"}
|
@@ -1,10 +1,8 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.returnObject = exports.redirect = exports.patientRecommendation = exports.wait = exports.
|
3
|
+
exports.returnObject = exports.redirect = exports.patientRecommendation = exports.wait = exports.requestVideoVisit = void 0;
|
4
4
|
var requestVideoVisit_1 = require("./requestVideoVisit");
|
5
5
|
Object.defineProperty(exports, "requestVideoVisit", { enumerable: true, get: function () { return requestVideoVisit_1.requestVideoVisit; } });
|
6
|
-
var enterMedication_1 = require("./enterMedication");
|
7
|
-
Object.defineProperty(exports, "enterMedication", { enumerable: true, get: function () { return enterMedication_1.enterMedication; } });
|
8
6
|
var wait_1 = require("./wait");
|
9
7
|
Object.defineProperty(exports, "wait", { enumerable: true, get: function () { return wait_1.wait; } });
|
10
8
|
var patientRecommendation_1 = require("./patientRecommendation");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/experimental/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/experimental/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA;AAC1B,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,iEAA+D;AAAtD,8HAAA,qBAAqB,OAAA;AAC9B,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,+CAA6C;AAApC,4GAAA,YAAY,OAAA"}
|
@@ -28,7 +28,7 @@
|
|
28
28
|
"changelog": "# CM.com changelog\n"
|
29
29
|
},
|
30
30
|
"collectData": {
|
31
|
-
"readme": "---\ntitle: Advanced data collection\ndescription: Collect data from your users using a variety of input types and data sources\n---\n\nThis extension allows you to collect data from your users using a variety of more advanced input types and data sources.\n\n## Extension settings\n\nIn order to set up this extension, no settings are required.\n\n## Custom Actions\n\n### Dynamic choice selector\n\nStandard select questions in Awell forms have a discrete set of choices to select from that are defined at the time that the form is created. If the list of choices to present to your responders isn't known at the time the form is being built, or changes often, this action allows you to load choices dynamically from a remote data source.\n\nDynamically-loaded choices must adhere to the following format in a list form (i.e. an array):\n\n```json\n{\n \"id\": \"unique-id\",\n \"label\": \"Choice label\",\n \"value\": \"Choice value\"\n}\n```\n\nAdditionally, you can specify a free text search field (`Options - Search query param` field) to allow users to search through the choices. This is optional but highly recommended. If not specified, the choices will be fetched on question load and presented in a static list that cannot be filtered.\n\nAs an example, using the endpoint `https://example.com/choices` with a query parameter `search` (e.g. `https://example.com/choices?search=QUERY` where `QUERY` is whatever the user typed into the input), then the API is expected to return the choices based on that match the search term.\n\nWe recommend that your search logic returns an _alphabetically-sorted_ list of all options where the _lowercase_ label names _contain_ the _lowercase_ search term.\n\n```js\n// Example search logic\nconst searchTerm = req.query.search\nconst results = []\n\noptions.forEach((option) => {\n if (option.label.toLowerCase().includes(searchTerm.toLowerCase())) {\n results.push({\n label: option.label,\n value: option.value,\n id: option.id,\n })\n }\n})\n\nconst sortedResults = results.sort((a, b) => a.label.localeCompare(b.label))\nres.json(results)\n```\n",
|
31
|
+
"readme": "---\ntitle: Advanced data collection\ndescription: Collect data from your users using a variety of input types and data sources\n---\n\nThis extension allows you to collect data from your users using a variety of more advanced input types and data sources.\n\n## Extension settings\n\nIn order to set up this extension, no settings are required.\n\n## Custom Actions\n\n### Dynamic choice selector\n\nStandard select questions in Awell forms have a discrete set of choices to select from that are defined at the time that the form is created. If the list of choices to present to your responders isn't known at the time the form is being built, or changes often, this action allows you to load choices dynamically from a remote data source.\n\nDynamically-loaded choices must adhere to the following format in a list form (i.e. an array):\n\n```json\n{\n \"id\": \"unique-id\",\n \"label\": \"Choice label\",\n \"value\": \"Choice value\"\n}\n```\n\nAdditionally, you can specify a free text search field (`Options - Search query param` field) to allow users to search through the choices. This is optional but highly recommended. If not specified, the choices will be fetched on question load and presented in a static list that cannot be filtered.\n\nAs an example, using the endpoint `https://example.com/choices` with a query parameter `search` (e.g. `https://example.com/choices?search=QUERY` where `QUERY` is whatever the user typed into the input), then the API is expected to return the choices based on that match the search term.\n\nWe recommend that your search logic returns an _alphabetically-sorted_ list of all options where the _lowercase_ label names _contain_ the _lowercase_ search term.\n\n```js\n// Example search logic\nconst searchTerm = req.query.search\nconst results = []\n\noptions.forEach((option) => {\n if (option.label.toLowerCase().includes(searchTerm.toLowerCase())) {\n results.push({\n label: option.label,\n value: option.value,\n id: option.id,\n })\n }\n})\n\nconst sortedResults = results.sort((a, b) => a.label.localeCompare(b.label))\nres.json(results)\n```\n\n### Collect medication\n\nThis action enables patients to list their medications. They can add multiple medications, providing the name, dosage, and any specific instructions for each one.",
|
32
32
|
"changelog": "# Collect Data changelog\n"
|
33
33
|
},
|
34
34
|
"dockHealth": {
|
@@ -88,7 +88,7 @@
|
|
88
88
|
"changelog": "# Mailgun changelog"
|
89
89
|
},
|
90
90
|
"math": {
|
91
|
-
"readme": "---\ntitle: Math\ndescription: This extension adds custom actions to your care flow for simple mathematical operations.\n---\n# Math\n\nThis extension adds custom actions to your care flow for simple mathematical operations.\n\n## Custom Actions\n\n### Generate random number\n\nGenerates a random (whole) number that falls between the ranges of two numbers [min, max].\n\n### Calculate date difference\n\nCalculate the difference between two dates where \"date left\" is the minuend and \"date right\" the subtrahend.\n\n**You can choose the unit in which you would like to see the difference expressed:**\n\n1. Seconds: get the number of seconds between the given dates. Fractional seconds are truncated towards zero.\n2. Minutes: get the signed number of full (rounded towards 0) minutes between the given dates. Fractional minutes are truncated towards zero.\n3. Hours: get the number of hours between the given dates. Fractional hours are truncated towards zero.\n4. Days: get the number of full day periods between two dates. Fractional days are truncated towards zero.\n5. Weeks: get the number of full weeks between two dates. Fractional weeks are truncated towards zero.\n6. Months: get the number of full months between the given dates. Fractional months are truncated towards zero.\n7. Years: get the number of full years between the given dates.\n",
|
91
|
+
"readme": "---\ntitle: Math\ndescription: This extension adds custom actions to your care flow for simple mathematical operations.\n---\n# Math\n\nThis extension adds custom actions to your care flow for simple mathematical operations.\n\n## Custom Actions\n\n### Sum\n\nCalculate the sum of two or more addends.\n\n### Subtract\n\nCalculate the difference between two numbers.\n\n### Multiply\n\nMultiply a series of numbers to get a final product.\n\n### Divide\n\nDivide two numbers.\n\n### Generate random number\n\nGenerates a random (whole) number that falls between the ranges of two numbers [min, max].\n\n### Calculate date difference\n\nCalculate the difference between two dates where \"date left\" is the minuend and \"date right\" the subtrahend.\n\n**You can choose the unit in which you would like to see the difference expressed:**\n\n1. Seconds: get the number of seconds between the given dates. Fractional seconds are truncated towards zero.\n2. Minutes: get the signed number of full (rounded towards 0) minutes between the given dates. Fractional minutes are truncated towards zero.\n3. Hours: get the number of hours between the given dates. Fractional hours are truncated towards zero.\n4. Days: get the number of full day periods between two dates. Fractional days are truncated towards zero.\n5. Weeks: get the number of full weeks between two dates. Fractional weeks are truncated towards zero.\n6. Months: get the number of full months between the given dates. Fractional months are truncated towards zero.\n7. Years: get the number of full years between the given dates.\n",
|
92
92
|
"changelog": "# Math changelog"
|
93
93
|
},
|
94
94
|
"medplum": {
|
@@ -17,6 +17,10 @@ exports.MathExtension = {
|
|
17
17
|
actions: {
|
18
18
|
generateRandomNumber: actions_1.generateRandomNumber,
|
19
19
|
calculateDateDifference: actions_1.calculateDateDifference,
|
20
|
+
subtract: actions_1.subtract,
|
21
|
+
sum: actions_1.sum,
|
22
|
+
divide: actions_1.divide,
|
23
|
+
multiply: actions_1.multiply,
|
20
24
|
},
|
21
25
|
};
|
22
26
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/math/index.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/math/index.ts"],"names":[],"mappings":";;;AAAA,0CAOqB;AAErB,yCAAqC;AACrC,mEAAoE;AAEvD,QAAA,aAAa,GAAc;IACtC,GAAG,EAAE,MAAM;IACX,QAAQ,EAAE,0BAAQ,CAAC,IAAI;IACvB,KAAK,EAAE,MAAM;IACb,QAAQ,EACN,4FAA4F;IAC9F,WAAW,EACT,4FAA4F;IAC9F,QAAQ,EAAR,mBAAQ;IACR,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,OAAO,EAAE;QACP,oBAAoB,EAApB,8BAAoB;QACpB,uBAAuB,EAAvB,iCAAuB;QACvB,QAAQ,EAAR,kBAAQ;QACR,GAAG,EAAH,aAAG;QACH,MAAM,EAAN,gBAAM;QACN,QAAQ,EAAR,kBAAQ;KACT;CACF,CAAA"}
|
@@ -2,9 +2,9 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.dataPoints = void 0;
|
4
4
|
exports.dataPoints = {
|
5
|
-
|
6
|
-
key: '
|
7
|
-
valueType: '
|
5
|
+
quotient: {
|
6
|
+
key: 'quotient',
|
7
|
+
valueType: 'number',
|
8
8
|
},
|
9
9
|
};
|
10
|
-
//# sourceMappingURL=
|
10
|
+
//# sourceMappingURL=dataPoints.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dataPoints.js","sourceRoot":"","sources":["../../../../../../../extensions/math/v1/actions/divide/config/dataPoints.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG;IACxB,QAAQ,EAAE;QACR,GAAG,EAAE,UAAU;QACf,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA"}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { z } from 'zod';
|
2
|
+
import { FieldType } from '@awell-health/extensions-core';
|
3
|
+
export declare const fields: {
|
4
|
+
dividend: {
|
5
|
+
id: string;
|
6
|
+
label: string;
|
7
|
+
description: string;
|
8
|
+
required: true;
|
9
|
+
type: FieldType.NUMERIC;
|
10
|
+
};
|
11
|
+
divisor: {
|
12
|
+
id: string;
|
13
|
+
label: string;
|
14
|
+
description: string;
|
15
|
+
required: true;
|
16
|
+
type: FieldType.NUMERIC;
|
17
|
+
};
|
18
|
+
};
|
19
|
+
export declare const FieldsValidationSchema: z.ZodObject<{
|
20
|
+
dividend: z.ZodNumber;
|
21
|
+
divisor: z.ZodNumber;
|
22
|
+
}, "strip", z.ZodTypeAny, {
|
23
|
+
dividend: number;
|
24
|
+
divisor: number;
|
25
|
+
}, {
|
26
|
+
dividend: number;
|
27
|
+
divisor: number;
|
28
|
+
}>;
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.FieldsValidationSchema = exports.fields = void 0;
|
4
|
+
const zod_1 = require("zod");
|
5
|
+
const extensions_core_1 = require("@awell-health/extensions-core");
|
6
|
+
exports.fields = {
|
7
|
+
dividend: {
|
8
|
+
id: 'dividend',
|
9
|
+
label: 'Dividend',
|
10
|
+
description: '',
|
11
|
+
required: true,
|
12
|
+
type: extensions_core_1.FieldType.NUMERIC,
|
13
|
+
},
|
14
|
+
divisor: {
|
15
|
+
id: 'divisor',
|
16
|
+
label: 'Divisor',
|
17
|
+
description: '',
|
18
|
+
required: true,
|
19
|
+
type: extensions_core_1.FieldType.NUMERIC,
|
20
|
+
},
|
21
|
+
};
|
22
|
+
exports.FieldsValidationSchema = zod_1.z.object({
|
23
|
+
dividend: zod_1.z.number(),
|
24
|
+
divisor: zod_1.z.number(),
|
25
|
+
});
|
26
|
+
//# sourceMappingURL=fields.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/math/v1/actions/divide/config/fields.ts"],"names":[],"mappings":";;;AAAA,6BAAwC;AACxC,mEAAqE;AAExD,QAAA,MAAM,GAAG;IACpB,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,2BAAS,CAAC,OAAO;KACxB;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;CAC8B,CAAC,CAAA"}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.FieldsValidationSchema = exports.fields = exports.dataPoints = void 0;
|
4
|
+
var dataPoints_1 = require("./dataPoints");
|
5
|
+
Object.defineProperty(exports, "dataPoints", { enumerable: true, get: function () { return dataPoints_1.dataPoints; } });
|
4
6
|
var fields_1 = require("./fields");
|
5
7
|
Object.defineProperty(exports, "fields", { enumerable: true, get: function () { return fields_1.fields; } });
|
6
8
|
Object.defineProperty(exports, "FieldsValidationSchema", { enumerable: true, get: function () { return fields_1.FieldsValidationSchema; } });
|
7
|
-
var datapoints_1 = require("./datapoints");
|
8
|
-
Object.defineProperty(exports, "dataPoints", { enumerable: true, get: function () { return datapoints_1.dataPoints; } });
|
9
9
|
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../extensions/math/v1/actions/divide/config/index.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAAhC,wGAAA,UAAU,OAAA;AACnB,mCAAyD;AAAhD,gGAAA,MAAM,OAAA;AAAE,gHAAA,sBAAsB,OAAA"}
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import { type Action } from '@awell-health/extensions-core';
|
2
2
|
import { type settings } from '../../../settings';
|
3
3
|
import { fields } from './config';
|
4
|
-
export declare const
|
4
|
+
export declare const divide: Action<typeof fields, typeof settings>;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.divide = void 0;
|
4
|
+
const extensions_core_1 = require("@awell-health/extensions-core");
|
5
|
+
const config_1 = require("./config");
|
6
|
+
const zod_1 = require("zod");
|
7
|
+
exports.divide = {
|
8
|
+
key: 'divide',
|
9
|
+
title: 'Divide',
|
10
|
+
description: 'Divide two numbers',
|
11
|
+
category: extensions_core_1.Category.MATH,
|
12
|
+
fields: config_1.fields,
|
13
|
+
dataPoints: config_1.dataPoints,
|
14
|
+
previewable: true,
|
15
|
+
onActivityCreated: async (payload, onComplete, onError) => {
|
16
|
+
const { fields: { dividend, divisor }, } = (0, extensions_core_1.validate)({
|
17
|
+
schema: zod_1.z.object({ fields: config_1.FieldsValidationSchema }),
|
18
|
+
payload,
|
19
|
+
});
|
20
|
+
const quotient = dividend / divisor;
|
21
|
+
await onComplete({
|
22
|
+
data_points: {
|
23
|
+
quotient: String(quotient),
|
24
|
+
},
|
25
|
+
});
|
26
|
+
},
|
27
|
+
};
|
28
|
+
//# sourceMappingURL=divide.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"divide.js","sourceRoot":"","sources":["../../../../../../extensions/math/v1/actions/divide/divide.ts"],"names":[],"mappings":";;;AACA,mEAAkE;AAElE,qCAAqE;AACrE,6BAAuB;AAEV,QAAA,MAAM,GAA2C;IAC5D,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,oBAAoB;IACjC,QAAQ,EAAE,0BAAQ,CAAC,IAAI;IACvB,MAAM,EAAN,eAAM;IACN,UAAU,EAAV,mBAAU;IACV,WAAW,EAAE,IAAI;IACjB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAiB,EAAE;QACvE,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAC9B,GAAG,IAAA,0BAAQ,EAAC;YACX,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,+BAAsB,EAAE,CAAC;YACpD,OAAO;SACR,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;QAEnC,MAAM,UAAU,CAAC;YACf,WAAW,EAAE;gBACX,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const zod_1 = require("zod");
|
4
|
+
const tests_1 = require("../../../../../src/tests");
|
5
|
+
const divide_1 = require("./divide");
|
6
|
+
describe('Divide', () => {
|
7
|
+
const onComplete = jest.fn();
|
8
|
+
const onError = jest.fn();
|
9
|
+
beforeEach(() => {
|
10
|
+
onComplete.mockClear();
|
11
|
+
onError.mockClear();
|
12
|
+
});
|
13
|
+
test('Should work', async () => {
|
14
|
+
await divide_1.divide.onActivityCreated((0, tests_1.generateTestPayload)({
|
15
|
+
fields: {
|
16
|
+
dividend: 10,
|
17
|
+
divisor: 5,
|
18
|
+
},
|
19
|
+
settings: {},
|
20
|
+
}), onComplete, onError);
|
21
|
+
expect(onComplete).toHaveBeenCalledWith({
|
22
|
+
data_points: {
|
23
|
+
quotient: '2',
|
24
|
+
},
|
25
|
+
});
|
26
|
+
expect(onError).not.toHaveBeenCalled();
|
27
|
+
});
|
28
|
+
test('Should return an error if action fields are undefined', async () => {
|
29
|
+
await expect(divide_1.divide.onActivityCreated((0, tests_1.generateTestPayload)({
|
30
|
+
fields: {
|
31
|
+
dividend: undefined,
|
32
|
+
divisor: undefined,
|
33
|
+
},
|
34
|
+
settings: {},
|
35
|
+
}), onComplete, onError)).rejects.toThrow(zod_1.ZodError);
|
36
|
+
});
|
37
|
+
});
|
38
|
+
//# sourceMappingURL=divide.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"divide.test.js","sourceRoot":"","sources":["../../../../../../extensions/math/v1/actions/divide/divide.test.ts"],"names":[],"mappings":";;AAAA,6BAA8B;AAC9B,oDAA8D;AAC9D,qCAAiC;AAEjC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,SAAS,EAAE,CAAA;QACtB,OAAO,CAAC,SAAS,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,eAAM,CAAC,iBAAiB,CAC5B,IAAA,2BAAmB,EAAC;YAClB,MAAM,EAAE;gBACN,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,CAAC;aACX;YACD,QAAQ,EAAE,EAAE;SACb,CAAC,EACF,UAAU,EACV,OAAO,CACR,CAAA;QAED,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC;YACtC,WAAW,EAAE;gBACX,QAAQ,EAAE,GAAG;aACd;SACF,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,MAAM,CACV,eAAM,CAAC,iBAAiB,CACtB,IAAA,2BAAmB,EAAC;YAClB,MAAM,EAAE;gBACN,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,SAAS;aACnB;YACD,QAAQ,EAAE,EAAE;SACb,CAAC,EACF,UAAU,EACV,OAAO,CACR,CACF,CAAC,OAAO,CAAC,OAAO,CAAC,cAAQ,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { divide } from './divide';
|
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.divide = void 0;
|
4
|
+
var divide_1 = require("./divide");
|
5
|
+
Object.defineProperty(exports, "divide", { enumerable: true, get: function () { return divide_1.divide; } });
|
6
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/math/v1/actions/divide/index.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAAxB,gGAAA,MAAM,OAAA"}
|
@@ -1,2 +1,6 @@
|
|
1
1
|
export { generateRandomNumber } from './generateRandomNumber';
|
2
2
|
export { calculateDateDifference } from './calculateDateDifference';
|
3
|
+
export { sum } from './sum';
|
4
|
+
export { subtract } from './subtract';
|
5
|
+
export { divide } from './divide';
|
6
|
+
export { multiply } from './multiply';
|
@@ -1,8 +1,16 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.calculateDateDifference = exports.generateRandomNumber = void 0;
|
3
|
+
exports.multiply = exports.divide = exports.subtract = exports.sum = exports.calculateDateDifference = exports.generateRandomNumber = void 0;
|
4
4
|
var generateRandomNumber_1 = require("./generateRandomNumber");
|
5
5
|
Object.defineProperty(exports, "generateRandomNumber", { enumerable: true, get: function () { return generateRandomNumber_1.generateRandomNumber; } });
|
6
6
|
var calculateDateDifference_1 = require("./calculateDateDifference");
|
7
7
|
Object.defineProperty(exports, "calculateDateDifference", { enumerable: true, get: function () { return calculateDateDifference_1.calculateDateDifference; } });
|
8
|
+
var sum_1 = require("./sum");
|
9
|
+
Object.defineProperty(exports, "sum", { enumerable: true, get: function () { return sum_1.sum; } });
|
10
|
+
var subtract_1 = require("./subtract");
|
11
|
+
Object.defineProperty(exports, "subtract", { enumerable: true, get: function () { return subtract_1.subtract; } });
|
12
|
+
var divide_1 = require("./divide");
|
13
|
+
Object.defineProperty(exports, "divide", { enumerable: true, get: function () { return divide_1.divide; } });
|
14
|
+
var multiply_1 = require("./multiply");
|
15
|
+
Object.defineProperty(exports, "multiply", { enumerable: true, get: function () { return multiply_1.multiply; } });
|
8
16
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/math/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAApD,4HAAA,oBAAoB,OAAA;AAC7B,qEAAmE;AAA1D,kIAAA,uBAAuB,OAAA"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/math/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,+DAA6D;AAApD,4HAAA,oBAAoB,OAAA;AAC7B,qEAAmE;AAA1D,kIAAA,uBAAuB,OAAA;AAChC,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dataPoints.js","sourceRoot":"","sources":["../../../../../../../extensions/math/v1/actions/multiply/config/dataPoints.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE;QACP,GAAG,EAAE,SAAS;QACd,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA"}
|