Skapa ett telehälsosystem i Azure

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

Den här artikeln beskriver hur du skapar ett telehälsosystem med hjälp av Azure-molnplattformen.

Arkitektur

Arkitekturöversikt över De Azure-komponenter som ingår i telehälsosystemet.

Ladda ned en Visio-fil med den här arkitekturen.

Arbetsflöde

Lösningen bygger på fyra pelare, bland annat:

  • Klienter
  • Kommunikationskomponenter
  • API:er och affärslogik
  • Lagrings- och infrastrukturtjänster

Till vänster i arkitekturdiagrammet finns klienter i två grupper, sjukvårdspersonalen och patienten. Sjukvårdspersonalen använder passande programvara och webbportalklienter för att kommunicera med sina patienter. Patienterna använder å andra sidan en mobilapp som är kopplad till den medicinska enheten via en Bluetooth-anslutning. Den här fram och tillbaka-kommunikationen uppnås med hjälp av serverdelstjänster:

  • Offentliga API:er
  • Interna mikrotjänster som ansvarar för arbetsflöden, till exempel videosamtal via Web RTC eller kommunikation från klient till klient med signal. signal är ett programvarubibliotek för Microsoft ASP.NET som gör att serverkod kan skicka asynkrona meddelanden till webbprogram på klientsidan.

Tillståndet för dessa tjänster bevaras i flera Azure-tjänster (till höger i diagrammet), till exempel Azure Database for PostgreSQL. Mediefiler sparas i Azure Storage-konton. Alla loggar från alla tjänster samlas in i en centraliserad loggningslösning som använder Azure Application Insights. Slutligen kan asynkron kommunikation uppnås mellan klienterna via push-meddelanden med hjälp av Azure Notification Hub.

Lösningen har konfigurerats på det här sättet för att:

  • Dra nytta av skalbarheten för molntjänsterna som körs i serverdelen.

  • Öka autonomin för teamen som skapar lösningen. Varje team övervakar funktionella domäner och driver utvecklingen av sina komponenter. Eftersom de funktionella domänerna inte överlappar varandra kan varje team förnya sig i sin egen takt. Eftersom tjänsternas kodbaser är oberoende förenklas CI/CD-pipelinen för hela lösningen.

  • Skapa den kommunikations- och samordningsmekanism mellan tjänster som krävs för fördelningen av funktioner mellan mikrotjänster. Lösningen som beskrivs i det här dokumentet använder Azure Cache for Redis för att utföra den här uppgiften.

  • Uppnå central övervakning och förbättra möjligheten att felsöka lösningen.

  • Förenklad hantering av hemligheter, autentiseringsuppgifter, certifikat och nycklar som utnyttjar hanterade identiteter för att skydda kommunikationen mellan tjänster.

Komponenter

  • Azure Database for PostgreSQL lagrar användardata (patient- och hälsovårdspersonal) och enhetsrelaterade data. Tjänsten valdes eftersom den är stabil, lätt och inte har någon leverantörslåsning.
  • Azure Kubernetes Service är värd för programmets affärslogik och ger enkel distribution och flexibilitet för anpassning. Tjänsten abstraherar även lösningen från den faktiska maskinvara som används under.
  • Azure Cache for Redis är värd för tillfälliga data som används för data inom tjänsten (delade data). Tjänsten kan återskapas från databasen om data upphör att gälla från cacheminnet
  • Azure Notification Hub meddelar patienten om inkommande innehåll: chatt, videosamtal, inställningar för enhetskonfiguration.
  • Azure Functions schemalägger uppgifter. Till exempel bred kommunikation till stora uppsättning användare, samordning av analysarbete i serverdelen (aggregeringar...).
  • Azure Application Insights centraliserar signaler/händelser från systemet (loggar, telemetri från loggar från mikrotjänster, klientdel och enheter) i felsökningssyfte.
  • Azure Content Delivery Network (CDN) används för underhåll och uppdateringar (leverans av java-skriptfil) till webbportalen och för att leverera mediefiler (videor, bilder) via portalen. Allt det här innehållet lagras i Azure Storage-kontona i bakgrunden.
  • Azure Traffic Manager-lastbalanser mellan geo-platser.
  • Med Azure SignalR kan serverkoden skicka asynkrona meddelanden till webbprogram på klientsidan. Slutanvändarenheter kan konfigureras i standardläge eller avancerat läge.

