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
This commit is contained in:
colinislit
2026-01-03 11:47:12 +01:00
parent 4b45853868
commit 43d4d095ce
2 changed files with 12 additions and 2 deletions

View File

@@ -52,13 +52,18 @@ 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 });

View File

@@ -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}}`
);
}