Files
2026-03-10 18:42:51 -05:00

65 lines
3.1 KiB
PHP

<?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);
}