Dr. RCL
Construimos Dr. RCL, el expediente clínico digital de un consultorio de cirugía plástica, y lo pusimos en producción en su propio servidor (drrcl.com.mx). Tomamos un consultorio que vivía entre Excel, Word, Drive, Calendar y Notion y lo llevamos a una sola plataforma donde el paciente, su expediente, sus fotos postoperatorias, sus citas y sus archivos están conectados y cada acción queda registrada. La pieza difícil no era la pantalla, era el cumplimiento: los datos médicos son datos personales sensibles bajo la ley mexicana, así que diseñamos una bitácora de auditoría que nadie puede alterar —ni el admin— con retención de 5 años, y un motor de plantillas versionadas que deja al doctor cambiar el formato del expediente sin romper los expedientes ya firmados, tal como exige la NOM-004. La prueba está en el código: 11 modelos de datos, 34 rutas de API, 14 páginas y 92 componentes, control de acceso por 4 roles validado en servidor, archivos médicos en almacenamiento de objetos con URLs que caducan en minutos y soporte DICOM, todo desplegado en contenedores sobre HTTPS endurecido. Nosotros lo construimos de extremo a extremo: modelo de datos, API, interfaz, seguridad e infraestructura.
Categoría
Salud
Stack
Next.js, React, TypeScript
El problema
El consultorio operaba el expediente médico repartido entre Excel, Word, Google Drive, Google Calendar y Notion. El problema no estaba en cada herramienta, estaba entre ellas: un paciente vivía en una hoja de cálculo, su expediente en un documento suelto, sus fotos en una carpeta sin dueño y sus citas en otro calendario, sin nada que los uniera ni rastro de quién tocó qué. Para datos médicos —que la ley mexicana clasifica como datos personales sensibles— esa dispersión es además un riesgo normativo: sin formato estándar, sin control de acceso y sin auditoría, no hay cómo demostrar cumplimiento de NOM-004 ni de LFPDPPP.
Lo que construimos
- —Directorio de pacientes con cálculo automático de edad y BMI, etiquetas libres, búsqueda y vista de detalle con pestañas (expedientes, seguimientos, citas, archivos).
- —Expedientes clínicos sobre plantillas versionadas: un editor visual define secciones y campos de 8 tipos, y el formulario se renderiza dinámicamente; al cambiar una plantilla se crea una versión nueva y los expedientes viejos conservan la suya (inmutabilidad estructural exigida por NOM-004).
- —Notas de evolución postoperatoria con entradas ilimitadas de 4 tipos (texto, lista con checks, imagen con descripción, documento), vinculadas a paciente y expediente.
- —Calendario con 3 vistas (mes/semana/día) y 8 tipos de cita (cirugía, virtual, prequirúrgica, postquirúrgica, Botox/AH, etc.), cada tipo con color configurable y ligado a paciente y expediente.
- —Gestión de archivos médicos en S3 con jerarquía contacto > expediente > seguimiento, URLs prefirmadas que expiran en 5 min (subida) y 15 min (descarga), tope de 50 MB y soporte DICOM para imagen médica.
- —Bitácora de auditoría inmutable: registra usuario, IP, dispositivo, navegador, SO y geolocalización aproximada por cada acción; nadie —ni el admin— puede editarla o borrarla; retención mínima de 5 años por LFPDPPP.
- —Control de acceso por rol (ADMIN, DOCTOR, NURSE, RECEPTION) con principio de menor privilegio, validado en middleware y de nuevo server-side en cada ruta de API.
- —Exportación a PDF de expedientes, seguimientos, citas y directorio; y exportación del expediente completo como ZIP con todos sus archivos adjuntos organizados en carpetas.
- —Valores configurables (ENUMs dinámicos) administrables desde la interfaz: tipos de ocupación, cirugía previa y cita, cada uno con clave, etiqueta, colores y orden, sin tocar código.
- —Despliegue propio endurecido: HTTPS con HSTS, autenticación propia, base de datos accesible solo por red interna y app expuesta solo a localhost detrás del reverse proxy.
Resultados
11 modelos de datos en MongoDB vía Prisma (paciente, expediente, seguimiento, plantilla, cita, archivo, bitácora, valores configurables, usuarios y sesiones).
34 rutas de API REST cubriendo auth, contactos, expedientes, seguimientos, calendario, archivos, plantillas, usuarios, auditoría y valores.
14 páginas de aplicación y 92 componentes de UI.
8 tipos de campo en el motor de plantillas y 8 tipos de cita en el calendario.
4 roles con permisos diferenciados (ADMIN, DOCTOR, NURSE, RECEPTION) y ~30 tipos de acción auditados.
URLs prefirmadas con expiración de 5 min (subida) / 15 min (descarga) y tope de 50 MB por archivo.
Retención mínima de bitácora de 5 años conforme a LFPDPPP.
En producción en drrcl.com.mx, en contenedores con HTTPS automático.