← Casos
Salud

Consulta a distancia

Chile tiene un problema de distancias que no se arregla construyendo más hospitales. Una persona en una zona rural que necesita ver a un especialista puede tardar horas en llegar a la ciudad más cercana con atención médica. Muchos simplemente no van.

El dolor

La clínica que me contactó tenía sus pacientes concentrados en una zona urbana, pero estaba perdiendo gente de comunas más lejanas. El médico tenía horas disponibles en agenda, pero la atención presencial no alcanzaba para todos y los de lejos no llegaban — no por falta de interés, sino porque el costo en tiempo y pasajes hacía que no valiera la pena para una consulta de control de veinte minutos.

La agenda se manejaba por teléfono. El historial clínico estaba en fichas físicas. Si el paciente venía por segunda vez con otro médico, nadie tenía el contexto de la consulta anterior. Cada atención empezaba desde cero.

Lo que cambió

Construí dos apps con Flutter: una para el doctor y una para el paciente. Video-consulta integrada con Agora, agenda que el médico controla desde la app, historial clínico por paciente que cualquier médico del equipo puede revisar antes de la consulta, y pagos directos integrados.

Sin intermediarios, sin llamar para agendar, sin tener que viajar para una consulta de control. El médico ve el historial completo antes de entrar a la videollamada. El paciente agenda desde el teléfono y paga en el mismo flujo. La clínica puede manejar múltiples médicos con sus propias agendas desde el mismo backend.

Acceso a atención médica para pacientes que antes no podían llegar. Agenda y pagos integrados en una sola app.

Arquitectura

Agora sobre Twilio no fue una decisión de fanboy. Twilio Video tiene latencia alta en Chile — sus servidores de media están en Estados Unidos. Agora tiene edge nodes en Latinoamérica que reducen el RTT a la mitad. Para una consulta médica donde necesitas ver la cara del paciente con claridad, 400ms de latencia se siente. Con Agora quedó en 80-120ms en condiciones normales.

Flutter para dos apps distintas — doctor y paciente — con una sola base de código fue la decisión correcta. Las pantallas son completamente diferentes: el doctor tiene agenda, historial de pacientes, notas clínicas. El paciente tiene perfil, agendar, pagar, entrar a la consulta. Pero la lógica de red, la autenticación y la videollamada son iguales. Eso es lo que se comparte, aproximadamente el 40% del código.

El historial clínico vive en PostgreSQL con soft delete: los registros médicos no se borran, se marcan como inactivos. Cuando un médico abre la consulta, ve el historial cronológico completo del paciente incluyendo consultas con otros doctores del mismo tenant. Los permisos están modelados explícitamente: el paciente puede ver su propio historial pero no puede editarlo.

Firebase recibe solo los tokens de notificación push y los eventos que disparan alertas. Las fichas clínicas no están en Firestore. Usar Firebase como base de datos principal para datos de salud genera dependencia de Google para información sensible que no debería vivir ahí.

Stack

FlutterLaravelAgoraFirebaseStripe

Qué aprendimos

Stripe Chile no es Stripe USA. El proceso de onboarding para cuentas chilenas tiene requisitos adicionales — RUT, datos de empresa, tipo de actividad económica — y la aprobación demora. Eso no estaba en el estimado de tiempo. Terminamos usando un intermediario mientras la cuenta Stripe quedaba activa, lo que agregó complejidad al flujo de pagos que no esperábamos.

La experiencia de videollamada en zonas con mala conexión requiere comunicarlo en la interfaz, no solo manejarlo técnicamente. Agora adapta el video automáticamente cuando la red cae. Pero si el paciente ve la imagen pixelada sin contexto, piensa que la app está rota. Agregamos un indicador de calidad de conexión visible para el médico y el paciente.

El agendamiento de horas tiene más casos borde de los que parece. Horarios de vacaciones, bloqueos de agenda, consultas que se extienden y generan solapamiento, cancelaciones con política de reembolso. Empezamos con un modelo simple y fuimos complicándolo a medida que el médico usó el sistema en producción. Ocho iteraciones del módulo de agenda antes de que dejara de generar problemas.

Servicios relacionados

Apps móvilesIntegración de sistemas

¿Tienes un problema parecido?

Cuéntame qué duele en tu operación. Un mensaje directo a Telegram y respondemos en el día.

Abrir Telegram