'use client'; import { useState, useTransition } from 'react'; import { createAnamnese, deleteAnamnese, type Anamnese } from '../../actions'; import { Loader2, Trash2 } from 'lucide-react'; import { format } from 'date-fns'; import { nl } from 'date-fns/locale'; const types = [ 'Psychiatrische anamnese', 'Sociale anamnese', 'Medische anamnese', 'Familieanamnese', 'Ontwikkelingsanamnese', 'Overig', ]; interface AnamneseManagerProps { patientId: string; intakeId: string; anamneses: Anamnese[]; } export function AnamneseManager({ patientId, intakeId, anamneses }: AnamneseManagerProps) { const [form, setForm] = useState({ date: '', type: types[0], content: '', notes: '', }); const [error, setError] = useState(null); const [isPending, startTransition] = useTransition(); const [deletingId, setDeletingId] = useState(null); const handleSubmit = () => { if (!form.date || !form.content) { setError('Datum en inhoud zijn verplicht.'); return; } setError(null); startTransition(async () => { try { await createAnamnese({ patientId, intakeId, date: form.date, type: form.type, content: form.content, notes: form.notes, }); setForm({ ...form, content: '', notes: '' }); } catch (err) { setError(err instanceof Error ? err.message : 'Opslaan mislukt'); } }); }; const handleDelete = (id: string) => { setDeletingId(id); startTransition(async () => { try { await deleteAnamnese(patientId, intakeId, id); } catch (err) { setError(err instanceof Error ? err.message : 'Verwijderen mislukt'); } finally { setDeletingId(null); } }); }; return (
{anamneses.length === 0 &&

Nog geen anamneses.

} {anamneses.map((item) => (

{item.anamnese_type}

{format(new Date(item.anamnese_date), 'd MMM yyyy', { locale: nl })}

{item.content}

{item.notes &&

Notities: {item.notes}

}
))}

Nieuwe anamnese

setForm((prev) => ({ ...prev, date: e.target.value }))} className="h-10 rounded-md border border-slate-300 px-3 text-sm" />