Терминология

Серверы терминологии FHIR: $lookup, $validate-code, $expand, $translate и $subsumes с примерами запросов

Сервер терминологии хранит системы кодирования (SNOMED CT, LOINC, ICD-10), наборы значений и карты концепций, а также отвечает на вопросы о кодах с помощью операций FHIR. Описание каждой операции, примеры запросов, существующие серверы (tx.fhir.org, Ontoserver, Snowstorm, HAPI) и как их используют приложения.

автор Опубликовано 6 мин чтения

Краткий ответ: сервер терминологии — это специализированный FHIR-сервер для кодов. Он хранит CodeSystems (SNOMED CT, LOINC, ICD-10, UCUM, собственные таблицы HL7), ValueSets (именованные подмножества для конкретных целей: коды жизненно важных показателей, вещества аллергенов) и ConceptMaps (переводы между системами), а также отвечает с помощью стандартных операций: $lookup (что означает этот код?), $validate-code (разрешен ли этот код здесь?), $expand (перечислить коды в этом наборе значений, с возможностью фильтрации по тексту), $translate (каков этот код в другой системе?) и $subsumes (является ли A разновидностью B?). Приложения обращаются к нему вместо того, чтобы отправлять копии терминологий, которые велики, требуют лицензирования и обновляются несколько раз в год.

Ресурсы

