diff --git a/apps/Backend/src/ai/internal-chat-workflow.ts b/apps/Backend/src/ai/internal-chat-workflow.ts index 323bd2a3..b1940cdb 100644 --- a/apps/Backend/src/ai/internal-chat-workflow.ts +++ b/apps/Backend/src/ai/internal-chat-workflow.ts @@ -55,15 +55,29 @@ export function deriveSiteKey(provider: string): string { return "MH"; } -// siteKey → autoCheck value used by the insurance-status page prefill -export function siteKeyToAutoCheck(siteKey: string): string { +// siteKey → autoCheck value used by the insurance-status page prefill. +// For MH, pass the patient's DOB so under-21 patients route to CMSP. +export function siteKeyToAutoCheck(siteKey: string, dob?: string | Date | null): string { switch (siteKey) { case "CCA": return "cca"; case "DDMA": return "ddma"; case "DELTA_INS": return "delta-ins"; case "TUFTS_SCO": return "tufts-sco"; case "UNITED_SCO": return "united-sco"; - default: return "mh"; // MH (caller may downgrade to "cmsp" by age) + default: { + // MassHealth: patients under 21 use the CMSP button + if (dob) { + try { + const birth = dob instanceof Date ? dob : new Date(dob); + const today = new Date(); + let age = today.getFullYear() - birth.getFullYear(); + const m = today.getMonth() - birth.getMonth(); + if (m < 0 || (m === 0 && today.getDate() < birth.getDate())) age--; + if (age < 21) return "cmsp"; + } catch {} + } + return "mh"; + } } } @@ -231,7 +245,7 @@ export async function runInternalChatWorkflow( memberId: patient.insuranceId, dob: resolvedDob, siteKey, - autoCheck: siteKeyToAutoCheck(siteKey), + autoCheck: siteKeyToAutoCheck(siteKey, resolvedDob), }, }; }