次の方法で共有


FHIR 検索の例

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

検索結果のパラメーター

_include

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

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

注意

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

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

検索修飾子

:not

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

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

その代わりに、要素値が ではないfemaleすべてのPatientリソースgenderを取得します。これには、性別値が指定されていない患者も含まれます。 これは、性別の値を持つリソースを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

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

:contains

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

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

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

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

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

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

FHIR 検索のもう 1 つの一般的な用途は、特定の患者のすべての検出です。 指定された を使用して を参照PatientするリソースをEncounter通常の (チェーンされていない) 検索をid実行するには:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

複合検索パラメーターを使用して、論理 OR を使用して複数のコンポーネント コード値数量をフィルター処理することもできます。 たとえば、拡張期血圧が 90 を超える、または収縮期血圧が 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 を超える場合があり、最初の 1000 エントリの後に次の結果セットを取得する必要がある場合があります。 このような場合は、検索から返されたバンドルでsearchset継続 (つまり) トークンurl値を使用します。 "next"

    "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 されます。 ただし、 パラメーターを使用して POST FHIR 検索 API 呼び出しを _search 行うこともできます。

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 検索の詳細については、次を参照してください。

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