@tellescope/sdk 1.255.3 → 1.255.5

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.
Files changed (36) hide show
  1. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.d.ts +6 -0
  2. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.d.ts.map +1 -0
  3. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.js +316 -0
  4. package/lib/cjs/tests/api_tests/healthie_multi_integration.test.js.map +1 -0
  5. package/lib/cjs/tests/api_tests/medication_added_trigger.test.d.ts.map +1 -1
  6. package/lib/cjs/tests/api_tests/medication_added_trigger.test.js +206 -136
  7. package/lib/cjs/tests/api_tests/medication_added_trigger.test.js.map +1 -1
  8. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts +10 -0
  9. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts.map +1 -1
  10. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js +184 -41
  11. package/lib/cjs/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js.map +1 -1
  12. package/lib/cjs/tests/tests.d.ts.map +1 -1
  13. package/lib/cjs/tests/tests.js +131 -127
  14. package/lib/cjs/tests/tests.js.map +1 -1
  15. package/lib/esm/sdk.d.ts +2 -2
  16. package/lib/esm/tests/api_tests/healthie_multi_integration.test.d.ts +6 -0
  17. package/lib/esm/tests/api_tests/healthie_multi_integration.test.d.ts.map +1 -0
  18. package/lib/esm/tests/api_tests/healthie_multi_integration.test.js +309 -0
  19. package/lib/esm/tests/api_tests/healthie_multi_integration.test.js.map +1 -0
  20. package/lib/esm/tests/api_tests/medication_added_trigger.test.d.ts.map +1 -1
  21. package/lib/esm/tests/api_tests/medication_added_trigger.test.js +206 -136
  22. package/lib/esm/tests/api_tests/medication_added_trigger.test.js.map +1 -1
  23. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts +10 -0
  24. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts.map +1 -1
  25. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js +184 -41
  26. package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js.map +1 -1
  27. package/lib/esm/tests/tests.d.ts.map +1 -1
  28. package/lib/esm/tests/tests.js +131 -127
  29. package/lib/esm/tests/tests.js.map +1 -1
  30. package/lib/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +10 -10
  32. package/src/tests/api_tests/healthie_multi_integration.test.ts +245 -0
  33. package/src/tests/api_tests/medication_added_trigger.test.ts +59 -1
  34. package/src/tests/api_tests/security/F-0005-ai-conversations-rbac.test.ts +123 -0
  35. package/src/tests/tests.ts +2 -0
  36. package/test_generated.pdf +0 -0
@@ -42,7 +42,7 @@ 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, 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;
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, setFieldsPharmacyNotesTrigger, setFieldsPharmacyNotesEnduser, setFieldsPharmacyNotesMed, setFieldsPharmacyNotesEnduserEmpty, setFieldsPharmacyNotesMedEmpty, c1Trigger, c1MatchEnduser, c1MissEnduser, c2Trigger, c2MatchEnduser, c2MissEnduser, c3Trigger, c3MatchEnduser, c3MissEnduser, c4Trigger, c4MatchA, c4MatchB, c4Miss, c5Trigger, c5Match, c5Miss, c6Trigger, c6Match;
46
46
  return __generator(this, function (_h) {
47
47
  switch (_h.label) {
48
48
  case 0:
@@ -280,7 +280,7 @@ export var medication_added_trigger_tests = function (_a) {
280
280
  status: 'Active',
281
281
  title: "Medication - Beluga Protocol Test"
282
282
  })
283
- // Simulate the Beluga RX_WRITTEN webhook with two meds covering category present (typical) and "N/A"
283
+ // Simulate the Beluga RX_WRITTEN webhook with two meds covering category/pharmacyNotes present (typical) and "N/A"/absent
284
284
  ];
285
285
  case 47:
286
286
  belugaTrigger = _h.sent();
@@ -299,6 +299,7 @@ export var medication_added_trigger_tests = function (_a) {
299
299
  medId: 'test-ndc-123',
300
300
  rxId: 'test-rx-456',
301
301
  category: 'weightloss1',
302
+ pharmacyNotes: 'Dispense with syringes',
302
303
  }, {
303
304
  name: 'Metformin',
304
305
  strength: '500mg',
@@ -349,19 +350,29 @@ export var medication_added_trigger_tests = function (_a) {
349
350
  _h.sent();
350
351
  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
352
  return [2 /*return*/, belugaMedMetformin];
352
- }); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.category) === 'N/A'; } })
353
+ }); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.category) === 'N/A'; } })];
354
+ case 56:
355
+ _h.sent();
356
+ return [4 /*yield*/, async_test("Beluga RX_WRITTEN - Medication has notes from webhook pharmacyNotes", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
357
+ return [2 /*return*/, belugaMedSemaglutide];
358
+ }); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.notes) === 'Dispense with syringes'; } })];
359
+ case 57:
360
+ _h.sent();
361
+ return [4 /*yield*/, async_test("Beluga RX_WRITTEN - Medication omits notes when pharmacyNotes not provided on med", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
362
+ return [2 /*return*/, belugaMedMetformin];
363
+ }); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.notes) === undefined || (m === null || m === void 0 ? void 0 : m.notes) === null; } })
353
364
  // Backwards-compatibility: a webhook with no category on any med should result in undefined category
