From 43d4d095ce3b4c2dfbd6d517660baba859b2cd22 Mon Sep 17 00:00:00 2001 From: colinislit Date: Sat, 3 Jan 2026 11:47:12 +0100 Subject: [PATCH] fix: case-insensitive voornaam zoeken door capitalize toe te passen Voornaam zoeken werkte niet omdat name_given array case-sensitive is. Capitalize nu de zoekterm (eerste letter hoofdletter) voordat deze wordt gebruikt in de array search, zodat 'jan' matcht met 'Jan'. Aangepast in beide search endpoints: - /api/patients/search - /api/cortex/patients/search --- app/api/cortex/patients/search/route.ts | 7 ++++++- app/api/patients/search/route.ts | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) 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}}` ); }