From 87d7ce9ed92db1712db0b9771c1ad65e25e79a1e Mon Sep 17 00:00:00 2001 From: ff Date: Mon, 1 Jun 2026 01:18:20 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20BCBS=20MA=20eligibility=20=E2=80=94=20na?= =?UTF-8?q?me=20extraction,=20tab=20switching,=20DOB=20input,=20button=20c?= =?UTF-8?q?olor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Extract patient first/last name from Patient Information DOM section (scoped to avoid duplicate Subscriber Information column values) - Switch to latest tab at start of step2 (Eligibility Identifier opens in new tab) - DOB: double-click + ActionChains.send_keys (no pyperclip, avoids Chrome crash) - BCBS MA button changed to variant="default" to match nearby buttons - Backend processor uses extracted names from selenium result Co-Authored-By: Claude Sonnet 4.6 --- .../processors/bcbsMaEligibilityProcessor.ts | 35 +++-------- .../insurance-status/bcbs-ma-button-modal.tsx | 2 +- ...selenium_BCBS_MA_eligibilityCheckWorker.py | 58 +++++++++++++++++-- 3 files changed, 62 insertions(+), 33 deletions(-) diff --git a/apps/Backend/src/queue/processors/bcbsMaEligibilityProcessor.ts b/apps/Backend/src/queue/processors/bcbsMaEligibilityProcessor.ts index 812657eb..99128d9c 100644 --- a/apps/Backend/src/queue/processors/bcbsMaEligibilityProcessor.ts +++ b/apps/Backend/src/queue/processors/bcbsMaEligibilityProcessor.ts @@ -53,32 +53,15 @@ async function processBcbsMaResult( let createdPdfFileId: number | null = null; try { - // Resolve patient name - const rawName = - typeof seleniumResult?.patientName === "string" ? seleniumResult.patientName.trim() : null; - - let firstName: string; - let lastName: string; - - if (rawName) { - if (rawName.includes(",")) { - const [last, ...firstParts] = rawName.split(",").map((s: string) => s.trim()); - lastName = last || formLastName || ""; - firstName = firstParts.join(" ").trim() || formFirstName || ""; - } else { - const parsed = splitName(rawName); - if (!parsed.lastName) { - lastName = parsed.firstName || formLastName || ""; - firstName = formFirstName || ""; - } else { - firstName = parsed.firstName || formFirstName || ""; - lastName = parsed.lastName || formLastName || ""; - } - } - } else { - firstName = formFirstName ?? ""; - lastName = formLastName ?? ""; - } + // Prefer names extracted from the BCBS MA results page (Demographic Information section) + const firstName: string = + (typeof seleniumResult?.firstName === "string" && seleniumResult.firstName.trim()) + ? seleniumResult.firstName.trim() + : (formFirstName ?? ""); + const lastName: string = + (typeof seleniumResult?.lastName === "string" && seleniumResult.lastName.trim()) + ? seleniumResult.lastName.trim() + : (formLastName ?? ""); await createOrUpdatePatientByInsuranceId({ insuranceId, firstName, lastName, dob: formDob, userId }); diff --git a/apps/Frontend/src/components/insurance-status/bcbs-ma-button-modal.tsx b/apps/Frontend/src/components/insurance-status/bcbs-ma-button-modal.tsx index eac35c5b..5a362758 100644 --- a/apps/Frontend/src/components/insurance-status/bcbs-ma-button-modal.tsx +++ b/apps/Frontend/src/components/insurance-status/bcbs-ma-button-modal.tsx @@ -265,7 +265,7 @@ export function BcbsMaEligibilityButton({ <>