354
365
  ];
355
- case 56:
366
+ case 58:
356
367
  _h.sent();
357
368
  return [4 /*yield*/, sdk.api.forms.createOne({
358
369
  title: 'Beluga Protocol Test Form (no category)',
359
370
  belugaVisitType: 'Weight Loss',
360
371
  })];
361
- case 57:
372
+ case 59:
362
373
  belugaFormNoCategory = _h.sent();
363
374
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
364
- case 58:
375
+ case 60:
365
376
  belugaEnduserNoCategory = _h.sent();
366
377
  return [4 /*yield*/, sdk.api.form_responses.createOne({
367
378
  formId: belugaFormNoCategory.id,
@@ -373,7 +384,7 @@ export var medication_added_trigger_tests = function (_a) {
373
384
  answer: { type: 'string', value: 'test' },
374
385
  }],
375
386
  })];
376
- case 59:
387
+ case 61:
377
388
  belugaFormResponseNoCategory = _h.sent();
378
389
  return [4 /*yield*/, fetch("".concat(host, "/v1/webhooks/beluga"), {
379
390
  method: 'POST',
@@ -392,48 +403,53 @@ export var medication_added_trigger_tests = function (_a) {
392
403
  }],
393
404
  }),
394
405
  })];
395
- case 60:
406
+ case 62:
396
407
  webhookResponseNoCategory = _h.sent();
397
- if (!!webhookResponseNoCategory.ok) return [3 /*break*/, 62];
408
+ if (!!webhookResponseNoCategory.ok) return [3 /*break*/, 64];
398
409
  _e = Error.bind;
399
410
  _g = (_f = "Beluga webhook (no category) failed with status ".concat(webhookResponseNoCategory.status, ": ")).concat;
400
411
  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:
412
+ case 63: throw new (_e.apply(Error, [void 0, _g.apply(_f, [_h.sent()])]))();
413
+ case 64: return [4 /*yield*/, wait(undefined, 500)];
414
+ case 65:
404
415
  _h.sent();
405
416
  return [4 /*yield*/, sdk.api.enduser_medications.getSome({ filter: { enduserId: belugaEnduserNoCategory.id } })];
406
- case 64:
417
+ case 66:
407
418
  belugaMedsNoCategory = _h.sent();
408
419
  belugaMedNoCategory = belugaMedsNoCategory[0];
409
420
  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
421
  return [2 /*return*/, belugaMedNoCategory];
411
422
  }); }); }, { 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:
423
+ case 67:
413
424
  _h.sent();
414
- _h.label = 66;
415
- case 66:
416
- _h.trys.push([66, , 72, 73]);
425
+ return [4 /*yield*/, async_test("Beluga RX_WRITTEN - Medication omits notes when pharmacyNotes not provided", function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
426
+ return [2 /*return*/, belugaMedNoCategory];
427
+ }); }); }, { onResult: function (m) { return (m === null || m === void 0 ? void 0 : m.notes) === undefined || (m === null || m === void 0 ? void 0 : m.notes) === null; } })];
428
+ case 68:
429
+ _h.sent();
430
+ _h.label = 69;
431
+ case 69:
432
+ _h.trys.push([69, , 75, 76]);
417
433
  // Clean up Beluga test data
