> ## 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.

# validate

> Valida archivos FHIR® contra CL Core 1.9.4 vía fhiron.cl. Descuenta cuota del plan.

## Uso

```bash theme={null}
fhiron validate examples/patient.json
```

Por glob (procesa cada archivo en serie):

```bash theme={null}
fhiron validate "src/**/*.fhir.json"
```

Sin path, usa `validate.include` de `fhiron.config.json`:

```bash theme={null}
fhiron validate
```

## Output

```
1 archivo · 0 errores · 1 warning · hl7.fhir.cl.clcore@1.9.4

  ✓ examples/encounter.json

      warning · Encounter.class
        Encounter.class debe estar vinculado a v3-ActEncounterCode (binding required)
        Perfil: hl7.fhir.cl.clcore EncounterCl
        Quick fix: cambia "IMP" por { system: "http://terminology.hl7.org/CodeSystem/v3-ActCode", code: "IMP" }
```

## Flags

| Flag             | Efecto                                                                                 |
| ---------------- | -------------------------------------------------------------------------------------- |
| `--json`         | Output programático en JSON (incluye `issues` con `quickFix` cuando aplica).           |
| `--quiet`        | Solo errores, oculta warnings.                                                         |
| `--profile <id>` | Override del perfil. Default: el de `fhiron.config.json` o `hl7.fhir.cl.clcore@1.9.4`. |
| `--timeout <ms>` | Timeout por archivo. Default: 10000.                                                   |

## Exit codes

| Code | Significado                                                                                                 |
| ---- | ----------------------------------------------------------------------------------------------------------- |
| `0`  | Todos los archivos son válidos (warnings permitidos).                                                       |
| `1`  | Hay al menos un error: validación fallida, JSON inválido, fallo de petición o falta de login.               |
| `2`  | El motor remoto no pudo validar (estado degradado); la validación no se ejecutó y **no se descontó cuota**. |

## Manejo de errores

| Status | Mensaje                      | Qué hacer                                                                                     |
| ------ | ---------------------------- | --------------------------------------------------------------------------------------------- |
| `401`  | API key inválida o caducada. | Corre `fhiron login` de nuevo.                                                                |
| `429`  | Cuota agotada.               | Sube de plan en [billing](https://fhiron.cl/dashboard/billing).                               |
| `5xx`  | Error del servidor.          | Reintenta en unos segundos. Si persiste, revisa [status.fhiron.cl](https://fhiron.cl/status). |

## Uso en CI: GitHub Actions

```yaml theme={null}
name: FHIR validation
on: [pull_request]
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npx @fhiron/cli lint     "fhir/**/*.json"
      - run: npx @fhiron/cli validate "fhir/**/*.json"
        env:
          FHIRON_API_KEY: ${{ secrets.FHIRON_API_KEY }}
```

Cada `validate` descuenta 1 de la cuota del tenant. Para PRs con muchos recursos considera `--quiet` para reducir el ruido en el log de Actions.

## Headers de rate-limit

Cada respuesta exitosa incluye:

```
X-RateLimit-Limit:     30
X-RateLimit-Remaining: 27
X-RateLimit-Reset:     43
Fhiron-Quota-Limit:     5000
Fhiron-Quota-Remaining: 4876
Fhiron-Quota-Reset:     1785542400
Fhiron-CL-Core-Version: 1.9.4
Fhiron-CL-Core-Channel: current
```

`X-RateLimit-*` es la ventana corta por API key. `Fhiron-Quota-*` representa la
cuota mensual. Para consultar el uso agregado del tenant, ejecuta
[`fhiron status`](/cli/status).

## Relación con el endpoint REST

`fhiron validate` es un wrapper sobre [`POST /api/validate`](/inspect/api). El CLI agrega: globs, exit codes, formato de output, manejo automático de la API key, retries.

Si necesitas embeber la validación en el runtime de tu aplicación (Node/TypeScript), usa el [SDK `@fhiron/sdk`](/sdk/overview): cliente tipado, errores en español y manejo de cuota, sin armar el `fetch` a mano. Desde otros lenguajes, llama al [endpoint REST](/inspect/api) directo.
