feat: DentaQuest eligibility — PLAN_NOT_ACCEPTED status, DOB save, no retries

- Add PLAN_NOT_ACCEPTED to PatientStatus enum (prisma schema + db push)
- Selenium: return "plan not accepted" eligibility text instead of collapsing to inactive
- Backend processor: map "plan not accepted" → PLAN_NOT_ACCEPTED, fix insuranceProvider label
- _shared.ts: save DOB for existing patients when field is currently empty
- Frontend: show amber "Plan Not Accepted" badge in patient table and detail panel
- patient-form.tsx: display "Plan Not Accepted" label in status dropdown
- BullMQ: set attempts=1 (no retry on selenium failure)
- DDMA: remove first/last name from search (member ID + DOB only)
- patient-types.ts: allow alphanumeric insurance IDs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-04-17 23:47:50 -04:00
parent f5ec4a1480
commit 4505d5db85
12 changed files with 141 additions and 104 deletions

View File

@@ -1071,6 +1071,12 @@ export function PatientTable({
Unknown
</span>
)}
{patient.status === "PLAN_NOT_ACCEPTED" && (
<span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-amber-100 text-amber-800">
Plan Not Accepted
</span>
)}
</div>
</TableCell>
@@ -1201,14 +1207,18 @@ export function PatientTable({
? "text-green-600"
: currentPatient.status === "INACTIVE"
? "text-red-600"
: "text-gray-600", // UNKNOWN or fallback
: currentPatient.status === "PLAN_NOT_ACCEPTED"
? "text-amber-600"
: "text-gray-600",
"font-medium"
)}
>
{currentPatient.status
? currentPatient.status.charAt(0).toUpperCase() +
currentPatient.status.slice(1).toLowerCase()
: "Unknown"}
{currentPatient.status === "PLAN_NOT_ACCEPTED"
? "Plan Not Accepted"
: currentPatient.status
? currentPatient.status.charAt(0).toUpperCase() +
currentPatient.status.slice(1).toLowerCase()
: "Unknown"}
</span>
</p>
</div>