Respuesta corta: un servidor de terminología es un servidor FHIR especializado en códigos. Almacena CodeSystems (SNOMED CT, LOINC, ICD-10, UCUM, tablas propias de HL7), ValueSets (conjuntos de valores con nombre para un propósito: códigos de signos vitales, sustancias de alergia) y ConceptMaps (traducciones entre sistemas), y responde a través de operaciones estándar: $lookup (¿qué significa este código?), $validate-code (¿se permite este código aquí?), $expand (lista los códigos de este conjunto de valores, opcionalmente filtrados por texto), $translate (¿cuál es este código en ese otro sistema?) y $subsumes (¿es A un tipo de B?). Las aplicaciones lo llaman en lugar de enviar copias de terminologías, que son grandes, tienen licencia y se actualizan varias veces al año.
Los recursos
Un servidor de terminología FHIR funciona con tres recursos. CodeSystem declara un sistema de códigos por URL canónica y versión, con sus conceptos o una nota de que el contenido se encuentra en otro lugar; ValueSet define un subconjunto de códigos con un propósito específico mediante reglas de composición y una expansión calculada opcional; ConceptMap registra las relaciones de origen a destino entre sistemas con una equivalencia para cada mapeo.
- CodeSystem declara un sistema por su URL canónica (
http://snomed.info/sct,http://loinc.org,http://hl7.org/fhir/sid/icd-10), su versión, y ya sea sus conceptos o una declaración de que el contenido se mantiene en otro lugar (content: not-presentpara sistemas con licencia). - ValueSet tiene un
compose(reglas: incluir todos los códigos de un sistema, códigos específicos o un filtro como descendientes de 404684003 Clinical finding) y, cuando se calcula, unaexpansion(la lista real). Los enlaces en los perfiles apuntan a conjuntos de valores; véase Perfiles y extensiones de FHIR. - ConceptMap contiene relaciones origen → destino con una equivalencia (
equivalent,wider,narrower,inexact,unmatched) y dependencias opcionales, para mapas como SNOMED CT a ICD-10 o códigos locales de un laboratorio a LOINC.
Las operaciones, con solicitudes
Un servidor de terminología FHIR responde a cinco operaciones estándar: $lookup devuelve el significado de un código, $validate-code comprueba si un código pertenece a un sistema o a un conjunto de valores, $expand lista los códigos de un conjunto de valores, opcionalmente filtrados por texto, $translate convierte un código a otro sistema a través de un ConceptMap, y $subsumes prueba si un concepto es un tipo de otro.
$lookup: detalles de un código.
GET /CodeSystem/$lookup?system=http://loinc.org&code=4548-4
Devuelve un recurso Parameters con display ("Hemoglobina A1c/Hemoglobina.total en Sangre"), designaciones en otros idiomas y propiedades (para LOINC los seis ejes; para SNOMED CT los padres y las relaciones definitorias).
$validate-code: ¿está el código en el sistema, o en el conjunto de valores?
GET /ValueSet/$validate-code?url=http://hl7.org/fhir/ValueSet/observation-vitalsignresult&system=http://loinc.org&code=8480-6
Devuelve result: true con la visualización, o false con un mensaje. Los servidores que validan recursos llaman a esto para cada elemento enlazado.
$expand: los códigos de un conjunto de valores, con filtrado de texto para cuadros de búsqueda.
GET /ValueSet/$expand?url=http://hl7.org/fhir/ValueSet/condition-code&filter=diabetes&count=20
Devuelve el ValueSet con una lista expansion.contains: código, sistema, visualización. Así es como funciona la búsqueda de diagnósticos de un EHR contra SNOMED CT sin mantener 360.000 conceptos localmente.
$translate: cruzar una frontera del sistema.
GET /ConceptMap/$translate?url=https://lab.example.org/ConceptMap/local-to-loinc&system=https://lab.example.org/codes&code=GLU&targetsystem=http://loinc.org
Devuelve las coincidencias con su equivalencia. La misma operación sirve para los mapas de SNOMED CT → ICD-10 donde el servidor los aloja.
$subsumes: preguntas de jerarquía.
GET /CodeSystem/$subsumes?system=http://snomed.info/sct&codeA=73211009&codeB=44054006
Responde subsumes (la diabetes mellitus es un ancestro de la diabetes tipo 2), subsumed-by, equivalent o not-subsumed. El soporte de decisiones lo utiliza para preguntar ¿es esta condición algún tipo de diabetes? sin listar cada subtipo.
Las respuestas son recursos Parameters: una lista de partes con nombre, no un objeto plano, lo que sorprende a los que llaman por primera vez.
Servidores que encontrará
Los servidores de terminología que se encuentran con más frecuencia en la práctica son tx.fhir.org, el servidor de referencia público de HL7 utilizado por su validador; Ontoserver de CSIRO, un servidor comercial detrás de varios programas nacionales; Snowstorm de SNOMED International, de código abierto y nativo de SNOMED CT; servidores FHIR generales como HAPI FHIR y Firely Server con operaciones de terminología; y servidores nacionales gestionados por agencias de salud.
| Servidor | Quién | Notas |
|---|---|---|
| tx.fhir.org | HL7 (referencia) | Público, utilizado por el validador HL7 y el IG Publisher; LOINC, SNOMED CT (donde está licenciado), tablas HL7, UCUM. No para tráfico de producción |
| Ontoserver | CSIRO (Australia) | Comercial; utilizado por programas nacionales (Australia, UK NHS Ontology Server, Países Bajos, Bélgica); SNOMED CT completo con consultas ECL |
| Snowstorm | SNOMED International | Código abierto; nativo de SNOMED CT con una API FHIR; potencia el navegador oficial |
| HAPI FHIR, Firely Server, servicios FHIR de Microsoft/Google/AWS | Proveedores | Servidores FHIR generales con operaciones de terminología; cargue los sistemas de códigos usted mismo |
| Servidores nacionales | Ministerios y agencias de salud | A menudo Ontoserver o Snowstorm con la edición nacional y conjuntos de valores locales |
El contenido es la parte difícil: SNOMED CT requiere una licencia fuera de los países miembros, LOINC requiere aceptar sus términos, las variantes nacionales de ICD-10 tienen su propia distribución. Un servidor le proporciona las operaciones; usted sigue obteniendo y cargando el contenido legalmente.
Cómo los utilizan las aplicaciones
Las aplicaciones utilizan un servidor de terminología para validar códigos y unidades en el momento de la escritura, para potenciar los cuadros de búsqueda a través de $expand con un filtro de texto y un conjunto de valores, para mostrar nombres oficiales a través de $lookup, para mapear códigos locales a LOINC o SNOMED CT a ICD-10 a través de $translate, y para razonar sobre jerarquías a través de $subsumes y el Lenguaje de Restricción de Expresiones de SNOMED CT.
- Validación al escribir: rechazar una Observation cuyo código LOINC no existe o cuya unidad no es UCUM, con un mensaje que nombra el problema.
- Cuadros de búsqueda:
$expandconfilterpara selectores de diagnóstico, procedimientos y medicamentos, con ámbito de un conjunto de valores para que los clínicos solo vean conceptos relevantes. - Visualización:
$lookuppara mostrar el nombre oficial y las traducciones en lugar de almacenar cadenas de visualización que se desactualizan. - Mapeo:
$translatepara convertir códigos de laboratorio locales en LOINC en la importación (cómo mapear códigos de laboratorio locales a LOINC) o SNOMED CT en ICD-10 para informes (SNOMED CT vs ICD-10). - Razonamiento:
$subsumesy el Lenguaje de Restricciones de Expresión (ECL) de SNOMED (soportado por Ontoserver y Snowstorm a través de filtros$expand) para definir cohortes y reglas por jerarquía.
Caché agresivamente (la terminología cambia dos veces al año, no dos veces al día), fija las versiones en producción y trata una interrupción del servidor como una validación degradada en lugar de una razón para rechazar cada escritura.
En Anpheros
Anpheros Platform valida los códigos LOINC y las unidades UCUM que acepta para las observaciones y los códigos ATC para los medicamentos contra la terminología que distribuye (un subconjunto de LOINC y el índice ATC de la OMS), y documenta su API de terminología médica en el sitio para desarrolladores. Para la navegación completa por SNOMED CT o ICD-10, apunta a los navegadores oficiales en lugar de redistribuir contenido licenciado.
Páginas relacionadas
- Explicación de perfiles y extensiones de FHIR
- Cómo mapear códigos de laboratorio locales a LOINC
- SNOMED CT vs ICD-10
- CodeableConcept y Coding en FHIR
- Unidades UCUM en resultados de laboratorio
- API de terminología médica (sitio para desarrolladores)
Fuentes
- HL7 FHIR R4: Terminology Service
- HL7 FHIR R4: ValueSet $expand
- HL7 FHIR R4: ConceptMap $translate
- HL7 FHIR R4: CodeSystem $lookup
- Servidor de terminología HL7 tx.fhir.org
- Snowstorm (SNOMED International, GitHub)
- Ontoserver (CSIRO)
Preguntas frecuentes
¿Necesito un servidor de terminología para usar FHIR?
No para un sistema pequeño con una lista de códigos fija. Tan pronto como valide códigos de sistemas grandes, ofrezca búsqueda clínica o traduzca entre sistemas, un servidor de terminología le ahorra el envío y la actualización de las terminologías usted mismo.
¿Puedo usar tx.fhir.org en producción?
No. Es el servidor de referencia de HL7 para herramientas de validación y pruebas, sin garantías de servicio y con restricciones de licencia en algunos contenidos. Ejecute el suyo propio o utilice uno nacional o comercial.
¿Qué es ECL?
El Lenguaje de Restricciones de Expresión de SNOMED CT, una sintaxis de consulta para conjuntos de conceptos (por ejemplo, << 73211009 para diabetes y todos sus subtipos). Los servidores que lo soportan aceptan ECL en filtros de ValueSet y $expand.
¿Cómo sé qué versión de SNOMED CT tiene un servidor?
Pregunte al CodeSystem (GET /CodeSystem?url=http://snomed.info/sct) y lea su versión, que codifica la edición y la fecha de lanzamiento (por ejemplo, http://snomed.info/sct/900000000000207008/version/20260301). Fíjala en sus solicitudes cuando los resultados deban ser reproducibles.
Pruébalo gratis en el sandbox
Tu primera llamada FHIR en 5 minutos. Una API HL7 FHIR R4 con el consentimiento del paciente integrado: pruébala en el sandbox y luego conecta tu propia app o sistema de clínica.
Gratis · 30 pacientes sintéticos · sin tarjeta

