Saltar al contenido
Volver a proyectos
Profesional
2025 – 2026

Facturación electrónica del sector salud

Integra el ERP con la plataforma del Ministerio de Salud para radicar facturas con su soporte clínico y recuperar el código que las valida.

16

operaciones de la plataforma estatal

3

contextos de datos

gzip

paquetes de gran tamaño

El problema

Una institución de salud no cobra con la factura sola: debe radicarla acompañada del detalle de cada servicio prestado a cada usuario. El paquete resultante pesa varios megas, llega comprimido, y cualquier inconsistencia se traduce en una glosa que retrasa el pago semanas. Además la plataforma estatal expone más de una decena de operaciones distintas según se trate de una factura, una nota de ajuste, un acuerdo de voluntades o una capitación.

La solución

Una API en .NET 8 con arquitectura por capas concéntricas que recibe el paquete comprimido, lo valida antes de enviar nada, lo radica ante la plataforma estatal, recupera el código único que acredita la validación y administra las observaciones y rechazos que devuelve. Una función complementaria arma el correo con los soportes y lo envía.

La decisión técnica que lo sostiene

Validar en casa antes de enviar. La plataforma estatal es lenta y sus mensajes de error son crípticos, así que cada regla que se pueda comprobar localmente se comprueba con validación declarativa antes de gastar un viaje de red: el usuario recibe un error entendible en segundos en lugar de un rechazo incomprensible minutos después. El tipo de usuario del paquete tampoco se resuelve con condicionales anidados sino con una estrategia por tipo, porque la norma cambia y cambia seguido. Y ninguna cadena de conexión vive en el repositorio: todos los secretos se resuelven contra el almacén de claves en el arranque.

El resultado

Radicación automatizada del ciclo completo, con los rechazos detectados antes del envío y el código de validación recuperado y almacenado sin intervención manual.

Cómo se ve por dentro

Ejemplos ilustrativos de los patrones aplicados, con la razón de cada decisión.

Los secretos se resuelven en el arranque, no se versionan

csharp
builder.Configuration.AddAzureKeyVault(
    new Uri(builder.Configuration["KeyVault:Uri"]
        ?? throw new InvalidOperationException("KeyVault:Uri sin configurar")),
    new DefaultAzureCredential());

builder.Services
    .AddOptions<OpcionesPlataformaSalud>()
    .BindConfiguration("PlataformaSalud")
    .ValidateDataAnnotations()
    .ValidateOnStart();   // si falta algo, no arranca: mejor que fallar en la primera radicación

La configuración se completa desde el almacén de claves antes de construir la aplicación. El repositorio no contiene ninguna cadena de conexión, y rotar una credencial no exige recompilar ni desplegar.

Ejemplo ilustrativo del patrón aplicado; no es código de ningún producto.

Stack del proyecto

¿Necesitas algo parecido?

Cuéntame tu caso y te digo con franqueza si es viable y cuánto toma.

Hablemos