Tworzenie systemu telehealth na platformie Azure

Database for PostgreSQL
Funkcje
Kubernetes Service
Storage
Traffic Manager

W tym artykule wyjaśniono, jak utworzyć system telehealth przy użyciu usług w chmurze platformy Azure.

Architektura

Omówienie architektury składników platformy Azure zawartych w systemie telehealth

Przepływ pracy

Rozwiązanie jest oparte na czterech filarach, w tym:

  • Klienci
  • Składniki komunikacji
  • Interfejsy API i logika biznesowa
  • Usługi magazynowania i infrastruktury

Po lewej stronie diagramu architektonicznego znajdują się klienci w dwóch grupach, pracownik służby zdrowia i pacjent. Pracownicy służby zdrowia używają odpowiedniego oprogramowania i klientów portalu internetowego do komunikowania się ze swoimi pacjentami. Z drugiej strony pacjenci korzystają z aplikacji mobilnej połączonej z urządzeniem medycznym za pośrednictwem połączenia Bluetooth. Ta komunikacja z powrotem i z powrotem jest osiągana przy użyciu usług zaplecza:

  • Publiczne interfejsy API
  • Wewnętrzne mikrousługi, które są odpowiedzialne za przepływy pracy, takie jak wywołania wideo za pośrednictwem protokołu Web RTC lub komunikacji między klientami przy użyciu usługi Signal. signal to biblioteka oprogramowania dla usługi Microsoft ASP.NET, która umożliwia kodowi serwera wysyłanie powiadomień asynchronicznych do aplikacji internetowych po stronie klienta.

Stan tych usług jest utrwalany w kilku usługach platformy Azure (po prawej stronie diagramu), takich jak Azure Database for PostgreSQL. Pliki multimedialne są zapisywane na kontach usługi Azure Storage. Wszystkie dzienniki ze wszystkich usług są zbierane w scentralizowanym rozwiązaniu rejestrowania, które korzysta z usługi aplikacja systemu Azure Insights. Na koniec można uzyskać asynchroniczną komunikację między klientami za pośrednictwem powiadomień wypychanych przy użyciu pomocy usługi Azure Notification Hub.

Rozwiązanie zostało skonfigurowane w następujący sposób:

  • Skorzystaj ze skalowalności usług w chmurze działających w zapleczu.

  • Zwiększ autonomię zespołów tworzących rozwiązanie. Każdy zespół nadzoruje domeny funkcjonalne i napędza ewolucję swoich składników. Ponieważ domeny funkcjonalne nie nakładają się na siebie, każdy zespół może wprowadzać innowacje we własnym tempie. Ponadto, ponieważ bazy kodu usług są niezależne, potok ciągłej integracji/ciągłego wdrażania dla całego rozwiązania jest uproszczony.

  • Utwórz mechanizm komunikacji między usługami i koordynacji wymagany przez dystrybucję funkcji między mikrousługami. Rozwiązanie opisane w tym dokumencie używa Azure Cache for Redis do wykonania tego zadania.

  • Uzyskaj centralne monitorowanie i zwiększ możliwość rozwiązywania problemów z rozwiązaniem.

Składniki

  • Azure Database for PostgreSQL przechowuje dane użytkownika (pacjenta i specjalistę ds. opieki zdrowotnej) oraz urządzenia. Usługa została wybrana, ponieważ jest stabilna, lekka i nie ma blokady dostawcy.
  • Azure Kubernetes Service hostuje logikę biznesową aplikacji i zapewnia łatwość wdrażania i elastyczności dostosowywania. Usługa abstrahuje również rozwiązanie od rzeczywistego sprzętu używanego poniżej.
  • Azure Cache for Redis hostuje dane tymczasowe używane na potrzeby danych wewnątrz usługi (dane udostępnione). Usługę można odtworzyć z bazy danych, jeśli dane wygasają z pamięci podręcznej
  • Usługa Azure Notification Hub powiadamia pacjenta o zawartości przychodzącej: czat, połączenia wideo, ustawienia konfiguracji urządzenia.
  • Azure Functions planuje zadania. Na przykład szeroka komunikacja z dużym zestawem użytkowników, koordynacja pracy analitycznej w zapleczu (agregacje...).
  • aplikacja systemu Azure Insights umożliwia scentralizowanie sygnałów/zdarzeń z systemu (dzienników, telemetrii z dzienników z mikrousług, frontonu i urządzeń) na potrzeby rozwiązywania problemów.
  • Usługa Azure Content Delivery Network (CDN) jest używana do konserwacji i aktualizacji (dostarczania pliku skryptów java) do portalu internetowego oraz do dostarczania plików multimedialnych (wideo, obrazów) za pośrednictwem portalu. Cała ta zawartość jest przechowywana na kontach usługi Azure Storage w tle.
  • Usługa Azure Traffic Manager równoważy obciążenie między lokalizacjami geograficznymi.
  • Usługa Azure SignalR umożliwia kodowi serwera wysyłanie asynchronicznych powiadomień do aplikacji internetowych po stronie klienta. Urządzenia użytkowników końcowych można skonfigurować w trybie standardowym lub zaawansowanym .