418
434
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(belugaTrigger.id)];
419
- case 67:
435
+ case 70:
420
436
  // Clean up Beluga test data
421
437
  _h.sent();
422
438
  return [4 /*yield*/, sdk.api.forms.deleteOne(belugaForm.id)];
423
- case 68:
439
+ case 71:
424
440
  _h.sent();
425
441
  return [4 /*yield*/, sdk.api.forms.deleteOne(belugaFormNoCategory.id)];
426
- case 69:
442
+ case 72:
427
443
  _h.sent();
428
444
  return [4 /*yield*/, sdk.api.endusers.deleteOne(belugaEnduser.id)]; // also cleans up form response and medications
429
- case 70:
445
+ case 73:
430
446
  _h.sent(); // also cleans up form response and medications
431
447
  return [4 /*yield*/, sdk.api.endusers.deleteOne(belugaEnduserNoCategory.id)]; // also cleans up form response and medications
432
- case 71:
448
+ case 74:
433
449
  _h.sent(); // also cleans up form response and medications
434
- return [3 /*break*/, 73];
435
- case 72: return [7 /*endfinally*/];
436
- case 73:
450
+ return [3 /*break*/, 76];
451
+ case 75: return [7 /*endfinally*/];
452
+ case 76:
437
453
  // ---- Set Fields with {{medication.name}} Test ----
438
454
  log_header("Medication Added - Set Fields with {{medication.name}}");
439
455
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
@@ -442,24 +458,24 @@ export var medication_added_trigger_tests = function (_a) {
442
458
  status: 'Active',
443
459
  title: "Medication - Set Fields medication.name"
444
460
  })];
445
- case 74:
461
+ case 77:
446
462
  setFieldsTrigger = _h.sent();
447
463
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
448
- case 75:
464
+ case 78:
449
465
  setFieldsEnduser = _h.sent();
450
466
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({
451
467
  enduserId: setFieldsEnduser.id,
452
468
  title: 'Lisinopril 10mg',
453
469
  })];
454
- case 76:
470
+ case 79:
455
471
  setFieldsMed = _h.sent();
456
472
  return [4 /*yield*/, wait(undefined, 500)];
457
- case 77:
473
+ case 80:
458
474
  _h.sent();
459
475
  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'; } })
460
476
  // Test with title-filtered trigger to verify medication context is passed correctly
461
477
  ];
462
- case 78:
478
+ case 81:
463
479
  _h.sent();
464
480
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
465
481
  event: { type: 'Medication Added', info: { titles: ['Metformin 500mg'], protocols: [] } },
@@ -467,24 +483,24 @@ export var medication_added_trigger_tests = function (_a) {
467
483
  status: 'Active',
468
484
  title: "Medication - Set Fields filtered"
469
485
  })];
470
- case 79:
486
+ case 82:
471
487
  setFieldsTriggerFiltered = _h.sent();
472
488
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
473
- case 80:
489
+ case 83:
474
490
  setFieldsEnduser2 = _h.sent();
475
491
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({
476
492
  enduserId: setFieldsEnduser2.id,
477
493
  title: 'Metformin 500mg',
478
494
  })];
479
- case 81:
495
+ case 84:
480
496
  setFieldsMed2 = _h.sent();
481
497
  return [4 /*yield*/, wait(undefined, 500)];
482
- case 82:
498
+ case 85:
483
499
  _h.sent();
484
500
  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
501
  // ---- Set Fields with {{medication.category}} Test ----
486
502
  ];
487
- case 83:
503
+ case 86:
488
504
  _h.sent();
489
505
  // ---- Set Fields with {{medication.category}} Test ----
490
506
  log_header("Medication Added - Set Fields with {{medication.category}}");
@@ -494,68 +510,122 @@ export var medication_added_trigger_tests = function (_a) {
494
510
  status: 'Active',
495
511
  title: "Medication - Set Fields medication.category"
496
512
  })];
497
- case 84:
513
+ case 87:
498
514
  setFieldsCategoryTrigger = _h.sent();
499
515
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
500
- case 85:
516
+ case 88:
501
517
  setFieldsCategoryEnduser = _h.sent();
