Incluir muestras rechazadas al volver, resaltar servicio prolongado en historial

Las consultas de "muestras pendientes de visita anterior" solo incluían
estado='pendiente'; ahora también 'rechazada', así una muestra rechazada
en una visita aparece igual cuando el paciente vuelve, y se puede recibir
directo (sin el paso extra de revertir a pendiente primero).

En historial.php, la columna Servicio se resalta en rojo con ícono de
alerta cuando supera 20 minutos (SERVICIO_PROLONGADO_MIN), para detectar
turnos prolongados a simple vista.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-03 14:19:35 -05:00
co-authored by Claude Sonnet 4.6
parent 538ee8ad25
commit ec552136bf
3 changed files with 9 additions and 4 deletions
+2 -2
View File
@@ -399,7 +399,7 @@ if ($incluirSolicitud) {
LEFT JOIN lab_tipos_muestra lt ON lt.codigo = tm.tipo_muestra
WHERE ts.paciente_id = ?
AND tm.solicitud_id != ?
AND tm.estado = 'pendiente'
AND tm.estado IN ('pendiente','rechazada')
ORDER BY tm.id ASC"
);
$stmtPrev->execute([$solicitud['paciente_id'], $solicitud['id']]);
@@ -432,7 +432,7 @@ if ($incluirSolicitud) {
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.estado = 'pendiente'
AND tm.estado IN ('pendiente','rechazada')
ORDER BY tm.id ASC"
);
$stmtPrev->execute([$pacId]);
+5 -1
View File
@@ -251,6 +251,7 @@ Layout::open('Historial de Turnos', 'fas fa-history');
Historial de Turnos
═══════════════════════════════════════════════════════════ */
const API = '<?= BASE_URL ?>modules/turnero/api/';
const SERVICIO_PROLONGADO_MIN = 20; // minutos — a partir de aquí se resalta en rojo
let _state = {
fechaDesde : '',
@@ -447,7 +448,10 @@ function renderTabla(turnos) {
.toLocaleString('es-CO',{hour:'2-digit',minute:'2-digit'})
: '—';
const espMin = t.espera_min != null ? t.espera_min + ' m' : '—';
const srvMin = t.servicio_min != null ? t.servicio_min + ' m' : '—';
const esProlongado = t.servicio_min != null && t.servicio_min > SERVICIO_PROLONGADO_MIN;
const srvMin = t.servicio_min != null
? `<span${esProlongado ? ' style="color:#dc2626;font-weight:700" title="Servicio prolongado"' : ''}>${esProlongado ? '<i class="fas fa-exclamation-triangle me-1" style="font-size:.7rem"></i>' : ''}${t.servicio_min} m</span>`
: '—';
const totMin = t.total_min != null ? t.total_min + ' m' : '—';
const tel = esc(t.paciente_cel || '—');
const priCls = esc(t.prioridad_color || '#888');
+2 -1
View File
@@ -2492,8 +2492,9 @@ function renderMuestras(lista) {
summary.innerHTML = chips;
cont.innerHTML = lista.map(m => {
const esPend = m.estado === 'pendiente';
const esPrevio = !!m.es_pendiente_anterior;
// Rechazadas de una visita anterior también se pueden recibir directo (el paciente trae muestra nueva)
const esPend = m.estado === 'pendiente' || (esPrevio && m.estado === 'rechazada');
const label = escHtml(m.label || m.tipo_muestra || 'MUESTRA');
const origenTag = esPrevio
? `<span style="font-size:.68rem;background:#fef3c7;color:#92400e;border:1px solid #fde68a;