Alternatywy

Po stronie bazy danych mogą być używane inne usługi bazy danych PaaS. Podczas hostowania logiki aplikacji zamiast używania Azure Kubernetes Service można rozważyć użycie Azure App Service lub usługi Azure Service Fabric.

Szczegóły scenariusza

Szczegóły są oparte na prawdziwej implementacji klienta, która łączy profesjonalną organizację opieki zdrowotnej z pacjentami zdalnymi. Chociaż istnieją inne sposoby tworzenia takiego systemu, opisane rozwiązanie powiodło się w umożliwieniu komunikacji między pacjentami a ich dostawcą opieki zdalnej, a także zdalnie dostrajać urządzenia medyczne, które przewożą pacjenci.

Istnieje około 700 milionów ludzi, którzy cierpią z powodu niepełnosprawności słuchu. Jednak tylko 10% z nich używa urządzeń słuchowych, aby poprawić swoje życie. W niektórych lokalizacjach geograficznych lub sytuacjach pacjent nie może uzyskać bezpośredniej pomocy w razie potrzeby. Rozważmy na przykład pacjentów, którzy:

  • Potrzebujesz pomocy w określonej sytuacji słuchowej (na przykład podczas spaceru w parku, uczęszczania na imprezę lub pobytu w domu), której nie można odtworzyć w biurze specjalisty ds. opieki słuchowej.
  • Mają problemy z mobilnością lub znajdują się na długich dystansach od swojego specjalisty do obsługi słuchu.
  • Mieszka w kraju/regionie wschodzącym, który ma ograniczoną liczbę specjalistów ds. opieki słuchowej.

Aby przezwyciężyć te trudności, ważne jest, aby zdalnie zapewnić usługi opieki słuchowej. W takim przypadku pracownik służby zdrowia korzysta z czatu lub komunikacji wideo w celu zaangażowania się z pacjentami zdalnymi. Osoby, którzy są ciężko słuchowi używać smartfonu, aby umożliwić dostęp do urządzenia słuchowego podczas sesji zdalnej. Pacjent natychmiast doświadcza poprawy słuchu, gdy specjalista do opieki słuchowej wdraża zmiany w konfiguracji urządzenia słuchowego w czasie rzeczywistym.

Potencjalne przypadki użycia

To rozwiązanie jest idealne dla branży opieki zdrowotnej. Następujące dodatkowe przypadki użycia mają podobne wzorce projektowe:

  • Dostęp do dowolnego urządzenia z obsługą połączenia Bluetooth można uzyskać i zdalnie dostosować przy użyciu takiego rozwiązania.
  • Komunikacja (tekst, głos, wideo) lub wymiana wiedzy (edukacja, badania satysfakcji) w zdalnym ustawieniu/kontekście.
  • Globalnie rozproszone zarządzanie zawartością internetową.
  • Internet rzeczy (IoT)

Tryby

Tryb standardowy

W trybie Standardowym odpowiednie oprogramowanie przygotowuje powiadomienie, które zawiera plik JSON konfiguracji lub zawartość urządzenia. Powiadomienie jest następnie przekazywane do usługi Azure Notification Hub, która wypycha powiadomienie na telefon użytkownika.

Tryb zaawansowany

W trybie zaawansowanym specjalista pomocy słuchowej używa odpowiedniego oprogramowania do wypychania szczegółowej konfiguracji do urządzenia. Wymaga to stabilnego i niezawodnego połączenia między zapleczem a urządzeniem, które usługa SignalR osiąga przy użyciu protokołu WebSockets. Telefon użytkownika końcowego znajduje się na końcu tego kanału. Z telefonu połączenie Bluetooth ustanawia końcowy link komunikacji z urządzeniem.

Zagadnienia do rozważenia

Te zagadnienia implementują filary platformy Azure Well-Architected Framework, która jest zestawem podstawowych zestawów, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Zalecamy użycie usługi Traffic Manager przed różnymi klastrami, aby zoptymalizować opóźnienia między regionami i jako mechanizm rezerwowy, jeśli klastry staną się niedostępne. W przypadku baz danych zalecamy używanie replik tylko do odczytu dla zapytań wymagających ładowania i agregowania dużej ilości danych. Zalecamy dostarczanie statycznych plików internetowych (.html, .js, obrazów itp.) globalnie przy użyciu sieci dostarczania zawartości (CDN), aby zwiększyć szybkość buforowania.

Wdrożenie

Najważniejszym aspektem, który należy wziąć pod uwagę podczas wdrażania tego scenariusza, jest koordynacja wdrożeń w zapleczu opartym na chmurze i frontonu (telefony/urządzenia). Rozważ użycie koncepcji flagi funkcji , aby to osiągnąć.

