FHIR サービスにプロファイルを格納する
HL7 Fast Healthcare Interoperability Resources (FHIR®) は、医療データを格納および交換するための標準的で相互運用可能な方法を定義します。 基本 FHIR 仕様内であっても、FHIR が使用されているコンテキストに基づいて他の規則や拡張機能を定義すると便利です。 FHIR のコンテキスト固有の用途では、 FHIR プロファイル が追加の仕様レイヤーに使用されます。 FHIR プロファイル を使用すると、制約と拡張機能を使用してリソース定義を絞り込んでカスタマイズできます。
Azure Health Data Services FHIR サービスを使用すると、プロファイルに対してリソースを検証して、リソースがプロファイルに準拠しているかどうかを確認できます。 この記事では、FHIR プロファイルの基本と、それらを格納する方法について説明します。 FHIR プロファイルの詳細については、 HL7.orgを参照してください。
FHIR プロファイル: 基本
プロファイルは、 StructureDefinition
リソースとして表されるリソースに追加のコンテキストを設定します。 StructureDefinition
では、リソースの内容やデータ型に関する一連のルール (リソースに含まれる要素、これらの要素が受け取ることができる値など) を定義します。
プロファイルで基本リソースを変更する方法の例を次に示します。
- カーディナリティを制限する: たとえば、要素の最大カーディナリティを 0 に設定できます。つまり、要素は特定のコンテキストで除外されます。
- 要素の内容を 1 つの固定値に制限します。
- リソースに必要な拡張機能を定義します。
StructureDefinition
は、その正規 URL によって識別されます。http://hl7.org/fhir/StructureDefinition/{profile}
次に例を示します。
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
は、患者の出生地を表す登録済み住所の情報を必要とする基本プロファイルです。http://hl7.org/fhir/StructureDefinition/bmi
は、肥満度指数 (BMI) の観測値を表す方法を定義するもう 1 つの基本プロファイルです。http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
は、患者に関連付けられているAllergyIntolerance
リソースに対する最小の期待値を設定する US Core プロファイルであり、拡張機能や値セットなどの必須フィールドを識別します。
リソースがプロファイルに準拠している場合、プロファイルはリソースの profile
要素内で指定されます。 次の例では、プロファイルを持つ "Patient" リソースの先頭 http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient 確認できます。
{
"resourceType" : "Patient",
"id" : "ExamplePatient1",
"meta" : {
"lastUpdated" : "2020-10-30T09:48:01.8512764-04:00",
"source" : "Organization/PayerOrganizationExample1",
"profile" : [
"http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient"
]
},
Note
プロファイルは基本リソースの上に構築する必要があり、基本リソースと競合することはできません。 たとえば、要素のカーディナリティが 1..1 の場合、プロファイルで省略可能にすることはできません。
プロファイルは、さまざまな実装ガイド (NSG) でも指定されます。 一般的な ID の一覧を次に示します。 詳細については、特定の IG サイトを参照して、IG とその中で定義されているプロファイルの詳細を確認してください。
Note
FHIR サービスでは、既定では実装ガイドのプロファイルは格納されません。 FHIR サービスに読み込む必要があります。
プロファイルへのアクセスとプロファイルの格納
プロファイルの格納
FHIR サービスにプロファイルを格納するには、要求の本文にプロファイルコンテンツを含むStructureDefinition
をPUT
できます。 標準の PUT
または条件付き更新は、どちらも FHIR サービスにプロファイルを格納するための優れた方法です。 使用する条件が不明な場合は、条件付き更新プログラムを使用します。
Standard PUT
: PUT http://<your FHIR service base URL>/StructureDefinition/profile-id
or
条件付き更新: PUT http://<your FHIR service base URL>/StructureDefinition?url=http://sample-profile-url
{
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
…
}
たとえば、 us-core-allergyintolerance
プロファイルを格納する場合は、次の rest コマンドを使用して、US Core アレルギー不耐症プロファイルを本文に含めます。 この例には、このプロファイルのスニペットが含まれています。
PUT https://<your FHIR service base URL>/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
{
"resourceType" : "StructureDefinition",
"id" : "us-core-allergyintolerance",
"text" : {
"status" : "extensions"
},
"url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
"version" : "3.1.1",
"name" : "USCoreAllergyIntolerance",
"title" : "US Core AllergyIntolerance Profile",
"status" : "active",
"experimental" : false,
"date" : "2020-06-29",
"publisher" : "HL7 US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "url",
"value" : "http://www.healthit.gov"
}
]
}
],
"description" : "Defines constraints and extensions on the AllergyIntolerance resource for the minimal set of data to query and retrieve allergy information.",
その他の例については、
プロファイルの表示
GET
要求 (GET http://<your FHIR service base URL>/StructureDefinition?url={canonicalUrl}
) を使用して、既存のカスタム プロファイルにアクセスできます。{canonicalUrl}
はプロファイルの正規 URL です。
たとえば、US Core Goal リソース プロファイルを表示する場合は、次のようにします。
GET https://<your FHIR service base URL>/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
これにより、次のように始まる US Core Goal プロファイルの StructureDefinition
リソースが返されます。
{
"resourceType" : "StructureDefinition",
"id" : "us-core-goal",
"url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal",
"version" : "3.1.1",
"name" : "USCoreGoalProfile",
"title" : "US Core Goal Profile",
"status" : "active",
"experimental" : false,
"date" : "2020-07-21",
"publisher" : "HL7 US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "url",
"value" : "http://www.healthit.gov"
}
]
}
],
"description" : "Defines constraints and extensions on the Goal resource for the minimal set of data to query and retrieve a patient's goal(s).",
}
Note
FHIR サービスに読み込んだプロファイルのみが表示されます。
FHIR サービスは、基本プロファイルの StructureDefinition
インスタンスを返しませんが、HL7 Web サイトで次のように簡単に見つけることができます。
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
機能ステートメントのプロファイル
Capability Statement
には、FHIR サービスで考えられるすべての動作が一覧表示されます。 FHIR サービスは、格納されているプロファイルの詳細を次の形式で機能ステートメントに更新します。
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
たとえば、US Core Patient プロファイルを POST
すると、次のように開始されます。
{
"resourceType": "StructureDefinition",
"id": "us-core-patient",
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient",
"version": "3.1.1",
"name": "USCorePatientProfile",
"title": "US Core Patient Profile",
"status": "active",
"experimental": false,
"date": "2020-06-27",
"publisher": "HL7 US Realm Steering Committee",
metadata
の GET
要求を送信します。
GET http://<your FHIR service base URL>/metadata
FHIR サーバーにアップロードした US Core Patient プロファイルに関する次の情報を含む CapabilityStatement
が返されます。
...
{
"type": "Patient",
"profile": "http://hl7.org/fhir/StructureDefinition/Patient",
"supportedProfile":[
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
],
プロファイルのバインド
用語サービスは、コードの検証、コードの翻訳、値セットの拡張など、医療の "用語" に対して操作を実行できる一連の関数です。 FHIR サービスでは、用語サービスはサポートされていません。 サポートされている操作 ($)、リソースの種類、および相互作用に関する情報は、サービスの CapabilityStatement で確認できます。 リソースの種類 ValueSet、StructureDefinition、および CodeSystem は、基本的な CRUD 操作と検索 (CapabilityStatement で定義) でサポートされるだけでなく、$validateで使用するためにシステムによって利用されます。
ValueSet には、ルールと外部参照の複雑なセットを含めることができます。 現時点では、サービスでは、事前に拡張されたインライン コードのみが考慮されます。 $validate操作を使用する前に、サポートされている ValueSet を FHIR サーバーにアップロードする必要があります。 上記の「プロファイルの格納」セクションで説明したように、PUT または条件付き更新を使用して、ValueSet リソースを FHIR サーバーにアップロードする必要があります。
次のステップ
この記事では、FHIR プロファイルについて説明しました。 次に、$validateを使用して、リソースがこれらのプロファイルに準拠していることを確認する方法について説明します。
Note
FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。