502
518
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({
503
519
  enduserId: setFieldsCategoryEnduser.id,
504
520
  title: 'Ozempic 0.5mg',
505
521
  category: 'weightloss1',
506
522
  })];
507
- case 86:
523
+ case 89:
508
524
  setFieldsCategoryMed = _h.sent();
509
525
  return [4 /*yield*/, wait(undefined, 500)];
510
- case 87:
526
+ case 90:
511
527
  _h.sent();
512
528
  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
529
  // Category absent on medication → placeholder resolves to empty string
514
530
  ];
515
- case 88:
531
+ case 91:
516
532
  _h.sent();
517
533
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
518
- case 89:
534
+ case 92:
519
535
  setFieldsCategoryEnduserEmpty = _h.sent();
520
536
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({
521
537
  enduserId: setFieldsCategoryEnduserEmpty.id,
522
538
  title: 'Lisinopril 20mg',
523
539
  })];
524
- case 90:
540
+ case 93:
525
541
  setFieldsCategoryMedEmpty = _h.sent();
526
542
  return [4 /*yield*/, wait(undefined, 500)];
527
- case 91:
543
+ case 94:
528
544
  _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:
545
+ 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']) === ''; } })
546
+ // ---- Set Fields with {{medication.notes}} Test ----
547
+ ];
548
+ case 95:
531
549
  _h.sent();
532
- _h.label = 93;
533
- case 93:
534
- _h.trys.push([93, , 101, 102]);
550
+ // ---- Set Fields with {{medication.notes}} Test ----
551
+ log_header("Medication Added - Set Fields with {{medication.notes}}");
552
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
553
+ event: { type: 'Medication Added', info: { titles: [], protocols: [] } },
554
+ action: { type: 'Set Fields', info: { fields: [{ name: 'Medication Notes', type: 'Custom Value', value: '{{medication.notes}}' }] } },
555
+ status: 'Active',
556
+ title: "Medication - Set Fields medication.notes"
557
+ })];
558
+ case 96:
559
+ setFieldsPharmacyNotesTrigger = _h.sent();
560
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
561
+ case 97:
562
+ setFieldsPharmacyNotesEnduser = _h.sent();
563
+ return [4 /*yield*/, sdk.api.enduser_medications.createOne({
564
+ enduserId: setFieldsPharmacyNotesEnduser.id,
565
+ title: 'Ozempic 1mg',
566
+ notes: 'Dispense with syringes',
567
+ })];
568
+ case 98:
569
+ setFieldsPharmacyNotesMed = _h.sent();
570
+ return [4 /*yield*/, wait(undefined, 500)];
571
+ case 99:
572
+ _h.sent();
573
+ return [4 /*yield*/, async_test("Medication Added - Set Fields copies medication.notes to enduser field", function () { return sdk.api.endusers.getOne(setFieldsPharmacyNotesEnduser.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Medication Notes']) === 'Dispense with syringes'; } })
574
+ // notes absent on medication → placeholder resolves to empty string
575
+ ];
576
+ case 100:
577
+ _h.sent();
578
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
579
+ case 101:
580
+ setFieldsPharmacyNotesEnduserEmpty = _h.sent();
581
+ return [4 /*yield*/, sdk.api.enduser_medications.createOne({
582
+ enduserId: setFieldsPharmacyNotesEnduserEmpty.id,
583
+ title: 'Lisinopril 40mg',
584
+ })];
585
+ case 102:
586
+ setFieldsPharmacyNotesMedEmpty = _h.sent();
587
+ return [4 /*yield*/, wait(undefined, 500)];
588
+ case 103:
589
+ _h.sent();
590
+ return [4 /*yield*/, async_test("Medication Added - Set Fields with no notes resolves to empty string", function () { return sdk.api.endusers.getOne(setFieldsPharmacyNotesEnduserEmpty.id); }, { onResult: function (e) { var _a; return ((_a = e.fields) === null || _a === void 0 ? void 0 : _a['Medication Notes']) === ''; } })];
591
+ case 104:
592
+ _h.sent();
593
+ _h.label = 105;
594
+ case 105:
595
+ _h.trys.push([105, , 116, 117]);
535
596
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsTrigger.id)];
536
- case 94:
597
+ case 106:
537
598
  _h.sent();
538
599
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsTriggerFiltered.id)];
539
- case 95:
600
+ case 107:
540
601
  _h.sent();
