FHIR 検索の概要
高速ヘルスケア相互運用性リソース (FHIR®) 仕様では、FHIR サーバー データベース内のリソースに対してクエリを実行するための API が定義されています。 この記事では、FHIR でのデータのクエリの主要な側面について説明します。 FHIR 検索 API の詳細については、HL7 FHIR 検索 のドキュメントを参照してください。
この記事では、FHIR サーバーの URL を表す {{FHIR_URL}}
プレースホルダーを使用したサンプル API 呼び出しの FHIR 検索構文について説明します。 FHIR サービスが Azure Health Data Services 内にある場合、この URL は https://<WORKSPACE-NAME>-<FHIR-SERVICE-NAME>.fhir.azurehealthcareapis.com
されます。
FHIR 検索は、特定のリソースの種類、指定されたコンパートメント、または FHIR サーバー データベース内のすべてのリソースに対して実行できます。 FHIR で検索を実行する最も簡単な方法は、GET
要求を使用する方法です。 たとえば、データベース内のすべての Patient
リソースをプルする場合は、次の要求を使用できます。
GET {{FHIR_URL}}/Patient
POST
を使用して検索することもできます。 POST
を使用して検索する場合は、検索パラメーターが要求の本文に配信されます。 これにより、より長くより複雑な一連のパラメーターを含むクエリを簡単に送信できます。
POST
またはGET
を使用すると、検索要求が成功した場合、検索から返されたリソース インスタンスを含む FHIR searchset
バンドルを受け取ります。 検索が失敗した場合は、OperationOutcome
応答にエラーの詳細が表示されます。
以降のセクションでは、FHIR でのリソースのクエリのさまざまな側面について説明します。 これらのトピックを確認したら、FHIR 検索のサンプル ページを参照してください。このページには、さまざまな FHIR 検索方法の例が記載されています。
検索パラメーター
FHIR で検索を実行すると、特定の条件に一致するリソースがデータベースで検索されます。 FHIR API は、検索条件を微調整するための豊富な一連の検索パラメーターを指定します。 FHIR の各リソースは一連の要素として情報を運び、検索パラメーターはこれらの要素の情報をクエリするために機能します。 FHIR 検索 API 呼び出しで、要求の検索パラメーターとリソース インスタンスに格納されている対応する要素値の間に正の一致が見つかった場合、FHIR サーバーは、検索条件を満たす要素を持つリソース インスタンスを含むバンドルを返します。
FHIR 仕様では、検索パラメーターごとに、使用できる data 型 を定義します。 さまざまなデータ型に対する FHIR サービスのサポートの概要を次に示します。
検索パラメーターの種類 | Azure Health Data Services の FHIR サービス | Azure API for FHIR | コメント |
---|---|---|---|
数値 | はい | はい | |
日付 | はい | あり | |
string | はい | はい | |
token | はい | はい | |
reference | はい | はい | |
複合 | 部分的 | Partial | この記事では、サポートされている複合型の一覧を示します。 |
quantity | はい | はい | |
uri | はい | はい | |
スペシャル | いいえ | いいえ |
一般的な検索パラメーター
FHIR のすべてのリソースに適用される一般的な検索パラメーターがあります。 これらは、FHIR サービスでのサポートと共に、次のように一覧表示されます。
一般的な検索パラメーター | Azure Health Data Services の FHIR サービス | Azure API for FHIR | コメント |
---|---|---|---|
_id |
はい | イエス | |
_lastUpdated |
イエス | イエス | |
_tag |
イエス | イエス | |
_type |
イエス | イエス | |
_security |
イエス | イエス | |
_profile |
イエス | イエス | |
_has |
イエス | はい | |
_query |
いいえ | いいえ | |
_filter |
いいえ | いいえ | |
_list |
いいえ | いいえ | |
_text |
いいえ | いいえ | |
_content |
いいえ | いいえ |
リソース固有のパラメーター
Azure Health Data Services の FHIR サービスは、FHIR 仕様で定義されているほぼすべてのリソース固有の検索パラメーターをサポートしています。 サポートされていない検索パラメーターは、次のリンクに一覧表示されます。
次の要求を使用して、FHIR 機能ステートメントの検索パラメーターの現在のサポートを確認することもできます。
GET {{FHIR_URL}}/metadata
機能ステートメントでサポートされている検索パラメーターを表示するには、 リソース固有の検索パラメーターの場合は CapabilityStatement.rest.resource.searchParam
に、すべてのリソースに適用される検索パラメーターの場合は CapabilityStatement.rest.searchParam
に移動します。
Note
Azure Health Data Services の FHIR サービスでは、基本 FHIR 仕様で定義されていない検索パラメーターのインデックスが自動的に作成されることはありません。 FHIR サービスは、 カスタム検索パラメーターをサポートします。
複合検索パラメーター
FHIR での複合検索を使用すると、要素ペアを論理的に接続されたユニットとして検索できます。 たとえば、患者の体高が 60 インチを超える観測値を検索する場合は、観測の 1 つのプロパティに体高コードと 60 インチより大きい値が含まれていることを確認します (値は体高のみに関係する必要があります)。 たとえば、高さコードが 60 インチを超える高さコード と 腕の長さのコードを使用して、観測値に正の一致を行う必要はありません。 複合検索パラメーターは、事前に指定された要素のペアを検索することでこの問題を回避します。この要素のペアの値はどちらも正の一致が発生する検索条件を満たしている必要があります。
Azure Health Data Services の FHIR サービスでは、複合検索に対して次の検索パラメーターの種類のペアリングがサポートされています。
- 参照、トークン
- トークン、日付
- トークン、数字、数字
- トークン、数量
- トークン、文字列
- トークン、トークン
詳細については、HL7 の「 複合検索パラメーター」ドキュメントを参照してください。
Note
FHIR 仕様に従って、複合検索パラメーターでは修飾子はサポートされていません。
修飾子とプレフィックス
修飾子を使用すると、追加の条件で検索パラメーターを修飾できます。 FHIR 修飾子とその FHIR サービスでのサポートの表を次に示します。
修飾子 | Azure Health Data Services の FHIR サービス | Azure API for FHIR | コメント |
---|---|---|---|
:missing |
はい | イエス | |
:exact |
イエス | イエス | |
:contains |
イエス | イエス | |
:text |
イエス | はい | |
:type (参照) |
はい | イエス | |
:not |
イエス | はい | |
:below (URI) |
はい | はい | |
:above (URI) |
はい | はい | |
:in (トークン) |
いいえ | いいえ | |
:below (トークン) |
いいえ | いいえ | |
:above (トークン) |
いいえ | いいえ | |
:not-in (トークン) |
いいえ | いいえ | |
:identifier |
いいえ | いいえ |
特定の順序 (数値、日付、数量) を持つ検索パラメーターの場合は、パラメーター値の前に prefix を使用して検索条件を絞り込むことができます (たとえば、プレフィックスgt
が "より大きい" を意味するPatient?_lastUpdated=gt2022-08-01
)。 Azure Health Data Services の FHIR サービスでは、FHIR 標準で定義されているすべてのプレフィックスがサポートされています。
検索結果のパラメーター
FHIR は、検索から返される情報の管理に役立つ一連の検索結果パラメーターを指定します。 FHIR で検索結果パラメーターを使用する方法の詳細については、 HL7 Web サイトを参照してください。 FHIR 検索結果パラメーターとその FHIR サービスでのサポートの表を次に示します。
検索結果のパラメーター | Azure Health Data Services の FHIR サービス | Azure API for FHIR | コメント |
---|---|---|---|
_elements |
はい | イエス | |
_count |
イエス | はい | _count は 1,000 リソースに制限されています。 1000 より大きく設定されている場合は、1000 のみが返され、警告がバンドルに含まれます。 |
_include |
はい | はい | _include で取得される項目は 100 に制限されます。 _include PaaS および Azure Cosmos DB 上の OSS では、 :iterate (#2137)はサポートされていません。 |
_revinclude |
はい | はい | _revinclude で取得される項目は 100 に制限されます。 _revinclude PaaS および Azure Cosmos DB 上の OSS では、 :iterate (#2137)はサポートされていません。 不適切な要求の状態コードも正しくありません: #1319。 |
_summary |
はい | はい | |
_total |
部分的 | Partial | _total=none および _total=accurate |
_sort |
部分的 | Partial | sort=_lastUpdated は FHIR サービスでサポートされています。 FHIR サービスと OSS SQL DB FHIR サーバーでは、文字列と dateTime フィールドによる並べ替えがサポートされています。 2021 年 4 月 20 日以降に作成された Azure API for FHIR および OSS Azure Cosmos DB データベースでは、姓、生年月日、臨床日で並べ替えがサポートされています。 |
_contained |
いいえ | いいえ | |
_containedType |
いいえ | いいえ | |
_score |
いいえ | いいえ |
注意:
- 既定では、
_sort
はレコードを昇順に並べ替えられます。 プレフィックス-
を使用して、降順で並べ替えることもできます。 FHIR サービスでは、一度に 1 つのフィールドでのみ並べ替えることができます。 - FHIR サービスでは、リヴィンクルードを使用したワイルドカード検索がサポートされています。 revinclude クエリに "." クエリ パラメーターを追加すると、ソース リソースにマップされているすべてのリソースを参照するように FHIR サービスに指示されます。
既定では、Azure Health Data Services の FHIR サービスは、厳密ではない処理に設定されています。 これは、不明なパラメーターまたはサポートされていないパラメーターがサーバーによって無視されることを意味します。 厳密な処理を使用する場合は、Prefer
ヘッダーを含めて handling=strict
を設定できます。
チェーンおよびリバース チェーン検索
チェーン検索を使用すると、別のリソースへの参照を持つリソースに対して、絞り込みクエリを実行できます。 たとえば、患者の名前が Jane である結果を探す場合は、次のコマンドを使用します。
GET {{FHIR_URL}}/Encounter?subject:Patient.name=Jane
上記の要求の .
は、チェーン検索のパスをターゲット パラメーター (この場合name
) に誘導します。
同様に、_has
パラメーターを使用してリバース チェーン検索を実行できます。 これにより、目的のリソースを参照する他のリソースの条件を指定して、リソース インスタンスを取得できます。 チェーン検索とリバース チェーン検索のその他の例については、「FHIR 検索の例」ページを参照してください。
改ページ位置の自動修正
前述のように、FHIR 検索の結果は、 searchset
バンドルで提供されるリンクのページ分割された形式で使用できます。 既定では、FHIR サービスでは 1 ページあたり 10 件の検索結果が表示されますが、 _count
パラメーターを設定することで、これを増減できます。 1 つのページに収まるよりも多くの一致がある場合、バンドルには next
リンクが含まれます。 next
リンクから繰り返しフェッチすると、後続の結果ページが生成されます。 _count
パラメーター値は 1000 を超えることはできません。
現時点では、Azure Health Data Services の FHIR サービスは next
リンクのみをサポートしており、検索から返されるバンドル内の first
、last
、または previous
リンクはサポートしていません。
よく寄せられる質問
R4 サポートされていない検索パラメーターの "部分的なサポート" とはどういう意味ですか?
リソース固有の検索パラメーターの中には、複数のデータ型が含まれているものもあります。また、Azure Health Data Services の FHIR サービスでは、それらのいずれかのデータ型でのみその検索パラメーターをサポートできます。 たとえば、Condition-abatement-age と Condition-onset-age は、Age と Range という 2 つの異なるデータ型をカバーします。ただし、Azure Health Data Services の FHIR サービスでは、Range ではこれら 2 つの検索パラメーターがサポートされていますが、Age ではサポートされていません。
監視の$lastn操作はサポートされていますか?
これはサポートされていません。 別の方法としては、_countを使用してページごとに返されるリソースを制限し、_sortを使用して降順で結果を提供します。
次のステップ
FHIR 検索の基本について学習したので、検索パラメーター、修飾子、その他の FHIR 検索メソッドを使用して検索する方法の詳細について、検索サンプルのページを参照してください。
Note
FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。