Files
whatsapp/modules/turnero/api/get_resumen_muestras.php
T
Lizandro GuarnizoandClaude Sonnet 4.6 c357f18b61 fix(resumen-muestras): obtenerOCrearSesionHoy() retorna int no array
Usaba ['id'] sobre un int → sesionId=0 → sin resultados.
Cambiado a sesionHoy() que sí retorna array con 'id'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-30 18:06:21 -05:00

54 lines
1.7 KiB
PHP

<?php
/**
* GET get_resumen_muestras.php
* Resumen de estaciones de toma de muestras para recepción.
*/
require_once __DIR__ . '/_helpers.php';
requireTurnero();
$pdo = db();
$sesion = sesionHoy();
if (!$sesion) jsonOk(['estaciones' => [], 'en_espera' => 0, 'en_espera_muestra' => 0]);
$sesionId = (int)$sesion['id'];
// Estaciones con el turno en servicio actual
$stmt = $pdo->prepare(
"SELECT l.id, l.nombre,
t.id AS turno_id, t.codigo, t.paciente_nombre
FROM turnero_lugares l
LEFT JOIN turnero_turnos t
ON t.lugar_destino_id = l.id
AND t.sesion_id = ?
AND t.estado = 'en_servicio'
AND t.muestra_espera_at IS NULL
AND t.fin_lugar_at IS NULL
WHERE l.tipo = 'muestras' AND l.activo = 1
ORDER BY l.sort_order"
);
$stmt->execute([$sesionId]);
$estaciones = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Cola global de muestras (en_espera_lugar)
$s = $pdo->prepare(
"SELECT COUNT(*) FROM turnero_turnos
WHERE sesion_id = ? AND estado = 'en_espera_lugar' AND muestra_espera_at IS NULL
AND lugar_destino_id IN (SELECT id FROM turnero_lugares WHERE tipo='muestras' AND activo=1)"
);
$s->execute([$sesionId]);
$enEspera = (int)$s->fetchColumn();
// Pacientes entre tomas (espera progresiva)
$s2 = $pdo->prepare(
"SELECT COUNT(*) FROM turnero_turnos
WHERE sesion_id = ? AND muestra_espera_at IS NOT NULL AND fin_lugar_at IS NULL
AND lugar_destino_id IN (SELECT id FROM turnero_lugares WHERE tipo='muestras' AND activo=1)"
);
$s2->execute([$sesionId]);
$enEsperaMuestra = (int)$s2->fetchColumn();
jsonOk([
'estaciones' => $estaciones,
'en_espera' => $enEspera,
'en_espera_muestra' => $enEsperaMuestra,
]);