Skip to main content

Uso

fhiron lint "src/**/*.fhir.json"
Si no pasas un path o glob, usa lint.include de fhiron.config.json:
fhiron lint

Qué detecta

El linter usa @fhiron/linter — mismas reglas que el MCP connector. Captura errores que se ven sin necesidad de HAPI:
  • resourceType ausente o desconocido
  • Identificadores well-known mal escritos (ej. CSNombreCampana, comunas, TFC, ATC)
  • Estructura mínima rota (campos requeridos por R4 ausentes)
  • Sistemas de codificación con namespace incorrecto
  • Patrones de fecha ISO-8601 inválidos
Para validación semántica completa contra perfiles CL Core, usa fhiron validate.

Output

23 archivos · 0 errores · 3 warnings

  warning · src/observation-05.json (Observation.code.coding[0].system)
    [system-unknown] http://minsal.cl/codigo-inventado no aparece en el catálogo CL Core 1.9.4
    Sugerencia: verifica el namespace contra hl7chile.cl/fhir/ig/clcore

Para validación semántica completa contra HAPI + perfiles: fhiron validate

Flags

FlagEfecto
--jsonOutput programático en JSON (válido para parsear en scripts).
--quietSolo errores, oculta warnings.

Exit codes

CodeSignificado
0Sin errores (puede haber warnings).
1Hay al menos un error.
2No se pudo cargar @fhiron/linter (problema de instalación).
Usar en pre-commit hooks (ejemplo Husky):
#!/bin/sh
# .husky/pre-commit
fhiron lint "$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.fhir\.json$')" || exit 1

Limitaciones

El linter NO conoce los perfiles oficiales completos — no resuelve cardinalidades de slicing complejo, bindings required contra ValueSets externos (UCUM, SNOMED, LOINC), ni invariantes FHIRPath. Para eso usa fhiron validate, que pasa por HAPI con CL Core 1.9.4 cargado. Piensa en lint como ESLint, y en validate como TypeScript: detectan capas distintas.