Resultado
Qué quedó funcionando
El resultado es un producto funcional que reúne procesos clínicos, administrativos y financieros en una sola plataforma. Más allá de implementar pantallas y endpoints, el desarrollo exigió modelar reglas reales de negocio, coordinar integraciones asíncronas, proteger información sensible y sostener una experiencia consistente en escritorio y móvil.
El proyecto consolidó una arquitectura SaaS multi-tenant preparada para dominios complejos, automatización, observabilidad y pruebas, sin perder de vista los flujos cotidianos del profesional y sus pacientes.
El proyecto
Desarrollé Atriax, una plataforma SaaS que centraliza la operación diaria de profesionales de la salud. La aplicación integra agenda, pacientes, historia clínica, tratamientos, documentación de sesiones, cobranzas y comunicaciones automáticas en una única experiencia web, adaptable tanto a escritorio como a dispositivos móviles.
El proyecto abarcó todo el ciclo de producto: definición de flujos, diseño de interfaz, modelado de datos, desarrollo frontend y backend, integraciones con servicios externos, automatización de tareas y pruebas.
El desafío
La gestión de un consultorio suele quedar distribuida entre calendarios, planillas, mensajes de WhatsApp, correos y registros clínicos separados. Esto genera trabajo duplicado, dificulta el seguimiento de cada paciente y reduce la visibilidad sobre turnos, tratamientos y pagos pendientes.
El objetivo fue convertir esos procesos dispersos en un producto coherente, seguro y fácil de usar durante la jornada de un profesional. La solución debía resolver tanto las tareas clínicas como las administrativas, mantener aislada la información de cada cliente y seguir funcionando correctamente ante fallas de servicios externos.
La solución
Atriax organiza el trabajo alrededor de tres áreas principales:
- Agenda: turnos en vista de lista o calendario semanal, estados de asistencia y pago, tratamientos asociados, documentación de la sesión y sincronización con Google Calendar.
- Pacientes: ficha unificada con datos de contacto, antecedentes, medicación, alergias, sesiones, tratamientos activos y registro fotográfico.
- Gestión: indicadores diarios, seguimiento de ciclos de tratamiento, cobranzas, planes de pago, historial de movimientos y administración de clientes desde un panel de superadministrador.
La interfaz fue diseñada con un enfoque responsive. En escritorio utiliza paneles maestro-detalle para acelerar la navegación y, en pantallas pequeñas, transforma esos mismos flujos en vistas de pantalla completa optimizadas para uso táctil.
Funcionalidades principales
Dashboard operativo
La pantalla de inicio resume la jornada del profesional: turnos del día, estados de confirmación, ingresos registrados, deuda pendiente y alertas de seguimiento. El sistema calcula cuándo un paciente debería retomar un tratamiento según su etapa inicial o de mantenimiento y evita alertas innecesarias cuando ya existe un próximo turno.
Agenda y turnos
La agenda permite crear, editar, confirmar, completar o cancelar turnos; filtrarlos por fecha y estado; asociar tratamientos y registrar el estado de pago desde la reserva. También permite crear un paciente sin abandonar el flujo de asignación del turno y documentar la atención realizada.
Historia clínica y tratamientos
Cada paciente dispone de una ficha con condiciones médicas, medicación, alergias, notas, sesiones y evolución de tratamientos. Los protocolos admiten frecuencias iniciales y de mantenimiento, cantidad de sesiones y costos. Las fotografías clínicas se almacenan de forma privada en Amazon S3 mediante URLs temporales firmadas.
Cobranzas y seguimiento financiero
El módulo financiero registra pagos, medios de cobro, deuda por paciente, antigüedad de saldos y planes en cuotas. Los importes se almacenan como enteros en centavos para evitar errores de precisión. El panel administrativo también permite controlar el pago mensual de infraestructura de cada cliente.
Comunicaciones automáticas
La aplicación envía confirmaciones y recordatorios por email y WhatsApp. Los pacientes pueden confirmar o cancelar un turno desde el mensaje, y el profesional recibe la actualización correspondiente. Los recordatorios se procesan en segundo plano, evitan duplicados, respetan bajas de comunicación y registran el resultado de cada envío.
Asistente con lenguaje natural
El asistente de los planes avanzados interpreta solicitudes en lenguaje natural y las traduce en operaciones sobre turnos, pacientes, sesiones y tratamientos. Conserva contexto entre mensajes, solicita datos faltantes, resuelve ambigüedades y exige confirmación antes de ejecutar acciones destructivas.
Gestión SaaS
La arquitectura multi-tenant mantiene cada consultorio en un espacio de datos aislado. Incluye registro con verificación de email, recuperación segura de contraseña, roles de profesional y superadministrador, planes de uso y una integración de suscripciones con Mercado Pago.
Cómo lo desarrollé
Diseñé el sistema como una aplicación full-stack en TypeScript. El frontend se construyó con React y componentes accesibles de shadcn/ui sobre Radix UI. La API se implementó con Node.js y Express, separando las rutas HTTP de la lógica de negocio mediante una capa de servicios. PostgreSQL actúa como fuente de verdad y Drizzle ORM aporta consultas y migraciones tipadas.
- React y Vite para la aplicación web responsive.
- API REST con Express para exponer los casos de uso del producto.
- Servicios de dominio para concentrar reglas clínicas, administrativas y financieras.
- PostgreSQL y Drizzle ORM como capa de persistencia tipada.
- Workers, colas y tareas programadas para procesos asíncronos.
- Integraciones con Google Calendar, WhatsApp, Resend, Amazon S3, Mercado Pago y OpenAI.
La sincronización con Google Calendar utiliza una cola persistente, prioridades, reintentos con espera exponencial y monitoreo de errores. Los recordatorios, reinicios de límites y limpieza de archivos pendientes se ejecutan mediante trabajos programados para no bloquear la experiencia del usuario.
Decisiones técnicas destacadas
Aislamiento entre consultorios
El modelo incorpora un identificador de tenant, los servicios filtran cada operación por ese tenant y los roles controlan el acceso. Así se evita el cruce de información entre clientes.
Calendarios tolerantes a fallas
La integración con Google Calendar combina OAuth 2.0, tokens cifrados, una cola persistente y reintentos con backoff. Una falla temporal del proveedor no detiene la gestión de turnos.
Archivos clínicos privados
La carga y lectura se realiza directamente mediante URLs firmadas de S3, con rutas separadas por tenant y limpieza de cargas incompletas. Esto reduce tanto la exposición de archivos como la carga sobre la API.
Comunicaciones desacopladas
Los emails y las plantillas de WhatsApp se procesan fuera de las operaciones críticas, con registro de entregas y control de duplicados. Un fallo de mensajería no impide crear o actualizar un turno.
Consistencia financiera
Los importes se guardan en centavos, los estados de pago están tipados y cada movimiento conserva su historial. El modelo evita errores de redondeo y facilita la auditoría.
Flujos complejos adaptados a móviles
La navegación maestro-detalle de escritorio se transforma en overlays de pantalla completa en dispositivos pequeños. Los mismos procesos pueden completarse desde el consultorio sin depender de una computadora.
Seguridad y calidad
- Autenticación con JWT y contraseñas protegidas con bcrypt.
- Autorización basada en roles para rutas profesionales y administrativas.
- Verificación de email y recuperación de contraseña con tokens de un solo uso, expiración y almacenamiento mediante hash.
- Tokens de Google Calendar cifrados antes de persistirlos.
- Validación de entradas con Zod y manejo centralizado de errores.
- Pruebas unitarias, de integración y basadas en propiedades con Jest, Vitest, Testing Library, Supertest y fast-check.
- Entornos reproducibles con Docker Compose, migraciones versionadas, ESLint y Prettier.
Ver stack tecnológico
← Volver a todos los casosUn SaaS multi-tenant que reúne la gestión clínica, administrativa y financiera del consultorio sin fragmentar la experiencia del profesional.