From d3e6934dcb01d45af0e8f847950dab7c7ee5cf67 Mon Sep 17 00:00:00 2001 From: saridsa2 Date: Mon, 13 Apr 2026 11:22:23 +0530 Subject: [PATCH] fix: stop auto-creating Unknown leads on every call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Caller resolver now returns empty IDs for unrecognized numbers instead of eagerly creating lead+patient records. Records are created when the agent explicitly books an appointment or logs an enquiry — per PRD. - caller-resolution.service.ts: return unresolved result, don't create - call-desk.tsx: toast changed to 'No existing records found' - appointment-form.tsx: create patient on save if none exists Co-Authored-By: Claude Opus 4.6 (1M context) --- src/components/call-desk/appointment-form.tsx | 21 ++++++++++++++++++- src/pages/call-desk.tsx | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/call-desk/appointment-form.tsx b/src/components/call-desk/appointment-form.tsx index 53bdc77..7eead57 100644 --- a/src/components/call-desk/appointment-form.tsx +++ b/src/components/call-desk/appointment-form.tsx @@ -259,6 +259,25 @@ export const AppointmentForm = ({ ); notify.success('Appointment Updated'); } else { + // If no patient record exists yet (new caller), create one now + let resolvedPatientId = patientId; + if (!resolvedPatientId && callerNumber) { + const trimmedName = patientName.trim(); + const nameParts = { + firstName: trimmedName.split(' ')[0] || 'Unknown', + lastName: trimmedName.split(' ').slice(1).join(' ') || '', + }; + try { + const created = await apiClient.graphql<{ createPatient: { id: string } }>( + `mutation($data: PatientCreateInput!) { createPatient(data: $data) { id } }`, + { data: { fullName: nameParts, phones: { primaryPhoneNumber: callerNumber }, patientType: 'NEW' } }, + ); + resolvedPatientId = created.createPatient.id; + } catch (err) { + console.warn('Failed to create patient:', err); + } + } + // Create appointment await apiClient.graphql( `mutation CreateAppointment($data: AppointmentCreateInput!) { @@ -274,7 +293,7 @@ export const AppointmentForm = ({ department: selectedDoctor?.department ?? '', doctorId: doctor, reasonForVisit: chiefComplaint || null, - ...(patientId ? { patientId } : {}), + ...(resolvedPatientId ? { patientId: resolvedPatientId } : {}), }, }, ); diff --git a/src/pages/call-desk.tsx b/src/pages/call-desk.tsx index 64476b8..4db54f9 100644 --- a/src/pages/call-desk.tsx +++ b/src/pages/call-desk.tsx @@ -91,7 +91,7 @@ export const CallDeskPage = () => { .then((result) => { setResolvedCaller(result); if (result.isNew) { - notify.info('New Caller', 'Lead and patient records created'); + notify.info('New Caller', 'No existing records found for this number'); } }) .catch((err) => {