Udostępnij za pośrednictwem


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

Ważne

Usługa Azure API for FHIR zostanie wycofana 30 września 2026 r. Postępuj zgodnie ze strategiami migracji, aby przejść do usługi Azure Health Data Services FHIR® do tej daty. Ze względu na wycofanie usługi Azure API for FHIR nowe wdrożenia nie będą możliwe od 1 kwietnia 2025 r. Usługa FHIR usług Azure Health Data Services to rozwinięta wersja usługi Azure API for FHIR, która umożliwia klientom zarządzanie usługami FHIR, DICOM i MedTech z integracją z innymi usługami platformy Azure.

Poniżej przedstawiono przykłady 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

_zawierać

_include wyszukuje w zasobach te, które zawierają określony parametr zasobu. Na przykład można wyszukiwać w zasobachMedicationRequest, aby znaleźć tylko te, które zawierają informacje o receptach dla określonego pacjenta, który jest parametrem patientreference . Poniższy przykład ściąga wszystkie i MedicationRequests wszystkich pacjentów, do których odwołuje się element MedicationRequests.

 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

_pierwiastki

_elements Zawęża wynik 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

Z tego żądania otrzymasz pakiet pacjentów, u których każdy zasób zawiera tylko identyfikatory i stan aktywny pacjenta. Zasoby w tej odpowiedzi zawierają wartość SUBSETTED wskazującąmeta.tag, ż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.

:brakujący

:missing Zwraca wszystkie zasoby, które nie mają wartości dla określonego elementu, gdy wartość to true, i zwraca wszystkie zasoby, które zawierają określony element, gdy wartość to false. W przypadku prostych elementów typu danych pasuje do wszystkich zasobów, w których element jest obecny z rozszerzeniami, :missing=true ale ma pustą wartość. W poniższym przykładzie pokazano, jak znaleźć wszystkie Patient zasoby, które nie zawierają informacji o dacie urodzenia.

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

:dokładny

:exact jest używany dla string parametrów i zwraca wyniki, które dokładnie pasują do parametru, na przykład w przypadku łączenia wielkości 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 będzie ignorować i pomijać zasób, ponieważ nie jest dokładnie zgodny z określoną wartością.

:Contains

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

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

To żądanie zwróci wszystkie Patient zasoby z polami address , które zawierają ciąg "Meadow". Oznacza to, że można mieć adresy, które zawierają wartości, takie jak "Meadowers" lub "59 Meadow ST" zwrócone 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 odwołaniem subject 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 na parametrze referencyjnym parametru subject .

Innym typowym zastosowaniem zwykłego wyszukiwania (a nie wyszukiwania łańcuchowego) jest znalezienie wszystkich spotkań dla określonego pacjenta. Patients często mają jeden lub więcej Encounters z tematem. Poniższe wyszukiwanie wszystkich Encounter zasobów dla elementu Patient z podanym idelementem .

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

Korzystając z wyszukiwania łańcuchowego, można znaleźć wszystkie Encounter zasoby pasujące do określonego Patient elementu informacji, na przykład birthdate.

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

Umożliwiłoby to wyszukiwanie Encounter zasobów dla wszystkich pacjentów, u których określona 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, jeśli pacjent miał Sarah ze stanu NY i Bill z stanu WA oba przywoływane jako pacjent generalPractitioner, oba są zwracane.

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

Wyszukiwanie łańcuchowe umożliwia wyszukiwanie zasobów na podstawie właściwości, do których odwołują się zasoby. Korzystanie z wyszukiwania w łańcuchu odwrotnym pozwala to zrobić 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. Użyj poniższej instrukcji, 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 łańcuchu zwrotnym może mieć strukturę rekursywną. Na przykład następujące wyszukiwanie wszystkich pacjentów, u których obserwacja ma Observation zdarzenie inspekcji od określonego użytkownika janedoe.

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ńcuchowe wyszukiwanie i wyszukiwanie odwrotne 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 złożonego wyszukiwania, które łączy sekwencję pojedynczych wartości parametrów z symbolem $. Wynikiem będzie przecięcie zasobów, które pasują 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. Na przykład poniższe wyszukiwanie znajduje wszystkie DiagnosticReport zasoby, które zawierają 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 będzie 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 potasowych.

Wyszukaj następny zestaw wpisów

Maksymalna liczba wpisów, które można zwrócić dla pojedynczego zapytania wyszukiwania, wynosi 1000. Jeśli więcej niż 1000 wpisów pasujących do zapytania wyszukiwania, możesz użyć poniższej procedury, aby wyświetlić wpisy większe niż 1000.
Użyj 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"
        }
    ],

Następnie wykonaj żądanie GET dla podanego adresu URL 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 podanym przez serwer w celu pobrania wpisów, które nie są wyświetlane w pierwszym 1000.

Wyszukiwanie przy użyciu funkcji POST

Wszystkie przykłady wyszukiwania wcześniej wymienione używane GET żądania. 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 zwraca Patient zasoby o id wartości 45. Podobnie jak w przypadku żądań GET, serwer określa, który zestaw zasobów spełnia warunek, 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, jest następująca.

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

Uwaga

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