@tellescope/sdk 1.250.1 → 1.251.0
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/lib/cjs/sdk.d.ts +9 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +3 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/api_tests/account_switcher.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/account_switcher.test.js +1700 -306
- package/lib/cjs/tests/api_tests/account_switcher.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.js +28 -15
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/enduser_login.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/enduser_login.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/enduser_login.test.js +315 -0
- package/lib/cjs/tests/api_tests/enduser_login.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/medication_added_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/medication_added_trigger.test.js +556 -105
- package/lib/cjs/tests/api_tests/medication_added_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +7 -0
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js +436 -0
- package/lib/cjs/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.js +370 -0
- package/lib/cjs/tests/api_tests/push_forms_to_portal_group_completion.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.js +373 -0
- package/lib/cjs/tests/api_tests/set_fields_order_templates.test.js.map +1 -0
- package/lib/cjs/tests/setup.d.ts.map +1 -1
- package/lib/cjs/tests/setup.js +47 -32
- package/lib/cjs/tests/setup.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +190 -161
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/cjs/tests/unit_tests/conditional_logic_medication.test.d.ts +3 -0
- package/lib/cjs/tests/unit_tests/conditional_logic_medication.test.d.ts.map +1 -0
- package/lib/cjs/tests/unit_tests/conditional_logic_medication.test.js +114 -0
- package/lib/cjs/tests/unit_tests/conditional_logic_medication.test.js.map +1 -0
- package/lib/esm/sdk.d.ts +9 -0
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +3 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/api_tests/account_switcher.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/account_switcher.test.js +1702 -305
- package/lib/esm/tests/api_tests/account_switcher.test.js.map +1 -1
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.js +28 -15
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.js.map +1 -1
- package/lib/esm/tests/api_tests/enduser_login.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/enduser_login.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/enduser_login.test.js +308 -0
- package/lib/esm/tests/api_tests/enduser_login.test.js.map +1 -0
- package/lib/esm/tests/api_tests/enduser_login_phi_disclosure.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/enduser_login_phi_disclosure.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/enduser_login_phi_disclosure.test.js +268 -0
- package/lib/esm/tests/api_tests/enduser_login_phi_disclosure.test.js.map +1 -0
- package/lib/esm/tests/api_tests/medication_added_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/medication_added_trigger.test.js +556 -105
- package/lib/esm/tests/api_tests/medication_added_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts +7 -0
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js +432 -0
- package/lib/esm/tests/api_tests/outbound_chat_sent_trigger.test.js.map +1 -0
- package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.js +366 -0
- package/lib/esm/tests/api_tests/push_forms_to_portal_group_completion.test.js.map +1 -0
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.js +369 -0
- package/lib/esm/tests/api_tests/set_fields_order_templates.test.js.map +1 -0
- package/lib/esm/tests/setup.d.ts.map +1 -1
- package/lib/esm/tests/setup.js +47 -32
- package/lib/esm/tests/setup.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +190 -161
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/esm/tests/unit_tests/conditional_logic_medication.test.d.ts +3 -0
- package/lib/esm/tests/unit_tests/conditional_logic_medication.test.d.ts.map +1 -0
- package/lib/esm/tests/unit_tests/conditional_logic_medication.test.js +111 -0
- package/lib/esm/tests/unit_tests/conditional_logic_medication.test.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/sdk.ts +12 -0
- package/src/tests/api_tests/account_switcher.test.ts +1283 -0
- package/src/tests/api_tests/enduser_cross_access_isolation.test.ts +26 -0
- package/src/tests/api_tests/enduser_login.test.ts +215 -0
- package/src/tests/api_tests/medication_added_trigger.test.ts +345 -4
- package/src/tests/api_tests/outbound_chat_sent_trigger.test.ts +339 -0
- package/src/tests/api_tests/push_forms_to_portal_group_completion.test.ts +198 -0
- package/src/tests/api_tests/set_fields_order_templates.test.ts +258 -0
- package/src/tests/setup.ts +8 -1
- package/src/tests/tests.ts +23 -6
- package/src/tests/unit_tests/conditional_logic_medication.test.ts +133 -0
- package/test_generated.pdf +0 -0
|
@@ -45,9 +45,9 @@ var host = process.env.API_URL || "http://localhost:8080";
|
|
|
45
45
|
var medication_added_trigger_tests = function (_a) {
|
|
46
46
|
var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
|
|
47
47
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
48
|
-
var t1, t2, t3, t4, t5, enduser1, enduser2, enduser3, enduser4, enduser5, enduser6, med1, med2, med3, med4, med5, med6, belugaForm, belugaEnduser, belugaFormResponse, belugaTrigger, webhookResponse, _b, _c, _d, belugaMeds,
|
|
49
|
-
return __generator(this, function (
|
|
50
|
-
switch (
|
|
48
|
+
var t1, t2, t3, t4, t5, enduser1, enduser2, enduser3, enduser4, enduser5, enduser6, med1, med2, med3, med4, med5, med6, belugaForm, belugaEnduser, belugaFormResponse, belugaTrigger, webhookResponse, _b, _c, _d, belugaMeds, belugaMedSemaglutide, belugaMedMetformin, belugaFormNoCategory, belugaEnduserNoCategory, belugaFormResponseNoCategory, webhookResponseNoCategory, _e, _f, _g, belugaMedsNoCategory, belugaMedNoCategory, setFieldsTrigger, setFieldsEnduser, setFieldsMed, setFieldsTriggerFiltered, setFieldsEnduser2, setFieldsMed2, setFieldsCategoryTrigger, setFieldsCategoryEnduser, setFieldsCategoryMed, setFieldsCategoryEnduserEmpty, setFieldsCategoryMedEmpty, c1Trigger, c1MatchEnduser, c1MissEnduser, c2Trigger, c2MatchEnduser, c2MissEnduser, c3Trigger, c3MatchEnduser, c3MissEnduser, c4Trigger, c4MatchA, c4MatchB, c4Miss, c5Trigger, c5Match, c5Miss, c6Trigger, c6Match;
|
|
49
|
+
return __generator(this, function (_h) {
|
|
50
|
+
switch (_h.label) {
|
|
51
51
|
case 0:
|
|
52
52
|
(0, testing_1.log_header)("Automation Trigger Tests (Medication Added)");
|
|
53
53
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
@@ -59,7 +59,7 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
59
59
|
// T2: Title filter only
|
|
60
60
|
];
|
|
61
61
|
case 1:
|
|
62
|
-
t1 =
|
|
62
|
+
t1 = _h.sent();
|
|
63
63
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
64
64
|
event: { type: 'Medication Added', info: { titles: ['Lisinopril'], protocols: [] } },
|
|
65
65
|
action: { type: 'Add Tags', info: { tags: ['Med-Title-Match'] } },
|
|
@@ -69,7 +69,7 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
69
69
|
// T3: Protocol filter only
|
|
70
70
|
];
|
|
71
71
|
case 2:
|
|
72
|
-
t2 =
|
|
72
|
+
t2 = _h.sent();
|
|
73
73
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
74
74
|
event: { type: 'Medication Added', info: { titles: [], protocols: ['Weight Loss'] } },
|
|
75
75
|
action: { type: 'Add Tags', info: { tags: ['Med-Protocol-Match'] } },
|
|
@@ -79,7 +79,7 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
79
79
|
// T4: Title + protocol filter
|
|
80
80
|
];
|
|
81
81
|
case 3:
|
|
82
|
-
t3 =
|
|
82
|
+
t3 = _h.sent();
|
|
83
83
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
84
84
|
event: { type: 'Medication Added', info: { titles: ['Metformin'], protocols: ['Diabetes'] } },
|
|
85
85
|
action: { type: 'Add Tags', info: { tags: ['Med-Title-And-Protocol'] } },
|
|
@@ -89,7 +89,7 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
89
89
|
// T5: Protocol filter that won't match
|
|
90
90
|
];
|
|
91
91
|
case 4:
|
|
92
|
-
t4 =
|
|
92
|
+
t4 = _h.sent();
|
|
93
93
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
94
94
|
event: { type: 'Medication Added', info: { titles: [], protocols: ['Dermatology'] } },
|
|
95
95
|
action: { type: 'Add Tags', info: { tags: ['Med-Derm-Protocol'] } },
|
|
@@ -99,154 +99,154 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
99
99
|
// Create separate endusers to avoid trigger throttling (1 minute per trigger per enduser)
|
|
100
100
|
];
|
|
101
101
|
case 5:
|
|
102
|
-
t5 =
|
|
102
|
+
t5 = _h.sent();
|
|
103
103
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
104
104
|
case 6:
|
|
105
|
-
enduser1 =
|
|
105
|
+
enduser1 = _h.sent();
|
|
106
106
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
107
107
|
case 7:
|
|
108
|
-
enduser2 =
|
|
108
|
+
enduser2 = _h.sent();
|
|
109
109
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
110
110
|
case 8:
|
|
111
|
-
enduser3 =
|
|
111
|
+
enduser3 = _h.sent();
|
|
112
112
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
113
113
|
case 9:
|
|
114
|
-
enduser4 =
|
|
114
|
+
enduser4 = _h.sent();
|
|
115
115
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
116
116
|
case 10:
|
|
117
|
-
enduser5 =
|
|
117
|
+
enduser5 = _h.sent();
|
|
118
118
|
return [4 /*yield*/, sdk.api.endusers.createOne({})
|
|
119
119
|
// Test 1: Any medication — empty titles + empty protocols → fires for any medication
|
|
120
120
|
];
|
|
121
121
|
case 11:
|
|
122
|
-
enduser6 =
|
|
122
|
+
enduser6 = _h.sent();
|
|
123
123
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
124
124
|
enduserId: enduser1.id,
|
|
125
125
|
title: 'Aspirin',
|
|
126
126
|
})];
|
|
127
127
|
case 12:
|
|
128
|
-
med1 =
|
|
128
|
+
med1 = _h.sent();
|
|
129
129
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
130
130
|
case 13:
|
|
131
|
-
|
|
131
|
+
_h.sent();
|
|
132
132
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Any medication (no filters)", function () { return sdk.api.endusers.getOne(enduser1.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Any')); } })
|
|
133
133
|
// Test 2: Title filter only — matching title, no protocol filter → fires
|
|
134
134
|
];
|
|
135
135
|
case 14:
|
|
136
|
-
|
|
136
|
+
_h.sent();
|
|
137
137
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
138
138
|
enduserId: enduser2.id,
|
|
139
139
|
title: 'Lisinopril',
|
|
140
140
|
})];
|
|
141
141
|
case 15:
|
|
142
|
-
med2 =
|
|
142
|
+
med2 = _h.sent();
|
|
143
143
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
144
144
|
case 16:
|
|
145
|
-
|
|
145
|
+
_h.sent();
|
|
146
146
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Title filter match", function () { return sdk.api.endusers.getOne(enduser2.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Title-Match')); } })
|
|
147
147
|
// Test 3: Protocol filter only — matching protocol, no title filter → fires
|
|
148
148
|
];
|
|
149
149
|
case 17:
|
|
150
|
-
|
|
150
|
+
_h.sent();
|
|
151
151
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
152
152
|
enduserId: enduser3.id,
|
|
153
153
|
title: 'Semaglutide',
|
|
154
154
|
protocol: 'Weight Loss',
|
|
155
155
|
})];
|
|
156
156
|
case 18:
|
|
157
|
-
med3 =
|
|
157
|
+
med3 = _h.sent();
|
|
158
158
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
159
159
|
case 19:
|
|
160
|
-
|
|
160
|
+
_h.sent();
|
|
161
161
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Protocol filter match", function () { return sdk.api.endusers.getOne(enduser3.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Protocol-Match')); } })
|
|
162
162
|
// Test 4: Title + protocol filter — both match → fires
|
|
163
163
|
];
|
|
164
164
|
case 20:
|
|
165
|
-
|
|
165
|
+
_h.sent();
|
|
166
166
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
167
167
|
enduserId: enduser4.id,
|
|
168
168
|
title: 'Metformin',
|
|
169
169
|
protocol: 'Diabetes',
|
|
170
170
|
})];
|
|
171
171
|
case 21:
|
|
172
|
-
med4 =
|
|
172
|
+
med4 = _h.sent();
|
|
173
173
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
174
174
|
case 22:
|
|
175
|
-
|
|
175
|
+
_h.sent();
|
|
176
176
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Title and protocol filter match", function () { return sdk.api.endusers.getOne(enduser4.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Title-And-Protocol')); } })
|
|
177
177
|
// Test 5: Non-matching protocol — protocol filter doesn't match → does NOT fire
|
|
178
178
|
];
|
|
179
179
|
case 23:
|
|
180
|
-
|
|
180
|
+
_h.sent();
|
|
181
181
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
182
182
|
enduserId: enduser5.id,
|
|
183
183
|
title: 'Ibuprofen',
|
|
184
184
|
protocol: 'Pain Management',
|
|
185
185
|
})];
|
|
186
186
|
case 24:
|
|
187
|
-
med5 =
|
|
187
|
+
med5 = _h.sent();
|
|
188
188
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
189
189
|
case 25:
|
|
190
|
-
|
|
190
|
+
_h.sent();
|
|
191
191
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Non-matching protocol does NOT fire", function () { return sdk.api.endusers.getOne(enduser5.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Med-Derm-Protocol')); } })
|
|
192
192
|
// Test 6: No protocol on medication — trigger has protocol filter, medication has no protocol → does NOT fire
|
|
193
193
|
];
|
|
194
194
|
case 26:
|
|
195
|
-
|
|
195
|
+
_h.sent();
|
|
196
196
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
197
197
|
enduserId: enduser6.id,
|
|
198
198
|
title: 'Amoxicillin',
|
|
199
199
|
})];
|
|
200
200
|
case 27:
|
|
201
|
-
med6 =
|
|
201
|
+
med6 = _h.sent();
|
|
202
202
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
203
203
|
case 28:
|
|
204
|
-
|
|
204
|
+
_h.sent();
|
|
205
205
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - No protocol on med, protocol filter does NOT fire", function () { return sdk.api.endusers.getOne(enduser6.id); }, { onResult: function (e) { var _a, _b, _c; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Med-Protocol-Match')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Med-Derm-Protocol')); } })];
|
|
206
206
|
case 29:
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
_h.sent();
|
|
208
|
+
_h.label = 30;
|
|
209
209
|
case 30:
|
|
210
|
-
|
|
210
|
+
_h.trys.push([30, , 42, 43]);
|
|
211
211
|
// Clean up test data - triggers first
|
|
212
212
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t1.id)];
|
|
213
213
|
case 31:
|
|
214
214
|
// Clean up test data - triggers first
|
|
215
|
-
|
|
215
|
+
_h.sent();
|
|
216
216
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t2.id)];
|
|
217
217
|
case 32:
|
|
218
|
-
|
|
218
|
+
_h.sent();
|
|
219
219
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t3.id)];
|
|
220
220
|
case 33:
|
|
221
|
-
|
|
221
|
+
_h.sent();
|
|
222
222
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t4.id)];
|
|
223
223
|
case 34:
|
|
224
|
-
|
|
224
|
+
_h.sent();
|
|
225
225
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t5.id)
|
|
226
226
|
// Clean up endusers (also cleans up medications)
|
|
227
227
|
];
|
|
228
228
|
case 35:
|
|
229
|
-
|
|
229
|
+
_h.sent();
|
|
230
230
|
// Clean up endusers (also cleans up medications)
|
|
231
231
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser1.id)];
|
|
232
232
|
case 36:
|
|
233
233
|
// Clean up endusers (also cleans up medications)
|
|
234
|
-
|
|
234
|
+
_h.sent();
|
|
235
235
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser2.id)];
|
|
236
236
|
case 37:
|
|
237
|
-
|
|
237
|
+
_h.sent();
|
|
238
238
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser3.id)];
|
|
239
239
|
case 38:
|
|
240
|
-
|
|
240
|
+
_h.sent();
|
|
241
241
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser4.id)];
|
|
242
242
|
case 39:
|
|
243
|
-
|
|
243
|
+
_h.sent();
|
|
244
244
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser5.id)];
|
|
245
245
|
case 40:
|
|
246
|
-
|
|
246
|
+
_h.sent();
|
|
247
247
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser6.id)];
|
|
248
248
|
case 41:
|
|
249
|
-
|
|
249
|
+
_h.sent();
|
|
250
250
|
return [3 /*break*/, 43];
|
|
251
251
|
case 42: return [7 /*endfinally*/];
|
|
252
252
|
case 43:
|
|
@@ -257,12 +257,12 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
257
257
|
belugaVisitType: 'Weight Loss',
|
|
258
258
|
})];
|
|
259
259
|
case 44:
|
|
260
|
-
belugaForm =
|
|
260
|
+
belugaForm = _h.sent();
|
|
261
261
|
return [4 /*yield*/, sdk.api.endusers.createOne({})
|
|
262
262
|
// Create a form response that the webhook can look up by masterId
|
|
263
263
|
];
|
|
264
264
|
case 45:
|
|
265
|
-
belugaEnduser =
|
|
265
|
+
belugaEnduser = _h.sent();
|
|
266
266
|
return [4 /*yield*/, sdk.api.form_responses.createOne({
|
|
267
267
|
formId: belugaForm.id,
|
|
268
268
|
enduserId: belugaEnduser.id,
|
|
@@ -276,17 +276,17 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
276
276
|
// Create a trigger that filters on protocol 'Weight Loss'
|
|
277
277
|
];
|
|
278
278
|
case 46:
|
|
279
|
-
belugaFormResponse =
|
|
279
|
+
belugaFormResponse = _h.sent();
|
|
280
280
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
281
281
|
event: { type: 'Medication Added', info: { titles: [], protocols: ['Weight Loss'] } },
|
|
282
282
|
action: { type: 'Add Tags', info: { tags: ['Med-Beluga-Protocol'] } },
|
|
283
283
|
status: 'Active',
|
|
284
284
|
title: "Medication - Beluga Protocol Test"
|
|
285
285
|
})
|
|
286
|
-
// Simulate the Beluga RX_WRITTEN webhook
|
|
286
|
+
// Simulate the Beluga RX_WRITTEN webhook with two meds covering category present (typical) and "N/A"
|
|
287
287
|
];
|
|
288
288
|
case 47:
|
|
289
|
-
belugaTrigger =
|
|
289
|
+
belugaTrigger = _h.sent();
|
|
290
290
|
return [4 /*yield*/, fetch("".concat(host, "/v1/webhooks/beluga"), {
|
|
291
291
|
method: 'POST',
|
|
292
292
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -301,54 +301,142 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
301
301
|
quantity: '1',
|
|
302
302
|
medId: 'test-ndc-123',
|
|
303
303
|
rxId: 'test-rx-456',
|
|
304
|
+
category: 'weightloss1',
|
|
305
|
+
}, {
|
|
306
|
+
name: 'Metformin',
|
|
307
|
+
strength: '500mg',
|
|
308
|
+
refills: '2',
|
|
309
|
+
quantity: '1',
|
|
310
|
+
medId: 'test-ndc-789',
|
|
311
|
+
rxId: 'test-rx-789',
|
|
312
|
+
category: 'N/A',
|
|
304
313
|
}],
|
|
305
314
|
}),
|
|
306
315
|
})];
|
|
307
316
|
case 48:
|
|
308
|
-
webhookResponse =
|
|
317
|
+
webhookResponse = _h.sent();
|
|
309
318
|
if (!!webhookResponse.ok) return [3 /*break*/, 50];
|
|
310
319
|
_b = Error.bind;
|
|
311
320
|
_d = (_c = "Beluga webhook failed with status ".concat(webhookResponse.status, ": ")).concat;
|
|
312
321
|
return [4 /*yield*/, webhookResponse.text()];
|
|
313
|
-
case 49: throw new (_b.apply(Error, [void 0, _d.apply(_c, [
|
|
322
|
+
case 49: throw new (_b.apply(Error, [void 0, _d.apply(_c, [_h.sent()])]))();
|
|
314
323
|
case 50: return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)
|
|
315
324
|
// Verify the trigger fired (enduser got the tag)
|
|
316
325
|
];
|
|
317
326
|
case 51:
|
|
318
|
-
|
|
327
|
+
_h.sent();
|
|
319
328
|
// Verify the trigger fired (enduser got the tag)
|
|
320
329
|
return [4 /*yield*/, (0, testing_1.async_test)("Beluga RX_WRITTEN - Protocol trigger fires", function () { return sdk.api.endusers.getOne(belugaEnduser.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Beluga-Protocol')); } })
|
|
321
330
|
// Verify the medication was created with correct protocol and source
|
|
322
331
|
];
|
|
323
332
|
case 52:
|
|
324
333
|
// Verify the trigger fired (enduser got the tag)
|
|
325
|
-
|
|
334
|
+
_h.sent();
|
|
326
335
|
return [4 /*yield*/, sdk.api.enduser_medications.getSome({ filter: { enduserId: belugaEnduser.id } })];
|
|
327
336
|
case 53:
|
|
328
|
-
belugaMeds =
|
|
329
|
-
|
|
337
|
+
belugaMeds = _h.sent();
|
|
338
|
+
belugaMedSemaglutide = belugaMeds.find(function (m) { return m.title === 'Semaglutide'; });
|
|
339
|
+
belugaMedMetformin = belugaMeds.find(function (m) { return m.title === 'Metformin'; });
|
|
340
|
+
if (!belugaMedSemaglutide || !belugaMedMetformin) {
|
|
341
|
+
throw new Error("Beluga RX_WRITTEN - expected medications missing. Got: ".concat(belugaMeds.map(function (m) { return m.title; }).join(', ')));
|
|
342
|
+
}
|
|
330
343
|
return [4 /*yield*/, (0, testing_1.async_test)("Beluga RX_WRITTEN - Medication has protocol from form belugaVisitType", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
331
|
-
return [2 /*return*/,
|
|
332
|
-
}); }); }, { onResult: function (m) { return m.protocol === 'Weight Loss' && m.source === 'Beluga' && m.title === 'Semaglutide'; } })];
|
|
344
|
+
return [2 /*return*/, belugaMedSemaglutide];
|
|
345
|
+
}); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.protocol) === 'Weight Loss' && (m === null || m === void 0 ? void 0 : m.source) === 'Beluga' && (m === null || m === void 0 ? void 0 : m.title) === 'Semaglutide'; } })];
|
|
333
346
|
case 54:
|
|
334
|
-
|
|
335
|
-
|
|
347
|
+
_h.sent();
|
|
348
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Beluga RX_WRITTEN - Medication has category from webhook", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
349
|
+
return [2 /*return*/, belugaMedSemaglutide];
|
|
350
|
+
}); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.category) === 'weightloss1'; } })];
|
|
336
351
|
case 55:
|
|
337
|
-
|
|
352
|
+
_h.sent();
|
|
353
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Beluga RX_WRITTEN - Medication preserves N/A category verbatim", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
354
|
+
return [2 /*return*/, belugaMedMetformin];
|
|
355
|
+
}); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.category) === 'N/A'; } })
|
|
356
|
+
// Backwards-compatibility: a webhook with no category on any med should result in undefined category
|
|
357
|
+
];
|
|
358
|
+
case 56:
|
|
359
|
+
_h.sent();
|
|
360
|
+
return [4 /*yield*/, sdk.api.forms.createOne({
|
|
361
|
+
title: 'Beluga Protocol Test Form (no category)',
|
|
362
|
+
belugaVisitType: 'Weight Loss',
|
|
363
|
+
})];
|
|
364
|
+
case 57:
|
|
365
|
+
belugaFormNoCategory = _h.sent();
|
|
366
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
367
|
+
case 58:
|
|
368
|
+
belugaEnduserNoCategory = _h.sent();
|
|
369
|
+
return [4 /*yield*/, sdk.api.form_responses.createOne({
|
|
370
|
+
formId: belugaFormNoCategory.id,
|
|
371
|
+
enduserId: belugaEnduserNoCategory.id,
|
|
372
|
+
formTitle: belugaFormNoCategory.title,
|
|
373
|
+
responses: [{
|
|
374
|
+
fieldId: constants_1.PLACEHOLDER_ID,
|
|
375
|
+
fieldTitle: 'placeholder',
|
|
376
|
+
answer: { type: 'string', value: 'test' },
|
|
377
|
+
}],
|
|
378
|
+
})];
|
|
379
|
+
case 59:
|
|
380
|
+
belugaFormResponseNoCategory = _h.sent();
|
|
381
|
+
return [4 /*yield*/, fetch("".concat(host, "/v1/webhooks/beluga"), {
|
|
382
|
+
method: 'POST',
|
|
383
|
+
headers: { 'Content-Type': 'application/json' },
|
|
384
|
+
body: JSON.stringify({
|
|
385
|
+
masterId: "tellescope_".concat(belugaFormResponseNoCategory.id),
|
|
386
|
+
event: 'RX_WRITTEN',
|
|
387
|
+
docName: 'Dr. Test',
|
|
388
|
+
medsPrescribed: [{
|
|
389
|
+
name: 'Ibuprofen',
|
|
390
|
+
strength: '200mg',
|
|
391
|
+
refills: '1',
|
|
392
|
+
quantity: '1',
|
|
393
|
+
medId: 'test-ndc-nocat',
|
|
394
|
+
rxId: 'test-rx-nocat',
|
|
395
|
+
}],
|
|
396
|
+
}),
|
|
397
|
+
})];
|
|
398
|
+
case 60:
|
|
399
|
+
webhookResponseNoCategory = _h.sent();
|
|
400
|
+
if (!!webhookResponseNoCategory.ok) return [3 /*break*/, 62];
|
|
401
|
+
_e = Error.bind;
|
|
402
|
+
_g = (_f = "Beluga webhook (no category) failed with status ".concat(webhookResponseNoCategory.status, ": ")).concat;
|
|
403
|
+
return [4 /*yield*/, webhookResponseNoCategory.text()];
|
|
404
|
+
case 61: throw new (_e.apply(Error, [void 0, _g.apply(_f, [_h.sent()])]))();
|
|
405
|
+
case 62: return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
406
|
+
case 63:
|
|
407
|
+
_h.sent();
|
|
408
|
+
return [4 /*yield*/, sdk.api.enduser_medications.getSome({ filter: { enduserId: belugaEnduserNoCategory.id } })];
|
|
409
|
+
case 64:
|
|
410
|
+
belugaMedsNoCategory = _h.sent();
|
|
411
|
+
belugaMedNoCategory = belugaMedsNoCategory[0];
|
|
412
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Beluga RX_WRITTEN - Medication omits category when not provided", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
413
|
+
return [2 /*return*/, belugaMedNoCategory];
|
|
414
|
+
}); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.category) === undefined || (m === null || m === void 0 ? void 0 : m.category) === null; } })];
|
|
415
|
+
case 65:
|
|
416
|
+
_h.sent();
|
|
417
|
+
_h.label = 66;
|
|
418
|
+
case 66:
|
|
419
|
+
_h.trys.push([66, , 72, 73]);
|
|
338
420
|
// Clean up Beluga test data
|
|
339
421
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(belugaTrigger.id)];
|
|
340
|
-
case
|
|
422
|
+
case 67:
|
|
341
423
|
// Clean up Beluga test data
|
|
342
|
-
|
|
424
|
+
_h.sent();
|
|
343
425
|
return [4 /*yield*/, sdk.api.forms.deleteOne(belugaForm.id)];
|
|
344
|
-
case
|
|
345
|
-
|
|
426
|
+
case 68:
|
|
427
|
+
_h.sent();
|
|
428
|
+
return [4 /*yield*/, sdk.api.forms.deleteOne(belugaFormNoCategory.id)];
|
|
429
|
+
case 69:
|
|
430
|
+
_h.sent();
|
|
346
431
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(belugaEnduser.id)]; // also cleans up form response and medications
|
|
347
|
-
case
|
|
348
|
-
|
|
349
|
-
return [
|
|
350
|
-
case
|
|
351
|
-
|
|
432
|
+
case 70:
|
|
433
|
+
_h.sent(); // also cleans up form response and medications
|
|
434
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(belugaEnduserNoCategory.id)]; // also cleans up form response and medications
|
|
435
|
+
case 71:
|
|
436
|
+
_h.sent(); // also cleans up form response and medications
|
|
437
|
+
return [3 /*break*/, 73];
|
|
438
|
+
case 72: return [7 /*endfinally*/];
|
|
439
|
+
case 73:
|
|
352
440
|
// ---- Set Fields with {{medication.name}} Test ----
|
|
353
441
|
(0, testing_1.log_header)("Medication Added - Set Fields with {{medication.name}}");
|
|
354
442
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
@@ -357,66 +445,429 @@ var medication_added_trigger_tests = function (_a) {
|
|
|
357
445
|
status: 'Active',
|
|
358
446
|
title: "Medication - Set Fields medication.name"
|
|
359
447
|
})];
|
|
360
|
-
case
|
|
361
|
-
setFieldsTrigger =
|
|
448
|
+
case 74:
|
|
449
|
+
setFieldsTrigger = _h.sent();
|
|
362
450
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
363
|
-
case
|
|
364
|
-
setFieldsEnduser =
|
|
451
|
+
case 75:
|
|
452
|
+
setFieldsEnduser = _h.sent();
|
|
365
453
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
366
454
|
enduserId: setFieldsEnduser.id,
|
|
367
455
|
title: 'Lisinopril 10mg',
|
|
368
456
|
})];
|
|
369
|
-
case
|
|
370
|
-
setFieldsMed =
|
|
457
|
+
case 76:
|
|
458
|
+
setFieldsMed = _h.sent();
|
|
371
459
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
372
|
-
case
|
|
373
|
-
|
|
460
|
+
case 77:
|
|
461
|
+
_h.sent();
|
|
374
462
|
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Set Fields copies medication.name to enduser field", function () { return sdk.api.endusers.getOne(setFieldsEnduser.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Medication Name']) === 'Lisinopril 10mg'; } })
|
|
375
463
|
// Test with title-filtered trigger to verify medication context is passed correctly
|
|
376
464
|
];
|
|
377
|
-
case
|
|
378
|
-
|
|
465
|
+
case 78:
|
|
466
|
+
_h.sent();
|
|
379
467
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
380
468
|
event: { type: 'Medication Added', info: { titles: ['Metformin 500mg'], protocols: [] } },
|
|
381
469
|
action: { type: 'Set Fields', info: { fields: [{ name: 'Specific Med', type: 'Custom Value', value: '{{medication.name}}' }] } },
|
|
382
470
|
status: 'Active',
|
|
383
471
|
title: "Medication - Set Fields filtered"
|
|
384
472
|
})];
|
|
385
|
-
case
|
|
386
|
-
setFieldsTriggerFiltered =
|
|
473
|
+
case 79:
|
|
474
|
+
setFieldsTriggerFiltered = _h.sent();
|
|
387
475
|
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
388
|
-
case
|
|
389
|
-
setFieldsEnduser2 =
|
|
476
|
+
case 80:
|
|
477
|
+
setFieldsEnduser2 = _h.sent();
|
|
390
478
|
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
391
479
|
enduserId: setFieldsEnduser2.id,
|
|
392
480
|
title: 'Metformin 500mg',
|
|
393
481
|
})];
|
|
394
|
-
case
|
|
395
|
-
setFieldsMed2 =
|
|
482
|
+
case 81:
|
|
483
|
+
setFieldsMed2 = _h.sent();
|
|
396
484
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
397
|
-
case
|
|
398
|
-
|
|
399
|
-
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Set Fields with title filter copies medication.name", function () { return sdk.api.endusers.getOne(setFieldsEnduser2.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Specific Med']) === 'Metformin 500mg'; } })
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
485
|
+
case 82:
|
|
486
|
+
_h.sent();
|
|
487
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Set Fields with title filter copies medication.name", function () { return sdk.api.endusers.getOne(setFieldsEnduser2.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Specific Med']) === 'Metformin 500mg'; } })
|
|
488
|
+
// ---- Set Fields with {{medication.category}} Test ----
|
|
489
|
+
];
|
|
490
|
+
case 83:
|
|
491
|
+
_h.sent();
|
|
492
|
+
// ---- Set Fields with {{medication.category}} Test ----
|
|
493
|
+
(0, testing_1.log_header)("Medication Added - Set Fields with {{medication.category}}");
|
|
494
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
495
|
+
event: { type: 'Medication Added', info: { titles: [], protocols: [] } },
|
|
496
|
+
action: { type: 'Set Fields', info: { fields: [{ name: 'Medication Category', type: 'Custom Value', value: '{{medication.category}}' }] } },
|
|
497
|
+
status: 'Active',
|
|
498
|
+
title: "Medication - Set Fields medication.category"
|
|
499
|
+
})];
|
|
500
|
+
case 84:
|
|
501
|
+
setFieldsCategoryTrigger = _h.sent();
|
|
502
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
503
|
+
case 85:
|
|
504
|
+
setFieldsCategoryEnduser = _h.sent();
|
|
505
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
506
|
+
enduserId: setFieldsCategoryEnduser.id,
|
|
507
|
+
title: 'Ozempic 0.5mg',
|
|
508
|
+
category: 'weightloss1',
|
|
509
|
+
})];
|
|
510
|
+
case 86:
|
|
511
|
+
setFieldsCategoryMed = _h.sent();
|
|
512
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
513
|
+
case 87:
|
|
514
|
+
_h.sent();
|
|
515
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Set Fields copies medication.category to enduser field", function () { return sdk.api.endusers.getOne(setFieldsCategoryEnduser.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Medication Category']) === 'weightloss1'; } })
|
|
516
|
+
// Category absent on medication → placeholder resolves to empty string
|
|
517
|
+
];
|
|
518
|
+
case 88:
|
|
519
|
+
_h.sent();
|
|
520
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
521
|
+
case 89:
|
|
522
|
+
setFieldsCategoryEnduserEmpty = _h.sent();
|
|
523
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({
|
|
524
|
+
enduserId: setFieldsCategoryEnduserEmpty.id,
|
|
525
|
+
title: 'Lisinopril 20mg',
|
|
526
|
+
})];
|
|
527
|
+
case 90:
|
|
528
|
+
setFieldsCategoryMedEmpty = _h.sent();
|
|
529
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
530
|
+
case 91:
|
|
531
|
+
_h.sent();
|
|
532
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Medication Added - Set Fields with no category resolves to empty string", function () { return sdk.api.endusers.getOne(setFieldsCategoryEnduserEmpty.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Medication Category']) === ''; } })];
|
|
533
|
+
case 92:
|
|
534
|
+
_h.sent();
|
|
535
|
+
_h.label = 93;
|
|
536
|
+
case 93:
|
|
537
|
+
_h.trys.push([93, , 101, 102]);
|
|
405
538
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsTrigger.id)];
|
|
406
|
-
case
|
|
407
|
-
|
|
539
|
+
case 94:
|
|
540
|
+
_h.sent();
|
|
408
541
|
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsTriggerFiltered.id)];
|
|
409
|
-
case
|
|
410
|
-
|
|
542
|
+
case 95:
|
|
543
|
+
_h.sent();
|
|
544
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsCategoryTrigger.id)];
|
|
545
|
+
case 96:
|
|
546
|
+
_h.sent();
|
|
411
547
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsEnduser.id)];
|
|
412
|
-
case
|
|
413
|
-
|
|
548
|
+
case 97:
|
|
549
|
+
_h.sent();
|
|
414
550
|
return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsEnduser2.id)];
|
|
415
|
-
case
|
|
416
|
-
|
|
417
|
-
return [
|
|
418
|
-
case
|
|
419
|
-
|
|
551
|
+
case 98:
|
|
552
|
+
_h.sent();
|
|
553
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsCategoryEnduser.id)];
|
|
554
|
+
case 99:
|
|
555
|
+
_h.sent();
|
|
556
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsCategoryEnduserEmpty.id)];
|
|
557
|
+
case 100:
|
|
558
|
+
_h.sent();
|
|
559
|
+
return [3 /*break*/, 102];
|
|
560
|
+
case 101: return [7 /*endfinally*/];
|
|
561
|
+
case 102:
|
|
562
|
+
// ---- titleCondition (compound conditional logic on title) ----
|
|
563
|
+
(0, testing_1.log_header)("Medication Added - titleCondition compound logic");
|
|
564
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
565
|
+
event: {
|
|
566
|
+
type: 'Medication Added',
|
|
567
|
+
info: {
|
|
568
|
+
titles: [],
|
|
569
|
+
protocols: [],
|
|
570
|
+
titleCondition: { condition: { title: { $contains: 'GLP' } } },
|
|
571
|
+
},
|
|
572
|
+
},
|
|
573
|
+
action: { type: 'Add Tags', info: { tags: ['Med-Cond-Contains-GLP'] } },
|
|
574
|
+
status: 'Active',
|
|
575
|
+
title: "Medication - titleCondition contains GLP"
|
|
576
|
+
})];
|
|
577
|
+
case 103:
|
|
578
|
+
c1Trigger = _h.sent();
|
|
579
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
580
|
+
case 104:
|
|
581
|
+
c1MatchEnduser = _h.sent();
|
|
582
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c1MatchEnduser.id, title: 'Semaglutide GLP-1' })];
|
|
583
|
+
case 105:
|
|
584
|
+
_h.sent();
|
|
585
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
586
|
+
case 106:
|
|
587
|
+
_h.sent();
|
|
588
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $contains - matching medication fires", function () { return sdk.api.endusers.getOne(c1MatchEnduser.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Contains-GLP')); } })];
|
|
589
|
+
case 107:
|
|
590
|
+
_h.sent();
|
|
591
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
592
|
+
case 108:
|
|
593
|
+
c1MissEnduser = _h.sent();
|
|
594
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c1MissEnduser.id, title: 'Aspirin' })];
|
|
595
|
+
case 109:
|
|
596
|
+
_h.sent();
|
|
597
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
598
|
+
case 110:
|
|
599
|
+
_h.sent();
|
|
600
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $contains - non-matching medication does NOT fire", function () { return sdk.api.endusers.getOne(c1MissEnduser.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Contains-GLP')); } })
|
|
601
|
+
// C2: $ne — fires for everything except 'Placebo'
|
|
602
|
+
];
|
|
603
|
+
case 111:
|
|
604
|
+
_h.sent();
|
|
605
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
606
|
+
event: {
|
|
607
|
+
type: 'Medication Added',
|
|
608
|
+
info: {
|
|
609
|
+
titles: [],
|
|
610
|
+
protocols: [],
|
|
611
|
+
titleCondition: { condition: { title: { $ne: 'Placebo' } } },
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
action: { type: 'Add Tags', info: { tags: ['Med-Cond-Ne-Placebo'] } },
|
|
615
|
+
status: 'Active',
|
|
616
|
+
title: "Medication - titleCondition ne Placebo"
|
|
617
|
+
})];
|
|
618
|
+
case 112:
|
|
619
|
+
c2Trigger = _h.sent();
|
|
620
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
621
|
+
case 113:
|
|
622
|
+
c2MatchEnduser = _h.sent();
|
|
623
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c2MatchEnduser.id, title: 'Metformin' })];
|
|
624
|
+
case 114:
|
|
625
|
+
_h.sent();
|
|
626
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
627
|
+
case 115:
|
|
628
|
+
_h.sent();
|
|
629
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $ne - non-Placebo medication fires", function () { return sdk.api.endusers.getOne(c2MatchEnduser.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Ne-Placebo')); } })];
|
|
630
|
+
case 116:
|
|
631
|
+
_h.sent();
|
|
632
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
633
|
+
case 117:
|
|
634
|
+
c2MissEnduser = _h.sent();
|
|
635
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c2MissEnduser.id, title: 'Placebo' })];
|
|
636
|
+
case 118:
|
|
637
|
+
_h.sent();
|
|
638
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
639
|
+
case 119:
|
|
640
|
+
_h.sent();
|
|
641
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $ne - Placebo medication does NOT fire", function () { return sdk.api.endusers.getOne(c2MissEnduser.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Ne-Placebo')); } })
|
|
642
|
+
// C3: compound $and — contains 'mg' AND does not contain 'Placebo' (case-sensitive)
|
|
643
|
+
];
|
|
644
|
+
case 120:
|
|
645
|
+
_h.sent();
|
|
646
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
647
|
+
event: {
|
|
648
|
+
type: 'Medication Added',
|
|
649
|
+
info: {
|
|
650
|
+
titles: [],
|
|
651
|
+
protocols: [],
|
|
652
|
+
titleCondition: {
|
|
653
|
+
$and: [
|
|
654
|
+
{ condition: { title: { $contains: 'mg' } } },
|
|
655
|
+
{ condition: { title: { $doesNotContain: 'Placebo' } } },
|
|
656
|
+
],
|
|
657
|
+
},
|
|
658
|
+
},
|
|
659
|
+
},
|
|
660
|
+
action: { type: 'Add Tags', info: { tags: ['Med-Cond-And'] } },
|
|
661
|
+
status: 'Active',
|
|
662
|
+
title: "Medication - titleCondition compound AND"
|
|
663
|
+
})];
|
|
664
|
+
case 121:
|
|
665
|
+
c3Trigger = _h.sent();
|
|
666
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
667
|
+
case 122:
|
|
668
|
+
c3MatchEnduser = _h.sent();
|
|
669
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c3MatchEnduser.id, title: 'Lisinopril 10mg' })];
|
|
670
|
+
case 123:
|
|
671
|
+
_h.sent();
|
|
672
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
673
|
+
case 124:
|
|
674
|
+
_h.sent();
|
|
675
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $and - both pass fires", function () { return sdk.api.endusers.getOne(c3MatchEnduser.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-And')); } })];
|
|
676
|
+
case 125:
|
|
677
|
+
_h.sent();
|
|
678
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
679
|
+
case 126:
|
|
680
|
+
c3MissEnduser = _h.sent();
|
|
681
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c3MissEnduser.id, title: 'Placebo 5mg' })];
|
|
682
|
+
case 127:
|
|
683
|
+
_h.sent();
|
|
684
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
685
|
+
case 128:
|
|
686
|
+
_h.sent();
|
|
687
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $and - second branch fails does NOT fire", function () { return sdk.api.endusers.getOne(c3MissEnduser.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-And')); } })
|
|
688
|
+
// C4: compound $or — equals 'Aspirin' OR contains 'pril'
|
|
689
|
+
];
|
|
690
|
+
case 129:
|
|
691
|
+
_h.sent();
|
|
692
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
693
|
+
event: {
|
|
694
|
+
type: 'Medication Added',
|
|
695
|
+
info: {
|
|
696
|
+
titles: [],
|
|
697
|
+
protocols: [],
|
|
698
|
+
titleCondition: {
|
|
699
|
+
$or: [
|
|
700
|
+
{ condition: { title: 'Aspirin' } },
|
|
701
|
+
{ condition: { title: { $contains: 'pril' } } },
|
|
702
|
+
],
|
|
703
|
+
},
|
|
704
|
+
},
|
|
705
|
+
},
|
|
706
|
+
action: { type: 'Add Tags', info: { tags: ['Med-Cond-Or'] } },
|
|
707
|
+
status: 'Active',
|
|
708
|
+
title: "Medication - titleCondition compound OR"
|
|
709
|
+
})];
|
|
710
|
+
case 130:
|
|
711
|
+
c4Trigger = _h.sent();
|
|
712
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
713
|
+
case 131:
|
|
714
|
+
c4MatchA = _h.sent();
|
|
715
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c4MatchA.id, title: 'Aspirin' })];
|
|
716
|
+
case 132:
|
|
717
|
+
_h.sent();
|
|
718
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
719
|
+
case 133:
|
|
720
|
+
_h.sent();
|
|
721
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $or - first branch matches fires", function () { return sdk.api.endusers.getOne(c4MatchA.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Or')); } })];
|
|
722
|
+
case 134:
|
|
723
|
+
_h.sent();
|
|
724
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
725
|
+
case 135:
|
|
726
|
+
c4MatchB = _h.sent();
|
|
727
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c4MatchB.id, title: 'Lisinopril' })];
|
|
728
|
+
case 136:
|
|
729
|
+
_h.sent();
|
|
730
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
731
|
+
case 137:
|
|
732
|
+
_h.sent();
|
|
733
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $or - second branch matches fires", function () { return sdk.api.endusers.getOne(c4MatchB.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Or')); } })];
|
|
734
|
+
case 138:
|
|
735
|
+
_h.sent();
|
|
736
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
737
|
+
case 139:
|
|
738
|
+
c4Miss = _h.sent();
|
|
739
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c4Miss.id, title: 'Metformin' })];
|
|
740
|
+
case 140:
|
|
741
|
+
_h.sent();
|
|
742
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
743
|
+
case 141:
|
|
744
|
+
_h.sent();
|
|
745
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition $or - neither branch matches does NOT fire", function () { return sdk.api.endusers.getOne(c4Miss.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Or')); } })
|
|
746
|
+
// C5: backwards compatibility — no titleCondition, titles array still works
|
|
747
|
+
];
|
|
748
|
+
case 142:
|
|
749
|
+
_h.sent();
|
|
750
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
751
|
+
event: { type: 'Medication Added', info: { titles: ['Atorvastatin'], protocols: [] } },
|
|
752
|
+
action: { type: 'Add Tags', info: { tags: ['Med-Cond-BackCompat'] } },
|
|
753
|
+
status: 'Active',
|
|
754
|
+
title: "Medication - titles array back-compat"
|
|
755
|
+
})];
|
|
756
|
+
case 143:
|
|
757
|
+
c5Trigger = _h.sent();
|
|
758
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
759
|
+
case 144:
|
|
760
|
+
c5Match = _h.sent();
|
|
761
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c5Match.id, title: 'Atorvastatin' })];
|
|
762
|
+
case 145:
|
|
763
|
+
_h.sent();
|
|
764
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
765
|
+
case 146:
|
|
766
|
+
_h.sent();
|
|
767
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titles back-compat - title match still fires without titleCondition", function () { return sdk.api.endusers.getOne(c5Match.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-BackCompat')); } })];
|
|
768
|
+
case 147:
|
|
769
|
+
_h.sent();
|
|
770
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
771
|
+
case 148:
|
|
772
|
+
c5Miss = _h.sent();
|
|
773
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c5Miss.id, title: 'Aspirin' })];
|
|
774
|
+
case 149:
|
|
775
|
+
_h.sent();
|
|
776
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
777
|
+
case 150:
|
|
778
|
+
_h.sent();
|
|
779
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titles back-compat - non-match does NOT fire without titleCondition", function () { return sdk.api.endusers.getOne(c5Miss.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-BackCompat')); } })
|
|
780
|
+
// C6: combined — titles array AND titleCondition compose (both must pass)
|
|
781
|
+
];
|
|
782
|
+
case 151:
|
|
783
|
+
_h.sent();
|
|
784
|
+
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
785
|
+
event: {
|
|
786
|
+
type: 'Medication Added',
|
|
787
|
+
info: {
|
|
788
|
+
titles: ['Lisinopril'],
|
|
789
|
+
protocols: [],
|
|
790
|
+
titleCondition: { condition: { title: { $contains: 'Lisin' } } },
|
|
791
|
+
},
|
|
792
|
+
},
|
|
793
|
+
action: { type: 'Add Tags', info: { tags: ['Med-Cond-Combined'] } },
|
|
794
|
+
status: 'Active',
|
|
795
|
+
title: "Medication - titles + titleCondition combined"
|
|
796
|
+
})];
|
|
797
|
+
case 152:
|
|
798
|
+
c6Trigger = _h.sent();
|
|
799
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({})];
|
|
800
|
+
case 153:
|
|
801
|
+
c6Match = _h.sent();
|
|
802
|
+
return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c6Match.id, title: 'Lisinopril' })];
|
|
803
|
+
case 154:
|
|
804
|
+
_h.sent();
|
|
805
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
|
|
806
|
+
case 155:
|
|
807
|
+
_h.sent();
|
|
808
|
+
return [4 /*yield*/, (0, testing_1.async_test)("titleCondition combined - both pass fires", function () { return sdk.api.endusers.getOne(c6Match.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Med-Cond-Combined')); } })];
|
|
809
|
+
case 156:
|
|
810
|
+
_h.sent();
|
|
811
|
+
_h.label = 157;
|
|
812
|
+
case 157:
|
|
813
|
+
_h.trys.push([157, , 176, 177]);
|
|
814
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c1Trigger.id)];
|
|
815
|
+
case 158:
|
|
816
|
+
_h.sent();
|
|
817
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c2Trigger.id)];
|
|
818
|
+
case 159:
|
|
819
|
+
_h.sent();
|
|
820
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c3Trigger.id)];
|
|
821
|
+
case 160:
|
|
822
|
+
_h.sent();
|
|
823
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c4Trigger.id)];
|
|
824
|
+
case 161:
|
|
825
|
+
_h.sent();
|
|
826
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c5Trigger.id)];
|
|
827
|
+
case 162:
|
|
828
|
+
_h.sent();
|
|
829
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c6Trigger.id)];
|
|
830
|
+
case 163:
|
|
831
|
+
_h.sent();
|
|
832
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c1MatchEnduser.id)];
|
|
833
|
+
case 164:
|
|
834
|
+
_h.sent();
|
|
835
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c1MissEnduser.id)];
|
|
836
|
+
case 165:
|
|
837
|
+
_h.sent();
|
|
838
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c2MatchEnduser.id)];
|
|
839
|
+
case 166:
|
|
840
|
+
_h.sent();
|
|
841
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c2MissEnduser.id)];
|
|
842
|
+
case 167:
|
|
843
|
+
_h.sent();
|
|
844
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c3MatchEnduser.id)];
|
|
845
|
+
case 168:
|
|
846
|
+
_h.sent();
|
|
847
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c3MissEnduser.id)];
|
|
848
|
+
case 169:
|
|
849
|
+
_h.sent();
|
|
850
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c4MatchA.id)];
|
|
851
|
+
case 170:
|
|
852
|
+
_h.sent();
|
|
853
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c4MatchB.id)];
|
|
854
|
+
case 171:
|
|
855
|
+
_h.sent();
|
|
856
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c4Miss.id)];
|
|
857
|
+
case 172:
|
|
858
|
+
_h.sent();
|
|
859
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c5Match.id)];
|
|
860
|
+
case 173:
|
|
861
|
+
_h.sent();
|
|
862
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c5Miss.id)];
|
|
863
|
+
case 174:
|
|
864
|
+
_h.sent();
|
|
865
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(c6Match.id)];
|
|
866
|
+
case 175:
|
|
867
|
+
_h.sent();
|
|
868
|
+
return [3 /*break*/, 177];
|
|
869
|
+
case 176: return [7 /*endfinally*/];
|
|
870
|
+
case 177: return [2 /*return*/];
|
|
420
871
|
}
|
|
421
872
|
});
|
|
422
873
|
});
|