Przykłady wyszukiwania FHIR
Poniżej przedstawiono przykłady wywołań interfejsu API wyszukiwania Fast Healthcare Interoperability Resources (FHIR®) z różnymi parametrami wyszukiwania, modyfikatorami, wyszukiwaniami łańcuchowymi i odwrotnym, wyszukiwaniami złożonymi, POST
żądaniami wyszukiwania i nie tylko. Aby zapoznać się z ogólnym wprowadzeniem do pojęć związanych z wyszukiwaniem FHIR, zobacz Omówienie wyszukiwania FHIR.
Parametry wyników wyszukiwania
_include
_include
Umożliwia wyszukiwanie wystąpień zasobów i uwzględnianie w wynikach innych zasobów, do których odwołuje się docelowe wystąpienia zasobów. Na przykład możesz użyć _include
polecenia , aby wykonać zapytanie dotyczące MedicationRequest
zasobów i ograniczyć wyszukiwanie recept dla określonego pacjenta. Następnie usługa FHIR zwróci MedicationRequest
zasoby i przywoływany Patient
zasób. W poniższym przykładzie żądanie ściąga wszystkie MedicationRequest
wystąpienia zasobów w bazie danych i wszystkich pacjentów, do których odwołuje się MedicationRequest
wystąpienie.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Uwaga
Usługa FHIR w usługach Azure Health Data Services ogranicza wyszukiwanie _include
i _revinclude
zwraca maksymalnie 100 elementów.
_revinclude
_revinclude
Umożliwia wyszukiwanie wystąpień zasobów i uwzględnianie w wynikach innych zasobów odwołujących się do wystąpień zasobów docelowych. Można na przykład wyszukać pacjentów, a następnie odwrócić wszystkie spotkania, które odwołują się do pacjentów.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
Zawęża informacje w wynikach wyszukiwania do podzestawu elementów zdefiniowanych dla typu zasobu. Parametr _elements
akceptuje rozdzielaną przecinkami listę elementów podstawowych.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Powyższe żądanie zwraca pakiet pacjentów. Każdy wpis zawiera tylko identyfikatory i stan aktywny pacjenta. Wpisy w odpowiedzi zawierają wartość SUBSETTED
wskazującąmeta.tag
, że nie wszystkie elementy zdefiniowane dla zasobu są uwzględniane.
Modyfikatory wyszukiwania
:not
:not
umożliwia znajdowanie zasobów z elementem, który nie ma danej wartości. Możesz na przykład wyszukać pacjentów, którzy nie są kobietami.
GET {{FHIR_URL}}/Patient?gender:not=female
W zamian uzyskasz wszystkie Patient
zasoby, których gender
wartość elementu nie female
jest , w tym wszystkich pacjentów bez określonej wartości płci. Różni się to od wyszukiwania Patient
zasobów z wartością male
płci, ponieważ ignorowałoby to pacjentów bez określonej płci.
:missing
:missing
Zwraca wszystkie zasoby, które nie mają wartości dla określonego elementu, gdy :missing=true
. :missing
Ponadto zwraca wszystkie zasoby, które zawierają określony element, gdy :missing=false
. W przypadku prostych elementów typu danych pasuje do wszystkich zasobów, w których znajduje się element, :missing=true
ale ma pustą wartość. Jeśli na przykład chcesz znaleźć wszystkie Patient
brakujące informacje o zasobach, birthdate
możesz wykonać następujące wywołanie.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
Służy do wyszukiwania elementów z typami string
danych i zwraca wartość dodatnią, jeśli wartość parametru dokładnie pasuje do wielkości liter i pełnej sekwencji znaków wartości elementu.
GET {{FHIR_URL}}/Patient?name:exact=Jon
To żądanie zwraca Patient
zasoby, które mają given
nazwę Jon
lub family
. Gdyby byli pacjenci z nazwami takimi jak Jonathan
lub JON
, wyszukiwanie zignoruje te zasoby, ponieważ ich nazwy nie są dokładnie zgodne z określoną wartością.
:contains
:contains
Służy do wykonywania zapytań o string
elementy typu i umożliwia dopasowanie z określoną wartością w dowolnym miejscu w polu. contains
nie uwzględnia wielkości liter i rozpoznaje pasujące ciągi łączone z innymi znakami. Na przykład:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
To żądanie zwróci wszystkie Patient
zasoby z polami address
elementów, które zawierają ciąg "Meadow" (bez uwzględniania wielkości liter). Oznacza to, że można mieć adresy z wartościami takimi jak "Meadows Lane", "Pinemeadow Place" lub "Meadowlark St", które zwracają dodatnie dopasowania.
Wyszukiwanie łańcuchowe
Aby wykonać operacje wyszukiwania, które obejmują elementy zawarte w przywoływanym zasobie, można "połączyć łańcuch" serię parametrów razem z elementem .
. Jeśli na przykład chcesz wyświetlić wszystkie DiagnosticReport
zasoby z odwołaniem do pacjenta określonego przez name
usługę subject
, użyj następującego zapytania.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
To żądanie zwraca wszystkie DiagnosticReport
zasoby z tematem pacjenta o nazwie "Sarah". Wskazuje .
wyszukiwanie łańcuchowe do name
elementu w ramach przywoływanego Patient
zasobu.
Innym typowym zastosowaniem wyszukiwania FHIR jest znalezienie wszystkich spotkań dla konkretnego pacjenta. Aby wykonać zwykłe (niesłańcące) wyszukiwanie Encounter
zasobów, które odwołują się do Patient
elementu z danym id
użyciem, wykonaj następujące czynności.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Korzystając z wyszukiwania łańcuchowego, można znaleźć wszystkie Encounter
zasoby odwołujące się do pacjentów, których szczegóły pasują do parametru wyszukiwania. W poniższym przykładzie pokazano, jak wyszukiwać spotkania odwołujące się do pacjentów zawężonych przez birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Spowoduje to zwrócenie wszystkich Encounter
wystąpień odwołujących się do pacjentów z określoną birthdate
wartością.
Ponadto można zainicjować wiele wyszukiwań łańcuchowych przy użyciu &
operatora , który umożliwia wyszukiwanie wielu odwołań w jednym żądaniu. W przypadkach z ciągiem &
wyszukiwanie łańcuchowe "niezależnie" skanuje dla każdej wartości elementu.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Zwraca to wszystkie Patient
zasoby, które mają odniesienie do "Sarah" jako generalPractitioner
plus odniesienia do obiektu generalPractitioner
, który ma adres w stanie Waszyngton. Innymi słowy, gdyby pacjent miał nazwaną generalPractitioner
Sarah ze stanu Nowy Jork i inny generalPractitioner
nazwany Bill ze stanu Waszyngton, oba spełniają warunki pozytywnego dopasowania podczas wykonywania tego wyszukiwania.
W przypadku scenariuszy, w których wyszukiwanie wymaga logicznego warunku AND, który ściśle sprawdza pary wartości elementów, zapoznaj się z poniższymi przykładami wyszukiwania złożonego.
Wyszukiwanie odwrotne w łańcuchu
Korzystanie z wyszukiwania odwrotnego w łańcuchu w środowisku FHIR umożliwia wyszukiwanie wystąpień zasobów docelowych przywoływane przez inne zasoby. Innymi słowy, można wyszukiwać zasoby na podstawie właściwości zasobów, które się z nimi odwołują. Jest to realizowane za pomocą parametru _has
. Na przykład Observation
zasób ma parametr patient
wyszukiwania, który sprawdza odwołanie do Patient
zasobu. Aby znaleźć wszystkie Patient
zasoby, do których odwołuje się element Observation
z określonym code
kodem, użyj następującego kodu.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
To żądanie zwraca Patient
zasoby, do których odwołuje się Observation
zasoby z kodem 527
.
Ponadto wyszukiwanie odwrotne w łańcuchu może mieć strukturę rekursywną. Jeśli na przykład chcesz wyszukać wszystkich pacjentów, do których odwołuje się Observation
obserwacja od określonego AuditEvent
lekarza o nazwie janedoe
, użyj:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Wyszukiwanie złożone
Aby wyszukać zasoby, które zawierają elementy zgrupowane razem jako logicznie połączone pary, FHIR definiuje wyszukiwanie złożone, które łączy pojedyncze wartości parametrów wraz z $
operatorem — tworząc połączoną parę parametrów. W wyszukiwaniu złożonym dodatnie dopasowanie występuje, gdy przecięcie wartości elementów spełnia wszystkie warunki ustawione w sparowanych parametrach wyszukiwania. Poniższy przykład wykonuje zapytania dotyczące wszystkich DiagnosticReport
zasobów zawierających wartość potasową mniejszą niż 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Sparowane elementy w tym przypadku będą code
elementem (z Observation
zasobu przywoływanego result
jako ) i value
elementem połączonym z elementem code
. Zgodnie z kodem operator $
ustawia warunek jako lt
(dla wartości "mniejszej niż") 9.2
(dla wartości mmol/L value
potasu).
Parametry wyszukiwania złożonego mogą również służyć do filtrowania wielu ilości wartości kodu składnika za pomocą logicznego OR. Na przykład, aby zbadać obserwacje z ciśnieniem krwi diastolic większym niż 90 LUB skurczowe ciśnienie krwi większe niż 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Zwróć uwagę, jak ,
działa jako operator logiczny OR między dwoma warunkami.
Wyświetlanie następnego zestawu pozycji
Maksymalna liczba zasobów, które można zwrócić jednocześnie z zapytania wyszukiwania, wynosi 1000. Jednak może istnieć więcej niż 1000 wystąpień zasobów, które pasują do zapytania wyszukiwania, i chcesz pobrać następny zestaw wyników po pierwszych 1000 wpisów. W takim przypadku należy użyć wartości tokenu url
kontynuacji (czyli "next"
) w searchset
pakiecie zwróconym z wyszukiwania w następujący sposób.
"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"
}
],
Należy wysłać GET
żądanie dla podanego adresu URL:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Spowoduje to zwrócenie następnego zestawu wpisów dla wyników wyszukiwania. Pakiet searchset
jest kompletnym zestawem wpisów wyników wyszukiwania, a token url
kontynuacji jest linkiem dostarczonym przez usługę FHIR w celu pobrania wpisów, które nie mieszczą się w pierwszym podzestawie (ze względu na ograniczenie maksymalnej liczby wpisów zwracanych dla jednej strony).
Wyszukiwanie przy użyciu POST
Wszystkie przykłady wyszukiwania wymienione tutaj używają GET
żądań. Można jednak również wykonywać wywołania interfejsu API wyszukiwania FHIR przy użyciu POST
parametru _search
w następujący sposób.
POST {{FHIR_URL}}/Patient/_search?_id=45
To żądanie zwraca Patient
wystąpienie zasobu z daną id
wartością. Podobnie jak w przypadku GET
żądań, serwer określa, które wystąpienia zasobów spełniają warunki i zwracają pakiet w odpowiedzi HTTP.
Inną funkcją wyszukiwania POST
za pomocą funkcji jest możliwość przesłania parametrów zapytania jako treści formularza.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Następne kroki
W tym artykule omówiono wyszukiwanie w środowisku FHIR przy użyciu parametrów wyszukiwania, modyfikatorów i innych metod. Aby uzyskać więcej informacji na temat wyszukiwania FHIR, zobacz
Uwaga
FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7.