Zarządzanie

Aby lepiej dopasować się do idei, że każda domena funkcjonalna zajmuje się użyciem określonej mikrousługi, długoterminowa, istnieje możliwość podzielenia bazy danych na kilka mniejszych baz danych. Dzięki temu zasada izolacji i autonomii przepływu związanego z każdą mikrousługą, w przeciwieństwie do koncentracji danych związanych ze wszystkimi usługami w jedną bazę danych. Osiągnięcie tego celu będzie wymagało automatyzacji aprowizacji i zarządzania tymi bazami danych, która jest jedną z podstawowych funkcji usługi bazy danych PaaS w chmurze. Ta warstwa zarządzania bazami danych powinna być zintegrowana z rozwiązaniem, a także w ujednoliconym rozwiązaniu do monitorowania.

Monitorowanie

Ważne jest, aby monitorować poszczególne warstwy, a każdy aspekt monitorowania powinien być sfederowany w jednym zasobniku w chmurze. Ważne jest, aby umożliwić korelację wszystkich tych dzienników i punktów danych telemetrycznych w celu zapewnienia całościowego wglądu w składniki i warstwy.

Obecnie monitorowane warstwy obejmują:

  • Aplikacja systemu Windows (oprogramowanie do montażu na pulpicie specjalisty ds. opieki słuchowej)
  • Logika aplikacji hostowanej
  • Usługi w chmurze

Ustalanie rozmiaru i skalowanie

Pamiętaj, aby zoptymalizować konfigurację klastrów usługi Azure Kubernetes w celu dopasowania do wymagań skalowania, które zmieniają się wraz z godziną dnia lub wzorca regionalnego. Rozważ odciążanie obciążeń odczytu (takich jak agregowanie zapytań) przy użyciu replik do odczytu w Azure Database for PostgreSQL.

Użycie rozszerzenia Bazy danych TimescaleDB bazy danych PostgreSQL umożliwi wydajniejszą obsługę danych związanych z czasem pochodzących z urządzeń medycznych. Rozważ użycie rozwiązania skalowalnego w poziomie, takiego jak Azure Database for PostgreSQL — Hiperskala (Citus), aby osiągnąć skalę globalną przez aprowizowanie wielu węzłów bazy danych.

Zabezpieczenia i zgodność

Zabezpieczenia zapewniają ochronę przed celowymi atakami i nadużyciami cennych danych i systemów. Aby uzyskać więcej informacji, zobacz Omówienie filaru zabezpieczeń.

To rozwiązanie obsługuje dane osobowe i phi. W związku z tym ważne jest korzystanie z usług certyfikowanych dla aplikacji medycznych (certyfikatów HIPAA, nie tylko dla danych, które pozostają w bazie danych, ale także dzienników i danych telemetrycznych). Aby uzyskać szczegółowe informacje, zapoznaj się z sekcją HIPAA w Centrum zaufania firmy Microsoft.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

W przypadku wdrożenia w jednym regionie przykładowe informacje o cenach są dostępne w kalkulatorze cen

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Został pierwotnie napisany przez następujących współautorów.

Autorzy zabezpieczeń:

Następne kroki

Aby rozpocząć wdrażanie porównywalnej architektury dla firmy, rozważ rozwijanie umiejętności związanych z usługami internetowymi, bazami danych, takimi jak Azure Database for PostgreSQL, oraz technikami i technologiami tworzenia aplikacji mobilnych, takimi jak Xamarin i .NET Core.

Dokumentacja produktu:

Komunikacja w czasie rzeczywistym:

Więcej informacji na temat sposobu, w jaki webRTC zapewnia możliwości komunikacji w czasie rzeczywistym dla aplikacji mobilnych, jest dostępny w witrynie projektu WebRTC.

Włączanie serwerów:

Użyj biblioteki klienta, takiej jak Icelink (ładowana przez aplikację na telefonie i przez odpowiednie oprogramowanie pulpitu specjalisty ds. słuchowego), aby zarządzać serwerami turn* i typami połączenia (tcp, udp, p2p) między dwoma klientami (oprogramowanie do montażu i aplikacji na telefonie). Biblioteka klienta:

  • Tworzy kanał przesyłania strumieniowego
  • Ustanawia połączenia
  • Zarządza połączeniem w przypadku błędów, brakujących pakietów, automatycznie dostosowuje przesyłanie strumieniowe do zmian przepustowości
  • Koduje/dekoduje wywołania (audio i/lub wideo) podczas wywołań

*Włącz serwery to jednostki sieciowe odpowiedzialne za przekazywanie multimediów w protokołach pokrewnych VoIP. W tym rozwiązaniu są one hostowane w https://xirsys.com/ kilku centrach danych na całym świecie. Ustanawia bezpośrednie połączenie między dwoma klientami w ramach tej samej sesji.