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:
co-authored by
Claude Sonnet 4.6
parent
6f1e2adafe
commit
8a44cb8bae
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user