feat: wire Tufts SCO to DentaQuest portal and fix insurance credential dropdown
- Add /dentaquest-eligibility endpoint in Python agent (Tufts SCO uses providers.dentaquest.com) - Add backend route, processor, and service client for Tufts SCO (separate from UnitedSCO/DentalHub) - Fix Tufts SCO button to post to new tuftssco route instead of unitedsco - Fix credential field names: dentaquestUsername/Password (was tuftsscoUsername/Password) - Fix socket event: listen for selenium:dentaquest_session_started (was unitedsco) - Fix error visibility: keep session alive 30s on error so backend reads real message - Replace free-text Site Key field with dropdown to prevent key mismatches Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,15 @@ type CredentialFormProps = {
|
||||
};
|
||||
};
|
||||
|
||||
const SITE_KEY_OPTIONS = [
|
||||
{ value: "MH", label: "MassHealth (MH)" },
|
||||
{ value: "DDMA", label: "Delta Dental MA (DDMA)" },
|
||||
{ value: "DELTAINS", label: "Delta Dental Ins (DELTAINS)" },
|
||||
{ value: "TUFTS_SCO", label: "Tufts SCO (TUFTS_SCO)" },
|
||||
{ value: "UNITED_SCO", label: "United SCO (UNITED_SCO)" },
|
||||
{ value: "CCA", label: "CCA (CCA)" },
|
||||
];
|
||||
|
||||
export function CredentialForm({ onClose, userId, defaultValues }: CredentialFormProps) {
|
||||
const [siteKey, setSiteKey] = useState(defaultValues?.siteKey || "");
|
||||
const [username, setUsername] = useState(defaultValues?.username || "");
|
||||
@@ -93,14 +102,19 @@ export function CredentialForm({ onClose, userId, defaultValues }: CredentialFor
|
||||
</h2>
|
||||
<form onSubmit={handleSubmit} className="space-y-4">
|
||||
<div>
|
||||
<label className="block text-sm font-medium">Site Key</label>
|
||||
<input
|
||||
type="text"
|
||||
<label className="block text-sm font-medium">Insurance</label>
|
||||
<select
|
||||
value={siteKey}
|
||||
onChange={(e) => setSiteKey(e.target.value)}
|
||||
className="mt-1 p-2 border rounded w-full"
|
||||
placeholder="e.g., MH, Delta MA, (keep the site key exact same)"
|
||||
/>
|
||||
className="mt-1 p-2 border rounded w-full bg-white"
|
||||
>
|
||||
<option value="">— Select insurance —</option>
|
||||
{SITE_KEY_OPTIONS.map((opt) => (
|
||||
<option key={opt.value} value={opt.value}>
|
||||
{opt.label}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label className="block text-sm font-medium">Username</label>
|
||||
|
||||
Reference in New Issue
Block a user