1: <?php
2: use Azalea\Selenium\App\ApplicationTestCase;
3: use Azalea\Selenium\App\Customers;
4: use Azalea\Selenium\App\Patients;
5: use Azalea\Selenium\App\Users;
6:
7: class EncounterDemographicsTest extends ApplicationTestCase
8: {
9: public function supportsCustomer($cus_id)
10: {
11:
12: return (Customers::isEhrCustomer($cus_id) || Customers::isPmCustomer($cus_id));
13: }
14:
15: 16: 17: 18: 19:
20: public function testPatientDemographicsDetails()
21: {
22: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
23:
24:
25: $patientView = $app->patients->open(Patients::SAMIR_FUNK);
26:
27:
28: $patientDemog = $patientView->demographics->navigate()->verifyAndWait();
29:
30:
31: $this->waitForAjax();
32: $app->popup->closeAll();
33:
34:
35: $pat_mrn = $this->querySelector("#pat_mrn + td")->text();
36: $pat_bill_type = $this->querySelector("#pat_bill_type + td")->text();
37: $pat_fname = $this->querySelector("#par_fname + td")->text();
38: $pat_mname = $this->querySelector("#pat_mname + td")->text();
39: $pat_lname = $this->querySelector("#pat_lname + td")->text();
40: $pat_dob = $this->querySelector("#pat_dob + td")->text();
41: $pat_sex = $this->querySelector("#pat_sex + td")->text();
42:
43:
44: $encounterView = $app->patients->get(Patients::SAMIR_FUNK)
45: ->encounters
46: ->navigate()
47: ->addEncounter();
48:
49: $app->popup->closeAll();
50:
51: $encounterView->verifyAndWait();
52:
53: 54: 55: 56:
57: $encounterView->patientDetails->assertCanSee("QA123");
58: $encounterView->patientDetails->assertCanSee($pat_fname . " " . $pat_mname . " " . $pat_lname);
59: $encounterView->patientDetails->assertCanSee($pat_mrn);
60: $encounterView->patientDetails->assertCanSee($pat_bill_type);
61: $encounterView->patientDetails->assertCanSee($pat_dob);
62: $encounterView->patientDetails->assertCanSee($pat_sex);
63:
64:
65: $encounterView->cancel();
66:
67: $this->assertNoErrorPopups();
68: }
69:
70: 71: 72: 73: 74:
75: public function testPatientHouseholdInfoDisplayed()
76: {
77: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
78:
79:
80: $this->runTestPatientHouseholdInfoDisplayedByValue($app, "50000", "3", "$50,000.00", "PLP: 248.00%");
81: $this->runTestPatientHouseholdInfoDisplayedByValue($app, "0", "3", "$0.00", "PLP: 0.00%");
82: $this->runTestPatientHouseholdInfoDisplayedByValue($app, "", "3", null, null);
83: }
84:
85: public function runTestPatientHouseholdInfoDisplayedByValue($app, $annualIncome, $members, $expectedIncomeDisplay, $expectedPercentageDisplay){
86:
87: $patientView = $app->patients->open(Patients::SAMIR_FUNK);
88:
89:
90: $patientEditDemog = $patientView->demographicsEdit->navigate()->verifyAndWait();
91:
92:
93: $this->waitForAjax();
94: $app->popup->closeAll();
95:
96: $patientForm = $patientEditDemog->form;
97:
98: $pfrAnnualIncomeInput = $patientForm->selectors->pfrAnnualIncomeInput;
99: $pfrAnnualIncomeVerifyDate = $patientForm->selectors->pfrAnnualIncomeVerifyDate;
100: $pfrHouseholdMembersInput = $patientForm->selectors->pfrHouseholdMembersInput;
101:
102:
103: $patientForm->setInput($pfrAnnualIncomeInput, $annualIncome)->tab();
104:
105:
106: $patientForm->querySelector($pfrAnnualIncomeVerifyDate)
107: ->value(date("m/d/Y"));
108:
109:
110: $patientForm->setInput($pfrHouseholdMembersInput, $members);
111:
112:
113: $patientView->press("Save Changes");
114:
115:
116: $this->waitForAjax();
117: if ($app->popup->confirmIsVisible()) {
118: $app->popup->confirmYes();
119: }
120:
121:
122: $patientDemog = $patientView->demographics->verifyAndWait();
123:
124:
125: $encounterView = $app->patients->get(Patients::SAMIR_FUNK)
126: ->encounters
127: ->navigate()
128: ->addEncounter();
129:
130: $app->popup->closeAll();
131:
132: 133: 134: 135: 136:
137: $this->spinWait(function () use ($encounterView, $expectedIncomeDisplay, $expectedPercentageDisplay, $members) {
138: if($expectedIncomeDisplay !== null){
139: $encounterView->filter(".enc_annual_income")->assertCanSee($expectedIncomeDisplay);
140: $encounterView->filter(".enc_annual_income")->assertCanSee($expectedPercentageDisplay);
141: $encounterView->filter(".enc_household_members")->assertCanSee($members);
142: } else {
143: $encounterView->filter("#enc_pat_details")->assertCanNotSee("Annual Income");
144: }
145: return true;
146: });
147:
148:
149: $encounterView->cancel();
150:
151: $this->assertNoErrorPopups();
152:
153: }
154:
155: 156: 157: 158: 159:
160: public function testPatientSelfPayDetails()
161: {
162: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
163:
164:
165:
166: $encounterView = $app->patients->open(Patients::SELENIUM_SELF_PAY)
167: ->encounters
168: ->navigate()
169: ->addEncounter();
170:
171: $app->popup->closeAll();
172:
173: $encounterView->verifyAndWait();
174:
175: 176: 177: 178: 179:
180: $encounterView->assertElementNotExists("#enc_ins1");
181: $encounterView->assertCanNotSee("Primary Insurance");
182: $encounterView->patientDetails->assertCanSee("SELF PAY (PATIENT)");
183:
184:
185: $encounterView->cancel();
186:
187: $this->assertNoErrorPopups();
188: }
189:
190: 191: 192: 193: 194:
195: public function testPatientPrimaryInsuranceDetails()
196: {
197: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
198:
199:
200: $patientView = $app->patients->open(Patients::SELENIUM_PRIMARY_INSURANCE);
201:
202:
203: $patientDemog = $patientView->demographics->navigate()->verifyAndWait();
204:
205:
206: $this->waitForAjax();
207: $app->popup->closeAll();
208:
209:
210: $name = $patientDemog->querySelector(".primary-ins-name > a")->text();
211: $policy = $patientDemog->querySelector(".primary-ins-policy")->text();
212: $group = $patientDemog->querySelector(".primary-ins-group")->text();
213:
214:
215: $encounterView = $app->patients->get(Patients::SELENIUM_PRIMARY_INSURANCE)
216: ->encounters
217: ->navigate()
218: ->addEncounter();
219:
220: $app->popup->closeAll();
221:
222: $encounterView->verifyAndWait();
223:
224: 225: 226: 227: 228:
229: $encounterView->primaryInsurance->assertCanSee($name." (Policy #".$policy.")");
230: $encounterView->primaryInsurance->assertCanSee($policy);
231: $encounterView->primaryInsurance->assertCanSee($group);
232:
233:
234: $encounterView->save();
235: $encounterView->clearCache();
236:
237: 238: 239: 240: 241:
242: $encounterView->waitForAjax();
243: $encounterView->primaryInsurance->assertCanSee($name);
244: $encounterView->primaryInsurance->assertCanSee($policy);
245: $encounterView->primaryInsurance->assertCanSee($group);
246:
247:
248: $encounterView->cancel();
249:
250: $this->assertNoErrorPopups();
251: }
252:
253: 254: 255: 256: 257:
258: public function testPatientPrimarySecondaryInsuranceDetails()
259: {
260: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
261:
262:
263: $patientView = $app->patients->open(Patients::SELENIUM_SECONDARY_INSURANCE);
264:
265:
266: $patientDemog = $patientView->demographics->navigate()->verifyAndWait();
267:
268:
269: $this->waitForAjax();
270: $app->popup->closeAll();
271:
272:
273: $priName = $patientDemog->querySelector(".primary-ins-name > a")->text();
274: $priPolicy = $patientDemog->querySelector(".primary-ins-policy")->text();
275: $priGroup = $patientDemog->querySelector(".primary-ins-group")->text();
276:
277: $secName = $patientDemog->querySelector(".secondary-ins-name > a")->text();
278: $secPolicy = $patientDemog->querySelector(".secondary-ins-policy")->text();
279: $secGroup = $patientDemog->querySelector(".secondary-ins-group")->text();
280:
281:
282: $encounterView = $app->patients->get(Patients::SELENIUM_SECONDARY_INSURANCE)
283: ->encounters
284: ->navigate()
285: ->addEncounter();
286:
287: $app->popup->closeAll();
288:
289: $encounterView->verifyAndWait();
290:
291: 292: 293: 294: 295: 296: 297:
298: $encounterView->primaryInsurance->assertCanSee($priName." (Policy #".$priPolicy.")");
299: $encounterView->primaryInsurance->assertCanSee($priPolicy);
300: $encounterView->primaryInsurance->assertCanSee($priGroup);
301:
302: $encounterView->secondaryInsurance->assertCanSee($secName." (Policy #".$secPolicy.")");
303: $encounterView->secondaryInsurance->assertCanSee($secPolicy);
304:
305:
306:
307: $encounterView->save();
308: $encounterView->clearCache();
309:
310: 311: 312: 313: 314:
315: $encounterView->waitForAjax();
316: $encounterView->primaryInsurance->assertCanSee($priName);
317: $encounterView->primaryInsurance->assertCanSee($priPolicy);
318: $encounterView->primaryInsurance->assertCanSee($priGroup);
319:
320: $encounterView->secondaryInsurance->assertCanSee($secName);
321: $encounterView->secondaryInsurance->assertCanSee($secPolicy);
322: $encounterView->secondaryInsurance->assertCanSee($secGroup);
323:
324:
325: $encounterView->cancel();
326:
327: $this->assertNoErrorPopups();
328: }
329:
330: 331: 332: 333: 334:
335: public function testCanChangePatientPrimaryInsurance()
336: {
337: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
338:
339:
340: $encounterView = $app->patients->get(Patients::SELENIUM_PRIMARY_INSURANCE)
341: ->encounters
342: ->navigate()
343: ->addEncounter();
344:
345: $app->popup->closeAll();
346:
347: $encounterView->verifyAndWait();
348:
349:
350: $this->waitForAjax();
351: $encounterView->select("enc_ins1_id", "295407");
352: $this->waitForAjax();
353:
354: 355: 356: 357:
358: $this->spinWait(function () use ($encounterView) {
359: $encounterView->primaryInsurance->assertCanSee("600 TOWNPARK LANE NW");
360: $encounterView->primaryInsurance->assertCanSee("SUITE LL-1000");
361: $encounterView->primaryInsurance->assertCanSee("KENNESAW");
362: $encounterView->primaryInsurance->assertCanSee("GA 30144");
363: $encounterView->primaryInsurance->assertCanSee("648798");
364: $encounterView->primaryInsurance->assertCanSee("987865");
365: return true;
366: });
367:
368:
369: $encounterView->save();
370: $encounterView->clearCache();
371:
372: 373: 374: 375:
376: $this->spinWait(function () use ($encounterView) {
377: $encounterView->primaryInsurance->assertCanSee("ALLIANT HEALTH PLANS");
378: $encounterView->primaryInsurance->assertCanSee("600 TOWNPARK LANE NW");
379: $encounterView->primaryInsurance->assertCanSee("SUITE LL-1000");
380: $encounterView->primaryInsurance->assertCanSee("KENNESAW");
381: $encounterView->primaryInsurance->assertCanSee("GA 30144");
382: $encounterView->primaryInsurance->assertCanSee("(800) 403-2785");
383: $encounterView->primaryInsurance->assertCanSee("648798");
384: $encounterView->primaryInsurance->assertCanSee("987865");
385: return true;
386: });
387:
388:
389: $encounterView->cancel();
390:
391: $this->assertNoErrorPopups();
392: }
393:
394: 395: 396: 397: 398:
399: public function testCanChangePatientPrimarySecondaryInsurance()
400: {
401: $app = $this->login(Users::FELIX_MILLER, Users::PASSWORD);
402:
403:
404: $encounterView = $app->patients->get(Patients::SELENIUM_SECONDARY_INSURANCE)
405: ->encounters
406: ->navigate()
407: ->addEncounter();
408:
409: $app->popup->closeAll();
410:
411: $encounterView->verifyAndWait();
412:
413:
414: $this->waitForAjax();
415: $encounterView->select("enc_ins1_id", "295408");
416: $this->waitForAjax();
417:
418: 419: 420: 421:
422: $this->spinWait(function () use ($encounterView) {
423: $encounterView->primaryInsurance->assertCanSee("600 TOWNPARK LANE NW");
424: $encounterView->primaryInsurance->assertCanSee("SUITE LL-1000");
425: $encounterView->primaryInsurance->assertCanSee("KENNESAW");
426: $encounterView->primaryInsurance->assertCanSee("GA 30144");
427: $encounterView->primaryInsurance->assertCanSee("648798");
428: $encounterView->primaryInsurance->assertCanSee("987865");
429: return true;
430: });
431:
432:
433: $this->waitForAjax();
434: $encounterView->select("enc_ins2_id", "295409");
435: $this->waitForAjax();
436:
437: 438: 439: 440:
441: $this->spinWait(function () use ($encounterView) {
442: $encounterView->secondaryInsurance->assertCanSee("PO BOX 61010");
443: $encounterView->secondaryInsurance->assertCanSee("VIRGINIA BEACH");
444: $encounterView->secondaryInsurance->assertCanSee("VA 23466");
445: $encounterView->secondaryInsurance->assertCanSee("8979846");
446:
447: return true;
448: });
449:
450:
451: $encounterView->save();
452: $encounterView->clearCache();
453:
454: 455: 456: 457:
458: $this->spinWait(function () use ($encounterView) {
459: $encounterView->primaryInsurance->assertCanSee("ALLIANT HEALTH PLANS");
460: $encounterView->primaryInsurance->assertCanSee("600 TOWNPARK LANE NW");
461: $encounterView->primaryInsurance->assertCanSee("SUITE LL-1000");
462: $encounterView->primaryInsurance->assertCanSee("KENNESAW");
463: $encounterView->primaryInsurance->assertCanSee("GA 30144");
464: $encounterView->primaryInsurance->assertCanSee("(800) 403-2785");
465: $encounterView->primaryInsurance->assertCanSee("648798");
466: $encounterView->primaryInsurance->assertCanSee("987865");
467: $encounterView->secondaryInsurance->assertCanSee("AMERIGROUP");
468: $encounterView->secondaryInsurance->assertCanSee("PO BOX 61010");
469: $encounterView->secondaryInsurance->assertCanSee("VIRGINIA BEACH");
470: $encounterView->secondaryInsurance->assertCanSee("VA 23466");
471: $encounterView->secondaryInsurance->assertCanSee("8979846");
472: $encounterView->secondaryInsurance->assertCanSee("8974894");
473: return true;
474: });
475:
476:
477: $encounterView->cancel();
478:
479: $this->assertNoErrorPopups();
480: }
481: }
482:
483: ?>