Skip to main content

Integración PAMI SII

Qué es: el núcleo del producto. PAMI / INSSJP no expone una API pública: el SII (Sistema Interactivo de Información) se accede por scraping HTTPaxios + cookie jar + cheerio.

De ahí sale casi todo el dato externo: afiliados, autorizaciones / OP, cápitas asignadas, diagnósticos, OMEs, insumos, planes onco.

Las piezas

ArchivoRol
src/services/v3/PamiSIIServiceV3.ts (~4.800 líneas)El corazón. Casi todos los flujos de worker desembocan acá
src/services/v3/PamiSIIServiceV4.tsIteración más nueva de partes del scraping
src/services/v3/SIIBotService.ts + SIIBotPoolService.tsSesiones de bot contra el SII y su pool
src/services/v3/CupBotPoolService.ts, PadronBotService.tsPools para CUP y para el padrón
src/services/v2/PamiSIIService.ts, CupPamiSIIService.ts, PamiSIIFinancesService.tsCapas previas, todavía en uso
src/SIIWorkerConfig.ts, src/CupWorkerConfigV2.tsLos managers de worker
configuration.SiiCredentialLas credenciales de acceso al SII
services/v1/PamiSIIService.ts es legacy

La integración viva es v2 / v3 / v4. Ver Código legacy.

Cómo pensarla

  • Es frágil por naturaleza. Si el SII cambia el HTML, se rompe el parseo. Los errores de scraping se dejan crashear el worker (reinicia y reintenta) en vez de tragarse. Ver Workers y colas.
  • Los resultados se cachean en Redis (lookups de PAMI ~12 h) y se deduplican con keys tipo authorization-scrapped-${op}.
  • El scraping se orquesta por colas: un publisher o loop llena la cola, un consumer / worker scrapea.
  • La credencial PAMI es beneficio + gp (grado de parentesco), guardada concatenada en PatientAgreement.healthcardnumber. Los adapters de autorización la parten o la matchean según el origen. Ver Autorizaciones.

Gotchas

Las cápitas del afiliado son read-only

Las cápitas que PAMI asignó al afiliado se leen de cache Redis (PamiCapita*) y no se escriben desde Proteus. No las confundas con la cápita de cartilla local — ver el glosario.

  • Las OMEs solo cuentan si están validadas por PAMI (y valorizadas). Transmitida ≠ validada: el snapshot diario distingue OMESTRANSMITIDAS de OMESVALIDADAS. Ver OMEs y CUP.
  • Los temp_sii_*.txt de la raíz del repo son volcados de scratch, no fixtures ni parte de la app.
  • Los catálogos configuration."SERVICES" / "INSURANCES" / "AGREEMENTS" migraron vacíos en algunos entornos: una lista en blanco es dato, no bug.
  • Bug conocido y diferido: refresh-oncoplan da 500 con credencial alfanumérica. La corrección correcta sería escrapear solo si el financiador es PAMI.