Udostępnij za pośrednictwem


Przykłady wyszukiwania FHIR dla usługi Azure API for FHIR

Poniżej przedstawiono kilka przykładów użycia operacji wyszukiwania Fast Healthcare Interoperability Resources (FHIR®), w tym parametrów wyszukiwania i modyfikatorów, wyszukiwania łańcuchowego i odwrotnego łańcucha, wyszukiwania złożonego, wyświetlania następnego zestawu wpisów dla wyników wyszukiwania i wyszukiwania za pomocą POST żądania. Aby uzyskać więcej informacji na temat wyszukiwania, zobacz Omówienie wyszukiwania FHIR.

Parametry wyników wyszukiwania

_Obejmują

_include wyszukuje w zasobach te, które zawierają określony parametr zasobu. Na przykład można wyszukiwać w MedicationRequest zasobach, aby znaleźć tylko te, które zawierają informacje o receptach dla określonego pacjenta, który jest parametrem patientreference . W poniższym przykładzie spowoduje to ściągnięcie wszystkich i wszystkich MedicationRequests pacjentów, do których odwołuje MedicationRequestssię element :

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

Uwaga

_include i _revinclude są ograniczone do 100 elementów.

_revinclude

_revinclude umożliwia wyszukiwanie odwrotnego kierunku jako _include. Możesz na przykład wyszukać pacjentów, a następnie odwrócić wszystkie spotkania, które odwołują się do pacjentów:

GET [your-fhir-server]/Patient?_revinclude=Encounter:subject

_Elementy

_elements Zawęża wyniki wyszukiwania do podzbioru pól, aby zmniejszyć rozmiar odpowiedzi, pomijając niepotrzebne dane. Parametr akceptuje rozdzielaną przecinkami listę elementów podstawowych:

GET [your-fhir-server]/Patient?_elements=identifier,active

W tym żądaniu otrzymasz pakiet pacjentów, ale każdy zasób będzie zawierać tylko identyfikatory i stan aktywny pacjenta. Zasoby w tej zwróconej odpowiedzi będą zawierać wartość wskazującą meta.tagSUBSETTED , że są one niekompletnym zestawem wyników.

Modyfikatory wyszukiwania

:Nie

:not Umożliwia znalezienie zasobów, w których atrybut nie jest prawdziwy. Można na przykład wyszukać pacjentów, u których płeć nie jest kobietą:

GET [your-fhir-server]/Patient?gender:not=female

Jako wartość zwracana, otrzymasz wszystkie wpisy pacjentów, w których płeć nie jest kobietą, w tym puste wartości (wpisy określone bez płci). Różni się to od wyszukiwania pacjentów, u których płeć jest mężczyzną, ponieważ nie zawierałoby to wpisów bez określonej płci.

:Brakuje

:missing Zwraca wszystkie zasoby, które nie mają wartości dla określonego elementu, gdy wartość to true, i zwraca wszystkie zasoby zawierające określony element, gdy wartość to false. W przypadku prostych elementów typu danych element będzie zgodny ze wszystkimi zasobami, w których element jest obecny z rozszerzeniami, :missing=true ale ma pustą wartość. Jeśli na przykład chcesz znaleźć wszystkie Patient zasoby, które nie zawierają informacji o dacie urodzenia, możesz wykonać następujące czynności:

GET [your-fhir-server]/Patient?birthdate:missing=true

:Dokładne

:exact Parametr jest używany dla string parametrów i zwraca wyniki, które dokładnie pasują do parametru, na przykład w przypadku łączenia liter i znaków.

GET [your-fhir-server]/Patient?name:exact=Jon

To żądanie zwraca Patient zasoby, które mają dokładnie taką samą nazwę jak Jon. Jeśli zasób miał pacjentów z nazwami takimi jak Jonathan lub joN, wyszukiwanie ignoruje i pomija zasób, ponieważ nie jest dokładnie zgodny z określoną wartością.

:Zawiera

:contains Jest używany dla string parametrów i wyszukuje zasoby z częściowymi dopasowaniami określonej wartości w dowolnym miejscu w ciągu przeszukiwanym polu. contains program nie uwzględnia wielkości liter i umożliwia łączenie znaków. Przykład:

GET [your-fhir-server]/Patient?address:contains=Meadow

To żądanie zwróci wszystkie Patient zasoby z polami address , które mają wartości zawierające ciąg "Meadow". Oznacza to, że adresy, które zawierają wartości, takie jak "Meadowers" lub "59 Meadow ST", zwracane jako wyniki wyszukiwania.

Aby wykonać serię operacji wyszukiwania obejmujących wiele parametrów referencyjnych, można "połączyć" serię parametrów referencyjnych, dołączając je do żądania serwera pojedynczo przy użyciu kropki .. Jeśli na przykład chcesz wyświetlić wszystkie DiagnosticReport zasoby z subject odwołaniem Patient do zasobu zawierającego określony nameelement :

 GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah

To żądanie zwróci wszystkie DiagnosticReport zasoby z tematem pacjenta o nazwie "Sarah". Kropka . po polu Patient wykonuje przeszukiwanie łańcuchowe dla parametru odwołania parametru subject .

Innym typowym zastosowaniem zwykłego wyszukiwania (a nie wyszukiwania łańcuchowego) jest znalezienie wszystkich spotkań dla określonego pacjenta. Patients często ma jeden lub więcej Encounters z tematem. Aby wyszukać wszystkie Encounter zasoby dla elementu Patient z podanym idelementem :

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Za pomocą wyszukiwania łańcuchowego można znaleźć wszystkie Encounter zasoby pasujące do określonego Patient elementu informacji, takie jak :birthdate

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

