FHIR リソース リファレンス

このページでは、Cloud Healthcare API が FHIR リソース リファレンスどのようにサポートしているかを説明します。

概要

FHIR リソース リファレンスは、ソースリソースからターゲット リソースへの方向リンクです。FHIR リソース リファレンスを使用してリソースを接続できます。たとえば、FHIR リソースタイプ Observation には、リファレンス型の subject フィールドがあり、これを使用して Observation の対象として Patient リソースにリンクできます。

FHIR リソースの参照も循環参照にできます。たとえば、FHIR リソースタイプ CarePlan には、別の CarePlan を指す replaces フィールドがあります。

FHIR リファレンス構造で最も重要な要素は、リファレンスです。他の要素(displayidentifier など)は、Cloud Healthcare API の場合と同様に保持されます。

Cloud Healthcare API でサポートされている Reference.reference の形式は次のとおりです。

ローカル リソースのリファレンス

リソース参照は RESOURCE_TYPE/RESOURCE_ID として定義されます。Cloud Healthcare API では、RESOURCE_TYPE/RESOURCE_ID の前に完全な FHIR ストア名を付けることもできます(例: FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID)。この形式を使用する場合、ストア名とリクエストの FHIR ストアを一致させる必要があります。これらが一致しない場合、ローカル リソース以外を参照することとなるため、リクエストが拒否されます。

ストア構成オプション FhirStore.disableReferentialIntegrity は、ローカル参照の検証の参照整合性チェックを制御します。これはデフォルトで有効になっています。参照整合性チェックの詳細については、FHIR 参照整合性をご覧ください。

バージョニングされたリファレンス

Cloud Healthcare API は、ターゲット リソースの特定のバージョンへのリファレンスをサポートします。ターゲット リソースの特定のバージョンにリンクするには、ローカル リファレンスの RESOURCE_ID/_history/VERSION_ID の後の形式を使用します。

参照整合性チェックが有効になっている場合、サーバーは、過去のバージョンが FHIR ストアに存在するかを確認します。Resource-purge メソッドは、参照されているかどうかにかかわらず、履歴バージョンを削除します。

条件付きリファレンス

ターゲット リソース ID を明示的に指定する代わりに、executeBundle は、リクエスト時にターゲット リソース ID に解決されるターゲット リソース用の条件付きリファレンス検索クエリを受け入れます。例: Patient?identifier=abc

検索クエリがターゲット リソースに解決されない場合や、複数のターゲット リソースに解決される場合、参照整合性チェックが有効かどうかにかかわらず、サーバーはリクエストを拒否します。

urn:uuid または urn:oid で始まる URI

トランザクション バンドルで executeBundle メソッドを使用する場合、Universally Unique Identifier(UUID)またはオブジェクト識別子(OID)参照を使用して、同じバンドル内に作成または更新される他のリソースへの参照を解決できます。詳細については、FHIR バンドルの管理ガイドをご覧ください。

完全な外部 URL

http://www.example.com/abc などの外部 URL はすべて、リファレンス フィールドにそのまま保存されます。Cloud Healthcare API は、URL を解決したり、有効性の検証を試みたりしません。

完全な外部 URL がリクエストの FHIR ストアの完全な URL と一致する場合、そのリファレンスはローカル リソース リファレンスとして処理されます。

フラグメント リファレンス

フラグメント リファレンスは、リソースにインライン化されている格納されたリソースを指します。たとえば、Observation レコードによって一般の従事者が言及されているが、管理された従事者ディレクトリがない場合、完全な従事者リソースは作成できません。一般的の従事者は、Observation レコード内の格納されたリソースです。リソースのリファレンス フィールドは、#[INLINE_RESOURCE_ID] 形式のインライン リソースを指すことができます。

次の FHIR R4 サンプルでは、p1p2 がインライン リソース ID であり、#p1#p2 として参照されます。

{
  "resourceType": "Observation",
  "contained": [
    {
      "resourceType":"Patient",
      "id": "p1",
      "generalPractitioner": {"reference": "#p2"}
    },
    {
      "resourceType":"Practitioner",
      "id": "p2"
    }
  ],
  "status": "final",
  "subject": {"reference": "#p1"},
  "performer": [{"reference": "#p2"}]
}

[INLINE_RESOURCE_ID] はリソース内に格納されたリソースとして存在する必要があります。存在しない場合、サーバーはリクエストを拒否します。格納されたリソースは、そのコンテナ、または同じコンテナ内の他の格納されたリソースによってのみ参照できます。