短く言うと: ターミナルサーバーとは、コードに特化したFHIRサーバーのことです。CodeSystem(SNOMED CT、LOINC、ICD-10、UCUM、HL7独自のテーブルなど)、ValueSet(特定の目的のための名前付きサブセット:「バイタルサインコード」、「アレルギー物質」など)、そしてConceptMap(システム間の翻訳)を格納し、標準的な操作を通じて応答します。$lookup(このコードの意味は?)、$validate-code(このコードはここで許可されていますか?)、$expand(この値セットのコードを一覧表示、テキストで絞り込み可能)、$translate(このコードは他のシステムでは何ですか?)、そして**$subsumes**(AはBの一種ですか?)といった操作です。アプリケーションは、大きくてライセンスが必要で年に数回更新される用語集のコピーを配布する代わりに、ターミナルサーバーを利用します。
リソースについて
FHIRの用語サーバーは、3つのリソースを扱います。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プロファイルと拡張機能を参照してください。 - ConceptMapは、ソース→ターゲットの関係を同等性(
equivalent、wider、narrower、inexact、unmatched)とオプションの依存関係とともに保持し、SNOMED CTからICD-10へのマッピングや、検査機関のローカルコードからLOINCへのマッピングなどに使用されます。
操作とリクエスト
FHIRの用語サーバーは、5つの標準的な操作に応答します。$lookupは1つのコードの意味を返します、$validate-codeはコードがシステムまたは値セットに属するかどうかをチェックします、$expandはテキストでオプションでフィルタリングされた値セット内のコードをリストします、$translateはConceptMapを通じてコードを別のシステムに変換します。そして$subsumesは、あるコンセプトが別のコンセプトの一種であるかどうかをテストします。
$lookup:コードの詳細情報。
GET /CodeSystem/$lookup?system=http://loinc.org&code=4548-4
display(「Hemoglobin A1c/Hemoglobin.total in Blood」)、他の言語での表記、プロパティ(LOINCの場合は6つの軸、SNOMED CTの場合は親と定義関係)を含むParametersリソースを返します。
$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
expansion.containsリスト(コード、システム、表示)を持つValueSetを返します。これは、EHRの診断検索が360,000の概念をローカルに保持せずにSNOMED CTに対してどのように機能するかを示しています。
$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の公開参照サーバーで、バリデーターによって使用されます)、CSIROのOntoserver(いくつかの国家プログラムの背後にある商用サーバー)、SNOMED InternationalのSnowstorm(オープンソースでSNOMED CTネイティブ)、HAPI FHIRやFirely Serverなどの用語操作を備えた一般的なFHIRサーバー、そして保健機関が運営するナショナルサーバーです。
| サーバー | 提供元 | 注意事項 |
|---|---|---|
| tx.fhir.org | HL7 (リファレンス) | 公開、HL7バリデーターおよびIGパブリッシャーによって使用。LOINC、SNOMED CT(ライセンスが必要な場合)、HL7テーブル、UCUM。本番トラフィックには使用不可 |
| Ontoserver | CSIRO (オーストラリア) | 商用。各国プログラム(オーストラリア、英国NHSオントロジーサーバー、オランダ、ベルギー)で使用。ECLクエリ付きの完全なSNOMED CT |
| Snowstorm | SNOMED International | オープンソース。FHIR APIを備えたSNOMED CTネイティブ。公式ブラウザを強化 |
| HAPI FHIR, Firely Server, Microsoft/Google/AWS FHIRサービス | ベンダー | 用語操作を備えた汎用FHIRサーバー。コードシステムはご自身でロードしてください |
| 各国のサーバー | 保健省および機関 | 多くの場合、OntoserverまたはSnowstormに国内版とローカル値セットを組み合わせて使用 |
コンテンツが難しい部分です。SNOMED CTは加盟国以外ではライセンスが必要、LOINCは利用規約への同意が必要、ICD-10の各国版は独自の配布方法があります。サーバーは操作を提供しますが、コンテンツは引き続き合法的に取得してロードする必要があります。
アプリケーションでの使用方法
アプリケーションは、用語サーバーを使用して、書き込み時にコードと単位を検証したり、$expandとテキストフィルターおよび値セットを使用して検索ボックスを強化したり、$lookupを通じて公式名を表示したり、$translateを通じてローカルコードをLOINCまたはSNOMED CTからICD-10にマッピングしたり、$subsumesとSNOMED CTのExpression Constraint Languageを通じて階層を推論したりします。
- 書き込み時の検証:存在しないLOINCコードやUCUM単位の観測値を拒否し、問題を示すメッセージを表示します。
- 検索ボックス:診断、処置、薬剤ピッカーのために
$expandとfilterを使用し、値セットでスコープを設定して、臨床医が関連する概念のみを見られるようにします。 - 表示:
$lookupを使用して、古くなる表示文字列を保存する代わりに、公式名称と翻訳を表示します。 - マッピング:
$translateを使用して、ローカル検査コードをインポート時にLOINCに変換したり(ローカル検査コードをLOINCにマッピングする方法)、SNOMED CTをレポート用にICD-10に変換したりします(SNOMED CT vs ICD-10)。 - 推論:
$subsumesとSNOMEDのExpression Constraint Language(ECL、OntoserverとSnowstormで$expandフィルターを通じてサポート)を使用して、階層によってコホートとルールを定義します。
積極的にキャッシュし(用語集は年に2回ではなく、年に2回変更されます)、本番環境ではバージョンを固定し、サーバーの停止はすべての書き込みを拒否する理由ではなく、検証の低下と見なしてください。
Anpherosにて
Anpheros Platformは、観測値に使用されるLOINCコードとUCUM単位、および薬剤に使用されるATCコードを、提供する用語集(LOINCサブセットとWHO ATCインデックス)に対して検証し、開発者サイトで用語APIを文書化しています。SNOMED CTやICD-10の完全なブラウジングについては、ライセンスコンテンツを再配布するのではなく、公式ブラウザを参照するようにしています。
関連ページ
- FHIRプロファイルと拡張機能の説明
- ローカル検査コードをLOINCにマッピングする方法
- SNOMED CT vs ICD-10
- FHIRにおけるCodeableConceptとCoding
- 検査結果におけるUCUM単位
- 医療用語API(開発者サイト)
ソース
- HL7 FHIR R4: Terminology Service
- HL7 FHIR R4: ValueSet $expand
- HL7 FHIR R4: ConceptMap $translate
- HL7 FHIR R4: CodeSystem $lookup
- HL7 terminology server tx.fhir.org
- Snowstorm (SNOMED International, GitHub)
- Ontoserver (CSIRO)
よくある質問
FHIRを使用するために用語サーバーは必要ですか?
固定コードリストを持つ小規模なシステムには不要です。大規模なシステムのコードを検証したり、臨床検索を提供したり、システム間で翻訳したりするようになると、用語サーバーは用語集の配布と更新の手間を省いてくれます。
tx.fhir.orgは本番環境で使用できますか?
いいえ。これはHL7の検証ツールおよびテスト用のリファレンスサーバーであり、サービス保証はなく、一部のコンテンツにはライセンス上の制約があります。独自のサーバーを実行するか、国のサーバーまたは商用サーバーを使用してください。
ECLとは何ですか?
SNOMED CTのExpression Constraint Languageで、概念セットのクエリ構文です(例:糖尿病とそのすべてのサブタイプを表す<< 73211009)。これをサポートするサーバーは、ValueSetフィルターや$expandでECLを受け入れます。
サーバーがSNOMED CTのどのバージョンを持っているかを知るにはどうすればよいですか?
CodeSystem(GET /CodeSystem?url=http://snomed.info/sct)に問い合わせて、バージョンを確認してください。バージョンはエディションとリリース日をエンコードしています(例:http://snomed.info/sct/900000000000207008/version/20260301)。結果を再現可能にする必要がある場合は、リクエストでバージョンを固定してください。
サンドボックスで無料で試す
5分で最初のFHIR呼び出し. 患者さんの同意が組み込まれたHL7 FHIR R4 APIです。サンドボックスでお試しいただき、ご自身のアプリやクリニックのシステムを接続してください。
無料・合成患者30人・カード不要

