次の方法で共有


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

この要求から、各リソースに識別子と患者のアクティブな状態のみが含まれる患者のバンドルを取得します。 この応答のリソースには、不完全な結果セットであることを示すSUBSETTEDmeta.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

:exactstring パラメーターに使用し、大文字と小文字の区別や文字連結など、パラメーターに正確に一致する結果が返されます。

GET [your-fhir-server]/Patient?name:exact=Jon

この要求では、Jon と名前が完全に同じ Patient リソースが返されます。 リソースに JonathanjoN などの名前の患者がいても、指定した値と完全一致しないため、検索ではそのリソースは無視され、スキップされます。

:contains

:containsstring パラメーターに使用し、指定した値が、検索対象フィールド内の文字列のいずれかの場所で部分的に一致するリソースを検索します。 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 つの一般的な用途は、特定の患者のすべての受診を見つけることです。 Patients には、多くの場合、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 検索パラメーターがあります。 特定のcodeObservationによって参照されているすべての Patient リソースを検索するには、次のコマンドを使用します。

GET [base]/Patient?_has:Observation:patient:code=527

この要求は、コード 527Observationによって参照される 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 の許可を得て使用しています。