Сервер терминологии FHIR работает с тремя ресурсами. CodeSystem объявляет систему кодов по каноническому URL и версии, с ее понятиями или с указанием, что содержимое хранится в другом месте; ValueSet определяет целенаправленное подмножество кодов с помощью правил составления и необязательного вычисленного расширения; ConceptMap записывает отношения источника и цели между системами с указанием эквивалентности для каждого сопоставления.

  • CodeSystem объявляет систему по ее каноническому URL (http://snomed.info/sct, http://loinc.org, http://hl7.org/fhir/sid/icd-10), ее версию и либо ее концепции, либо заявление о том, что контент хранится в другом месте (content: not-present для лицензируемых систем).
  • ValueSet имеет compose (правила: включить все коды из системы, конкретные коды или фильтр, такой как потомки 404684003 Clinical finding) и, после вычисления, expansion (фактический список). Привязки в профилях указывают на наборы значений; см. FHIR profiles and extensions.
  • ConceptMap содержит отношения источник → цель с эквивалентностью (equivalent, wider, narrower, inexact, unmatched) и необязательными зависимостями, для карт, таких как SNOMED CT в ICD-10 или локальные коды лаборатории в LOINC.

Операции с запросами

Сервер терминологии FHIR отвечает на пять стандартных операций: $lookup возвращает значение одного кода, $validate-code проверяет, принадлежит ли код системе или набору значений, $expand перечисляет коды в наборе значений, опционально фильтруя по тексту, $translate преобразует код в другую систему через ConceptMap, а $subsumes проверяет, является ли одно понятие видом другого.

$lookup: сведения об одном коде.

GET /CodeSystem/$lookup?system=http://loinc.org&code=4548-4

Возвращает ресурс Parameters с display ("Hemoglobin A1c/Hemoglobin.total in Blood"), обозначениями на других языках и свойствами (для LOINC — шесть осей; для SNOMED CT — родительские элементы и определяющие отношения).

$validate-code: находится ли код в системе или в наборе значений?

GET /ValueSet/$validate-code?url=http://hl7.org/fhir/ValueSet/observation-vitalsignresult&system=http://loinc.org&code=8480-6

Возвращает result: true с отображаемым названием или false с сообщением. Серверы, которые проверяют ресурсы, вызывают это для каждого связанного элемента.

$expand: коды в наборе значений с фильтрацией по тексту для полей поиска.

GET /ValueSet/$expand?url=http://hl7.org/fhir/ValueSet/condition-code&filter=diabetes&count=20

Возвращает ValueSet со списком expansion.contains: код, система, отображаемое название. Именно так работает поиск диагнозов в EHR против SNOMED CT без локального хранения 360 000 концепций.

$translate: пересечение границы системы.

GET /ConceptMap/$translate?url=https://lab.example.org/ConceptMap/local-to-loinc&system=https://lab.example.org/codes&code=GLU&targetsystem=http://loinc.org

Возвращает совпадения с их эквивалентностью. Та же операция используется для карт SNOMED CT → ICD-10, где их размещает сервер.

$subsumes: вопросы иерархии.

GET /CodeSystem/$subsumes?system=http://snomed.info/sct&codeA=73211009&codeB=44054006

Отвечает на вопросы subsumes (сахарный диабет является предком диабета 2 типа), subsumed-by, equivalent или not-subsumed. Система поддержки принятия решений использует ее, чтобы спросить является ли это состояние каким-либо видом диабета? без перечисления каждого подтипа.

Ответы представляют собой ресурсы Parameters: список именованных частей, а не простой объект, что удивляет тех, кто обращается впервые.

Серверы, с которыми вы столкнетесь

Серверы терминологии, с которыми чаще всего сталкиваются на практике: tx.fhir.org, общедоступный эталонный сервер HL7, используемый валидатором; Ontoserver от CSIRO, коммерческий сервер, лежащий в основе нескольких национальных программ; Snowstorm от SNOMED International, с открытым исходным кодом и нативный для SNOMED CT; общие серверы FHIR, такие как HAPI FHIR и Firely Server, с операциями терминологии; и национальные серверы, управляемые органами здравоохранения.

Сервер Кто Примечания
tx.fhir.org HL7 (справочный) Общедоступный, используется валидатором HL7 и публикатором IG; LOINC, SNOMED CT (где лицензировано), таблицы HL7, UCUM. Не для производственного трафика
Ontoserver CSIRO (Австралия) Коммерческий; используется национальными программами (Австралия, UK NHS Ontology Server, Нидерланды, Бельгия); полный SNOMED CT с запросами ECL
Snowstorm SNOMED International Открытый исходный код; нативный для SNOMED CT с API FHIR; обеспечивает работу официального браузера
HAPI FHIR, Firely Server, Microsoft/Google/AWS FHIR services Поставщики Общие FHIR-серверы с операциями терминологии; загружайте системы кодов самостоятельно
Национальные серверы Министерства здравоохранения и агентства Часто Ontoserver или Snowstorm с национальной версией и локальными наборами значений

Контент — это сложная часть: SNOMED CT требует лицензии за пределами стран-членов, LOINC требует принятия его условий, национальные варианты ICD-10 имеют собственное распространение. Сервер предоставляет вам операции; вы по-прежнему получаете и загружаете контент легально.

Как приложения используют один

Приложения используют сервер терминологии для проверки кодов и единиц измерения во время записи, для работы с полями поиска через $expand с текстовым фильтром и набором значений, для отображения официальных названий через $lookup, для сопоставления локальных кодов с LOINC или SNOMED CT в ICD-10 через $translate и для рассуждений над иерархиями через $subsumes и язык ограничений выражений SNOMED CT (Expression Constraint Language).

  • Проверка при записи: отклонить Observation с несуществующим кодом LOINC или недопустимой единицей измерения UCUM, с сообщением, указывающим на проблему.
  • Поля поиска: $expand с filter для выбора диагнозов, процедур и лекарств, ограниченный набором значений, чтобы клиницисты видели только релевантные концепции.
  • Отображение: $lookup для показа официального названия и переводов вместо хранения отображаемых строк, которые устаревают.
  • Сопоставление: $translate для преобразования локальных лабораторных кодов в LOINC при импорте (how to map local lab codes to LOINC) или SNOMED CT в ICD-10 для отчетности (SNOMED CT vs ICD-10).
  • Логические выводы: $subsumes и Expression Constraint Language (ECL) SNOMED (поддерживается Ontoserver и Snowstorm через фильтры $expand) для определения когорт и правил по иерархии.

Кэшируйте агрессивно (терминология меняется дважды в год, а не дважды в день), фиксируйте версии в производственной среде и рассматривайте сбой сервера как ухудшение качества проверки, а не как причину отклонять каждую запись.

В Anpheros

Платформа Anpheros проверяет коды LOINC и единицы измерения UCUM, которые она принимает для наблюдений, и коды ATC для лекарств против терминологии, которую она поставляет (подмножество LOINC и индекс ВОЗ ATC), и документирует свой terminology API на сайте для разработчиков. Для полного просмотра SNOMED CT или ICD-10 она ссылается на официальные браузеры, а не перераспределяет лицензионный контент.

Связанные страницы

Источники

Частые вопросы

Нужен ли мне сервер терминологии для использования FHIR?

Не для небольшой системы с фиксированным списком кодов. Как только вы начинаете проверять коды из больших систем, предлагать клинический поиск или выполнять переводы между системами, сервер терминологии избавляет вас от необходимости поставлять и обновлять терминологии самостоятельно.

Могу ли я использовать tx.fhir.org в производственной среде?

Нет. Это справочный сервер HL7 для инструментов проверки и тестирования, без гарантий обслуживания и с лицензионными ограничениями на часть контента. Запустите свой собственный или используйте национальный или коммерческий сервер.

Что такое ECL?

Expression Constraint Language SNOMED CT, синтаксис запросов для наборов концепций (например, << 73211009 для диабета и всех его подтипов). Серверы, поддерживающие его, принимают ECL в фильтрах ValueSet и $expand.

Как узнать, какую версию SNOMED CT имеет сервер?

Запросите CodeSystem (GET /CodeSystem?url=http://snomed.info/sct) и прочитайте его версию, которая кодирует выпуск и дату релиза (например, http://snomed.info/sct/900000000000207008/version/20260301). Фиксируйте ее в своих запросах, когда результаты должны быть воспроизводимы.

Anpheros Platform

Попробуйте бесплатно в песочнице

Первый запрос FHIR за 5 минут. API HL7 FHIR R4 с встроенным согласием пациента: попробуйте в песочнице, затем подключите свое приложение или систему клиники.

Бесплатно · 30 синтетических пациентов · без карты

Это руководство носит информационный характер и не заменяет консультацию врача. Решения о своём здоровье принимайте вместе с врачом. В экстренной ситуации звоните по местному номеру экстренной помощи (112 в Европе).
Автор
Команда Anpheros

Anpheros создает медицинскую карту, которую пациент контролирует и может делиться с любой клиникой, на платформе HL7 FHIR R4, базирующейся в ЕС. Эти руководства помогут вам понять и организовать свое здоровье; они не заменяют вашего врача.

О Anpheros →