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:
@@ -52,13 +52,18 @@ export async function GET(request: NextRequest) {
|
|||||||
|
|
||||||
const query = validation.data.q.trim();
|
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
|
// Fuzzy search on patient names
|
||||||
// Search in both name_family and name_given fields
|
// 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
|
const { data: patients, error: searchError } = await supabase
|
||||||
.from('patients')
|
.from('patients')
|
||||||
.select('id, name_family, name_given, birth_date, identifier_bsn')
|
.select('id, name_family, name_given, birth_date, identifier_bsn')
|
||||||
.or(
|
.or(
|
||||||
`name_family.ilike.%${query}%,name_given.cs.{"${query}"}`
|
`name_family.ilike.%${query}%,name_given.cs.{"${capitalizedQuery}"}`
|
||||||
)
|
)
|
||||||
.limit(10)
|
.limit(10)
|
||||||
.order('name_family', { ascending: true });
|
.order('name_family', { ascending: true });
|
||||||
|
|||||||
@@ -129,9 +129,14 @@ export async function GET(request: NextRequest) {
|
|||||||
`identifier_bsn.ilike.%${searchQuery}%,identifier_client_number.ilike.%${searchQuery}%`
|
`identifier_bsn.ilike.%${searchQuery}%,identifier_client_number.ilike.%${searchQuery}%`
|
||||||
);
|
);
|
||||||
} else {
|
} 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)
|
// Search name fields (family name and given names)
|
||||||
|
// name_family uses ilike (case-insensitive), name_given uses cs with capitalized query
|
||||||
dbQuery = dbQuery.or(
|
dbQuery = dbQuery.or(
|
||||||
`name_family.ilike.%${searchQuery}%,name_given.cs.{${searchQuery}}`
|
`name_family.ilike.%${searchQuery}%,name_given.cs.{${capitalizedQuery}}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user