feat(turnero): mostrar muestras pendientes de visitas anteriores en entrega

Cuando la solicitud tiene solo_muestras=1, get_consentimientos.php
busca turnero_muestras pendientes de otras solicitudes del mismo
paciente y las antepone en el array muestras con es_pendiente_anterior=1.

lugar.php renderiza un tag 'visita anterior' en cada muestra previa
para que el bacteriólogo identifique el origen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-08 18:42:19 -05:00
co-authored by Claude Sonnet 4.6
parent 6f1e2adafe
commit 8a44cb8bae
2 changed files with 32 additions and 4 deletions
+22 -1
View File
@@ -281,7 +281,8 @@ if ($incluirSolicitud) {
try {
$stmtM = $pdo->prepare(
"SELECT tm.id, tm.tipo_muestra, tm.estado, tm.motivo_rechazo, tm.recibida_at,
COALESCE(lt.nombre, tm.tipo_muestra) AS label
COALESCE(lt.nombre, tm.tipo_muestra) AS label,
0 AS es_pendiente_anterior, NULL AS solicitud_orden_anterior
FROM turnero_muestras tm
LEFT JOIN lab_tipos_muestra lt ON lt.codigo = tm.tipo_muestra
WHERE tm.solicitud_id = ?
@@ -289,6 +290,26 @@ if ($incluirSolicitud) {
);
$stmtM->execute([$solicitud['id']]);
$muestras = $stmtM->fetchAll(PDO::FETCH_ASSOC);
// Si es visita de entrega de muestras, agregar pendientes de solicitudes anteriores
if (!empty($solicitud['solo_muestras']) && !empty($solicitud['paciente_id'])) {
$stmtPrev = $pdo->prepare(
"SELECT tm.id, tm.tipo_muestra, tm.estado, tm.motivo_rechazo, tm.recibida_at,
COALESCE(lt.nombre, tm.tipo_muestra) AS label,
1 AS es_pendiente_anterior,
ts.numero_orden AS solicitud_orden_anterior
FROM turnero_muestras tm
JOIN turnero_solicitudes ts ON ts.id = tm.solicitud_id
LEFT JOIN lab_tipos_muestra lt ON lt.codigo = tm.tipo_muestra
WHERE ts.paciente_id = ?
AND tm.solicitud_id != ?
AND tm.estado = 'pendiente'
ORDER BY tm.id ASC"
);
$stmtPrev->execute([$solicitud['paciente_id'], $solicitud['id']]);
$previas = $stmtPrev->fetchAll(PDO::FETCH_ASSOC);
$muestras = array_merge($previas, $muestras);
}
} catch (\Throwable $_) {
// Tabla aún no existe
}