Saltar al contenido
Volver a la planta

Ocupasalud: Un día en la IPS

El sistema con el que varias IPS de salud ocupacional atienden a los trabajadores que envían las empresas: recepción, cola, consultorios, certificados y facturación. Existe desde 2017.

Me encargué de integraciones y flujos en un sistema que construyeron otros desarrolladores.

ParticipéEn producción27 commits míos en el sistema actualAgo 2025 – oct 2026

Su turno

A-027

Exámenes de ingreso

Medicina, optometría, audiometría, laboratorio y rayos X

Paciente de ejemplo. Todos sus datos son ficticios.

Siga la línea azul y verde

Directorio

Qué es Ocupasalud y cómo funciona

  1. Recepción

    Registra al trabajador que envía la empresa y lo pone en la cola de espera.

  2. Consultorios

    Medicina, optometría, audiometría, cardiología, fonoaudiología, laboratorio y psicología. Cada profesional registra su examen.

  3. Certificados e informes

    Al final, la IPS emite el certificado del trabajador y los informes.

  4. Facturación

    Y le cobra a la empresa que lo envió.

Para quién

Varias IPS de salud ocupacional del grupo y algunas aliadas atienden con él a los trabajadores que les envían las empresas. Cada IPS tiene su propia base.

Recepción, los profesionales de cada consultorio, el certificador, facturación y los comerciales de cada IPS. Los pacientes validan sus certificados en rutas públicas.

  • Ocupasalud
  • Ocupasalud Bogotá

Existe desde 2017. Su nueva versión, Ocupasalud 2.0, está en desarrollo.

Con qué está hecho

  • .NETBackend del sistema actual y de la 2.0
  • AngularFrontend de las dos versiones
  • SQL ServerLa base de cada IPS
  • HangfireTrabajos en segundo plano
  • ClaudeLee los exámenes en PDF
  • Google SheetsLa hoja de seguimiento
  • WhatsAppLa encuesta, vía Conecta
  • Apache KafkaEl bus del piloto con AHDO

Recorrido

Sigue el turno A-027 por la sede

Una sede de ejemplo que reúne en un solo edificio lo que pasa en las IPS del grupo. El paciente y sus datos son ficticios. Los pasos marcados con la línea azul y verde son los que tocan mis integraciones.

RecepciónSala de esperaMedicinaOptometríaAudiometríaLaboratorioRayos XSalida
  1. Recepción

    Llega el trabajador

    Recepción lo registra y lo pone en la cola. En ese momento, el sistema agenda la encuesta de satisfacción para seis horas después.

    Aquí entra lo que construí. El gancho que agenda la encuesta.

  2. Sala de espera

    Espera su turno

    Recepción marca a mano, después del ingreso, a quien viene por la sede VIP. Por eso la encuesta no sale de inmediato: a las seis horas, la prioridad de la cola ya dice si vino por la sede VIP o por la Principal.

    Así funciona el sistema. Esta parte la hicieron otros desarrolladores.

  3. Consultorios

    Pasa por sus exámenes

    Medicina, optometría, audiometría y laboratorio. Cada profesional registra su examen en el sistema.

    Así funciona el sistema. Esta parte la hicieron otros desarrolladores.

  4. Rayos X

    El informe llega solo

    El estudio se lee y se firma en una plataforma externa de radiología. Cuando el radiólogo firma, la plataforma avisa y el informe en PDF queda en la carpeta del paciente. Antes alguien lo bajaba y lo subía a mano.

    Aquí entra lo que construí. Webhook con validación propia. Solo actúa en la IPS de radiología que usa esa plataforma.

  5. Salida

    La pregunta, a su hora

    Seis horas después del ingreso, el sistema decide si encuesta y le pide a Conecta que envíe la pregunta por WhatsApp. Si el trabajo se reintenta, la visita no recibe dos encuestas.

    Aquí entra lo que construí. Solo en Ocupasalud y Ocupasalud Bogotá.

    Ver cómo Conecta entrega la encuesta

Exámenes externos

Del papel al dato

El problema. Las IPS externas mandan resultados en PDF y había que pasar sus datos a una hoja de seguimiento, además de un histórico que nadie había digitado.

Lo que hice. Llevé al sistema el procesamiento en segundo plano: cada PDF es un trabajo que una IA convierte en datos estructurados, con reintentos a los 30 minutos, 2 horas y 6 horas, y un reproceso por rango de fechas.

Fue el primer procesamiento en segundo plano del sistema. La IA es Claude Haiku y la hoja recibe los datos por un script de Google. Solo corre en las bases de Ocupasalud.

Pruébalo en esta simulación: procesa exámenes, corta el cable y mira cómo el trabajo se recupera solo. El reloj está acelerado (30 minutos por segundo) y los datos son ficticios.

Un examen en PDF entra a la cola, la IA lo lee y sus campos llegan a la hoja. Si el envío falla, se reintenta a los 30 minutos, a las 2 horas y a las 6 horas.

Versión 2.0

Dos mundos, un bus

Piloto. No está en producción ni fusionado.

El problema. AHDO y la nueva versión de Ocupasalud tienen los mismos clientes en bases distintas, con identificadores distintos, y ninguna puede depender de que la otra esté arriba.

Lo que hice. El lado de Ocupasalud 2.0: cada alta, edición o borrado se escribe en una bandeja de salida dentro de la misma transacción, y un publicador la envía a Kafka. Un consumidor aplica lo que llega de AHDO sin devolverlo. Un documento repetido o ya ligado a otro cliente queda en revisión, y los campos que AHDO no maneja se conservan.

La conexión va cifrada y con usuario. La función viene apagada por defecto e incluye pruebas automáticas de sus reglas. Con Kafka abajo, la aplicación sigue respondiendo.

Pruébalo en esta simulación del piloto: edita el cliente, apaga Kafka, edítalo otra vez y vuelve a encenderlo. El cliente y sus datos son ficticios.

AHDO usa identificadores GUID y Ocupasalud 2.0, enteros. Un mismo cliente vive en las dos y viaja por Kafka. Si Kafka se cae, los cambios esperan en la bandeja de salida y salen cuando vuelve.

Certificados

Constancia de participación

Verificada con git

Corte: octubre de 2026

Concepto
ParticipéEn producción
Sistema actual
27 commits míos en el sistema actual, de 708 en total (3,8 %), entre agosto de 2025 y octubre de 2026. Unas 5.018 líneas añadidas y 2.276 borradas en 96 archivos, sin contar paquetes.
Versión 2.0
En la versión 2.0, 2 commits: el piloto de sincronización, todavía sin fusionar. Ningún commit en su frontend.
Piezas que creé
  • El webhook que recibe el informe firmado
  • La lectura de exámenes con IA
  • El trabajo en segundo plano de cada PDF
  • El envío a la hoja de seguimiento
  • El reproceso del histórico por fechas
  • El trabajo que agenda la encuesta
Observaciones
El sistema existe desde 2017 y lo construyeron otros desarrolladores. Mi parte son integraciones y flujos. No lo hice ni lo lideré.

Evolución

  1. Ago – sep 2025

    Campo "Tipo de servicio" en el formulario de servicios y limpieza del frontend.

    Sistema actual
  2. Dic 2025 – ene 2026

    El informe firmado del radiólogo que llega solo, y la elección de sucursal (sede o unidad móvil) en la recepción de la IPS de radiología.

    Sistema actual
  3. Mar – abr 2026

    Primer procesamiento en segundo plano del sistema: la IA que lee exámenes externos.

    Sistema actual
  4. Oct 2026

    Encuesta de satisfacción por WhatsApp vía Conecta, también para Ocupasalud Bogotá.

    Sistema actual
  5. Oct 2026

    Piloto de sincronización con AHDO por Kafka en la versión 2.0.

    Versión 2.0, sin fusionar

Citas pendientes

Lo que todavía falta

  • Pendiente

    El piloto con AHDO

    La sincronización por Kafka no está fusionada ni en producción. Viene apagada por configuración.

  • Pendiente

    Qué está encendido en cada IPS

    Git no permite verificar cuáles de mis funciones están desplegadas en cada IPS. Varias dependen de que la configuración las encienda.

  • Pendiente

    La versión 2.0

    Ocupasalud 2.0 sigue en desarrollo y todavía no está en producción. En ella solo tengo los 2 commits del piloto.