このページでは、Cloud Healthcare API の FHIR ストア内のリソースに関連する参照整合性のコンセプトについて説明します。
FHIR ストアは、同じストア内の他のリソースへの参照に、参照整合性を適用します。
- リソースの作成、更新、パッチ適用を行うと、そのリソースのコンテンツに、存在しないリソースやリソース バージョンへの参照が含まれていると、オペレーションは失敗します。
- リソースを削除するときに、そのリソースを参照するほかのリソースがストアにある場合、オペレーションは失敗します。
参照整合性は、ストアの作成時に disableReferentialIntegrity
オプションを設定することで無効にできます。
除外対象と制限事項
FHIR 仕様では、さまざまな参照を使用できます。中には、次のような参照整合性の対象とならないものもあります。
- FHIR ストアのベース URL と一致しない URL で指定された外部参照。
- ビジネス ID で指定された論理参照。
- 人が読める表示文字列のみが含まれる参照。
- FHIR 拡張機能内の参照は、
complexDataTypeReferenceParsing
がENABLED
に設定されている場合のみ、参照整合性の対象となります。これは新しい FHIR ストアのデフォルト値です。
特定の API メソッドでは、次のような状況で参照整合性の違反が発生することがあります。
- FHIR では、
[resource type]/[resource ID]/_history/[version ID]
の形式を使用して、リソースの特定の履歴バージョンを参照できます。参照整合性は作成時または更新時の参照に適用されますが、Resource-purge
メソッドを使用してリソースの履歴バージョンを削除すると、新規の参照はチェックされません。 - FHIR
import
メソッドでは、参照整合性は適用されません。この方法は、参照整合性が不要な場合や、入力が参照整合性を満たしていることがわかっている場合に使用できます。後者の場合、すべてのリソースが正常にインポートされると、FHIR ストア内の参照は結果整合性になります。 deidentify
メソッドでは、フィルタを使用してリソースのサブセットを選択することで、操作中に一時的に、または恒久的に、参照整合性を満たさない状態で FHIR ストアを作成できます。
整合性が適用されているものの以前のケースのいずれかに違反している状態では、無効な参照を修正または削除しない限り、リソースjの更新が拒否されます。このような状態は、整合性を前提としたストアを使用するアプリケーションにも問題を引き起こす可能性があります。
格納されたリソース
FHIR 仕様には、すべての格納されたリソースがその格納しているリソースの任意の場所から参照され(他の格納されたリソースからの参照を含む)、格納されたリソースへのすべての参照は有効である必要があるという制約があります。この制約は参照整合性とは別に適用され、個々のリソースの FHIRPath 不変条件で定義されているため、無効にすることはできません。