From e2b67b26fe38fc8193aed8d166de1a3c76a168d7 Mon Sep 17 00:00:00 2001 From: Potenz Date: Fri, 23 Jan 2026 10:34:44 +0530 Subject: [PATCH] npiProvider - v4 --- .../src/components/claims/claim-form.tsx | 36 ++++++++++++++++--- .../selenium_claimSubmitWorker.py | 4 +-- .../SeleniumService/selenium_preAuthWorker.py | 4 +-- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/apps/Frontend/src/components/claims/claim-form.tsx b/apps/Frontend/src/components/claims/claim-form.tsx index 1cbe80e..23114cb 100644 --- a/apps/Frontend/src/components/claims/claim-form.tsx +++ b/apps/Frontend/src/components/claims/claim-form.tsx @@ -136,7 +136,6 @@ export function ClaimForm({ }, [staffMembersRaw, staff]); // fetching npi providers - const { data: npiProviders = [] } = useQuery({ queryKey: ["/api/npiProviders/"], queryFn: async () => { @@ -146,6 +145,29 @@ export function ClaimForm({ }, }); + useEffect(() => { + if (!npiProviders.length) return; + + // do not override if user already selected + if (form.npiProvider?.npiNumber) return; + + const kaiGaoNpi = npiProviders.find( + (p) => p.providerName.toLowerCase() === "kai gao", + ); + + const fallback = kaiGaoNpi || npiProviders[0]; + + if (fallback) { + setForm((prev) => ({ + ...prev, + npiProvider: { + npiNumber: fallback.npiNumber, + providerName: fallback.providerName, + }, + })); + } + }, [npiProviders]); + // Service date state const [serviceDateValue, setServiceDateValue] = useState(new Date()); const [serviceDate, setServiceDate] = useState( @@ -571,7 +593,6 @@ export function ClaimForm({ return; } - // 1. Create or update appointment let appointmentIdToUse = appointmentId; @@ -609,7 +630,12 @@ export function ClaimForm({ // 3. Create Claim(if not) // Filter out empty service lines (empty procedureCode) - const { uploadedFiles, insuranceSiteKey, ...formToCreateClaim } = f; + const { + uploadedFiles, + insuranceSiteKey, + npiProvider, + ...formToCreateClaim + } = f; // build claimFiles metadata from uploadedFiles (only filename + mimeType) const claimFilesMeta: ClaimFileMeta[] = (uploadedFiles || []).map((f) => ({ @@ -691,7 +717,6 @@ export function ClaimForm({ return; } - // 2. Update patient if (patient && typeof patient.id === "number") { const { id, createdAt, userId, ...sanitizedFields } = patient; @@ -1049,7 +1074,8 @@ export function ClaimForm({ setForm((prev) => ({ ...prev, - renderingNpi: { + npiProvider: { + // ✅ CORRECT KEY npiNumber: selected.npiNumber, providerName: selected.providerName, }, diff --git a/apps/SeleniumService/selenium_claimSubmitWorker.py b/apps/SeleniumService/selenium_claimSubmitWorker.py index 4ef0e0e..6a9deef 100644 --- a/apps/SeleniumService/selenium_claimSubmitWorker.py +++ b/apps/SeleniumService/selenium_claimSubmitWorker.py @@ -46,8 +46,8 @@ class AutomationMassHealth: def select_rendering_npi(self, select_element): options = select_element.options - target_npi = (self.renderingNpiNumber or "").strip() - target_name = (self.renderingNpiName or "").strip().lower() + target_npi = (self.npiNumber or "").strip() + target_name = (self.npiName or "").strip().lower() # 1️⃣ Exact NPI match (value or text) for opt in options: diff --git a/apps/SeleniumService/selenium_preAuthWorker.py b/apps/SeleniumService/selenium_preAuthWorker.py index 74284e6..150c819 100644 --- a/apps/SeleniumService/selenium_preAuthWorker.py +++ b/apps/SeleniumService/selenium_preAuthWorker.py @@ -45,8 +45,8 @@ class AutomationMassHealthPreAuth: def select_rendering_npi(self, select_element): options = select_element.options - target_npi = (self.renderingNpiNumber or "").strip() - target_name = (self.renderingNpiName or "").strip().lower() + target_npi = (self.npiNumber or "").strip() + target_name = (self.npiName or "").strip().lower() # 1️⃣ Exact NPI match (value or text) for opt in options: