Una plataforma full-stack para gestionar contratos de Servicio Integral de Osteosíntesis entre una empresa de insumos médicos y múltiples agencias de salud de gobiernos estatales mexicanos (IMSS y otras). El sistema digitaliza y controla todo el ciclo de vida del evento quirúrgico —desde la solicitud de material hasta la facturación gubernamental— eliminando el seguimiento manual, reduciendo errores de documentación y habilitando la facturación mensual de contratos mediante exportaciones estructuradas a Excel. En producción de septiembre de 2025 a mayo de 2026, en 15 hospitales, 10 usuarios, 2 estados.
Arquitectura y Stack
Arquitectura multi-servicio contenedorizada orquestada vía Docker Compose con configuraciones específicas por entorno (dev, QA, prod).
Angular 19 (Tailwind + PrimeNG) — Firebase Hosting ↓ (Socket.IO / REST)API REST FastAPI + Nginx + Gunicorn ↓ Servicios → Repositorios → Beanie ODM ↓ MongoDB ↓ Workers de Celery (broker RabbitMQ) ↓ GCP Compute Engine — Docker Compose GCP Cloud Storage (carga de PDFs) Terraform (infraestructura como código)- Backend — FastAPI (Python 3.11) en un patrón estrictamente en capas (Endpoints → Servicios → Repositorios → ODM)
- Base de datos — MongoDB vía Beanie ODM (driver async Motor) con caché a nivel documento
- Tareas asíncronas — Celery con RabbitMQ (QA/prod) o Redis (dev), colas por prioridad (alta/normal/baja)
- Tiempo real — Estado de tareas enviado a clientes vía Socket.IO (gestor pub/sub de Redis)
- Almacenamiento — Google Cloud Storage para carga de PDFs (recetas, CURP, INE, hojas de remisión)
- Frontend — SPA en Angular 19 con Tailwind CSS y PrimeNG, alojada en Firebase, autenticada vía Firebase Auth con SSO Empresarial de Microsoft 365
- Infraestructura — GCP + Firebase provisionados con Terraform; CI/CD con GitHub Actions (verificaciones de calidad → build de Docker → despliegue automatizado a GCP Compute Engine)
- Observabilidad — Prometheus + Grafana + Alertmanager + cAdvisor + Node Exporter + Pushgateway detrás de Caddy, más Papertrail para logs y Sentry para monitoreo de errores
Logros Técnicos Clave
Modelado de dominio — Un dominio multi-contrato y multi-agencia que cubre esquemas de comisión escalonados (retroactivos/progresivos, con niveles configurables y valor monetario por cirugía), materiales quirúrgicos etiquetados con claves fiscales SAT y códigos CCNIS para facturación gubernamental, identificación de paciente multi-tipo (CURP, NSS del IMSS) y requisitos documentales por contrato — todo con borrado suave y slugs para prevenir duplicados en las entidades del catálogo.
Flujo de eventos quirúrgicos — Un ciclo de vida de 8 pasos: solicitud de material → aprobación de compras (con sustitución de material externo) → despacho de almacén con seguimiento de referencia ERP → confirmación de recepción de instrumental → captura de datos post-cirugía → carga de documentos PDF → remisión de material → validación del supervisor. Los eventos validados por el supervisor alimentan una exportación mensual a Excel con el detalle completo de consumo de material por contrato para la facturación gubernamental.
Arquitectura limpia en capas — Endpoints → Servicios → Repositorios → ODM con inyección de dependencias vía Depends(get_services) de FastAPI; una jerarquía de excepciones personalizada (BaseAppException → DatabaseException, BusinessLogicException, AuthException) manejada por un ExceptionMiddleware global; control de acceso basado en roles con dashboards y reportes específicos por rol.
Resiliencia de producción — Suite de pytest con pruebas unitarias (repositorios simulados vía AsyncMock) y pruebas de integración contra una base de datos de prueba aislada en vivo; contenedores Docker sin privilegios de root detrás de Nginx y Gunicorn; cada modelo de datos incluye campos created_at/updated_at/borrado suave para compatibilidad completa del pipeline de datos.