<?php
/**
 * GET /api/lab/get_stats.php — Estadísticas del dashboard del módulo
 * Devuelve contadores, pendientes urgentes, agenda hoy y carga de enfermeras.
 */
require_once __DIR__ . '/_helpers.php';
requireMethod('GET');

try {
    $om   = new OrdenMedica();
    $dom  = new Domicilio();
    $asig = new Asignacion();
    $pac  = new Paciente();
    $db   = Database::getInstance();

    // ── Órdenes ──────────────────────────────────────────────────────────────
    $estadosOrdenes  = $om->contadorPorEstado();
    $pendientesViejos = $om->pendientesAntiguos(5);

    // ── Domicilios hoy ───────────────────────────────────────────────────────
    $estDomHoy    = $dom->estadisticasHoy();
    $sinAsignarHoy = $dom->sinAsignar();

    // ── Carga de enfermeras hoy ──────────────────────────────────────────────
    $cargaEnfermeras = $asig->cargaHoy();

    // ── Totales generales ────────────────────────────────────────────────────
    $totalPacientes = $db->fetch('SELECT COUNT(*) AS n FROM lab_pacientes WHERE is_active = 1')['n'] ?? 0;
    $totalEnfermeras = $db->fetch('SELECT COUNT(*) AS n FROM lab_enfermeras WHERE is_active = 1')['n'] ?? 0;

    // ── Órdenes de hoy ───────────────────────────────────────────────────────
    $ordenesHoy = $db->fetch(
        'SELECT COUNT(*) AS n FROM lab_ordenes_medicas WHERE DATE(created_at) = CURDATE()'
    )['n'] ?? 0;

    // ── Actividad reciente ───────────────────────────────────────────────────
    $actividadReciente = (new ActividadAdmin())->reciente(10);

    jsonOk([
        'ordenes' => [
            'por_estado'       => $estadosOrdenes,
            'pendientes_hoy'   => (int)($estadosOrdenes['pendiente'] ?? 0),
            'en_revision_hoy'  => (int)($estadosOrdenes['en_revision'] ?? 0),
            'pendientes_viejos'=> $pendientesViejos,
            'total_hoy'        => (int)$ordenesHoy,
        ],
        'domicilios' => [
            'por_estado'   => $estDomHoy,
            'total_hoy'    => array_sum($estDomHoy),
            'sin_asignar'  => count($sinAsignarHoy),
            'lista_sin_asignar' => $sinAsignarHoy,
        ],
        'enfermeras' => [
            'activas'      => (int)$totalEnfermeras,
            'carga_hoy'    => $cargaEnfermeras,
        ],
        'generales' => [
            'total_pacientes' => (int)$totalPacientes,
        ],
        'actividad_reciente' => $actividadReciente,
    ]);
} catch (Exception $e) {
    jsonError($e->getMessage(), 500);
}
