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ę do RelatedPersonelementu .
  • Jeśli istnieją seealso odwołania do linków do innych pacjentów, wyniki będą obejmować operację Patient-everything względem seealso 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.

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.

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 .

Zobacz również diagram przepływu.

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=lenientwartość .

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:

  1. Faza 1 zwraca Patient sam zasób oprócz wszystkich generalPractitioner odwołań środowiska IR i managingOrganization zasobów.
  2. 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.
  3. 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.