Wszystko cierpliwe w FHIR
Operacja Patient-everything służy do udostępniania widoku wszystkich zasobów związanych z pacjentem. Ta operacja może być przydatna, aby zapewnić pacjentom dostęp do całego rekordu lub dostawcy lub innego użytkownika w celu przeprowadzenia zbiorczego pobierania danych związanych z pacjentem. Zgodnie ze specyfikacją FHIR funkcja Patient-everything zwraca wszystkie informacje związane z co najmniej jednym pacjentem opisanym w zasobie lub kontekście, na którym jest wywoływana ta operacja. W usłudze Azure API for FHIR wszystko jest dostępne do ściągania danych związanych z określonym pacjentem.
Korzystanie z wszystkiego, co jest pacjentem
Aby wywołać metodę Patient-everything, użyj następującego polecenia:
GET {FHIRURL}/Patient/{ID}/$everything
Uwaga
Musisz określić identyfikator dla określonego pacjenta. Jeśli potrzebujesz wszystkich danych dla wszystkich pacjentów, zobacz $export.
Interfejs API platformy Azure dla standardu FHIR sprawdza, czy może znaleźć pacjenta pasującego do podanego identyfikatora pacjenta. Jeśli zostanie znaleziony wynik, odpowiedź będzie pakietem typu searchset
z następującymi informacjami:
- Zasób pacjenta
- Zasoby, do których bezpośrednio odwołuje się zasób pacjenta, z wyjątkiem odwołań do linków , które nie są widoczne lub jeśli
seealso
link odwołuje się doRelatedPerson
elementu . - Jeśli istnieją
seealso
odwołania do linków do innych pacjentów, wyniki będą obejmować operację Patient-everything względemseealso
wymienionych pacjentów. - Zasoby w przedziale pacjentów
- Zasoby urządzeń odwołujące się do zasobu pacjenta.
Uwaga
Jeśli pacjent ma więcej niż 100 połączonych urządzeń, zostanie zwróconych tylko 100.
Parametry patient-everything
Interfejs API platformy Azure dla standardu FHIR obsługuje następujące parametry zapytania. Wszystkie te parametry są opcjonalne:
Parametr zapytania | Opis |
---|---|
_Typu | Umożliwia określenie typów zasobów, które zostaną uwzględnione w odpowiedzi. Na przykład _type=Encounter zwróci tylko Encounter zasoby skojarzone z pacjentem. |
_Od | Zwróci tylko zasoby, które zostały zmodyfikowane od podanego czasu. |
start | Określenie daty rozpoczęcia spowoduje ściągnięcie zasobów, w których ich data kliniczna przypada po określonej dacie rozpoczęcia. Jeśli nie podano daty rozpoczęcia, wszystkie rekordy przed datą zakończenia znajdują się w zakresie. |
end | Określenie daty zakończenia spowoduje ściągnięcie zasobów, w których ich data kliniczna przypada przed określoną datą zakończenia. Jeśli nie podano daty zakończenia, wszystkie rekordy po dacie rozpoczęcia znajdują się w zakresie. |
Uwaga
Ta implementacja parametru Patient-everything nie obsługuje parametru _count.
Przetwarzanie łączy pacjentów
W zasobie pacjenta istnieje element o nazwie link, który łączy pacjenta z innymi pacjentami lub osobami powiązanymi. Ci powiązani pacjenci pomagają w całościowym spojrzeniu na pierwotnego pacjenta. Odwołanie do linku może być używane, gdy pacjent zastępuje innego pacjenta lub gdy dwa zasoby pacjentów mają informacje uzupełniające. Jednym z przypadków użycia linków jest komunikat ADT 38 lub 39 HL7v2. ADT38/39 opisuje aktualizację pacjenta. Ta aktualizacja może być przechowywana jako odwołanie między dwoma pacjentami w elemencie linku.
Specyfikacja FHIR zawiera szczegółowe omówienie różnych typów linków pacjentów, ale poniżej przedstawiono ogólne podsumowanie:
- zastępuje — zasób pacjenta zastępuje innego pacjenta.
- refer - Pacjent jest prawidłowy, ale nie jest uważany za główne źródło informacji. Wskazuje innego pacjenta, aby pobrać dodatkowe informacje.
- seealso — pacjent zawiera link do innego pacjenta, który jest równie ważny.
- replace-by — zasób pacjenta zastępuje innego pacjenta.
Szczegóły linków pacjentów do wszystkich pacjentów
Operacja Patient-everything w usłudze Azure API for FHIR przetwarza linki pacjentów na różne sposoby, aby zapewnić najbardziej całościowy widok pacjenta.
Uwaga
Link może również odwoływać się do elementu RelatedPerson
. W tej chwili RelatedPerson
zasoby nie są przetwarzane w elemecie Patient-everything i nie są zwracane w pakiecie.
W tej chwili zastępowanie i odwoływanie się do łączy jest ignorowane przez operację Patient-everything, a połączony pacjent nie jest zwracany w pakiecie.
Zgodnie z opisem linki seealso odwołują się do innego pacjenta, który jest uważany za równie ważny dla oryginału. Po uruchomieniu operacji Patient-everything, jeśli pacjent ma seealso
linki do innych pacjentów, operacja uruchamia pacjent-wszystko na każdym seealso
linku. Oznacza to, że jeśli pacjent łączy się z pięcioma innymi pacjentami z linkiem typu seealso
, uruchomimy pacjenta na każdym z tych pięciu pacjentów.
Uwaga
Jest to skonfigurowane tak, aby podążać seealso
za linkami tylko w jednej warstwie głębokiej. Nie przetwarza seealso
linków seealso
.
Ostateczny typ łącza jest zastępowany. W takim przypadku oryginalny zasób pacjenta nie jest już używany, a replaced-by
link wskazuje pacjentowi, którego należy użyć. Ta implementacja Patient-everything
programu będzie domyślnie zawierać wynik operacji na początku pakietu z ostrzeżeniem, że pacjent nie jest już prawidłowy. Będzie to również zachowanie, gdy Prefer
nagłówek jest ustawiony na handling=lenient
wartość .
Ponadto można ustawić Prefer
nagłówek tak, aby handling=strict
zamiast tego zgłaszał błąd. W takim przypadku zwracany jest kod błędu 301 MovedPermanently
wskazujący, że bieżący pacjent jest nieaktualny i zwraca identyfikator prawidłowego pacjenta zawartego w linku. Nagłówek ContentLocation
zwróconego błędu wskaże poprawne i aktualne żądanie.
Uwaga
replaced-by
Jeśli link jest obecny, Prefer: handling=lenient
a wyniki są zwracane asynchronicznie w wielu pakietach, w jednym pakiecie jest zwracany tylko wynik operacji.
Kolejność odpowiedzi pacjent-wszystko
Operacja Patient-everything zwraca wyniki w fazach:
- Faza 1 zwraca
Patient
sam zasób oprócz wszystkichgeneralPractitioner
odwołań środowiska IR imanagingOrganization
zasobów. - Faza 2 i 3 zwracają zasoby w przedziale pacjentów. Jeśli określono parametry zapytania początkowego lub końcowego, faza 2 zwraca zasoby z przedziału, które mogą być filtrowane według daty klinicznej, a faza 3 zwraca zasoby z przedziału, którego nie można filtrować według ich daty klinicznej. Jeśli żaden z tych parametrów nie zostanie określony, faza 2 zostanie pominięta, a faza 3 zwróci wszystkie zasoby przedziału pacjentów.
- Faza 4 zwróci wszystkie urządzenia, które odwołują się do pacjenta.
Każda faza zwróci wyniki w pakiecie. Jeśli wyniki obejmują wiele stron, następny link w pakiecie wskaże następną stronę wyników dla tej fazy. Po zwróceniu wszystkich wyników z fazy następny link w pakiecie wskaże wywołanie, aby zainicjować następną fazę.
Jeśli oryginalny pacjent ma jakiekolwiek seealso
linki, fazy od 1 do 4 będą powtarzane dla każdego z tych pacjentów.
Przykłady wszystkiego, co jest pacjentem
Oto kilka przykładów użycia operacji Patient-everything. Oprócz przykładów mamy przykładowy plik REST , który ilustruje sposób seealso
działania i replaced-by
zachowania.
Aby użyć funkcji Patient-everything do wykonywania zapytań w latach 2010-2020, użyj następującego wywołania:
GET {FHIRURL}/Patient/{ID}/$everything?start=2010&end=2020
Aby użyć $patient wszystkiego do wykonywania zapytań dotyczących obserwacji i napotkania pacjenta, użyj następującego wywołania:
GET {FHIRURL}/Patient/{ID}/$everything?_type=Observation,Encounter
Aby użyć $patient wszystkiego do wykonywania zapytań dotyczących "wszystkiego" pacjenta od 2021-05-27T05:00:00Z, użyj następującego wywołania:
GET {FHIRURL}/Patient/{ID}/$everything?_since=2021-05-27T05:00:00Z
Jeśli pacjent zostanie znaleziony dla każdego z tych wywołań, otrzymasz odpowiedź 200 z Bundle
odpowiednimi zasobami.
Następne kroki
Teraz, gdy wiesz, jak używać operacji Patient-everything, możesz dowiedzieć się więcej o opcjach wyszukiwania.
FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z pozwoleniem HL7.