Alternativ

På databassidan kan alla andra PaaS-databastjänster användas. När du är värd för programlogik kan du överväga att använda Azure App Service i stället för att använda Azure Kubernetes Service.

Information om scenario

Informationen baseras på en verklig kundimplementering som ansluter en professionell sjukvårdsorganisation till sina fjärranslutna patienter. Det finns andra sätt att bygga ett sådant system, men lösningen som beskrivs har lyckats möjliggöra kommunikation mellan patienter och deras distansvårdsleverantör, samt fjärrjustera de medicintekniska enheter som patienterna bär på.

Det finns omkring 700 miljoner människor som lider av hörselnedsättning. Men endast 10% av dem använder hörapparater för att förbättra sina liv. I vissa geografiska områden eller situationer är det omöjligt för en patient att få direkt hjälp när det behövs. Tänk till exempel på patienter som:

  • Behöver hjälp i en specifik hörselsituation (till exempel när du går i parken, deltar i en fest eller är hemma), som inte kan reproduceras på hörselvårdspersonalens kontor.
  • Har mobilitetsproblem eller bor långt från sin hörselvårdspersonal.
  • Bor i ett framväxande land/en region som har ett begränsat antal personer inom hörselvården.

För att övervinna dessa svårigheter är det viktigt att ha förmågan att tillhandahålla hörselvårdstjänster på distans. I det här fallet använder vårdpersonalen chatt- eller videokommunikation för att interagera med sina avlägsna patienter. Personer som är hörselskadade använder en smartphone för att ge åtkomst till hörapparaten under fjärrsessionen. Patienten upplever omedelbart förbättrad hörsel när hörselvårdspersonalen distribuerar ändringar i konfigurationen av hörapparaten i realtid.

Potentiella användningsfall

Den här lösningen är idealisk för sjukvårdsbranschen. Följande ytterligare användningsfall har liknande designmönster:

  • Alla Bluetooth-aktiverade enheter kan nås och fjärrjusteras med hjälp av en sådan lösning.
  • Kommunikation (text, röst, video) eller kunskapsutbyte (utbildning, nöjdhetsundersökningar) i en fjärrinställning/kontext.
  • Globalt distribuerad webbinnehållshantering.
  • Sakernas Internet (IoT)

Lägen

Standardläge

I standardläge förbereder monteringsprogramvaran ett meddelande som innehåller en viss JSON-konfigurationsfil eller innehåll för enheten. Meddelandet skickas sedan till Azure Notification Hub, som skickar meddelandet till användarens telefon.

Avancerat läge

I avancerat läge använder hörapparatspersonalen monteringsprogramvaran för att skicka detaljerad konfiguration till enheten. Detta kräver en stabil och tillförlitlig anslutning mellan serverdelen och enheten, vilket SignalR uppnår med hjälp av WebSockets. Slutanvändarens telefon är i den mottagande änden av den här kanalen. Från telefonen upprättar Bluetooth-anslutningen den slutliga kommunikationslänken med enheten.

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

Vi rekommenderar att du använder en trafikhanterare framför de olika klustren för att optimera svarstiden mellan regioner och som reservmekanism om klustren blir otillgängliga. För databaserna rekommenderar vi att du använder skrivskyddade repliker för frågor som kräver inläsning och aggregering av en stor mängd data. Vi rekommenderar att du levererar statiska webbfiler (.html, .js, bilder osv.) globalt med hjälp av ett nätverk för innehållsleverans (CDN) för att förbättra hastigheten genom cachelagring.

Distribution

Den viktigaste aspekten att tänka på när du distribuerar det här scenariot är samordningen av distributioner över den molnbaserade serverdelen och klientdelen (telefoner/enheter). Överväg att använda begreppet funktionsflagga för att uppnå detta.

