> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fhiron.cl/llms.txt
> Use this file to discover all available pages before exploring further.

# Coverage Fonasa con CSPrevision

> Coverage con type.coding CSPrevision (EIS MINSAL), beneficiary y subscriberId con RUN.

## Escenario

Antes de generar una orden de atención, el sistema necesita declarar la previsión del paciente: Fonasa tramos A/B/C/D, ISAPRE, PRAIS o particular. El CodeSystem oficial es `CSPrevision` del EIS MINSAL. Sin `Coverage` válido, la facturación electrónica al sector público no cuadra. Inspect valida `Coverage.status`, `Coverage.beneficiary` y, cuando `type.coding.system` es `CSPrevision`, exige que el código pertenezca al CodeSystem.

## Payload válido

```json Coverage Fonasa tramo B theme={null}
{
  "resourceType": "Coverage",
  "status": "active",
  "type": {
    "coding": [
      {
        "system": "https://interoperabilidad.minsal.cl/fhir/ig/eis/CodeSystem/CSPrevision",
        "code": "FONASA-B",
        "display": "Fonasa tramo B"
      }
    ],
    "text": "Fonasa tramo B"
  },
  "subscriberId": "15420097-3",
  "beneficiary": { "reference": "Patient/example" },
  "relationship": {
    "coding": [
      {
        "system": "http://terminology.hl7.org/CodeSystem/subscriber-relationship",
        "code": "self",
        "display": "Self"
      }
    ]
  },
  "period": {
    "start": "2026-01-01"
  },
  "payor": [
    {
      "display": "Fonasa"
    }
  ]
}
```

## Cómo validarlo

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://fhiron.cl/api/validate \
    -H "Content-Type: application/json" \
    -H "X-API-Key: $FHIRON_API_KEY" \
    -d @coverage.json
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://fhiron.cl/api/validate", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": process.env.FHIRON_API_KEY,
    },
    body: JSON.stringify(coverage),
  });
  const outcome = await response.json();
  ```

  ```python Python theme={null}
  import os, requests
  response = requests.post(
      "https://fhiron.cl/api/validate",
      headers={
          "Content-Type": "application/json",
          "X-API-Key": os.environ["FHIRON_API_KEY"],
      },
      json=coverage,
  )
  outcome = response.json()
  ```
</CodeGroup>

## OperationOutcome esperado

Si `type.coding.system` es `CSPrevision` y el código pertenece al CodeSystem, `issue[]` viene vacío.

Errores típicos:

* `cl-cov-04`: falta `beneficiary` o `subscriberId`. Sin uno de los dos, no hay forma de saber a qué paciente cubre la previsión.
* `cl-eis-prevision-01`: `type.coding.code` fuera del CodeSystem `CSPrevision`. Caso típico: `"fonasa"` en minúscula, sin tramo, o un código propio del proveedor.
* `cl-run-03`: `subscriberId` con RUN de DV incorrecto (Inspect aplica módulo 11 al `subscriberId` cuando coincide con el formato chileno).

## Tips

<Tip>
  **Códigos `CSPrevision` más usados**:

  * `FONASA-A`, `FONASA-B`, `FONASA-C`, `FONASA-D`: tramos según renta.
  * `ISAPRE`: sistema privado.
  * `PRAIS`: Programa de Reparación y Atención Integral en Salud.
  * `PARTICULAR`: sin previsión.
  * `LEY-21418`: sistema acordado por ley.
</Tip>

<Tip>
  `subscriberId` típicamente es el RUN del titular. Cuando el paciente es carga (hijo de un cotizante), `relationship` cambia a `"child"` y el `subscriberId` sigue siendo el RUN del titular, no del paciente.
</Tip>

<Tip>
  Los `Coverage` futuros (renovación que parte el próximo mes) son válidos con `status: "draft"` y `period.start` futuro. Inspect no exige que `period.start` sea pasado.
</Tip>

<Tip>
  `payor[]` puede ser una `Reference(Organization)` cuando el bus tiene Fonasa o la ISAPRE como recurso. Para una integración mínima, basta con `display`.
</Tip>

<Note>
  Inspect valida este `Coverage` contra el perfil R4 base más las reglas `cl-cov-04` (campos obligatorios) y `cl-eis-prevision-01` (binding al CodeSystem `CSPrevision`). Si la previsión no es Fonasa/ISAPRE/PRAIS/PARTICULAR, devuelve `cl-eis-prevision-01` con la lista de códigos válidos.
</Note>
