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 patient
reference
. 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.
Wyszukiwanie łańcuchowe
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 name
element :
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. Patient
s często mają jeden lub więcej Encounter
s z tematem. Poniższe wyszukiwanie wszystkich Encounter
zasobów dla elementu Patient
z podanym id
elementem .
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 w łańcuchu odwrotnym
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 code
element .
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.
Wyszukiwanie złożone
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.