FHIR 検索の例
さまざまな検索パラメーター、修飾子、チェーン検索と逆チェーン検索、複合 POST
検索、検索要求などを特徴とする Fast Healthcare Interoperability Resources (FHIR®) 検索 API 呼び出しの例を次に示します。 FHIR 検索の概念の概要については、「 FHIR 検索の概要」を参照してください。
検索結果のパラメーター
_include
_include
では、リソース インスタンスを検索し、ターゲット リソース インスタンスによって参照される他のリソースを結果に含めることができます。 たとえば、 を使用 _include
してリソースの MedicationRequest
クエリを実行し、検索を特定の患者の処方箋に制限できます。 その後、FHIR サービスは、参照先Patient
のMedicationRequest
リソースと同様にリソースを返します。 次の例では、要求によって、データベース内のすべての 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.2
にlt
設定します。
複合検索パラメーターを使用して、論理 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 の許可を得て使用しています。