541
602
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsCategoryTrigger.id)];
542
- case 96:
603
+ case 108:
604
+ _h.sent();
605
+ return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(setFieldsPharmacyNotesTrigger.id)];
606
+ case 109:
543
607
  _h.sent();
544
608
  return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsEnduser.id)];
545
- case 97:
609
+ case 110:
546
610
  _h.sent();
547
611
  return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsEnduser2.id)];
548
- case 98:
612
+ case 111:
549
613
  _h.sent();
550
614
  return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsCategoryEnduser.id)];
551
- case 99:
615
+ case 112:
552
616
  _h.sent();
553
617
  return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsCategoryEnduserEmpty.id)];
554
- case 100:
618
+ case 113:
555
619
  _h.sent();
556
- return [3 /*break*/, 102];
557
- case 101: return [7 /*endfinally*/];
558
- case 102:
620
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsPharmacyNotesEnduser.id)];
621
+ case 114:
622
+ _h.sent();
623
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(setFieldsPharmacyNotesEnduserEmpty.id)];
624
+ case 115:
625
+ _h.sent();
626
+ return [3 /*break*/, 117];
627
+ case 116: return [7 /*endfinally*/];
628
+ case 117:
559
629
  // ---- titleCondition (compound conditional logic on title) ----
560
630
  log_header("Medication Added - titleCondition compound logic");
561
631
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
@@ -571,33 +641,33 @@ export var medication_added_trigger_tests = function (_a) {
571
641
  status: 'Active',
572
642
  title: "Medication - titleCondition contains GLP"
573
643
  })];
574
- case 103:
644
+ case 118:
575
645
  c1Trigger = _h.sent();
576
646
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
577
- case 104:
647
+ case 119:
578
648
  c1MatchEnduser = _h.sent();
579
649
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c1MatchEnduser.id, title: 'Semaglutide GLP-1' })];
580
- case 105:
650
+ case 120:
581
651
  _h.sent();
582
652
  return [4 /*yield*/, wait(undefined, 500)];
583
- case 106:
653
+ case 121:
584
654
  _h.sent();
585
655
  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:
656
+ case 122:
587
657
  _h.sent();
588
658
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
589
- case 108:
659
+ case 123:
590
660
  c1MissEnduser = _h.sent();
591
661
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c1MissEnduser.id, title: 'Aspirin' })];
592
- case 109:
662
+ case 124:
593
663
  _h.sent();
594
664
  return [4 /*yield*/, wait(undefined, 500)];
595
- case 110:
665
+ case 125:
596
666
  _h.sent();
597
667
  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
668
  // C2: $ne — fires for everything except 'Placebo'
599
669
  ];
600
- case 111:
670
+ case 126:
601
671
  _h.sent();
602
672
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
603
673
  event: {
@@ -612,33 +682,33 @@ export var medication_added_trigger_tests = function (_a) {
612
682
  status: 'Active',
613
683
  title: "Medication - titleCondition ne Placebo"
614
684
  })];
615
- case 112:
685
+ case 127:
616
686
  c2Trigger = _h.sent();
617
687
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
618
- case 113:
688
+ case 128:
619
689
  c2MatchEnduser = _h.sent();
620
690
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c2MatchEnduser.id, title: 'Metformin' })];
621
- case 114:
691
+ case 129:
622
692
  _h.sent();
623
693
  return [4 /*yield*/, wait(undefined, 500)];
624
- case 115:
694
+ case 130:
625
695
  _h.sent();
626
696
  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:
697
+ case 131:
628
698
  _h.sent();
629
699
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
630
- case 117:
700
+ case 132:
631
701
  c2MissEnduser = _h.sent();
632
702
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c2MissEnduser.id, title: 'Placebo' })];
633
- case 118:
703
+ case 133:
634
704
  _h.sent();
635
705
  return [4 /*yield*/, wait(undefined, 500)];
636
- case 119:
706
+ case 134:
637
707
  _h.sent();
638
708
  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
709
  // C3: compound $and — contains 'mg' AND does not contain 'Placebo' (case-sensitive)
640
710
  ];
