Sistema de Gestión de Informes Médicos
Informes médicos digitales, plantillas reutilizables, portal de pacientes 24/7.
Una radióloga con 40+ plantillas Word dispersas y pacientes sin acceso digital.
El cliente es una médica especialista en diagnóstico por imagen. Su flujo de trabajo dependía de documentos Word duplicados, archivos guardados en una sola PC y entrega de resultados en mostrador. Los informes tardaban, los pacientes esperaban y cualquier fallo de hardware podía significar perder el historial completo.
- Sin trazabilidad de versiones ni firma verificable.
- Pacientes sin acceso digital a estudios previos.
- 10–20 minutos por informe escribiendo estructura que siempre era la misma.
3 fricciones costosas, todos los días.
Tiempo del profesional
15 minutos promedio por informe, mayormente formateando estructura repetitiva, no diagnosticando.
Acceso del paciente
Entrega solo presencial en horario administrativo. Si el paciente necesitaba el informe a las 21hs o un fin de semana, esperaba.
Integridad documental
Archivos en una sola PC local. Sin backup, sin historial ordenado, sin firma verificable.
Qué no se podía romper.
El equipo no podía parar de operar durante la transición al nuevo sistema.
Datos de salud: auth fuerte, URLs no-públicas, cookies HTTPOnly, RBAC por endpoint.
Operación mensual baja: stack pago-por-uso, S3 con URLs firmadas de TTL corto.
El panel debía ser usable por la médica sin training previo. UX simple, 0 terminología técnica.
Qué se construyó.
Plataforma fullstack con panel médico, plantillas reutilizables, generación de PDFs con firma digital, portal de pacientes con acceso 24/7 y dashboard administrativo.
El producto en producción.
Vista principal del sistema
Dashboard médico
Gestión de plantillas
Lista de informesEl informe se genera en el servidor con pdfmake: firma digital incrustada, número de protocolo y datos del paciente. Descargable directamente desde el portal.
Ejemplo de informe generado — PDF con firma digitalStack moderno, pragmático, mantenible.
- Next.js (App Router)
- React 18
- TypeScript
- Tailwind
- Zustand
- Zod
- NestJS
- Prisma ORM
- PostgreSQL
- JWT + Cookies HTTPOnly
- Guards RBAC
- AWS S3
- Signed URLs (TTL corto)
- pdfmake
- reCAPTCHA en login
- Rate limit
- Audit log
- Verificación SMS
Tres decisiones que se sostienen seis meses después.
NestJS para el backend, no Express puro
El sistema tiene múltiples entidades (pacientes, informes, plantillas, tipos de estudio, médicos) con relaciones entre sí. Necesitaba Guards, Pipes e Interceptors sin armarlos desde cero.
S3 con URLs firmadas, no buckets públicos
Los PDFs médicos son datos sensibles. Ningún archivo debe tener URL pública ni predecible.
Auth con cookies HTTPOnly, no localStorage
Datos de salud con múltiples roles. El riesgo de XSS en localStorage no era aceptable.
Lo que no estaba en el plan.
- Modelo de plantillas con campos dinámicos. Cada tipo de estudio (radiografía vs. ecografía vs. TAC) tiene estructura diferente. Diseñé el schema con TemplateField que soporta tipos text, date, number, select — el médico crea variantes sin pasar por código.
- PDF con firma digital generado en el servidor. Usé pdfmake en el backend de NestJS para generar el PDF completo server-side, embebiendo la imagen de firma como base64. El documento clínico final no requiere post-procesamiento manual.
- Acceso público por token único sin cuenta de paciente. El médico puede compartir un informe con un link — el paciente lo abre sin registrarse. Implementé tokens de un solo uso con TTL configurable que se invalidan después de N usos o X tiempo.
Lo que cambió, medido.
Lo que me llevo para el próximo proyecto.
- Empezar siempre con el flujo de salida (el PDF firmado) y modelar hacia atrás. Cuando el final está claro, el resto se ordena.
- El cliente médico no quiere features: quiere menos clicks. Cada feature nueva tenía que reducir tiempo en pantalla, no agregarlo.
- La seguridad no es el final del proyecto. Cada decisión de auth, storage o logs abre o cierra puertas que cuestan 5x arreglar después.
¿Querés un proyecto así para tu producto?
Respondo en menos de 24 hs hábiles. Cuanto más concreto el contexto, más rápido te digo si encaja.