'use client'; import { useEffect, useState, useTransition } from 'react'; import { saveScreeningDecision } from '../actions'; import { cn } from '@/lib/utils'; import { ShieldCheck, ShieldX } from 'lucide-react'; const departmentOptions = [ 'Volwassenen', 'Jeugd (< 18 jaar)', 'Forensisch', 'Verslaving', 'Ouderen (65+)', 'FACT', ]; interface DecisionCardProps { patientId: string; screeningId: string; initialDecision?: string | null; initialDepartment?: string | null; initialNotes?: string | null; hasReferralDocument: boolean; } export function DecisionCard({ patientId, screeningId, initialDecision, initialDepartment, initialNotes, hasReferralDocument, }: DecisionCardProps) { const [decision, setDecision] = useState<'geschikt' | 'niet_geschikt' | ''>( (initialDecision as 'geschikt' | 'niet_geschikt') || '' ); const [department, setDepartment] = useState(initialDepartment || ''); const [notes, setNotes] = useState(initialNotes || ''); const [error, setError] = useState(null); const [success, setSuccess] = useState(false); const [isPending, startTransition] = useTransition(); useEffect(() => { setDecision((initialDecision as 'geschikt' | 'niet_geschikt') || ''); setDepartment(initialDepartment || ''); setNotes(initialNotes || ''); }, [initialDecision, initialDepartment, initialNotes]); const handleSave = () => { if (!decision) { setError('Kies eerst een besluit.'); return; } if (decision === 'geschikt' && !department) { setError('Kies een afdeling voor intake.'); return; } setError(null); setSuccess(false); startTransition(async () => { try { await saveScreeningDecision({ patientId, screeningId, decision, notes, department: decision === 'geschikt' ? department : undefined, }); setSuccess(true); } catch (err) { console.error(err); setError(err instanceof Error ? err.message : 'Opslaan mislukt'); } }); }; return (
{decision === 'geschikt' ? ( ) : decision === 'niet_geschikt' ? ( ) : ( )}

Screeningsbesluit

Alleen zichtbaar voor psychologen

{!hasReferralDocument && (

Geen verwijsbrief gevonden

Voeg een verwijsbrief toe voordat je een definitief besluit neemt, zodat het dossier compleet is.

)}
{[ { value: 'geschikt', label: 'Geschikt voor intake' }, { value: 'niet_geschikt', label: 'Niet geschikt / doorverwijzen' }, ].map((option) => ( ))}
{decision === 'geschikt' && (
)}