641
- case 120:
711
+ case 135:
642
712
  _h.sent();
643
713
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
644
714
  event: {
@@ -658,33 +728,33 @@ export var medication_added_trigger_tests = function (_a) {
658
728
  status: 'Active',
659
729
  title: "Medication - titleCondition compound AND"
660
730
  })];
661
- case 121:
731
+ case 136:
662
732
  c3Trigger = _h.sent();
663
733
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
664
- case 122:
734
+ case 137:
665
735
  c3MatchEnduser = _h.sent();
666
736
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c3MatchEnduser.id, title: 'Lisinopril 10mg' })];
667
- case 123:
737
+ case 138:
668
738
  _h.sent();
669
739
  return [4 /*yield*/, wait(undefined, 500)];
670
- case 124:
740
+ case 139:
671
741
  _h.sent();
672
742
  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:
743
+ case 140:
674
744
  _h.sent();
675
745
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
676
- case 126:
746
+ case 141:
677
747
  c3MissEnduser = _h.sent();
678
748
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c3MissEnduser.id, title: 'Placebo 5mg' })];
679
- case 127:
749
+ case 142:
680
750
  _h.sent();
681
751
  return [4 /*yield*/, wait(undefined, 500)];
682
- case 128:
752
+ case 143:
683
753
  _h.sent();
684
754
  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
755
  // C4: compound $or — equals 'Aspirin' OR contains 'pril'
686
756
  ];
687
- case 129:
757
+ case 144:
688
758
  _h.sent();
689
759
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
690
760
  event: {
@@ -704,45 +774,45 @@ export var medication_added_trigger_tests = function (_a) {
704
774
  status: 'Active',
705
775
  title: "Medication - titleCondition compound OR"
706
776
  })];
707
- case 130:
777
+ case 145:
708
778
  c4Trigger = _h.sent();
709
779
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
710
- case 131:
780
+ case 146:
711
781
  c4MatchA = _h.sent();
712
782
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c4MatchA.id, title: 'Aspirin' })];
713
- case 132:
783
+ case 147:
714
784
  _h.sent();
715
785
  return [4 /*yield*/, wait(undefined, 500)];
716
- case 133:
786
+ case 148:
717
787
  _h.sent();
718
788
  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:
789
+ case 149:
720
790
  _h.sent();
721
791
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
722
- case 135:
792
+ case 150:
723
793
  c4MatchB = _h.sent();
724
794
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c4MatchB.id, title: 'Lisinopril' })];
725
- case 136:
795
+ case 151:
726
796
  _h.sent();
727
797
  return [4 /*yield*/, wait(undefined, 500)];
728
- case 137:
798
+ case 152:
729
799
  _h.sent();
730
800
  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:
801
+ case 153:
732
802
  _h.sent();
733
803
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
734
- case 139:
804
+ case 154:
735
805
  c4Miss = _h.sent();
736
806
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c4Miss.id, title: 'Metformin' })];
737
- case 140:
807
+ case 155:
738
808
  _h.sent();
739
809
  return [4 /*yield*/, wait(undefined, 500)];
740
- case 141:
810
+ case 156:
741
811
  _h.sent();
742
812
  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
813
  // C5: backwards compatibility — no titleCondition, titles array still works
744
814
  ];
745
- case 142:
815
+ case 157:
746
816
  _h.sent();
747
817
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
748
818
  event: { type: 'Medication Added', info: { titles: ['Atorvastatin'], protocols: [] } },
@@ -750,33 +820,33 @@ export var medication_added_trigger_tests = function (_a) {
750
820
  status: 'Active',
751
821
  title: "Medication - titles array back-compat"
752
822
  })];
753
- case 143:
823
+ case 158:
754
824
  c5Trigger = _h.sent();
755
825
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
756
- case 144:
826
+ case 159:
757
827
  c5Match = _h.sent();
758
828
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c5Match.id, title: 'Atorvastatin' })];
759
- case 145:
829
+ case 160:
760
830
  _h.sent();
761
831
  return [4 /*yield*/, wait(undefined, 500)];
762
- case 146:
832
+ case 161:
763
833
  _h.sent();
764
834
  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:
835
+ case 162:
766
836
  _h.sent();
767
837
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
768
- case 148:
838
+ case 163:
769
839
  c5Miss = _h.sent();
