FHIR 검색 예제

다음은 다양한 검색 매개 변수, 한정자, 체인 및 역방향 체인 검색, 복합 검색 POST , 검색 요청 등을 포함하는 FHIR®(Fast Healthcare Interoperability Resources) 검색 API 호출의 몇 가지 예입니다. FHIR 검색 개념에 대한 일반적인 소개는 FHIR 검색 개요를 참조하세요.

검색 결과 매개 변수

_include

_include 를 사용하면 리소스 인스턴스를 검색하고 대상 리소스 인스턴스에서 참조하는 다른 리소스를 결과에 포함할 수 있습니다. 예를 들어 를 사용하여 _include 리소스를 MedicationRequest 쿼리하고 특정 환자의 처방전으로 검색을 제한할 수 있습니다. 그런 다음 FHIR 서비스는 리소스와 참조된 Patient 리소스를 반환 MedicationRequest 합니다. 아래 예제에서 요청은 데이터베이스의 모든 MedicationRequest 리소스 인스턴스와 인스턴스에서 참조 MedicationRequest 하는 모든 환자를 끌어올 것입니다.

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

참고

Azure Health Data Services의 FHIR 서비스는 및 _revinclude 를 사용하여 검색 _include 을 제한하여 최대 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

그 대가로 요소 값이 gender 아닌 모든 Patient 리소스를 가져올 수 있으며, 성별 값이 지정되지 female않은 환자를 포함합니다. 이는 지정된 성별이 없는 환자를 무시하기 때문에 성별 값이 있는 리소스 male 를 검색 Patient 하는 것과 다릅니다.

:missing

:missing 는 때 지정된 요소 :missing=true에 대한 값이 없는 모든 리소스를 반환합니다. 또한 이면 :missing 지정된 요소를 :missing=false포함하는 모든 리소스를 반환합니다. 단순 데이터 형식 요소의 경우 는 :missing=true 요소가 있지만 빈 값이 있는 모든 리소스에서 일치합니다. 예를 들어 에 대한 정보가 누락된 모든 Patient 리소스를 찾으려면 다음을 birthdate호출할 수 있습니다.

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

:exact

:exact 는 데이터 형식이 있는 string 요소를 검색하는 데 사용되며 매개 변수 값이 요소 값의 대/소문자 및 전체 문자 시퀀스와 정확하게 일치하는 경우 양수를 반환합니다.

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

이 요청은 또는 family 이름이 인 리소스를 given 반환 Patient 합니다Jon. 또는 JON과 같은 Jonathan 이름을 가진 환자가 있는 경우 이름이 지정된 값과 정확히 일치하지 않으므로 검색에서 해당 리소스를 무시합니다.

:contains

:contains 는 형식 요소를 쿼리 string 하는 데 사용되며 필드 내의 모든 위치에서 지정된 값과 일치하도록 허용합니다. contains 는 대/소문자를 구분하지 않으며 다른 문자와 연결된 일치하는 문자열을 인식합니다. 예:

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

이 요청은 문자열 "Meadow"(대/소문자를 구분하지 않음)가 포함된 요소 필드가 있는 모든 Patient 리소스 address 를 반환합니다. 즉, 양수 일치 항목을 반환하는 "메도우 레인", "Pinemeadow Place" 또는 "Meadowlark St"와 같은 값이 있는 주소를 가질 수 있습니다.

참조된 리소스 내에 포함된 요소를 포함하는 검색 작업을 수행하려면 일련의 매개 변수를 와 .함께 "연결"할 수 있습니다. 예를 들어 로 지정된 name환자에 대한 참조를 사용하여 subject 모든 DiagnosticReport 리소스를 보려는 경우

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

이 요청은 "Sarah"라는 환자 주체가 있는 모든 DiagnosticReport 리소스를 반환합니다. . 연결된 검색이 참조된 리소스 내의 name 요소를 가리킵니다Patient.

FHIR 검색의 또 다른 일반적인 사용은 특정 환자에 대한 모든 만남을 찾는 것입니다. 일반(비체인)을 수행하려면 지정된 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

이렇게 하면 지정된 값을 가진 환자를 참조하는 모든 Encounter 인스턴스가 반환됩니다 birthdate .

