Vincular turnos por muestra pendiente y precargar Datos Toma de Muestras
El turno original no se modifica (queda finalizado igual que antes) — solo se agrega trazabilidad: turnero_muestras.recibida_en_turno_id registra en qué turno se completó una muestra que había quedado pendiente en otra visita. Historial, bandeja y lugar.php ahora muestran un chip/botón "Turno vinculado" en ambos sentidos (origen ⇄ seguimiento) con acceso directo. Además, al abrir un formulario "Datos Toma de Muestras" pendiente para una visita de seguimiento, aparece un botón para cargar las respuestas del último formulario firmado de ese mismo paciente (sin firma ni identidad del profesional anterior) — evita reescribir la historia clínica; la firma y fecha siguen siendo las de hoy. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
8e1f46904c
commit
538ee8ad25
@@ -345,6 +345,15 @@ function buscar(pageNum) {
|
||||
cargarPagina();
|
||||
}
|
||||
|
||||
function irATurno(codigo, fecha) {
|
||||
document.getElementById('fDesde').value = fecha || hoy();
|
||||
document.getElementById('fHasta').value = fecha || hoy();
|
||||
document.getElementById('fQ').value = codigo;
|
||||
document.getElementById('fEstado').value = '';
|
||||
buscar();
|
||||
window.scrollTo({top:0, behavior:'smooth'});
|
||||
}
|
||||
|
||||
async function cargarPagina() {
|
||||
mostrarSpinner();
|
||||
const params = new URLSearchParams({
|
||||
@@ -524,6 +533,23 @@ function renderDetalle(t) {
|
||||
{ lbl:'Atendió muestras', val: esc(t.atendido_lugar_nombre || '—') },
|
||||
{ lbl:'Notas', val: esc(t.notas || '—') },
|
||||
];
|
||||
// Turnos vinculados (muestra pendiente completada en otra visita, o viceversa)
|
||||
let relHtml = '';
|
||||
if (t.relacionados && t.relacionados.length) {
|
||||
relHtml = `<div class="detail-extra">
|
||||
<div class="d-lbl"><i class="fas fa-link me-1 text-primary"></i>Turno vinculado</div>
|
||||
<div class="d-val">${t.relacionados.map(r => {
|
||||
const txt = r.direccion === 'seguimiento'
|
||||
? `Muestra completada en ${esc(r.codigo)}`
|
||||
: `Completa muestra pendiente de ${esc(r.codigo)}`;
|
||||
return `<button class="btn btn-sm btn-outline-primary py-0 px-2 mb-1 me-1"
|
||||
style="font-size:.72rem" onclick="irATurno('${esc(r.codigo)}','${r.fecha}')">
|
||||
<i class="fas fa-arrow-right me-1"></i>${txt}
|
||||
</button>`;
|
||||
}).join('')}</div>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
// Exámenes
|
||||
let examHtml = '';
|
||||
if (t.examenes && t.examenes.length) {
|
||||
@@ -555,7 +581,7 @@ function renderDetalle(t) {
|
||||
<div class="d-val">${it.val}</div>
|
||||
</div>`).join('')}
|
||||
</div>
|
||||
${examHtml}${comHtml}
|
||||
${relHtml}${examHtml}${comHtml}
|
||||
<div class="docs-section" id="docs-${t.id}">
|
||||
<div class="docs-lbl"><i class="fas fa-file-signature me-1"></i>Documentos</div>
|
||||
<span class="text-muted small"><i class="fas fa-spinner fa-spin me-1"></i>Cargando…</span>
|
||||
|
||||
Reference in New Issue
Block a user