Skip to main content
Este es el front-door para usar el MCP en Cursor, Claude Desktop, Claude Code, Windsurf o Antigravity. Cada sección muestra un prompt natural que un dev chileno escribiría en el chat, lo que hace el modelo internamente y el output esperado. Para la referencia técnica completa (signatures, costos, mapa categórico) ver Tools: Referencia.
Chat de Claude usando @fhiron/mcp-connector, tool call fhiron_validate con resultado de validación CL Core

Validación de un Practitioner desde el chat: el agente llama fhiron_validate y devuelve issues con quick-fix listo para aplicar.

Atajos

Validar una MedicationRequest

El caso más frecuente. Lint + quickFix + validación contra IG en una sola petición.

Armar un Encounter ambulatorio

Scaffold CL Core + búsqueda de comuna y establecimiento DEIS sin gastar cuota.

Auditar un endpoint público

FHIR® Score 0–100 con grade A–F y recomendaciones priorizadas.

Validar

fhiron_validate

Cuándo: ya tienes un recurso armado y necesitas confirmación contra el IG (slicing, ValueSets remotos, terminologías). Es la tool por defecto cuando el agente entiende “valida esto”. Pídele al agente:
Valida esta MedicationRequest contra CL Core 1.9.4 y aplica los quickFix que tenga.
El ejemplo usa solo ATC. La Terminología Farmacéutica Chilena (TFC) queda pendiente de la publicación del canónico oficial; cuando exista, se podrá agregar como segundo coding.
Lo que hace el modelo:
1

fhiron_lint (offline, gratis)

Detecta cl-medreq-02 (falta intent) con quickFix.replacement = "order".
2

fhiron_apply_fix (offline, gratis)

Aplica el parche RFC 6901 sobre /intent. El recurso queda corregido sin tocar la cuota.
3

fhiron_validate (1 crédito)

Llama al servidor con el recurso corregido. HAPI valida contra el perfil completo + binding ATC.
Output (resumen + JSON):
CL Core no define un perfil de MedicationRequest, por eso profile viene null: la validación de servidor corre contra el recurso base de FHIR R4 más las reglas locales cl-medreq-*.
Si quieres feedback inmediato sin gastar crédito, pide explícitamente “sólo lintea, no valides en servidor”. El modelo elige fhiron_lint y se queda offline.

fhiron_lint

Cuándo: estás iterando sobre un recurso y quieres feedback en milisegundos sin gastar cuota. Cubre las 60+ reglas cl-* para los 13 recursos más usados. Pídele al agente:
Lintea esta Encounter sin llamar al servidor. Necesito ver qué falta antes de gastar crédito.
Lo que hace el modelo:
1

fhiron_lint (offline, < 5 ms)

Corre las reglas locales sobre el JSON. No hay tráfico de red.
2

Devuelve issues con quickFix

Cada issue trae code, path, why, suggestion y, cuando aplica, un quickFix mecánico.
Output:
El lint es determinístico. Mismo JSON in → mismos issues out, sin temperatura del modelo. Es la base para CI/CD: corre fhiron_lint en un pre-commit hook y bloquea el push si hay errores.

fhiron_validate_file

Cuándo: el recurso vive en un .json del repo y no quieres pegar 200 líneas de JSON en el chat. Pídele al agente:
Valida el archivo samples/encounter-ambulatorio.json contra CL Core.
Lo que hace el modelo:
1

Verifica el sandbox

Resuelve la ruta contra FHIRON_MCP_ALLOWED_ROOT. Rechaza paths fuera del root, symlinks, archivos ≥ 5 MB y extensiones distintas de .json / .fhir.json.
2

Lee el archivo y delega

Si es un Bundle, delega a fhiron_validate_bundle. Si no, a fhiron_validate.
Output:
Para apuntar a otro directorio: export FHIRON_MCP_ALLOWED_ROOT=/ruta/a/tu/proyecto/fhir antes de iniciar el conector. La tool nunca modifica el archivo.

fhiron_validate_bundle

Cuándo: tienes un Bundle (transaction, batch, collection o document) y necesitas saber qué entries pasan y cuáles fallan. Cobra 1 crédito por entry validada, con un cap default de 50 para protegerte. Pídele al agente:
Audita este Bundle entry-por-entry y dame una matriz pass/fail agrupada por resourceType.
Lo que hace el modelo:
1

Linteo local de cada entry

Si una entry tiene errores locales, no llega al servidor (no consume crédito).
2

Validación servidor de las entries que pasan el lint

Hasta max_server_calls (default 50). El resto queda como local-only.
3

Agregación

Devuelve totales, agrupado por resourceType, y el detalle por entry.
Output:
Si tu Bundle tiene cientos de entries, sube el cap explícitamente: “valida hasta 200 entries”. El modelo le pasa max_server_calls: 200 (límite duro 200).

fhiron_score_endpoint

Cuándo: quieres evaluar la madurez FHIR de un endpoint público de tercero (proveedor, partner, organismo público) sin tener que leerte el CapabilityStatement a mano. Pídele al agente:
Dame un FHIR Score del endpoint https://api.partner-salud.cl/fhir y explícame qué le falta para llegar a A.
Lo que hace el modelo:
1

Validación SSRF

Bloquea loopback, redes privadas, link-local, metadata cloud y resuelve DNS para detectar rebind a IPs internas.
2

GET /metadata

Descarga el CapabilityStatement con cap de 10 MB.
3

Scoring sobre 5 dimensiones

fhirVersion · core resources · profiles declarados · interactions soportadas · sistemas terminológicos referenciados. 20 puntos cada una.
Output:
La tool no llama al motor de Fhiron. El scoring corre localmente sobre el CapabilityStatement. No consume crédito.

Explorar

fhiron_get_example

Cuándo: estás partiendo desde cero y necesitas un esqueleto válido CL Core para ese tipo de recurso. Devuelve el ejemplo y lo lintea defensivamente antes de entregarlo. Pídele al agente:
Dame un ejemplo de Encounter ambulatorio CL Core válido para usarlo de base.
Lo que hace el modelo:
1

fhiron_get_example('Encounter')

Devuelve un Encounter completo con class.system = v3-ActCode, subject, period ISO-8601 y narrative.
Output:
Recursos disponibles: Patient, Practitioner, Encounter, Observation, Condition, MedicationRequest, AllergyIntolerance, Procedure, Coverage, Organization, Immunization, DiagnosticReport, Bundle.

fhiron_search_terminology

Cuándo: el modelo necesita un código real (comuna DEIS, establecimiento, TFC, CIE-10, identificador chileno) y tú no quieres que lo invente. Pídele al agente:
Busca el código DEIS de la comuna de Las Condes y ármame una Patient.address con esa comuna.
Lo que hace el modelo:
1

fhiron_search_terminology({ system: 'deis-comuna', query: 'las condes' })

Búsqueda case-insensitive y sin tildes sobre el catálogo del decreto 817.
2

Construye el address

Inyecta code + display con el system canónico correcto.
Output:
Sistemas disponibles: deis-comuna, deis-establecimiento, deis (combinado), tfc (incluye ATC), cie10, identificadores (CSTipoIdentificador). Todas son listas vendorizadas en el connector, sin red.

fhiron_explain_code

Cuándo: te apareció un código de error (cl-medreq-02, hapi-error-terminology, mcp-quota-01) y quieres contexto pedagógico antes de tocar el JSON. Pídele al agente:
Explícame cl-medreq-02: qué significa, por qué FHIR lo exige y cómo lo arreglo.
Lo que hace el modelo:
1

fhiron_explain_code({ code: 'cl-medreq-02' })

Busca en el catálogo cl-* / hapi-* / mcp-* y devuelve why, suggestion, example y links.
Output:
La lista completa de códigos también está expuesta como recurso MCP en fhiron://errors. El modelo la consulta cuando arma respuestas largas.

fhiron_compare_profiles

Cuándo: quieres saber qué restricciones agrega CL Core sobre el perfil base de FHIR R4 para un recurso. Útil cuando estás migrando un sistema que ya valida contra R4 y necesitas cuantificar el delta. Cobra 2 créditos (una validación contra R4 + una contra CL Core). Pídele al agente:
Compara este Patient contra FHIR R4 base y CL Core. Quiero ver qué errores aparecen sólo en CL Core.
Lo que hace el modelo:
1

Valida contra el StructureDefinition R4 base

meta.profile = http://hl7.org/fhir/StructureDefinition/Patient.
2

Valida en paralelo contra el CL Core

meta.profile = https://hl7chile.cl/fhir/ig/clcore/StructureDefinition/CorePacienteCl.
3

Diff de errores

Devuelve las restricciones que sólo aparecen en CL Core, o sea, el costo de migración.
Output:
Recursos soportados para comparación: Patient, Practitioner, Encounter, Observation, Condition, MedicationRequest. Para el resto, valida directamente con fhiron_validate.

Reparar

fhiron_apply_fix

Cuándo: un issue.quickFix te trae el parche listo (jsonPointer + replacement) y quieres aplicarlo sin escribir el patch a mano. Es idempotente: aplicar dos veces es seguro. Pídele al agente:
Toma el quickFix de cl-enc-04 y aplícalo al recurso original.
Lo que hace el modelo:
1

fhiron_apply_fix(resource, quickFix)

Aplica el RFC 6901 sobre el JSON. Si el path no existe, lo crea.
Output:
Esta tool no llama al servidor. Después de aplicar el fix, pídele al agente “valida de nuevo” para que corra fhiron_validate (1 crédito) y confirme que el recurso quedó limpio contra el IG completo.

Cuándo usar cuál

Pregunta más frecuente del cookbook: ¿fhiron_validate o una de sus variantes? Para la categoría Explorar / Reparar, todas las tools son gratis y offline excepto fhiron_compare_profiles.

Siguiente

Tools: Referencia técnica

Mapa categórico, signatures, estructura del feedback y convenciones de naming.

Resources & Prompts

Recursos consultables (fhiron://...) y slash-commands (/validar-recurso, /crear-encounter-cl, …).

Reglas locales cl-*

Las 60+ reglas offline detrás de fhiron_lint.

Recetas por recurso

Ejemplos verticales por caso clínico chileno (TFC + ATC, DEIS, v3-ActCode).