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 patient
reference
. W poniższym przykładzie spowoduje to ściągnięcie wszystkich i wszystkich MedicationRequests
pacjentów, do których odwołuje MedicationRequests
się 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.tag
SUBSETTED
, ż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.
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 subject
odwołaniem 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 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. Patient
s często ma jeden lub więcej Encounter
s z tematem. Aby wyszukać wszystkie Encounter
zasoby dla elementu Patient
z podanym id
elementem :
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 odwrotne łańcuchów
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 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 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.
Wyszukiwanie złożone
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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla