Implementation Guide — это публикуемый пакет того что нужно для реализации одного use case на FHIR. Не один файл, а коллекция conformance-ресурсов (profiles, extensions, value sets, code systems, capability statement) + markdown-страницы (scenarios, walkthrough, security) + examples. Аналогия из обычной разработки: «спецификация API» vs «один endpoint». IG — это спецификация всей экосистемы вокруг конкретной задачи (US-рынок, oncology, payer-data-exchange, и т.д.).
Где живёт в данных
- В исходниках — IG-репозиторий обычно отдельный (
HL7/US-Core,HL7/fhir-us-mcode-ig). Внутри:input/fsh/илиinput/resources/— conformance resources (FSH или JSON)input/pagecontent/— markdown human-readable страницыinput/examples/— пример-ресурсы для иллюстрации и тестовsushi-config.yaml— конфиг IG (имя, версия, dependencies)
- После сборки — три artefact’а:
- HTML-сайт (
build.fhir.org/ig/HL7/US-Core/— публичный, кликабельный) - NPM-пакет (
hl7.fhir.us.coreна npm + simplifier.net registry) — для подключения как dependency в других IG’ах - Validation pack — JSON-bundle SDs для FHIR validator’а
- HTML-сайт (
Что входит в IG
| Часть | Что описывает | Источник в репо |
|---|---|---|
| Profiles (StructureDefinition) | Какие resource shapes мы определяем (Patient, Observation, Composition, etc) | input/fsh/profiles/ или input/resources/StructureDefinition-*.json |
| Extensions | Custom поля, которые добавляем к стандартным ресурсам | input/fsh/extensions/ |
| ValueSets / CodeSystems | Какие коды разрешены / используются | input/fsh/valuesets/, input/fsh/codesystems/ |
| CapabilityStatement | Какие операции / search-параметры FHIR-сервер обязан поддерживать | input/fsh/capabilities/ |
| OperationDefinitions | Custom операции типа $everything, $validate | редко, обычно ничего |
| SearchParameters | Custom search-параметры (если стандартных не хватает) | редко |
| Markdown-страницы | Human-readable доки: scenarios, walkthrough, examples, security guidance | input/pagecontent/ |
| Examples | Реальные JSON-ресурсы как test fixtures и иллюстрации | input/examples/ |
IG Publisher — компилятор всего этого
IG Publisher — Java jar, который читает структуру выше и собирает:
- HTML-сайт с полным навигационным деревом, отрендеренными SDs (с таблицами cardinality / must-support), отрендеренными differential’ами относительно базы, кликабельными примерами, FHIR validation отчётами на examples.
- NPM-пакет (
hl7.fhir.us.core-<version>.tgz) который можно загрузить в simplifier.net или установить как dependency в зависимом IG. - Validation pack (
package.tgzсо всеми SDs) — этоpackagekeyword в FHIR validator’е.
Команда сборки обычно одна:
java -jar publisher.jar -ig ig.iniПод капотом: SUSHI (FSH → JSON) → IG Publisher (JSON → HTML/NPM/validation).
Примеры реальных IGs
Открытые публичные IGs, в которые можно ткнуться:
- US Core — https://hl7.org/fhir/us/core/ — самый известный, обязателен для US healthcare (HTI-1 mandate). См. us-core
- IPS (International Patient Summary) — https://hl7.org/fhir/uv/ips/ — кросс-граничный patient summary. Apple Health Records читает в т.ч. IPS.
- Da Vinci HRex — https://hl7.org/fhir/us/davinci-hrex/ — payer-data-exchange (insurance integration в US)
- mCODE — https://hl7.org/fhir/us/mcode/ — oncology-specific (cancer data exchange)
- Gravity SDoH — https://hl7.org/fhir/us/sdoh-clinicaldata/ — social determinants of health
- HL7 BE Core — https://www.ehealth.fgov.be/standards/fhir/ — Belgium realm core (как US Core, но для Бельгии)
Каждый IG — это репо в HL7/<name> или <org>/<name> на GitHub, открытый исходник + автогенерируемый HTML-сайт.
Когда IG публикуют
IG это публичный contract, а не внутренний артефакт. Команда публикует IG когда хочет:
- Сказать партнёрам / интеграторам: «вот так должны выглядеть ресурсы, которые мы отдаём / принимаем»
- Получить регулятивное соответствие (US HTI-1 requires US Core IG conformance)
- Войти в discoverability (simplifier.net hub) — чтобы другие команды могли найти твой IG и переиспользовать
- Получить validation pack для FHIR validator’а out-of-the-box
Внутренние команды без публикации обычно живут на stub-IG в личном репо — собирают SDs и используют локально (для codegen / validation), без публикации HTML-сайта.
Versioning и dependencies
IG версионируется semver (1.0.0, 2.0.0). Может зависеть от других IG’ов:
# sushi-config.yaml
id: bloodgpt.fhir.profiles
version: 0.1.0
dependencies:
hl7.fhir.r4.core: 4.0.1 # base FHIR R4
hl7.fhir.us.core: 7.0.0 # если конформимся US CoreNPM-style resolution. SUSHI / IG Publisher разворачивают зависимости в свой fhir-cache.
Наш текущий статус
- Своего IG нет. Vanilla R4, conformance ни к чему не декларируем.
- Conventions из US Core применяем неявно (например,
Condition.category = problem-list-item) — но безmeta.profile, без validation pack. - Если решим собирать свой IG (см. formalize-fhir-profiles) — это отдельный репозиторий
bloodgpt-fhir-profiles, отдельный CI, отдельный published artefact. Не примешивается в monorepo (slow build, отдельная конвенция, отдельная команда могла бы поддерживать).
Когда нам понадобится IG
Триггеры (в порядке вероятности):
- Второй партнёр который хочет читать наши данные — даём ему URL нашего IG как контракт.
- AI prompt’ы для LLM-генерации FHIR — можно загрузить SDs из IG как spec в context промпта.
- Apple Health Records integration → требуется US Core conformance или IPS conformance, проще claim’ить через
meta.profile+ публикация stub IG. - US HTI-1 / regulated US market entry → обязательно.
- Discoverability в FHIR community (publishing на simplifier.net) — но это уже маркетинговое решение.
До этих триггеров IG не нужен — внутренние профили могут жить в bloodgpt-fhir-profiles/ без публикации HTML-сайта.
Открытые вопросы
- Стартовать с stub-IG (только SDs, без markdown / HTML publication) или сразу полноценный IG с walkthrough?
- Где hostить опубликованный IG —
simplifier.net(default community-place), собственный доменbuild.bloodgpt.com/ig/, GitHub Pages? - Когда мы добавим US Core / IPS dependency — это уже compliance claim, нужно ли всё проверять валидатором в CI?
Связано
- fhir-conformance-resources — семейство ресурсов, из которых состоит IG
- fhir-profiling — главное содержимое IG (StructureDefinition profiles)
- fsh — DSL для авторства IG-контента
- fhir-code-generation — что можно делать с IG (генерация TS / Zod / C#)
- us-core — конкретный пример IG который мы пока не используем формально
- formalize-fhir-profiles — наше решение писать ли свой IG — draft