Pozwoliłoby to nie tylko na wyszukiwanie Encounter zasobów dla pojedynczego pacjenta, ale dla wszystkich pacjentów, którzy mają określoną wartość daty urodzenia.

Ponadto wyszukiwanie łańcuchowe można wykonywać więcej niż raz w jednym żądaniu przy użyciu symbolu &, który umożliwia wyszukiwanie wielu warunków w jednym żądaniu. W takich przypadkach wyszukiwanie łańcuchowe "niezależnie" wyszukuje każdy parametr, zamiast wyszukiwać warunki spełniające tylko wszystkie warunki jednocześnie:

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Spowoduje to zwrócenie wszystkich Patient zasobów, które mają "Sarah" jako generalPractitioner i mają generalPractitioner adres, który ma adres ze stanem WA. Innymi słowy, gdyby pacjent miał Sarę ze stanu NY i Billa ze stanu WA oba przywoływane jako pacjent generalPractitioner, zostanie zwrócony.

W przypadku scenariuszy, w których wyszukiwanie musi być operacją obejmującą AND wszystkie warunki jako grupę, zapoznaj się z poniższym przykładem wyszukiwania złożonego .

Wyszukiwanie łańcuchowe umożliwia wyszukiwanie zasobów na podstawie właściwości, do których się odwołują. Korzystanie z wyszukiwania w odwrotnym łańcuchu umożliwia wykonywanie tych czynności w drugą stronę. Zasoby można wyszukiwać na podstawie właściwości zasobów, które się do nich odwołują, przy użyciu _has parametru . Na przykład Observation zasób ma parametr patient wyszukiwania odwołujący się do zasobu Pacjenta. Aby znaleźć wszystkie zasoby pacjentów, do których odwołuje się Observation określony codeelement :

GET [base]/Patient?_has:Observation:patient:code=527

To żądanie zwraca zasoby pacjentów, do których odwołuje się Observation kod 527.

Ponadto wyszukiwanie w odwrotnym łańcuchu może mieć strukturę rekursywną. Jeśli na przykład chcesz wyszukać wszystkich pacjentów, u których obserwacja ma Observation zdarzenie inspekcji od określonego użytkownika janedoe, możesz wykonać następujące czynności:

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Uwaga

W usłudze Azure API for FHIR i serwerze open source FHIR wspieranym przez usługę Azure Cosmos DB łańcuch wyszukiwania i wyszukiwania w łańcuchu odwrotnym jest implementacją MVP. Aby wykonać wyszukiwanie łańcuchowe w usłudze Azure Cosmos DB, implementacja przechodzi w dół wyrażenia wyszukiwania i problemów podrzędnych w celu rozwiązania dopasowanych zasobów. Odbywa się to dla każdego poziomu wyrażenia. Jeśli jakiekolwiek zapytanie zwróci więcej niż 100 wyników, zostanie zgłoszony błąd.

Aby wyszukać zasoby spełniające wiele warunków jednocześnie, użyj wyszukiwania złożonego, które łączy sekwencję pojedynczych wartości parametrów z symbolem $. Zwrócony wynik będzie przecięciem zasobów pasujących do wszystkich warunków określonych przez połączone parametry wyszukiwania. Takie parametry wyszukiwania są nazywane parametrami wyszukiwania złożonego i definiują nowy parametr, który łączy wiele parametrów w strukturze zagnieżdżonej. Jeśli na przykład chcesz znaleźć wszystkie DiagnosticReport zasoby zawierające Observation wartość potasową mniejszą lub równą 9,2:

GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

To żądanie określa składnik zawierający kod 2823-3, który w tym przypadku byłby potasem. Po symbolu $ określa zakres wartości składnika przy użyciu lt wartości "mniejszej lub równej" i 9.2 dla zakresu wartości potasu.

Przeszukaj następny zestaw wpisów

Maksymalna liczba wpisów, które można zwrócić dla pojedynczego zapytania wyszukiwania, wynosi 1000. Jednak może istnieć więcej niż 1000 wpisów pasujących do zapytania wyszukiwania i może być konieczne sprawdzenie następnego zestawu wpisów po pierwszych 1000 zwróconych wpisach. W takim przypadku należy użyć wartości tokenu url kontynuacji w pliku , searchset jak w poniższym Bundle wyniku:

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
        }
    ],

Żądanie GET dla podanego adresu URL należy wykonać w polu relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Spowoduje to zwrócenie następnego zestawu wpisów dla wyniku wyszukiwania. Jest searchset to kompletny zestaw wpisów wyników wyszukiwania, a token url kontynuacji jest linkiem dostarczonym przez serwer, który umożliwia pobranie wpisów, które nie są wyświetlane w pierwszym zestawie, ponieważ ograniczenie maksymalnej liczby wpisów zwracanych dla zapytania wyszukiwania.

Wyszukiwanie przy użyciu funkcji POST

We wszystkich przykładach wyszukiwania wymienionych powyżej użyto GET żądań. Operacje wyszukiwania można również wykonywać przy użyciu żądań przy użyciu POST polecenia _search:

POST [your-fhir-server]/Patient/_search?_id=45

To żądanie zwróci wszystkie Patient zasoby o id wartości 45. Podobnie jak w przypadku żądań GET, serwer określa, który zestaw zasobów spełnia warunki, i zwraca zasób pakietu w odpowiedzi HTTP.

Innym przykładem wyszukiwania przy użyciu funkcji POST, w którym parametry zapytania są przesyłane jako treść formularza:

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Następne kroki

W tym artykule przedstawiono sposób wyszukiwania przy użyciu różnych parametrów wyszukiwania, modyfikatorów i narzędzi wyszukiwania FHIR. Aby uzyskać więcej informacji na temat wyszukiwania FHIR, zobacz

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z pozwoleniem HL7.