SNOMED CT — глобальная клиническая терминология, 350,000+ активных концептов с уникальными значениями и формальными logic-based определениями1. Это онтология в строгом смысле: единый корневой концепт SNOMED CT Concept, иерархия через IS-A relationships, дополнительные defining attributes (Finding site, Causative agent, Method…). Покрывает то, что LOINC не покрывает: диагнозы, симптомы, процедуры, анатомия, организмы, вещества, ситуации, qualifiers.
Пример иерархии: Diabetes mellitus type 2 IS-A Diabetes mellitus IS-A Disorder of carbohydrate metabolism IS-A Metabolic disorder IS-A … до корня.
Издаётся SNOMED International (member-funded organization, 50+ стран-членов). FHIR system URL: http://snomed.info/sct.
Структура
Три core artifacts:
- Concept — уникальная клиническая идея с stable SCTID (6-18 digits, последняя — check digit по Verhoeff dihedral D52). Пример:
73211009=Diabetes mellitus. ID никогда не reused, не recycles. - Description — текстовое представление концепта. У каждого концепта несколько:
- FSN (Fully Specified Name) — каноническое имя с semantic tag в скобках:
Diabetes mellitus (disorder). Уникальный, недвусмысленный. - Preferred Term (PT) — для UI:
Diabetes mellitus. - Synonyms — альтернативные термины:
Diabetes,DM.
- FSN (Fully Specified Name) — каноническое имя с semantic tag в скобках:
- Relationship — связи между концептами. Главная — IS-A (subsumption). Дополнительные:
Finding site,Causative agent,Associated morphology,Method, и т.п. (defining attributes для compositional grammar).
Top-level hierarchies
Корневой концепт ветвится на несколько main branches (основные):
| Hierarchy | Что включает |
|---|---|
| Clinical finding | симптомы, расстройства, болезни |
| Procedure | хирургические / диагностические / терапевтические процедуры |
| Body structure | анатомия + морфологические аномалии |
| Substance | вещества, аллергены, drug substances |
| Pharmaceutical / biologic product | лекарственные продукты |
| Organism | бактерии, вирусы, грибы, паразиты |
| Observable entity | то что можно наблюдать без конкретного значения |
| Specimen | типы образцов |
| Situation with explicit context | family history, planned procedure, etc |
| Event | травмы, exposures, social events |
| Qualifier value | дополнительные модификаторы для post-coordination |
| Staging / scales / SNOMED CT model component / linkage / record artifact / physical object / physical force / environment / social context | Edge cases |
Carry-over: где конкретно у нас в FHIR-output используется какая hierarchy + ValueSet — отдельная сессия по mapping audit. Сейчас примерно: Clinical finding →
Condition.code, Procedure →Procedure.code, Substance/Organism →AllergyIntolerance.code, Body structure →Procedure.bodySite. RxNorm/ATC предпочтительнее для medications, LOINC system axis покрывает Specimen.
Pre-coordinated vs post-coordinated
- Pre-coordinated — готовый concept с одним SCTID.
Acute appendicitis=85189001. Большинство case’ов. - Post-coordinated (compositional grammar) — комбинация концептов через operators для выражения того что нет в pre-coordinated виде. Пример:
271737000 |Anemia| : 363698007 |Finding site| = 113331007 |Liver|. Мощно, но сложно — большинство EHR используют только pre-coordinated.
У нас post-coordination не используется и в обозримом будущем не нужен.
Editions и licensing
- International Edition — base, выпускается дважды в год (январь + июль).
- National Extensions — добавляют local-specific concepts поверх International:
- US Edition — выпускается март + сентябрь (после International), бесплатна через NLM UMLS для US-based использования
- AU Edition (CSIRO) — Австралия; мы используем как validation source через Ontoserver — open-source FHIR terminology server, поддерживает
$lookup/$expand/$validate-codeоперации (см. https://ontoserver.csiro.au/) - Также UK, NL, DK, SE, ES, и десяток других
- Licensing model:
- Бесплатно для residents/organizations в member countries — через national release center (US: NLM)
- Commercial use non-member — paid Affiliate License Agreement с SNOMED International
Где живёт в FHIR
В любом CodeableConcept поле system="http://snomed.info/sct" означает SNOMED CT код:
{
"system": "http://snomed.info/sct",
"code": "73211009",
"display": "Diabetes mellitus"
}Опционально version URL для конкретной release: http://snomed.info/sct/900000000000207008/version/20260131 (International, Jan 2026).
В US Core SNOMED — обязательная codesystem для Condition.code, Procedure.code, AllergyIntolerance.code.
Где SNOMED появляется у нас
SNOMED-коды живут в наших FHIR-ресурсах в code полях:
Condition.code— диагнозы. См. fhir-condition для details про как мы их получаем и хранение.Procedure.code— выполненные процедуры. См. fhir-procedure.AllergyIntolerance.code— substance триггера реакции. См. fhir-allergy-intolerance.
Также SNOMED появляется в Resource.category defaults (когда наш code-builder заполняет category):
Procedure.category—387713003 Surgical/103693007 Diagnostic/409063005 Counselling/409073007 Education/410606002 Social serviceCarePlan.category—734163000 Care plan+ open для custom (например HL7assess-plan)
Как именно мы получаем SNOMED-коды (pattern: LLM English term → terminology server $expand) — см. отдельную страницу clinical-code-resolution. Там же — failure modes (bare LLM coding на gpt-4o-mini = garbage), production path (V1 tx.fhir.org → V1+ Snowstorm Lite), audit practice через CSIRO Ontoserver $lookup.
Размер и обновления
- 350,000+ активных concepts (International Edition, 2026)1
- ~1.4M descriptions (с учётом synonyms и переводов)
- ~1.6M relationships
- Release cycle: International ×2/год (январь + июль); национальные extensions через 1-2 месяца
- US Edition March 2026 release добавил 114 новых концептов US-specific
- Полный RF2 download ~500MB (ZIP), снап-shot Active + Inactive concepts
Implications для нашего pipeline:
- Static lookup tables — refresh policy (раз в полгода после International release).
- Audit через
$lookupперед merge изменений вsnomed-coder.ts. - Inactive concepts — handle if encountered:
$lookupвернётinactive=true+replacedByreferences.
Сравнение с ICD-10
| SNOMED CT | ICD-10 / ICD-10-CM | |
|---|---|---|
| Размер | ~357K concepts | ~14K codes (ICD-10), ~70K (ICD-10-CM) |
| Цель | Clinical detail, EHR | Billing, statistics |
| Иерархия | Polyhierarchy (multiple parents) | Strict tree |
| Granularity | High (precise differentiation) | Coarse (grouping для reimbursement) |
| Governance | SNOMED International | WHO (ICD-10), CMS+NCHS (ICD-10-CM) |
| Licensing | Member country / paid Affiliate | Public (WHO), free (CMS) |
| Где у нас | Condition.code (primary) | Cross-coding в Condition.code.coding[] (optional) |
В US Core рекомендуется dual-coding condition: SNOMED CT (clinical primary) + ICD-10-CM (billing secondary) в одном CodeableConcept.coding[]. Мы сегодня dual-coding не делаем.
Связано
- fhir-condition — главный consumer SNOMED (диагнозы)
- fhir-procedure — второй consumer (процедуры с SNOMED-based category enum)
- fhir-allergy-intolerance — substance coding
- loinc — параллельная codesystem; SNOMED ↔ LOINC complement (clinical concepts vs lab tests)
- clinical-code-resolution — как именно мы получаем SNOMED-коды (LLM English term →
$expandчерез terminology server); failure modes; audit practice - llm-numeric-codes-policy — policy «LLM не доверять числовым кодам»; rationale + variant C verification
- agent-vs-workflow — связанный pattern: structured-LLM + deterministic resolver layer
- us-core — обязывает SNOMED для Condition/Procedure/AllergyIntolerance в US-сертифицированных EHR
- fhir-resource-categories — где SNOMED появляется в
Resource.categorydefaults
Источники
- SNOMED International: https://www.snomed.org/
- SNOMED CT Starter Guide: https://docs.snomed.org/snomed-ct-practical-guides/snomed-ct-starter-guide/
- SNOMED CT concept hierarchies: https://docs.snomed.org/snomed-ct-practical-guides/snomed-ct-starter-guide/4-snomed-ct-basics
- February 2026 International Edition release notes: https://conf.spaces.snomed.org/wiki/spaces/RMT/pages/530022403/SNOMED+CT+February+2026+International+Edition
- US Edition (NLM): https://www.nlm.nih.gov/healthit/snomedct/us_edition.html
- FHIR system URL: https://www.hl7.org/fhir/snomedct.html
- CSIRO Ontoserver (используем для audit): https://ontoserver.csiro.au/
tx.fhir.orgterminology server: https://tx.fhir.org/- Snowstorm (open-source SNOMED terminology server): https://github.com/IHTSDO/snowstorm
- Wikipedia overview: https://en.wikipedia.org/wiki/SNOMED_CT
Сноски
-
Точное число активных concepts в каждом International release SNOMED International в release notes не публикует одной цифрой. Older sources (Wikipedia, NCBI articles) цитируют 357,000; на текущие 2026 releases это устаревший снимок. Безопасная нижняя граница — 350,000+ active concepts. Для exact числа нужен RF2 download и подсчёт
active=1rows вConceptsnapshot. https://www.snomed.org/ + https://en.wikipedia.org/wiki/SNOMED_CT. Цит. по сессииildar/29362bdd. ↩ ↩2 -
SNOMED International, SNOMED CT Release File Specification §6.4.2 — SCTID check digit вычисляется через Verhoeff’s dihedral D5 check. Algorithm специально выбран для maximization детектирования common typographical errors (single errors, adjacent transpositions, 95%+ twin errors). Damm algorithm (2004) — отдельный алгоритм, SNOMED его НЕ использует. https://docs.snomed.org/snomed-ct-specifications/snomed-ct-release-file-specification/snomed-ct-identifiers/6.4-check-digit. Цит. по сессии
ildar/29362bdd. ↩