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
|
LEFT JOIN lab_tipos_muestra lt ON lt.codigo = tm.tipo_muestra
|
||||||
WHERE ts.paciente_id = ?
|
WHERE ts.paciente_id = ?
|
||||||
AND tm.solicitud_id != ?
|
AND tm.solicitud_id != ?
|
||||||
AND tm.estado = 'pendiente'
|
AND tm.estado IN ('pendiente','rechazada')
|
||||||
ORDER BY tm.id ASC"
|
ORDER BY tm.id ASC"
|
||||||
);
|
);
|
||||||
$stmtPrev->execute([$solicitud['paciente_id'], $solicitud['id']]);
|
$stmtPrev->execute([$solicitud['paciente_id'], $solicitud['id']]);
|
||||||
@@ -432,7 +432,7 @@ if ($incluirSolicitud) {
|
|||||||
JOIN turnero_solicitudes ts ON ts.id = tm.solicitud_id
|
JOIN turnero_solicitudes ts ON ts.id = tm.solicitud_id
|
||||||
LEFT JOIN lab_tipos_muestra lt ON lt.codigo = tm.tipo_muestra
|
LEFT JOIN lab_tipos_muestra lt ON lt.codigo = tm.tipo_muestra
|
||||||
WHERE ts.paciente_id = ?
|
WHERE ts.paciente_id = ?
|
||||||
AND tm.estado = 'pendiente'
|
AND tm.estado IN ('pendiente','rechazada')
|
||||||
ORDER BY tm.id ASC"
|
ORDER BY tm.id ASC"
|
||||||
);
|
);
|
||||||
$stmtPrev->execute([$pacId]);
|
$stmtPrev->execute([$pacId]);
|
||||||
|
|||||||
@@ -251,6 +251,7 @@ Layout::open('Historial de Turnos', 'fas fa-history');
|
|||||||
Historial de Turnos
|
Historial de Turnos
|
||||||
═══════════════════════════════════════════════════════════ */
|
═══════════════════════════════════════════════════════════ */
|
||||||
const API = '<?= BASE_URL ?>modules/turnero/api/';
|
const API = '<?= BASE_URL ?>modules/turnero/api/';
|
||||||
|
const SERVICIO_PROLONGADO_MIN = 20; // minutos — a partir de aquí se resalta en rojo
|
||||||
|
|
||||||
let _state = {
|
let _state = {
|
||||||
fechaDesde : '',
|
fechaDesde : '',
|
||||||
@@ -447,7 +448,10 @@ function renderTabla(turnos) {
|
|||||||
.toLocaleString('es-CO',{hour:'2-digit',minute:'2-digit'})
|
.toLocaleString('es-CO',{hour:'2-digit',minute:'2-digit'})
|
||||||
: '—';
|
: '—';
|
||||||
const espMin = t.espera_min != null ? t.espera_min + ' m' : '—';
|
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 totMin = t.total_min != null ? t.total_min + ' m' : '—';
|
||||||
const tel = esc(t.paciente_cel || '—');
|
const tel = esc(t.paciente_cel || '—');
|
||||||
const priCls = esc(t.prioridad_color || '#888');
|
const priCls = esc(t.prioridad_color || '#888');
|
||||||
|
|||||||
@@ -2492,8 +2492,9 @@ function renderMuestras(lista) {
|
|||||||
summary.innerHTML = chips;
|
summary.innerHTML = chips;
|
||||||
|
|
||||||
cont.innerHTML = lista.map(m => {
|
cont.innerHTML = lista.map(m => {
|
||||||
const esPend = m.estado === 'pendiente';
|
|
||||||
const esPrevio = !!m.es_pendiente_anterior;
|
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 label = escHtml(m.label || m.tipo_muestra || 'MUESTRA');
|
||||||
const origenTag = esPrevio
|
const origenTag = esPrevio
|
||||||
? `<span style="font-size:.68rem;background:#fef3c7;color:#92400e;border:1px solid #fde68a;
|
? `<span style="font-size:.68rem;background:#fef3c7;color:#92400e;border:1px solid #fde68a;
|
||||||
|
|||||||
Reference in New Issue
Block a user