Tworzenie systemu telehealth na platformie Azure

Azure Database for PostgreSQL
Azure Functions
Azure Kubernetes Service (AKS)
Azure Storage
Azure Traffic Manager

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

Architektura

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

Pobierz plik programu Visio z tą architekturą.

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, pracownicy 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 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 firmy 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 do rejestrowania, które używa aplikacja systemu Azure Szczegółowe informacje. Na koniec komunikację asynchroniczną można osiągnąć 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 uruchomionych 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 i koordynacji między usługami wymagany przez dystrybucję funkcji między mikrousługami. Rozwiązanie opisane w tym dokumencie używa usługi Azure Cache for Redis do wykonania tego zadania.

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

  • Uproszczone zarządzanie wpisami tajnymi, poświadczeniami, certyfikatami i kluczami korzystające z tożsamości zarządzanych w celu zabezpieczenia komunikacji między usługami.

Składniki

  • Usługa Azure Database for PostgreSQL przechowuje dane użytkownika (pacjenta i specjalistę ds. opieki zdrowotnej) oraz dane związane z urządzeniem. Wybrano usługę, ponieważ jest stabilna, lekka i nie ma blokady dostawcy.
  • Usługa 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.
  • Usługa Azure Cache for Redis hostuje dane tymczasowe używane na potrzeby danych wewnątrz usługi (udostępnionych danych). 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 przychodzącej zawartości: czat, połączenia wideo, ustawienia konfiguracji urządzenia.
  • Usługa 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 Szczegółowe informacje centralizuje sygnały/zdarzenia z systemu (dzienniki, dane telemetryczne z dzienników z dzienników z mikrousług, frontonu i urządzeń) na potrzeby rozwiązywania problemów.
  • Usługa Azure Content Delivery Network (CDN) służy 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.
  • Równoważenie obciążenia usługi Azure Traffic Manager między lokalizacjami geograficznymi.
  • Usługa Azure SignalR umożliwia kodowi serwera wysyłanie powiadomień asynchronicznych 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. W przypadku hostowania logiki aplikacji zamiast korzystania z usługi Azure Kubernetes Service można rozważyć użycie usługi aplikacja systemu Azure Service.

Szczegóły scenariusza

Szczegóły są oparte na rzeczywistej implementacji klienta, która łączy profesjonalną organizację opieki zdrowotnej z pacjentami zdalnymi. Chociaż istnieją inne sposoby tworzenia takiego systemu, opisane rozwiązanie zakończyło się sukcesem w umożliwieniu komunikacji między pacjentami a ich zdalnym dostawcą opieki, a także zdalnym dostrajaniu urządzeń medycznych, które pacjenci niosą.

Istnieje około 700 milionów ludzi, którzy cierpią z powodu niepełnosprawności słuchu. Jednak tylko 10% z nich korzysta z 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 chodzenia w parku, uczęszczania na imprezę lub pobytu w domu), których nie można odtworzyć w biurze specjalisty ds. opieki słuchowej.
  • Mają problemy z mobilnością lub znajdują się na długich dystansach od specjalisty do pielęgnacji 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 kontaktowania się ze swoimi pacjentami zdalnymi. Osoby, którzy są trudne do słuchu, używają smartfona, aby umożliwić dostęp do urządzenia słuchowego podczas sesji zdalnej. Pacjent natychmiast doświadcza poprawy słuchu, ponieważ specjalista do pielęgnacji słuchu 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 włączoną funkcją Bluetooth można uzyskać i zdalnie dostroić 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 oprogramowanie dopasowane przygotowuje powiadomienie, które zawiera jakiś plik JSON konfiguracji lub zawartość urządzenia. Powiadomienie jest następnie przekazywane do usługi Azure Notification Hub, która wypycha powiadomienie do telefonu użytkownika.

Tryb zaawansowany

W trybie zaawansowanym profesjonalny aparat słuchowy 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 obiektów WebSocket. Telefon użytkownika końcowego znajduje się na końcu tego kanału. Z telefonu połączenie Bluetooth nawiązuje ostateczne połączenie komunikacyjne z urządzeniem.

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, 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, w dłuższej perspektywie istnieje możliwość podzielenia bazy danych na kilka mniejszych baz danych. Pozwoli to na podstawową izolację i autonomię przepływu związanego z każdą mikrousługą, a nie skoncentrowanie 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, co 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)
  • Hostowana logika aplikacji
  • 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 wahają się wraz z godziną dnia lub wzorców regionalnych. Rozważ odciążanie obciążeń odczytu (takich jak agregowanie zapytań) przy użyciu replik do odczytu w usłudze Azure Database for PostgreSQL.

Użycie rozszerzenia 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.

Tożsamość zarządzana powinna być używana we wszystkich usługach platformy Azure, które obsługują ten typ uwierzytelniania bez hasła, aby uprościć zarządzanie hasłami: AKS, PostgreSQL, Redis Cache, Notification Hub, Azure Key Vault i Azure Functions. Zobacz wszystkie usługi obsługujące tożsamości zarządzane dla zasobów platformy Azure.

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. Pierwotnie został napisany przez następujących współautorów.

Autorzy zabezpieczeń:

Następne kroki

Aby rozpocząć wdrażanie porównywalnej architektury dla twojej firmy, rozważ tworzenie 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 .NET MAUI.

Dokumentacja produktu:

Komunikacja w czasie rzeczywistym:

Więcej informacji na temat sposobu, w jaki usługa WebRTC zapewnia funkcje komunikacji w czasie rzeczywistym dla aplikacji mobilnych, jest dostępna w witrynie projektu WebRTC.

Włączanie serwerów:

Użyj biblioteki klienta, takiej jak Icelink (zał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 odmian przepustowości
  • Kodowanie/dekodowanie wywołań (audio i/lub wideo) podczas wywołań

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