import { 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 (
{/* Header */}

Dashboard

Resumen del servicio - Clinica Medica

Sistema Operativo
{/* Estadísticas Principales */}
Ocupación de Camas
{estadisticas.porcentajeOcupacion}% {estadisticas.camasOcupadas}/{estadisticas.totalCamas}

{estadisticas.camasDisponibles} camas disponibles

Camas Fuera de Área
{estadisticas.camasFueraDeArea}

Camas Fuera de Area

Internaciones Activas
{estadisticas.internacionesActivas}

En curso actualmente

Cultivos Pendientes
{estadisticas.cultivosPendientes}

Esperando resultados

{/* Contenido Principal */}
{/* Estado de Camas */} Estado de Camas
Disponibles

{estadisticas.camasDisponibles}

Ocupadas

{estadisticas.camasOcupadas}

Mantenimiento

{estadisticas.camasMantenimiento}

Ocupación

{estadisticas.porcentajeOcupacion}%

{/* Internaciones Activas */} Internaciones Activas {internacionesActivas.length === 0 ? (

No hay internaciones activas

) : (
{internacionesActivas.map((internacion) => { const paciente = getPacienteById(internacion.pacienteId); return (

{paciente ? `${paciente.apellido}, ${paciente.nombre}` : 'Paciente no encontrado'}

Ingreso: {internacion.fechaIngresoClinica ? formatDateDDMMYYYY(internacion.fechaIngresoClinica) : 'N/A'}

Activa
); })}
)}
{/* Accesos Rápidos */} Accesos Rápidos
{/* Cultivos Pendientes */} Cultivos Pendientes {cultivosRecientes.length === 0 ? (

No hay cultivos pendientes

) : (
{cultivosRecientes.map((cultivo) => { const paciente = getPacienteById(cultivo.pacienteId); return (

{paciente ? `${paciente.apellido}, ${paciente.nombre}` : 'Paciente no encontrado'}

{cultivo.tipoMuestra} - {cultivo.fechaToma}

Pendiente
); })}
)}
); }