diff --git a/app/api/cortex/patients/search/route.ts b/app/api/cortex/patients/search/route.ts index 60356b4..932f432 100644 --- a/app/api/cortex/patients/search/route.ts +++ b/app/api/cortex/patients/search/route.ts @@ -51,14 +51,19 @@ export async function GET(request: NextRequest) { } const query = validation.data.q.trim(); + + // Capitalize first letter, lowercase rest (matches Dutch name format) + const capitalizedQuery = query.charAt(0).toUpperCase() + + query.slice(1).toLowerCase(); // Fuzzy search on patient names // Search in both name_family and name_given fields + // name_family uses ilike (case-insensitive), name_given uses cs with capitalized query const { data: patients, error: searchError } = await supabase .from('patients') .select('id, name_family, name_given, birth_date, identifier_bsn') .or( - `name_family.ilike.%${query}%,name_given.cs.{"${query}"}` + `name_family.ilike.%${query}%,name_given.cs.{"${capitalizedQuery}"}` ) .limit(10) .order('name_family', { ascending: true }); diff --git a/app/api/patients/search/route.ts b/app/api/patients/search/route.ts index 21085ef..2743ac2 100644 --- a/app/api/patients/search/route.ts +++ b/app/api/patients/search/route.ts @@ -129,9 +129,14 @@ export async function GET(request: NextRequest) { `identifier_bsn.ilike.%${searchQuery}%,identifier_client_number.ilike.%${searchQuery}%` ); } else { + // Capitalize first letter, lowercase rest (matches Dutch name format) + const capitalizedQuery = searchQuery.charAt(0).toUpperCase() + + searchQuery.slice(1).toLowerCase(); + // Search name fields (family name and given names) + // name_family uses ilike (case-insensitive), name_given uses cs with capitalized query dbQuery = dbQuery.or( - `name_family.ilike.%${searchQuery}%,name_given.cs.{${searchQuery}}` + `name_family.ilike.%${searchQuery}%,name_given.cs.{${capitalizedQuery}}` ); }