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
참조) result
와 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개 이상 있을 수 있으며 처음 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의 사용 허가 하에 사용됩니다.