다음을 통해 공유


FHIR 검색 예제

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

검색 결과 매개 변수

_include

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

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

참고 항목

Azure Health Data Services의 FHIR 서비스는 최대 100개 항목을 사용하여 검색 _include 을 제한하고 _revinclude 반환합니다.

_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 지정되지 않은 모든 환자를 포함하여 요소 값이 없는 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

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

: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 리소스를 참조하는 리소스에 대한 Encounter 일반(비체인) 검색을 Patient 수행하려면 다음을 사용합니다.

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"generalPractitioner에 대한 참조가 있는 모든 Patient 리소스와 워싱턴 주에 주소가 있는 리소스에 대한 참조 generalPractitioner 가 반환됩니다. 즉, 환자가 generalPractitioner 뉴욕 주에서 사라라는 이름과 워싱턴 주에서 빌이라는 또 다른 generalPractitioner 이름이 있다면, 둘 다이 검색을 할 때 긍정적 인 일치의 조건을 충족시킬 것입니다.

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

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

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

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

또한 역방향 체인 검색에는 재귀 구조가 있을 수 있습니다. 예를 들어 특정 실무janedoe자가 관찰을 참조 Observation 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 쌍을 이루는 요소는 요소(리소스에서 Observation 참조) resultvalue 연결된 요소입니다 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개 이상 있을 수 있으며 처음 1,000개 항목 후에 다음 결과 집합을 검색하려고 할 수 있습니다. 이 경우 다음과 같이 검색에서 반환된 번들에 연속(즉, "next") 토큰 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": "{{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 서비스에서 첫 번째 하위 집합에 맞지 않는 항목을 검색하기 위해 제공하는 링크입니다(한 페이지에 대해 반환되는 최대 항목 수에 대한 제한으로 인해).

다음을 사용하여 검색 POST

여기에 언급된 모든 검색 예제는 요청을 사용합니다 GET . 그러나 다음과 같이 매개 변수를 사용하여 POST FHIR 검색 API 호출을 _search 수행할 수도 있습니다.

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

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

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

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

name=John

다음 단계

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

참고 항목

FHIR®은 HL7의 등록 상표이며, HL7의 사용 허가 하에 사용됩니다.