Udostępnij za pośrednictwem


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 femalejest , 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, birthdatemoż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ę Jonlub 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.

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 nameusł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.

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 codekodem, 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

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 resultjako ) 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.