次の方法で共有


FHIR 検索の例

さまざまな検索パラメーター、修飾子、チェーン検索と逆チェーン検索、複合検索、 POST 検索要求などを特徴とする Fast Healthcare Interoperability Resources (FHIR®) 検索 API 呼び出しの例を次に示します。 FHIR 検索の概念の一般的な概要については、「FHIR Search の概要を参照してください。

検索結果のパラメーター

_include

_include では、リソース インスタンスを検索し、ターゲット リソース インスタンスによって参照される他のリソースの結果に含めることができます。 たとえば、 _include を使用して MedicationRequest リソースを照会し、特定の患者の処方箋に検索を制限できます。 その後、FHIR サービスは、 MedicationRequest リソースと参照される Patient リソースを返します。 次の例では、要求によって、データベース内のすべての MedicationRequest リソース インスタンスと、 MedicationRequest インスタンスによって参照されるすべての患者がプルされます。

 GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient

Note

Azure Health Data Services の FHIR サービスでは、 _include_revinclude を使用して検索を制限し、最大 100 項目を返します。

_revinclude

_revinclude では、リソース インスタンスを検索し、ターゲット リソース インスタンスを参照する他のリソースを結果に含めることができます。 たとえば、患者を検索し、逆に患者を参照するすべての出会いを含めることができます。

GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject

_elements

_elements は、検索結果の情報を、リソースの種類に対して定義された要素のサブセットに絞り込みます。 _elements パラメーターは、基本要素のコンマ区切りのリストを受け取ります。

GET {{FHIR_URL}}/Patient?_elements=identifier,active

上記の要求は、患者のバンドルを返します。 各エントリには、識別子と患者のアクティブな状態のみが含まれます。 応答のエントリには、リソースに定義されているすべての要素が含まれていないことを示すSUBSETTEDmeta.tag値が含まれています。

検索修飾子

:not

:not を使用すると、特定の値を持たない要素を持つリソースを検索できます。 たとえば、女性ではない患者を検索できます。

GET {{FHIR_URL}}/Patient?gender:not=female

その代わりに、性別値が指定されていない患者を含め、gender要素値がfemaleされていないすべてのPatientリソースを取得します。 これは、指定された性別を持たない患者を無視するため、male性別値を持つPatientリソースを検索するのとは異なります。

:missing

:missing は、 :missing=trueするときに、指定された要素の値を持たないすべてのリソースを返します。 さらに、:missing:missing=falseすると、指定した要素を含むすべてのリソースが返されます。 単純なデータ型要素の場合、 :missing=true 要素が存在するが空の値を持つすべてのリソースで一致します。 たとえば、birthdateに関する情報が不足しているすべてのPatientリソースを検索する場合は、次の呼び出しを行うことができます。

GET {{FHIR_URL}}/Patient?birthdate:missing=true

:exact

:exact は、 string データ型を持つ要素を検索するために使用され、パラメーター値が要素値の大文字と小文字の完全な文字シーケンスと正確に一致する場合は正の値を返します。

GET {{FHIR_URL}}/Patient?name:exact=Jon

この要求は、Jongivenまたはfamily名を持つPatientリソースを返します。 JonathanJONなどの名前を持つ患者がいる場合、名前が指定された値と正確に一致しないため、検索はこれらのリソースを無視します。

:contains

:contains は、 string 型要素のクエリに使用され、フィールド内の任意の場所で指定された値との一致を許可します。 contains は大文字と小文字を区別せず、他の文字と連結された一致する文字列を認識します。 次に例を示します。

GET {{FHIR_URL}}/Patient?address:contains=Meadow

この要求は、文字列 "Meadow" を含むaddress要素フィールドを持つすべてのPatientリソースを返します (大文字と小文字は区別されません)。 つまり、正の一致を返す "メドウズ レーン"、"Pinemeadow Place"、"メドウラーク セント" などの値を持つアドレスを持つことができます。

参照先リソースに含まれる要素を対象とする検索操作を実行するには、一連のパラメーターを .と共に "チェーン" できます。 たとえば、nameで指定された患者へのsubject参照を持つすべてのDiagnosticReport リソースを表示する場合は、次のクエリを使用します。

 GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah

この要求は、"Sarah" という名前の患者サブジェクトを持つすべての DiagnosticReport リソースを返します。 .は、チェーン検索を参照されているPatient リソース内のname要素にポイントします。

FHIR 検索のもう 1 つの一般的な用途は、特定の患者のすべての出会いを見つけることです。 特定のidを持つPatientを参照するEncounterリソースを定期的に (チェーンされていない) 検索を実行するには、次のコマンドを使用します。

GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

チェーン検索を使用すると、詳細が検索パラメーターと一致する患者を参照するすべての Encounter リソースを検索できます。 次の例では、 birthdateによって絞り込まれた患者を参照する出会いを検索する方法を示します。

GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20

これにより、指定したbirthdate値を持つ患者を参照するすべてのEncounterインスタンスが返されます。

さらに、 & 演算子を使用して複数のチェーン検索を開始できます。これにより、1 つの要求で複数の参照を検索できます。 &の場合、チェーン検索は各要素値を "独立して" スキャンします。

GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

これにより、generalPractitionerとして "Sarah" への参照を持つすべてのPatient リソースと、ワシントン州の住所を持つgeneralPractitionerへの参照が返されます。 言い換えると、患者にニューヨーク州の Sarah という名前の generalPractitioner があり、ワシントン州の Bill という名前の別の generalPractitioner がある場合、両方とも、この検索を行うときに肯定的な一致の条件を満たします。

検索で、ペアの要素値を厳密にチェックする論理 AND 条件が必要なシナリオについては、次の サンプル検索 例を参照してください。

FHIR で逆チェーン検索を使用すると、他のリソースによって参照されるターゲット リソース インスタンスを検索できます。 言い換えると、リソースを参照するリソースのプロパティに基づいてリソースを検索できます。 これは、 _has パラメーターを使用して行います。 たとえば、Observation リソースには、Patient リソースへの参照をチェックする検索パラメーター patientがあります。 特定のcodeを持つObservationによって参照されているすべてのPatient リソースを検索するには、次のコードを使用します。

GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527

この要求は、コード 527Observationリソースによって参照されるPatientリソースを返します。

さらに、逆チェーン検索は再帰的な構造を持つことができます。 たとえば、janedoeという名前の特定の開業医からAuditEventによって観察が参照されるObservationによって参照されているすべての患者を検索する場合は、次のコマンドを使用します。

GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

論理的に接続されたペアとしてグループ化された要素を含むリソースを検索するために、FHIR は複合検索を定義し、単一のパラメーター値を $ 演算子と結合して、接続されたパラメーターのペアを形成します。 複合検索では、要素値の積集合がペアの検索パラメーターに設定されているすべての条件を満たす場合に、正の一致が発生します。 次の例では、9.2未満のカリウム値を含むすべてのDiagnosticReport リソースに対してクエリを実行します。

GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

この場合のペア要素は、(resultとして参照されるObservation リソースからの) code要素と、codeに接続されたvalue要素になります。 $演算子を使用してコードに従って、value条件をlt ("より小さい" の場合) 9.2 (カリウム mmol/L 値の場合) として設定します。

複合検索パラメーターを使用して、論理 OR を使用して複数のコンポーネント コード値の数量をフィルター処理することもできます。 たとえば、拡張期血圧が 90 を超える、または systolic 血圧が 140 を超える観察を照会するには、次のようにします。

GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140

,が 2 つの条件間の論理 OR 演算子として機能する方法に注意してください。

次のエントリ セットを表示する

検索クエリから一度に返すことができるリソースの最大数は 1000 です。 ただし、検索クエリに一致するリソース インスタンスが 1,000 を超える場合があり、最初の 1,000 エントリの後に次の結果セットを取得する必要があります。 この場合は、検索から返されたsearchset バンドルの継続 (つまり、"next") トークンurl値を使用します。

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
        }
    ],

指定した URL に対して GET 要求を行います。

GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

これにより、検索結果の次のエントリ セットが返されます。 searchset バンドルは検索結果エントリの完全なセットであり、継続トークン urlは FHIR サービスによって提供されるリンクであり、最初のサブセットに収まらないエントリを取得します (1 ページに返されるエントリの最大数に制限があるため)。

を使用して検索する POST

ここで説明するすべての検索例では、 GET 要求を使用します。 ただし、次のように、_search パラメーターでPOSTを使用して FHIR 検索 API 呼び出しを行うこともできます。

POST {{FHIR_URL}}/Patient/_search?_id=45

この要求は、指定されたid値を持つPatient リソース インスタンスを返します。 GET要求と同様に、サーバーは条件を満たすリソース インスタンスを決定し、HTTP 応答でバンドルを返します。

POSTで検索するもう 1 つの機能は、クエリ パラメーターをフォーム本文として送信できる点です。

POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

次のステップ

この記事では、検索パラメーター、修飾子、およびその他のメソッドを使用して FHIR で検索する方法について説明しました。 FHIR 検索の詳細については、以下を参照してください。

Note

FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。