Control de Reportes de Falla

Registro compartido · Equipo biomédico e infraestructura hospitalaria
Elaborado por IBM. Daniel Alejandro Sánchez Ramírez

Nuevo reporte

Las áreas críticas (quirófano, urgencias, UCIN, UCIA, labor, choque) se marcan como riesgo Alto automáticamente.
Los reportes se guardan en la base de datos del hospital. Solo el administrador puede consultar el listado completo.

Reportes registrados

🔒

Acceso restringido

Solo personal de administración puede ver y actualizar el registro de reportes.

'; var win = window.open('', '_blank'); if(!win){ alert('El navegador bloque\u00f3 la ventana emergente. Permite ventanas emergentes para generar el documento.'); return; } win.document.open(); win.document.write(docHtml); win.document.close(); win.focus(); setTimeout(function(){ win.print(); }, 300); closeServiceModal(); }); // ===================== TIQUETE DE SERVICIO (ante reporte) ===================== var currentTicketReport = null; window.openTicketModal = function(rep){ currentTicketReport = rep; var ro = document.getElementById('rfTicketReadonly'); ro.innerHTML = 'ID: ' + escapeHtml(rep.id) + '  ·  Fecha del reporte: ' + fmtTs(rep.timestamp) + '
' + 'Reporta: ' + escapeHtml(rep.reporter) + '  ·  Hospital: ' + escapeHtml(rep.hospital) + '
' + 'Área: ' + escapeHtml(rep.area) + '  ·  Equipo: ' + escapeHtml(rep.equipo) + '  ·  Riesgo: ' + riskLabel(rep.riesgo) + '
' + 'Falla reportada: ' + escapeHtml(rep.falla); document.getElementById('rfTkMarca').value = rep.marca || ''; document.getElementById('rfTkModelo').value = rep.modelo || ''; document.getElementById('rfTkSerie').value = rep.serie || ''; document.getElementById('rfTkObservacion').value = rep.observacion || ''; document.getElementById('rfTicketOverlay').style.display = 'flex'; }; function closeTicketModal(){ document.getElementById('rfTicketOverlay').style.display = 'none'; currentTicketReport = null; } document.getElementById('rfTicketClose').addEventListener('click', closeTicketModal); document.getElementById('rfTicketCancel').addEventListener('click', closeTicketModal); document.getElementById('rfTicketOverlay').addEventListener('click', function(e){ if(e.target === this) closeTicketModal(); }); document.getElementById('rfTicketGenerate').addEventListener('click', async function(){ if(!currentTicketReport) return; var rep = currentTicketReport; var marca = document.getElementById('rfTkMarca').value.trim(); var modelo = document.getElementById('rfTkModelo').value.trim(); var serie = document.getElementById('rfTkSerie').value.trim(); var observacion = document.getElementById('rfTkObservacion').value.trim(); var folio = 'TQ-' + rep.id.replace('RF-', ''); var hoy = new Date(); var hoyStr = fmtTs(hoy.toISOString()); var esc = function(v){ return escapeHtml(v || '—'); }; var nl2br = function(v){ return esc(v).replace(/\n/g, '
'); }; var genBtn = this; genBtn.disabled = true; genBtn.textContent = 'Guardando...'; try{ await apiPost({ action: 'updateEquipo', id: rep.id, marca: marca, modelo: modelo, serie: serie, observacion: observacion, pass: adminPass }); rep.marca = marca; rep.modelo = modelo; rep.serie = serie; rep.observacion = observacion; var localRep = reports.find(function(r){ return r.id === rep.id; }); if(localRep){ localRep.marca = marca; localRep.modelo = modelo; localRep.serie = serie; localRep.observacion = observacion; } render(); }catch(e){ alert('No se pudo guardar marca/modelo/serie/observación en la base de datos, pero se generará el tiquete igualmente.'); } genBtn.disabled = false; genBtn.textContent = 'Generar tiquete'; function ticketBlock(copyLabel){ return ( '
' + '
' + esc(copyLabel) + '
' + '' + '' + '' + '' + '
' + '

Servicios Públicos de Salud IMSS Bienestar

' + '

' + esc(String(rep.hospital || '').toUpperCase()) + '

' + '

' + getDepartmentName(rep.hospital) + '

' + '
' + '
Tiquete de servicio / Ante reporte
' + '
Folio: ' + esc(folio) + '  |  Generado: ' + hoyStr + '  |  Reporte origen: ' + esc(rep.id) + '
' + '' + '' + '' + '' + '' + '' + '
Fecha del reporte' + esc(fmtTs(rep.timestamp)) + 'Riesgo' + esc(riskLabel(rep.riesgo)) + '
Reporta' + esc(rep.reporter) + 'Hospital' + esc(rep.hospital) + '
Área' + esc(rep.area) + 'Equipo' + esc(rep.equipo) + '
Marca' + esc(marca) + 'Modelo' + esc(modelo) + '
Número de serie' + esc(serie) + '
' + '
Falla reportada: ' + nl2br(rep.falla) + '
' + '
Observación / comentario: ' + nl2br(observacion) + '
' + '
Técnico
Recibe / conformidad del área
' + '
' ); } var docHtml = '' + 'Tiquete de servicio ' + folio + '' + '' + ticketBlock('Copia — Ingeniería biomédica') + ticketBlock('Copia — Área / usuario') + ''; var win = window.open('', '_blank'); if(!win){ alert('El navegador bloqueó la ventana emergente. Permite ventanas emergentes para generar el tiquete.'); return; } win.document.open(); win.document.write(docHtml); win.document.close(); win.focus(); setTimeout(function(){ win.print(); }, 300); closeTicketModal(); }); })();