feat: relacionar imagen de WhatsApp con orden médica al agendar domicilio
Al abrir el modal desde una imagen en el chat: - guardar() crea primero la OrdenMedica via crear_desde_whatsapp.php y pasa el orden_id resultante a save_domicilio.php - Enfermera::agenda() hace LEFT JOIN a lab_ordenes_medicas para traer local_file de la orden asociada (as orden_local_file) - enfermero_portal._cardHTML() muestra la imagen de la orden médica con link para ampliar
This commit is contained in:
@@ -106,6 +106,7 @@ class Enfermera {
|
||||
d.examenes_solicitados,
|
||||
d.tipo_cliente,
|
||||
d.seguro_nombre,
|
||||
d.orden_id,
|
||||
p.id AS paciente_id,
|
||||
p.nombre_completo AS paciente_nombre,
|
||||
p.telefono AS paciente_telefono,
|
||||
@@ -114,11 +115,13 @@ class Enfermera {
|
||||
p.tipo_documento AS paciente_tipo_documento,
|
||||
p.numero_documento AS paciente_numero_documento,
|
||||
p.eps AS paciente_eps,
|
||||
om.local_file AS orden_local_file,
|
||||
a.estado AS asignacion_estado,
|
||||
a.id AS asignacion_id
|
||||
FROM lab_asignaciones a
|
||||
JOIN lab_domicilios d ON d.id = a.domicilio_id
|
||||
JOIN lab_pacientes p ON p.id = d.paciente_id
|
||||
JOIN lab_domicilios d ON d.id = a.domicilio_id
|
||||
JOIN lab_pacientes p ON p.id = d.paciente_id
|
||||
LEFT JOIN lab_ordenes_medicas om ON om.id = d.orden_id
|
||||
WHERE a.enfermera_id = ?
|
||||
AND d.fecha_programada = ?
|
||||
ORDER BY d.hora_programada ASC
|
||||
|
||||
@@ -7085,6 +7085,31 @@ const labDomicilio = (() => {
|
||||
notas_admin: fv('labdom-notas') || null,
|
||||
};
|
||||
|
||||
// Si la ventana se abrió desde una imagen (orden médica), crear primero
|
||||
// la OrdenMedica y luego enlazarla al domicilio via orden_id
|
||||
if (_localFile) {
|
||||
try {
|
||||
const convIdNum = (_convId && !String(_convId).startsWith('__user:'))
|
||||
? parseInt(_convId) : null;
|
||||
const orRes = await fetch('api/lab/crear_desde_whatsapp.php', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
paciente_id: _pacienteId,
|
||||
local_file: _localFile,
|
||||
media_message_id: _msgId || null,
|
||||
conversation_id: convIdNum,
|
||||
examenes_solicitados: datos.examenes_solicitados,
|
||||
estado: 'pendiente',
|
||||
}),
|
||||
});
|
||||
const orData = await orRes.json();
|
||||
if (orData.success && orData.orden_id) {
|
||||
datos.orden_id = orData.orden_id;
|
||||
}
|
||||
} catch (_) { /* no bloquea si falla la creación de la orden */ }
|
||||
}
|
||||
|
||||
try {
|
||||
const r = await fetch('api/lab/save_domicilio.php', {
|
||||
method: 'POST',
|
||||
|
||||
@@ -412,6 +412,17 @@ const portal = {
|
||||
? `<div class="small mb-2"><span class="badge bg-info text-dark"><i class="fas fa-shield-alt me-1"></i>Seguro${item.seguro_nombre ? ': ' + esc(item.seguro_nombre) : ''}</span></div>`
|
||||
: ''}
|
||||
|
||||
<!-- Orden médica (imagen) -->
|
||||
${item.orden_local_file ? `
|
||||
<div class="mt-2 mb-2">
|
||||
<a href="uploads/media/${esc(item.orden_local_file)}" target="_blank"
|
||||
title="Ver orden médica">
|
||||
<img src="uploads/media/${esc(item.orden_local_file)}"
|
||||
style="max-width:100%;max-height:180px;border-radius:8px;border:1px solid #ddd;cursor:zoom-in"
|
||||
alt="Orden médica #${item.orden_id}">
|
||||
</a>
|
||||
<div class="small text-muted mt-1"><i class="fas fa-file-medical me-1"></i>Orden #${item.orden_id}</div>
|
||||
</div>` : ''}
|
||||
<!-- Servicios extra registrados -->
|
||||
${seSuf ? `<div class="d-flex flex-wrap gap-1 mb-2">${seSuf}</div>` : ''}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user