770
840
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c5Miss.id, title: 'Aspirin' })];
771
- case 149:
841
+ case 164:
772
842
  _h.sent();
773
843
  return [4 /*yield*/, wait(undefined, 500)];
774
- case 150:
844
+ case 165:
775
845
  _h.sent();
776
846
  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
847
  // C6: combined — titles array AND titleCondition compose (both must pass)
778
848
  ];
779
- case 151:
849
+ case 166:
780
850
  _h.sent();
781
851
  return [4 /*yield*/, sdk.api.automation_triggers.createOne({
782
852
  event: {
@@ -791,80 +861,80 @@ export var medication_added_trigger_tests = function (_a) {
791
861
  status: 'Active',
792
862
  title: "Medication - titles + titleCondition combined"
793
863
  })];
794
- case 152:
864
+ case 167:
795
865
  c6Trigger = _h.sent();
796
866
  return [4 /*yield*/, sdk.api.endusers.createOne({})];
797
- case 153:
867
+ case 168:
798
868
  c6Match = _h.sent();
799
869
  return [4 /*yield*/, sdk.api.enduser_medications.createOne({ enduserId: c6Match.id, title: 'Lisinopril' })];
800
- case 154:
870
+ case 169:
801
871
  _h.sent();
802
872
  return [4 /*yield*/, wait(undefined, 500)];
803
- case 155:
873
+ case 170:
804
874
  _h.sent();
805
875
  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:
876
+ case 171:
807
877
  _h.sent();
808
- _h.label = 157;
809
- case 157:
810
- _h.trys.push([157, , 176, 177]);
878
+ _h.label = 172;
879
+ case 172:
880
+ _h.trys.push([172, , 191, 192]);
811
881
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c1Trigger.id)];
812
- case 158:
882
+ case 173:
813
883
  _h.sent();
814
884
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c2Trigger.id)];
815
- case 159:
885
+ case 174:
816
886
  _h.sent();
817
887
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c3Trigger.id)];
818
- case 160:
888
+ case 175:
819
889
  _h.sent();
820
890
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c4Trigger.id)];
821
- case 161:
891
+ case 176:
822
892
  _h.sent();
823
893
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c5Trigger.id)];
824
- case 162:
894
+ case 177:
825
895
  _h.sent();
826
896
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(c6Trigger.id)];
827
- case 163:
897
+ case 178:
828
898
  _h.sent();
829
899
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c1MatchEnduser.id)];
830
- case 164:
900
+ case 179:
831
901
  _h.sent();
832
902
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c1MissEnduser.id)];
833
- case 165:
903
+ case 180:
834
904
  _h.sent();
835
905
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c2MatchEnduser.id)];
836
- case 166:
906
+ case 181:
837
907
  _h.sent();
838
908
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c2MissEnduser.id)];
839
- case 167:
909
+ case 182:
840
910
  _h.sent();
841
911
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c3MatchEnduser.id)];
842
- case 168:
912
+ case 183:
843
913
  _h.sent();
844
914
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c3MissEnduser.id)];
845
- case 169:
915
+ case 184:
846
916
  _h.sent();
847
917
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c4MatchA.id)];
848
- case 170:
918
+ case 185:
849
919
  _h.sent();
850
920
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c4MatchB.id)];
851
- case 171:
921
+ case 186:
852
922
  _h.sent();
853
923
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c4Miss.id)];
854
- case 172:
924
+ case 187:
855
925
  _h.sent();
856
926
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c5Match.id)];
857
- case 173:
927
+ case 188:
858
928
  _h.sent();
859
929
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c5Miss.id)];
860
- case 174:
930
+ case 189:
861
931
  _h.sent();
862
932
  return [4 /*yield*/, sdk.api.endusers.deleteOne(c6Match.id)];
863
- case 175:
933
+ case 190:
864
934
  _h.sent();
865
- return [3 /*break*/, 177];
866
- case 176: return [7 /*endfinally*/];
867
- case 177: return [2 /*return*/];
935
+ return [3 /*break*/, 192];
936
+ case 191: return [7 /*endfinally*/];
937
+ case 192: return [2 /*return*/];
868
938
  }
869
939
  });
870
940
  });