또한 연산자를 사용하여 여러 개의 연결된 검색을 & 시작할 수 있습니다. 이를 통해 하나의 요청에서 여러 참조에 대해 검색할 수 있습니다. 이러한 경우 &에서 연결된 검색은 각 요소 값에 대해 "독립적으로" 검색합니다.

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

이렇게 하면 "Sarah"에 대한 참조가 있는 모든 Patient 리소스를 워싱턴 주에 주소가 있는 에 대한 참조 generalPractitionergeneralPractitioner 반환합니다. 즉, 환자가 generalPractitioner 뉴욕 주에서 사라라는 이름과 워싱턴 주에서 빌이라는 또 다른 generalPractitioner 이름이 있다면,이 검색을 할 때 긍정적 인 일치를위한 조건을 충족시킬 것입니다.

쌍을 이루는 요소 값을 엄격하게 확인하는 논리적 AND 조건이 검색에 필요한 시나리오는 아래 의 복합 검색 예제를 참조하세요.

FHIR에서 역방향 체인 검색을 사용하면 다른 리소스에서 참조하는 대상 리소스 인스턴스를 검색할 수 있습니다. 즉, 리소스를 참조하는 리소스의 속성에 따라 리소스를 검색할 수 있습니다. 이 작업은 매개 변수를 사용하여 수행됩니다 _has . 예를 들어 리소스에는 Observation 리소스에 대한 참조를 확인하는 검색 매개 변수 patient 가 있습니다 Patient . 특정 code를 사용하여 가 참조 Observation 하는 모든 Patient 리소스를 찾으려면

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

이 요청은 코드를 527사용하여 리소스에서 Observation 참조하는 리소스를 반환 Patient 합니다.

또한 역방향 연결 검색에는 재귀 구조가 있을 수 있습니다. 예를 들어 에서 참조 Observation 하는 모든 환자를 검색하려는 경우 라는 특정 실무자가 관찰을 AuditEvent 참조합니다 janedoe.

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. 연산자를 사용하여 코드에 $ 따라 조건을 ("보다 작음"의 경우)(칼륨 mmol/L 값의 경우) 9.2 으로 lt 설정합니다value.

복합 검색 매개 변수를 사용하여 논리적 OR을 사용하여 여러 구성 요소 코드 값 수량을 필터링할 수도 있습니다. 예를 들어, 확장기 혈압이 90보다 크거나 수축기 혈압이 140보다 큰 관찰을 쿼리하려면 다음을 수행합니다.

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

두 조건 간에 논리 OR 연산자로 작동하는 방법을 , 확인합니다.

다음 항목 집합 보기

검색 쿼리에서 한 번에 반환할 수 있는 최대 리소스 수는 1000개입니다. 그러나 검색 쿼리와 일치하는 리소스 인스턴스가 1,000개 이상 있을 수 있으며 처음 1000개 항목 이후에 다음 결과 집합을 검색하려고 할 수 있습니다. 이러한 경우 검색에서 반환된 번들에 연속(예: ) 토큰 url 값을 searchset 사용합니다. "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"
        }
    ],

GET 제공된 URL을 요청합니다.

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

그러면 검색 결과에 대한 다음 항목 집합이 반환됩니다. 번들은 searchset 검색 결과 항목의 전체 집합이며 연속 토큰 url 은 FHIR 서비스에서 첫 번째 하위 집합에 맞지 않는 항목을 검색하기 위해 제공하는 링크입니다(한 페이지에 대해 반환되는 최대 항목 수에 대한 제한으로 인해).

를 사용하여 검색 POST

위에서 언급한 모든 검색 예제는 요청을 사용합니다 GET . 그러나 매개 변수와 함께 를 사용하여 POST FHIR 검색 API 호출을 _search 수행할 수도 있습니다.

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

이 요청은 지정된 id 값으로 Patient 리소스 instance 반환합니다. 요청과 GET 마찬가지로 서버는 조건을 충족하는 리소스 인스턴스를 결정하고 HTTP 응답에서 번들을 반환합니다.

를 사용하여 검색 POST 하는 또 다른 기능은 쿼리 매개 변수를 양식 본문으로 제출할 수 있다는 것입니다.

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

name=John

다음 단계

이 문서에서는 검색 매개 변수, 한정자 및 기타 메서드를 사용하여 FHIR에서 검색하는 방법을 알아보았습니다. FHIR 검색에 대한 자세한 내용은

FHIR®은 HL7의 등록 상표이며 HL7 의 권한으로 사용됩니다.