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:
co-authored by
Claude Sonnet 4.6
parent
538ee8ad25
commit
ec552136bf
@@ -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]);
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user