/** * Swift Type Definitions * * Core types for the Swift Contextual UI system. */ import type { VerpleegkundigCategory } from '@/lib/types/report'; // Intent types export type SwiftIntent = | 'dagnotitie' | 'zoeken' | 'overdracht' | 'agenda_query' | 'create_appointment' | 'cancel_appointment' | 'reschedule_appointment' | 'unknown'; export type BlockType = Exclude | 'patient-dashboard'; // Shift types export type ShiftType = 'nacht' | 'ochtend' | 'middag' | 'avond'; // Intent classification result export interface IntentClassificationResult { intent: SwiftIntent; confidence: number; entities: ExtractedEntities; source: 'local' | 'ai'; } // Extracted entities from user input export interface ExtractedEntities { patientName?: string; patientId?: string; category?: VerpleegkundigCategory; content?: string; query?: string; date?: string; time?: string; identifier?: string; } // Block sizes export type BlockSize = 'sm' | 'md' | 'lg' | 'full'; // Block configuration export interface BlockConfig { type: BlockType; title: string; size: BlockSize; icon: string; } // Block configs for each type export const BLOCK_CONFIGS: Record = { dagnotitie: { type: 'dagnotitie', title: 'Dagnotitie', size: 'md', icon: 'FileText', }, zoeken: { type: 'zoeken', title: 'Patiƫnt zoeken', size: 'md', icon: 'Search', }, overdracht: { type: 'overdracht', title: 'Overdracht', size: 'lg', icon: 'ArrowRightLeft', }, agenda_query: { type: 'agenda_query', title: 'Agenda', size: 'lg', icon: 'Calendar', }, create_appointment: { type: 'create_appointment', title: 'Nieuwe afspraak', size: 'lg', icon: 'Plus', }, cancel_appointment: { type: 'cancel_appointment', title: 'Afspraak annuleren', size: 'lg', icon: 'X', }, reschedule_appointment: { type: 'reschedule_appointment', title: 'Afspraak verzetten', size: 'lg', icon: 'Clock', }, 'patient-dashboard': { type: 'patient-dashboard', title: 'Patiƫntoverzicht', size: 'lg', icon: 'LayoutDashboard', }, }; // Recent action type export interface RecentAction { id: string; intent: SwiftIntent; label: string; timestamp: Date; patientName?: string; }