Azure API for FHIR の FHIR 検索例
重要
Azure API for FHIR は、2026 年 9 月 30 日に廃止されます。 移行戦略に従って、その日までに Azure Health Data Services FHIR® サービスに切り替えてください。 Azure API for FHIR が廃止されたため、2025 年 4 月 1 日以降、新しいデプロイは許可されません。 Azure Health Data Services FHIR サービス は、お客様が他の Azure サービスへの統合を使用して、FHIR、DICOM、および MedTech サービスを管理できるようにする、進化したバージョンの Azure API for FHIR です。
検索パラメーターと修飾子、チェーンとリバース チェーン検索、複合検索、検索結果の次のエントリ セットの表示、 POST
要求による検索など、Fast Healthcare Interoperability Resources (FHIR®) 検索操作の使用例を次に示します。 検索の詳細については、「FHIR 検索の概要」を参照してください。
検索結果のパラメーター
_include
_include
を使用してリソース全体を検索し、リソースの指定したパラメーターが含まれるものを見つけます。 たとえば、MedicationRequest
リソース全体を検索して、特定の患者 (reference
パラメーター patient
) の処方箋に関する情報が含まれるものだけを見つけることができます。 次の例では、MedicationRequests
から参照されているすべてのMedicationRequests
とすべての患者をプルします。
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Note
_include と _revinclude は、100 項目に制限されます。
_revinclude
_revinclude
を使用すると、_include
とは逆方向を検索できます。 たとえば、患者を検索し、次に逆方向で、その患者を参照するすべての受診を含めることができます。
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_elements
_elements
を使用して検索結果をフィールドのサブセットに絞り込み、不要なデータを省略することで応答サイズを削減します。 このパラメーターは、基本要素のコンマ区切りのリストを受け取ります。
GET [your-fhir-server]/Patient?_elements=identifier,active
この要求から、各リソースに識別子と患者のアクティブな状態のみが含まれる患者のバンドルを取得します。 この応答のリソースには、不完全な結果セットであることを示すSUBSETTED
のmeta.tag
値が含まれています。
検索修飾子
:not
:not
を使用して、属性が true ではないリソースを見つけることができます。 たとえば、性別が女性ではない患者を検索できます。
GET [your-fhir-server]/Patient?gender:not=female
戻り値として、空の値 (性別なしで指定されているエントリ) を含め、性別が女性ではないすべての患者エントリを取得します。 これは、性別が男性である患者を検索するのとは異なります。その場合は、特定の性別が指定されていないエントリは含まれません。
:missing
:missing
を使用すると、値が true
の場合は、指定した要素の値を持たないすべてのリソースが返され、値が false
の場合は、指定した要素が含まれるすべてのリソースが返されます。 単純なデータ型要素の場合、 :missing=true
は要素が拡張機能を持つが空の値を持つすべてのリソースで一致します。 次の例は、生年月日に関する情報が不足しているすべての Patient
リソースを検索する方法を示しています。
GET [your-fhir-server]/Patient?birthdate:missing=true
:exact
:exact
は string
パラメーターに使用し、大文字と小文字の区別や文字連結など、パラメーターに正確に一致する結果が返されます。
GET [your-fhir-server]/Patient?name:exact=Jon
この要求では、Jon
と名前が完全に同じ Patient
リソースが返されます。 リソースに Jonathan
や joN
などの名前の患者がいても、指定した値と完全一致しないため、検索ではそのリソースは無視され、スキップされます。
:contains
:contains
は string
パラメーターに使用し、指定した値が、検索対象フィールド内の文字列のいずれかの場所で部分的に一致するリソースを検索します。 contains
は大文字と小文字を区別せず、文字の連結を許可します。 次に例を示します。
GET [your-fhir-server]/Patient?address:contains=Meadow
この要求は、文字列 "Meadow" を含む値を持つaddress
フィールドを持つすべてのPatient
リソースを返します。 これは、"Meadowers" や "59 Meadow ST" などの値が含まれる住所が検索結果として返される可能性があることを意味します。
チェーン検索
複数の参照パラメーターを対象とする一連の検索操作を実行するには、一連の参照パラメーターをピリオド .
を使用して 1 つずつサーバー要求に追加することで "チェーン" できます。 たとえば、特定の name
が含まれる Patient
リソースへの subject
参照を持つすべての DiagnosticReport
リソースを表示する場合は、次のように指定します。
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
この要求では、"Sarah" という名前の患者件名を持つ DiagnosticReport
リソースがすべて返されます。 フィールド Patient
の後のピリオド .
により、subject
パラメーターの参照パラメーターでチェーン検索が実行されます。
通常の検索 (チェーン検索ではない) のもう 1 つの一般的な用途は、特定の患者のすべての受診を見つけることです。 Patient
s には、多くの場合、1 つ以上の Encounter
と件名があります。 次の例では、指定されたid
を持つPatient
について、すべてのEncounter
リソースを検索します。
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
チェーン検索を使用すると、birthdate
など、特定のPatient
情報に一致するすべてのEncounter
リソースを検索できます。
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
これにより、指定した生年月日値を持つすべての患者 Encounter
リソースを検索できます。
さらに、チェーン検索は、記号 &
を使用することで、1 回の要求で複数回実行できるため、1 回の要求で複数の条件を検索することが可能です。 このような場合、チェーン検索では、すべての条件を一度に満たす条件を検索するのではなく、各パラメーターを "個別に" 検索します。
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
このため、"Sarah" が generalPractitioner
であり、generalPractitioner
の住所が WA 州のすべての Patient
リソースが返されます。 言い換えると、患者が州 NY から Sarah を持っていて、州 WA の Bill が両方とも患者の generalPractitioner
として参照されている場合、両方が返されます。
検索がグループとしてすべての条件を対象とする AND
操作である必要があるシナリオについては、 Composite 検索の例を参照してください。
逆チェーン検索
チェーン検索を使用すると、参照するリソースのプロパティに基づいてリソースを検索できます。 逆チェーン検索を使用すると、逆の方法で行うことができます。 _has
パラメーターを使用して、それらを参照するリソースのプロパティに基づいてリソースを検索できます。 たとえば、 Observation
リソースには、Patient リソースを参照 patient
検索パラメーターがあります。 特定のcode
でObservation
によって参照されているすべての Patient リソースを検索するには、次のコマンドを使用します。
GET [base]/Patient?_has:Observation:patient:code=527
この要求は、コード 527
でObservation
によって参照される Patient リソースを返します。
さらに、逆チェーン検索では、再帰構造を持つことができます。 たとえば、次の例では、観察が特定のユーザー janedoe
からの監査イベントを持つObservation
を持つすべての患者を検索します。
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Note
Azure API for FHIR と、Azure Cosmos DB によってサポートされるオープンソースの FHIR サーバーでは、チェーン検索と逆チェーン検索は MVP 実装です。 Azure Cosmos DB でチェーン検索を実現するために、この実装では、検索式を処理し、サブクエリを発行して、一致したリソースを解決します。 これは、式の各レベルに対して行われます。 クエリで 100 を超える結果が返される場合は、エラーがスローされます。
複合検索
一度に複数の条件を満たすリソースを検索するには、1 つのパラメーター値のシーケンスをシンボル $
に結合する複合検索を使用します。 結果は、結合された検索パラメーターで指定されたすべての条件に一致するリソースの積集合になります。 このような検索パラメーターは複合検索パラメーターと呼ばれ、入れ子構造の複数のパラメーターを結合する新しいパラメーターを定義します。 たとえば、次の検索では、カリウム値が 9.2 以下のObservation
を含むすべてのDiagnosticReport
リソースが検索されます。
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
この要求では、2823-3
のコードが含まれる成分を指定します。この場合はカリウムになります。 $
記号の後に、"以下" の lt
、カリウムの値の範囲の 9.2
を使用して、成分の値の範囲を指定します。
次のエントリ セットを検索する
1 つの検索クエリで返すことができるエントリの最大数は 1000 です。 検索クエリに一致するエントリが 1,000 を超える場合は、次の手順を使用して、1000 を超えるエントリを表示できます。
次のBundle
の結果のように、継続トークンurl
値をsearchset
で使用します。
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
次に、 relation: next
フィールドの下にある指定された URL に対して GET 要求を実行します。
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
これにより、検索結果の次のエントリ セットが返されます。 searchset
は検索結果エントリの完全なセットであり、継続トークンurl
は、最初の 1000 に表示されないエントリを取得するためにサーバーによって提供されるリンクです。
POST を使用した検索
前述したすべての検索例は、 GET
要求で使用されています。 _search
を使用してPOST
要求を使用して検索操作を実行することもできます。
POST [your-fhir-server]/Patient/_search?_id=45
この要求は、id
値が 45 のPatient
リソースを返します。 GET 要求と同様に、サーバーは、条件を満たすリソースのセットを決定し、HTTP 応答でバンドル リソースを返します。
フォーム本文としてクエリ パラメーターが送信される POST を使用して検索するもう 1 つの例を次に示します。
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
次のステップ
この記事では、さまざまな検索パラメーター、修飾子、FHIR 検索ツールを使用して検索する方法について説明しました。 FHIR 検索の詳細については、次を参照してください
Note
FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。