65 lines
3.1 KiB
PHP
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);
|
|
}
|