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