Sistema de Gestión Clínica
Gestión Clínica Inteligente y Escalable
Métricas clave
Métricas de rendimiento y topología del sistema Métricas y topología del sistema
- en producción sin caídas, incluyendo major releases
- +0 mesesen producción sin caídas, incluyendo major releases
- uptime: el cliente nunca ha reportado una caída
- 0%uptime: el cliente nunca ha reportado una caída
- latencia de recuperación de registros de pacientes (estimada sobre el salto a índice + cache())
- -0%latencia de recuperación de registros de pacientes (estimada sobre el salto a índice + cache())
- por staff real en clínica en producción (admin + fisios)
- En uso diariopor staff real en clínica en producción (admin + fisios)
Sistema de Gestión Clínica
Plataforma de gestión clínica en producción con arquitectura modular por features: módulos verticales por dominio (agenda, clientes, paquetes, pagos, sesiones, usuarios) sobre un núcleo transversal de autenticación, base de datos y errores.
Agenda inteligente
Calendario interactivo con prevención automática de conflictos y control de sesiones (pendiente, asistida, cancelada).
- ● Prevención automática de conflictos
- ● Control de sesiones
Expediente electrónico
Alta y búsqueda rápida de pacientes, historial de sesiones y pagos, seguimiento individual.
Módulo financiero
Venta de paquetes de sesiones, balance por paciente y registro de ingresos. Los paquetes y sus precios se administran desde una UI CRUD, así que subirlos no exige desplegar código.
- ● Paquetes de sesiones
- ● Balance por paciente
- ● Registro de ingresos
- ● Paquetes y precios editables sin deploy
Panel de control (dashboard)
Analíticas de ingresos mensuales, pacientes activos, ganancias y métricas operativas, con tarjetas y gráficos.
- ● Analíticas mensuales
- ● Filtros por periodo (30 días, 3 meses, 1 año e histórico)
- ● Cache con refresh manual
Seguridad y roles
Doble perímetro con layouts de servidor y guards por rol: la autorización se resuelve siempre en el servidor y el cliente solo presenta, nunca autoriza.
- ● Roles: Admin, Editor y Viewer
- ● Layouts de servidor exigen sesión y rol antes de renderizar
- ● Guards en cada Server Action y query sensible
- ● Sin registro público: el admin crea las cuentas y el rol no se fija desde el cliente
Endurecimiento por capas
Validación y fallo seguro en cada mutación: nada se confía desde el cliente y ningún error crudo llega al usuario.
- ● Zod con safeParse antes de cualquier I/O
- ● Cupo, cita pendiente y choques de horario verificados en el servidor
- ● SQL solo con parámetros y fragmentos de una unión cerrada
- ● Errores de auth y 404 contextuales con salida accionable
Estructura modular por capas
Routing, dominio y transversalidad separados, para que una regla clínica se cambie en un solo lugar.
- ● app: solo routing, layouts y páginas, sin lógica de negocio
- ● modules: vertical por dominio (actions, schemas, queries, componentes)
- ● core: transversal (auth, db, errores, proveedores, UI)
- ● shared: utilidades usadas por dos o más módulos
Perfil del usuario
El usuario edita su nombre y contraseña desde su perfil, con vista de foto de perfil y portada. El correo queda bloqueado y su cambio se solicita a un administrador.
Landing page pública
Optimizada para SEO, enfocada a captación de nuevos pacientes e integrada con el sistema interno.

Resumen
Plataforma web full-stack construida desde cero que reemplaza el uso de Excel y agendas manuales en un centro real de fisioterapia y rehabilitación. En uso diario por el staff médico desde noviembre de 2025, sin una sola caída incluso durante major releases con cambios críticos en la base de datos.
Problema
Las clínicas pequeñas y medianas dependen de herramientas genéricas, procesos manuales en papel o múltiples aplicaciones desconectadas para agendar, llevar historiales médicos y cobrar. Esto genera pérdidas de tiempo, dobles reservas y descontrol financiero. No existía una solución a medida accesible para centros que trabajan por sesiones o paquetes.
Mi rol
- Diseñé un sistema modular por features usando Next.js, TypeScript y Prisma para mejorar mantenibilidad y acelerar la entrega de funcionalidades.
- Implementé control de acceso por roles (Admin, Editor, Viewer) con doble perímetro: layouts de servidor exigen sesión y rol antes de renderizar y cada Server Action valida con guards; sin registro público (el admin crea las cuentas y el rol no se fija desde el cliente) y sin middleware deliberado, porque el Edge no puede validar sesiones de base de datos.
- Reduje un 40% la latencia de recuperación de registros con un índice en `sessionDate` y caching server-side con `cache()` de React. La cifra es una estimación conservadora del salto de seq scan a index scan, no una medición en producción.
- Validé cada mutación con Zod en el servidor antes de cualquier I/O, con resultado tipado y errores centralizados en español; los conflictos de agenda responden advertencia confirmable en dos pasos, y el frontend solo muestra mensajes amigables, nunca errores crudos del backend.
- Apliqué cero confianza en el input: cupo del paquete, pendiente única y choques de horario se verifican en el servidor, y hasta el ID para revalidar se lee de la base de datos, nunca del cliente.
- Usé SQL crudo solo con jaula: valores siempre como parámetros y fragmentos construidos desde una unión cerrada, sin camino del input al query.
- Blindé la UX ante fallos: los boundaries traducen errores de auth a pantallas accionables y los 404 contextuales devuelven al dashboard, nunca una pantalla en blanco.
- Migré los nombres y precios que vivían hardcodeados en un combobox a una UI de paquetes CRUD que los actualiza, con migraciones de Prisma sobre datos existentes. El cliente necesitaba subir precios por la inflación del país y los valores hardcodeados lo impedían. Las migraciones se aplicaron en producción sin un solo incidente de datos: ningún paquete legacy se rompió.
- En paralelo descarté una branch completa que no cumplía los estándares del proyecto, antes de que llegara a producción.
- Desplegué y mantengo la plataforma en Vercel con NeonDB (PostgreSQL) desde noviembre de 2025, sin que el cliente haya reportado una sola caída.
- Desarrollé la landing page pública integrada con el sistema interno; estable en uptime y generando contactos de nuevos pacientes.
Solución
- Agenda inteligente: calendario interactivo con prevención automática de conflictos y control de sesiones (pendiente, asistida, cancelada).
- Expediente electrónico: alta y búsqueda rápida de pacientes, historial de sesiones y pagos, seguimiento individual.
- Módulo financiero: venta de paquetes de sesiones, balance por paciente y registro de ingresos. Los paquetes se administran desde una UI CRUD en lugar de valores hardcodeados, lo que permite actualizar precios sin desplegar — necesario para responder a la inflación del mercado.
- Panel de control (dashboard): analíticas de ingresos mensuales, pacientes activos, ganancias y métricas operativas, con filtros por periodo (30 días, 3 meses, 1 año e histórico), cache con refresh manual y tarjetas + gráficos. El histórico usa cache extendido por costo.
- Landing page pública: optimizada para SEO, enfocada a captación de nuevos pacientes e integrada con el sistema interno.
- Seguridad y roles: doble perímetro con layouts y guards por rol (Admin, Editor, Viewer), loop cerrado sin registro público y autorización siempre en el servidor; el cliente solo presenta, nunca autoriza.
- Perfil del usuario: edición de nombre y contraseña desde el propio perfil, con vista de tipo red social (foto de perfil y portada). El correo queda bloqueado para el usuario (input deshabilitado) y su cambio se solicita a un administrador, preservando la trazabilidad de la cuenta.