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

# lint

> Lint estructural offline de recursos FHIR®: sin red, sin descontar cuota. Mismo linter que la CLI y el MCP.

`lint()` corre el linter de CL Core **localmente**: sin red, sin descontar cuota, de forma síncrona. Es ideal para feedback inmediato (un editor, un formulario, un paso previo) antes de gastar una validación remota.

```ts theme={null}
import { Fhiron } from '@fhiron/sdk';

const fhiron = new Fhiron({ apiKey: process.env.FHIRON_API_KEY });

const issues = fhiron.lint(patient);
issues.forEach((i) => console.log(i.severity, i.code, i.message));
```

## Firma

```ts theme={null}
lint(resource: object): Issue[]
```

Devuelve un arreglo de `Issue` (vacío si no hay hallazgos). Es síncrono: no retorna una promesa.

## Qué cubre el lint local

El linter captura lo que se ve **sin necesidad de HAPI**:

* `resourceType` ausente o tipo desconocido.
* Cardinalidades obligatorias de CL Core (por ejemplo `Encounter.subject`).
* Formato y dígito verificador de RUN.
* Comunas DEIS, terminología conocida (TFC, v3-ActCode, etc.).
* Narrativa recomendada (`text.div`).

Cada hallazgo trae `code` estable, `path`, `message` en español y, cuando existe, `suggestion` o `quickFix`.

## lint vs validate

|           | `lint()`        | `validate()`                 |
| --------- | --------------- | ---------------------------- |
| Red       | No              | Sí                           |
| Cuota     | No descuenta    | Descuenta 1                  |
| Motor     | Linter embebido | HAPI + perfiles CL Core      |
| Latencia  | Inmediata       | Una llamada HTTP             |
| Cobertura | Estructural     | Validación canónica completa |

El lint **no reemplaza** a `validate()`: hay reglas de perfil que solo el motor HAPI resuelve. El patrón recomendado es lint local para feedback rápido y `validate()` como verificación oficial antes de persistir o reenviar.

## Combinarlos

`check()` hace ambos en un llamado y adjunta `localIssues`:

```ts theme={null}
const result = await fhiron.check(resource);
// result.localIssues → del lint
// result.errors      → del motor remoto
```
