diff --git a/enfermero_portal.php b/enfermero_portal.php
index ab294b2..a2318ef 100644
--- a/enfermero_portal.php
+++ b/enfermero_portal.php
@@ -415,9 +415,9 @@ const portal = {
${item.orden_local_file ? `
-
-
@@ -563,6 +563,14 @@ function esc(s) {
({ '<':'<','>':'>','&':'&','"':'"',"'":''' }[c]));
}
+// Resolver ruta de imagen: evita duplicar "uploads/media/"
+function resImg(f) {
+ if (!f) return '';
+ if (/^https?:\/\//i.test(f)) return esc(f);
+ if (String(f).startsWith('uploads/')) return esc(f);
+ return `uploads/media/${esc(f)}`;
+}
+
document.addEventListener('DOMContentLoaded', () => {
portal.init();
agendaNueva.init();
diff --git a/lab_ordenes.php b/lab_ordenes.php
index fc3361d..72e9ddb 100644
--- a/lab_ordenes.php
+++ b/lab_ordenes.php
@@ -268,9 +268,15 @@ async function verOrden(id) {
}).join('');
// Imagen de la orden
- const imgSrc = o.local_file
- ? `uploads/media/${esc(o.local_file)}`
- : (o.conv_local_file ? `uploads/media/${esc(o.conv_local_file)}` : null);
+ // local_file puede venir con la ruta ya incluida (ej. "uploads/media/2026/02/x.jpg")
+ // o solo con el nombre de archivo — normalizamos para evitar ruta duplicada
+ function _resolveImg(f) {
+ if (!f) return null;
+ if (/^https?:\/\//i.test(f)) return f;
+ if (f.startsWith('uploads/')) return f;
+ return `uploads/media/${f}`;
+ }
+ const imgSrc = _resolveImg(o.local_file) || _resolveImg(o.conv_local_file) || null;
// Botones de acción según estado
const botonesAccion = renderBotones(o);