Коротка відповідь: сервер термінології — це FHIR-сервер, що спеціалізується на кодах. Він зберігає CodeSystems (SNOMED CT, LOINC, ICD-10, UCUM, власні таблиці HL7), ValueSets (іменовані підмножини для певної мети: коди життєво важливих показників, речовини, що викликають алергію) та ConceptMaps (переклади між системами) і відповідає через стандартні операції: $lookup (що означає цей код?), $validate-code (чи дозволено цей код тут?), $expand (перелічити коди в цьому наборі значень, опціонально фільтруючи за текстом), $translate (який цей код в іншій системі?) та $subsumes (чи є А видом Б?). Додатки звертаються до нього замість того, щоб надсилати копії термінологій, які є великими, ліцензованими та оновлюються кілька разів на рік.
Ресурси
Сервер термінології 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 Клінічна знахідка) і, коли обчислено,expansion(фактичний список). Прив'язки в профілях вказують на набори значень; див. FHIR профілі та розширення. - 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 ("Гемоглобін A1c/Гемоглобін.загальний у крові"), позначеннями іншими мовами та властивостями (для 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 з FHIR API; забезпечує роботу офіційного браузера |
| 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).
- Валідація під час запису: відхилення спостереження, чий код LOINC не існує, або одиниця вимірювання не є UCUM, з повідомленням, яке називає проблему.
- Поля пошуку:
$expandзfilterдля вибору діагнозів, процедур та ліків, обмежених набором значень, щоб клініцисти бачили лише релевантні концепції. - Відображення:
$lookupдля показу офіційної назви та перекладів замість зберігання рядків відображення, які застарівають. - Мапування:
$translateдля перетворення локальних лабораторних кодів на LOINC під час імпорту (як мапувати локальні лабораторні коди на LOINC) або SNOMED CT на ICD-10 для звітності (SNOMED CT проти ICD-10). - Міркування:
$subsumesта Expression Constraint Language (ECL) SNOMED (підтримується Ontoserver та Snowstorm через фільтри$expand) для визначення когорт та правил за ієрархією.
Кешуйте агресивно (термінологія змінюється двічі на рік, а не двічі на день), закріплюйте версії у виробництві та розглядайте збій сервера як зниження якості валідації, а не як причину відхилення кожного запису.
В Anpheros
Платформа Anpheros валідує коди LOINC та одиниці UCUM, які вона приймає для спостережень, та коди ATC для медикаментів проти термінології, яку вона надає (підмножина LOINC та індекс WHO ATC), і документує свій API термінології на сайті для розробників. Для повного перегляду SNOMED CT або ICD-10 вона посилається на офіційні браузери замість перерозповсюдження ліцензованого вмісту.
Пов'язані сторінки
- Пояснення FHIR профілів та розширень
- Як мапувати локальні лабораторні коди на LOINC
- SNOMED CT проти ICD-10
- CodeableConcept та Coding у FHIR
- Одиниці UCUM у лабораторних результатах
- API медичної термінології (сайт для розробників)
Джерела
- HL7 FHIR R4: Сервіс термінології
- HL7 FHIR R4: ValueSet $expand
- HL7 FHIR R4: ConceptMap $translate
- HL7 FHIR R4: CodeSystem $lookup
- Термінологічний сервер HL7 tx.fhir.org
- Snowstorm (SNOMED International, GitHub)
- Ontoserver (CSIRO)
Поширені запитання
Чи потрібен мені термінологічний сервер для використання 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). Закріпіть її у своїх запитах, коли результати мають бути відтворюваними.
Спробуйте безкоштовно в пісочниці
Перший запит FHIR за 5 хвилин. API стандарту HL7 FHIR R4 з вбудованою згодою пацієнта: спробуйте в пісочниці, а потім підключіть власну програму чи клінічну систему.
Безкоштовно · 30 синтетичних пацієнтів · без картки

