import { LayoutDashboard, Bed, Users, ClipboardList, FlaskConical, Activity, Microscope, TrendingUp, AlertCircle, CheckCircle2, Clock } from 'lucide-react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { formatDateDDMMYYYY } from '@/lib/utils'; import type { Vista, Internacion, Paciente, Cultivo } from '@/types'; interface DashboardProps { estadisticas: { camasOcupadas: number; camasDisponibles: number; camasMantenimiento: number; totalCamas: number; totalCamasActivas: number; camasFueraDeArea: number; internacionesActivas: number; totalPacientes: number; cultivosPendientes: number; porcentajeOcupacion: number; }; internaciones: Internacion[]; cultivos: Cultivo[]; onCambiarVista: (vista: Vista) => void; getPacienteById: (id: string) => Paciente | undefined; } export function Dashboard({ estadisticas, internaciones, cultivos, onCambiarVista, getPacienteById }: DashboardProps) { const internacionesActivas = internaciones.filter(i => i.activa).slice(0, 5); const cultivosRecientes = cultivos .filter(c => c.estado === 'NAF/Pendiente') .slice(0, 5); return (
Resumen del servicio - Clínica Médica
{estadisticas.camasDisponibles} camas disponibles
Total de camas fuera de área
En curso actualmente
Esperando resultados
{estadisticas.camasDisponibles}
{estadisticas.camasOcupadas}
{estadisticas.camasMantenimiento}
{estadisticas.porcentajeOcupacion}%
No hay internaciones activas
{paciente ? `${paciente.apellido}, ${paciente.nombre}` : 'Paciente no encontrado'}
Ingreso: {internacion.fechaIngresoClinica ? formatDateDDMMYYYY(internacion.fechaIngresoClinica) : 'N/A'}
No hay cultivos pendientes
{paciente ? `${paciente.apellido}, ${paciente.nombre}` : 'Paciente no encontrado'}
{cultivo.tipoMuestra} - {cultivo.fechaToma}