feat: Delta Indiv eligibility on coversme portal and ADA paper claim/preauth

Eligibility: rebuilt the Delta Indiv worker for my.deltadentalcoversme.com —
Dentist tab -> Universal Delta Sign In -> username/Next -> password -> SIGN IN,
confirmation-code (MFA) page detected by URL so the app's OTP popup shows,
then Search for Patient -> Last Name + DOB -> Submit. On the "Benefits for"
details page it reads the patient name, Subscriber # and Eligible through
(active while that date is today or later) and saves the PDF downloaded by
the Print link. Session persists: login is skipped while Search for Patient
is reachable, and Delta Indiv cookies are no longer wiped on agent startup.
The button needs Last Name + DOB (member ID optional; backend falls back to
the scraped Subscriber #). Chatbot gains a Delta Indiv option and aliases.

Claims: Delta Indiv uses the same 2024 ADA form as BCBS with the payer
address Delta Dental, P.O. Box 103, Stevens Point, WI 54481-0103. Adds Delta
Indiv Claim/PreAuth (ADA Form) buttons, Claim All and AI queue routing, Print
ADA Form in the claim viewer, a Delta Indiv fee schedule (copied from BCBS),
and Delta Indiv as its own insurance type so it is no longer treated as
Deltains.

Also renames eligibility buttons: Delta Indiv (Last name, DOB or ID),
Metlife Dental (ID or SSN), Altus (ID, First name, DOB).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 22:03:30 -04:00
co-authored by Claude Opus 5.5
parent a5beeb7ba9
commit 0082b7bd53
19 changed files with 714 additions and 462 deletions
+4 -2
View File
@@ -53,7 +53,9 @@ print("=" * 50)
print("SELENIUM AGENT STARTING - CLEARING SESSIONS")
print("=" * 50)
clear_ddma_session_on_startup()
clear_deltaindiv_session_on_startup()
# Delta Indiv keeps its cookies across restarts so the trusted-device record
# survives and the confirmation code isn't asked every time
# (still cleared via /clear-deltaindiv-session when credentials change).
clear_deltains_session_on_startup()
clear_unitedsco_session_on_startup()
clear_uniteducard_session_on_startup()
@@ -579,7 +581,7 @@ async def deltaindiv_eligibility(request: Request):
waiting_jobs += 1
# TODO: replace with the real Delta Indiv sign-in URL
asyncio.create_task(_deltaindiv_worker_wrapper(sid, data, url="https://www.deltadentalma.com/sign-in"))
asyncio.create_task(_deltaindiv_worker_wrapper(sid, data, url="https://my.deltadentalcoversme.com/sign-in"))
return {"status": "started", "session_id": sid}