Introducción: la petición parecía sencilla: mantener actualizados los números de teléfono de pacientes. Lo que empezó como una tarea operativa se transformó al descubrir el flujo real de datos y las inconsistencias debajo de la superficie. Los números llegaban desde WhatsApp, mostradores hospitalarios y herramientas de encuestas, cada fuente con su propio formato. Pacientes que se movían entre centros rompían las trazas. El equipo de operaciones trabajaba en hojas de cálculo y cada región protegía su propio servidor FHIR con credenciales y límites distintos. El primer parche fue un script que procesaba fila por fila. En un archivo de prueba funcionaba, pero al atacarlo con 10 000 filas la ejecución se alargaba horas, consumía cientos de megabytes y podía fallar ante un registro mal formado.

Este artículo narra cómo ese script frágil se convirtió en un flujo de trabajo robusto y preparado para producción. Hoy la misma carga de 10 000 filas termina en unos 10 a 12 minutos por región usando solo 256Mi de memoria y 0.5 vCPU. Lo importante es que se mantiene estable, resiste datos corruptos y los equipos de operaciones disfrutan ejecutarlo diariamente.

De una región a una plataforma: cuando apareció una segunda región la lista de requisitos creció. Había que servir varias regiones a la vez sin interferencias. Mantener cada entorno con su propio endpoint FHIR, hoja y credenciales sin mezclar nunca. Ofrecer retroalimentación en tiempo real con estados, logs legibles y reinicios seguros. Un script puntual no podía escalar; se necesitaba una arquitectura que respetara esos límites.

El reto: escala, aislamiento y límites reales. Ejecutar dos regiones mostró las restricciones: decenas de miles de registros diarios, actualizaciones que deben terminar en menos de 15 minutos, recursos ajustados y tolerancia cero a mezcla de entornos. Además, resiliencia frente a registros defectuosos y ritmo amable para los servidores FHIR.

Por qué falla el bucle simple: procesar secuencialmente cada fila abre llamadas de red por registro, memoria que crece, progreso invisible y una excepción que para todo. Esa fragilidad se paga en producción.

La solución: procesamiento por lotes inteligente y multi entorno. Cambiamos el objetivo de actualizar teléfonos a mantener una tuberia que permanezca sana. Estabilidad, visibilidad y consistencia guiaron el diseño: agrupar el trabajo en lotes, reutilizar conexiones, marcar el ritmo de las peticiones y enviar cada resultado de vuelta a la hoja que ya usaban los equipos. Además cada lote deja un rastro de logs claro para que los operadores puedan seguir el avance.

Visión general de arquitectura: cada región corre de punta a punta como un inquilino separado. Los operadores administran filas en una hoja regional, una aplicación web lee esa hoja y procesa lotes, y cada actualización va al servidor FHIR correspondiente. La capa de configuración y secretos entrega las credenciales y URLs correctas por ejecución, evitando fugas entre entornos.

El motor de lotes y buenas prácticas: fragmentamos la hoja en bloques de tamaño controlado, por ejemplo 100 registros por lote. Ese tamaño resulto ser un equilibrio entre sobrecarga de arranque y picos de memoria. Mientras se procesan los lotes se registran numero de lote, cantidad de registros y cualquier fallo. Pequeñas pausas entre registros y entre lotes mantienen la memoria estable y regulan la tasa de peticiones para que los servidores FHIR no se sobrecarguen.

Reutilizar conexiones y reintentos seguros: usar una sesion HTTP con pooling y retries con backoff evita abrir una conexion por fila y permite recuperar de fallos transitorios sin romper el proceso. Este enfoque reduce latencia y suaviza picos de CPU.

Higiene de memoria: eliminar referencias a lotes procesados y mantener pequeñas pausas garantiza memoria plana durante ejecuciones largas. Poner un sleep corto evita que el proceso fuerce throttling en el servidor destino y paradójicamente acelera el procesamiento total al reducir reintentos.

Visibilidad que genera confianza: en lugar de un dashboard nuevo, los operadores pidieron que la hoja muestre el estado. Escribimos directamente en una columna de estado el resultado por fila indicando success o failed más el motivo. Asi el equipo ve progreso fila por fila sin abandonar su herramienta cotidiana.

Logs estructurados y alertas: cada lote escribe una entrada compacta con identificador correlacionable. Los logs llegan a la plataforma de logging y una regla de alerta notifica al canal on call cuando algo importante falla. Con eso un operador puede localizar rápidamente el registro en la hoja y saltar a la traza correspondiente.

Tratar múltiples pacientes por identificador: algunos identificadores devolvían varias coincidencias. En vez de ignorarlas, el sistema actualiza todas las copias para mantener coherencia entre registros duplicados, aceptando que las fuentes de datos pueden ser ruidosas.

Limpieza de números de teléfono: las hojas convierten grandes enteros a notacion cientifica, a veces se pegan varios numeros separados por comas y en ciertos paises falta el cero inicial. Una rutina de limpieza normaliza los valores, selecciona el primer numero cuando hay varios, conserva digitos y el prefijo plus cuando corresponde, y aplica heuristicas locales para restaurar ceros perdidos. Solo se envian a FHIR numeros que pasen una comprobacion basica de longitud.

Despliegue multi entorno: cada region recibe un archivo JSON con su configuracion y credenciales. El mismo codigo se despliega por region usando esas configuraciones, lo que mantiene aislamiento, facilita auditorias y permite revertir una region sin afectar otras.

Perfil de despliegue en Cloud Run por region: instancias livianas con 256Mi memory, 0.5 vCPU y una unica instancia mantienen costos bajos y comportamiento predecible, alineado con el ritmo gentil diseñado para las peticiones.

Lecciones aprendidas: las fronteras regionales importan; mantener configuraciones y credenciales por region confina incidentes. Lotes de 100 registros demostraron ser el punto dulce entre velocidad y estabilidad. Mantener la hoja como fuente de verdad genera confianza operativa al escribir resultados en una columna visible. Clientes comedidos y reintentos con backoff crean servidores tranquilos y menos errores intermitentes. Limpiar datos en el borde ahorra problemas a sistemas downstream y reduce tickets de soporte.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos especialistas en desarrollo de software y aplicaciones a medida, creando soluciones escalables y seguras para sectores como salud. Ofrecemos servicios de software a medida y aplicaciones a medida que incluyen integración con servicios cloud y automatizacion de procesos. Nuestra experiencia en inteligencia artificial y en la creación de agentes IA y sistemas IA para empresas permite automatizar tareas críticas y mejorar la calidad de datos. Complementamos con servicios de ciberseguridad para proteger flujos sensibles y pruebas de pentesting que aseguran la integridad de las integraciones. Si desea una plataforma a medida para sincronizar datos, considere nuestras capacidades en desarrollo y adaptacion de soluciones, visitando una de nuestras paginas de servicio sobre software a medida y descubra como integrar inteligencia en sus procesos revisando nuestra oferta de inteligencia artificial.

Palabras clave y servicios: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi son parte central de nuestras soluciones para transformar operaciones y mejorar la calidad de datos en entornos regulados como la salud.

Conclusión: convertir un script frágil en un pipeline por lotes hizo que las actualizaciones FHIR a escala sean rápidas, estables y transparentes. No se necesitó tecnología exótica, sino buenas prácticas: limites claros por region, batching razonable, conexiones compartidas, ritmo de peticiones amable y visibilidad directa en la hoja. Hoy un trabajo de 10 000 filas termina en alrededor de 12 minutos por region, la memoria se mantiene estable y los operadores observan resultados en tiempo real, con alertas silenciosas y sistemas que escalan con confianza.