Hantering

För att bättre anpassa till tanken på att varje funktionell domän hanteras med hjälp av en specifik mikrotjänst, på lång sikt, finns det en möjlighet att dela upp databasen i flera mindre databaser. Detta möjliggör principisolering och autonomi för flödet som är relaterat till varje mikrotjänst i stället för att koncentrera data som är relaterade till alla tjänster till en enda databas. För att uppnå det här målet krävs automatiserad etablering och hantering av dessa databaser, vilket är en av de viktigaste funktionerna i en PaaS-databastjänst i molnet. Databashanteringsskiktet bör integreras i lösningen och i den enhetliga övervakningslösningen.

Övervakning

Det är viktigt att övervaka var och en av nivåerna, och varje övervakningsfasetter bör federeras till en enda bucket i molnet. Det är viktigt att aktivera korrelationen mellan alla dessa loggar och telemetridatapunkter för att säkerställa holistiska insikter mellan komponenter och lager.

I dag innehåller övervakade lager:

  • Windows-program (montering av programvara på hörselvårdspersonalens skrivbord)
  • Värdbaserad programlogik
  • Molntjänster

Storlek och skalning

Se till att optimera konfigurationen av Azure Kubernetes-kluster för att matcha skalningskraven som varierar med tiden på dagen eller regionala mönster. Överväg att avlasta läsarbetsbelastningar (till exempel aggregeringsfrågor) med hjälp av läsrepliker i Azure Database for PostgreSQL.

Genom att använda TimescaleDB-tillägget för PostgreSQL blir det möjligt att hantera tidsrelaterade data som kommer från medicintekniska enheter på ett effektivare sätt. Överväg att använda en skalbar lösning som Azure Database for PostgreSQL – Hyperskala (Citus) för att nå global skala genom att etablera flera databasnoder.

Säkerhet och regelefterlevnad

Säkerhet ger garantier mot avsiktliga attacker och missbruk av dina värdefulla data och system. Mer information finns i Översikt över säkerhetspelare.

Den här lösningen hanterar PHI och personliga data. Därför är det viktigt att använda tjänster som är certifierade för medicinska program (HIPAA-certifieringar, inte bara för de data som finns kvar i databasen utan även loggar och telemetridata). Mer information finns i HIPAA-avsnittet i Microsoft Trust Center.

Hanterad identitet bör användas på alla Azure-tjänster som stöder den här typen av lösenordslös autentisering för att förenkla lösenordshanteringen: AKS, PostgreSQL, Redis Cache, Notification Hub, Azure Key Vault och Azure Functions. Se alla tjänster som stöder hanterade identiteter för Azure-resurser.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

För en distribution i en enda region finns exempel på prisinformation i priskalkylatorn

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Nästa steg

För att komma igång med att implementera en jämförbar arkitektur för ditt företag kan du överväga att skapa kunskaper kring webbtjänster, databaser som Azure Database for PostgreSQL och tekniker för utveckling av mobilprogram som Xamarin och .NET Core.

Produktdokumentation:

Kommunikation i realtid:

Mer information om hur WebRTC tillhandahåller kommunikationsfunktioner i realtid till mobila program finns på WebRTC-projektwebbplatsen.

Aktivera servrar:

Använd ett klientbibliotek som Icelink (som läses in av programmet på telefonen och av den passande programvaran på skrivbordet för hörapparatspersonalen) för att hantera turservrarna* och anslutningstyperna (tcp, udp, p2p) mellan de två klienterna (som passar programvara och program på telefonen). Klientbiblioteket:

  • Skapar strömningskanalen
  • Upprättar anslutningarna
  • Hanterar anslutningen vid fel, saknade paket, justerar automatiskt strömningen till variationerna i bandbredden
  • Koda/avkoda anropen (ljud och/eller video) under anropen

*Turn-servrar är nätverksentiteter som ansvarar för att vidarebefordra media i VoIP-relaterade protokoll. I den här lösningen finns https://xirsys.com/ de i flera datacenter över hela världen. Upprättar direkt anslutning mellan två klienter under samma session.