Dataverse Healthcare APIs: Använd pipeline-mallen för hälsovårdsdata för att distribuera Azure Logic Apps
Denna artikel erbjuder en steg för steg-guide kringh ur du använder en mall för att distribuera en grupp Azure Logic Apps som matar in FHIR-data till Dataverse Healthcare APIs, Azure Health Data Services, eller båda dessa. Den här lösningen fungerar som ett företagsklart Logic App-flöde som fungerar som ett vidarebefordran mellan Azure Health Data Services och Dataverse Healthcare APIs. Flödet hanterar också hantering av återförsökslogik och undantag. Den förlitar sig på en Azure Blob Storage-utlösare snarare än HTTP-utlösare som används i den manuella konfigurationen.
Det här arbetsflödet är tillgängligt för distribution som en Azure Resource Manager (ARM)-mall med rubrik Pipelinemall för vårddata. Du kan distribuera mallen från Microsoft Cloud-lösningscentret. Detta erbjudande är en robustare lösning som stöds och erbjuds av Microsoft Cloud for Healthcare. Du måste konfigurera en grundläggande manuell konfiguration när du har distribuerat mallen.
Kommentar
Detta Logic App-flöde tillhandahålls som en startpunkt för ingående elektroniska postdata för hälsa (EHR), så att FHIR-data kan läggas upp för rätt tjänster. Det är ingen slutgiltig lösning i dess aktuella tillstånd och är tänkt att uppdateras utifrån dina affärsbehov.
Dessa logikapptjänster krävs inte för att publicera FHIR-data till slutpunkterna för Dataverse Healthcare API. Du kan välja att skapa en egen lösning för att vidarebefordra data från EHR till API:erna och hantera svaren.
Logikapptjänsterna bygger på att Azure Blob Storage-utlösare för att utlösara asynkron bearbetning av paketen som har lagts upp på en konfigurerbar lagringsplats. Det här alternativet hanterar tyngre belastningar för företagsanvändningsfall och inkluderar extra undantagshanteringssteg. Du bör dock utföra omfattande tester med de förväntade dagliga belastningarna.
Efter distributionen kan du utöka Logic Apps så att de passar systembehoven.
Viktigt
Denna ARM-mall är endast kompatibel med 2022 års utgivningscykel 2 av Microsoft Cloud for Healthcare och senare. För äldre versioner tar du bort åtgärden Ange requestBody som FHIR-svar vid slutförande innan du utlöser en körning.
Den här konfigurationen omfattar följande steg:
Förutsättningar
Säkerställ att din miljö uppfyller följande krav innan du distribuerar mallen:
- Ett Azure-konto och prenumeration. Om du inte har någon prenumeration registrera dig för ett kostnadsfritt Azure-konto innan du börjar.
- En Azure resursgrupp som konfigurerats med rätt behörighet för att skapa nya resurser, eller en Deltagarroll för att skapa nya resursgrupper.
- Åtkomst inom resursgruppen för att skapa resurser och tilldela Azure-roller.
- Följer säkerhetsriktlinjerna som beskrivs i Azure-administratörer och organisationspolicyn.
Designa
Följande diagram illustrerar utformningen av pipelinen som distribueras via mallen:
ARM-mallen distribuerar flera modulariserade Logic Apps. Den innehåller följande tre tjänster för logikappar:
Logic App | Beskrivning |
---|---|
Bearbeta FHIR-paket | Den första instansen logikapp som utlöses när ett paket överförs till blobblagring. Denna logikapp avgör om du ska publicera paketet till FHIR eller direkt till Dataverse. |
Skicka paket till FHIR | Den andra logikappen utlöstes från logikappen Bearbeta FHIR-paketet när du väljer att publicerra paketet till FHIR. Denna logikapp bearbetar begäranspaketet och publicerar det på FHIR-servern. När den här logikappen postar paketet till FHIR-servern vidarebefordras paketet till nästa logikapp Skicka paket till Dataverse för ytterligare bearbetning. |
Skicka paket till Dataverse | Den sista logikappen utlöstes antingen från logikappen Bearbeta FHIR-paket eller logikappen Skicka paket till FHIR. Denna bearbetar begäranspaketet och publicerar paketet i Dataverse. Den hanterar också rensningen av paketbehållaren genom att flytta paketet med förfrågan till antingen bundleserror eller bundlesarchive behållare. |
Mallparametrar
Parameter | Beskrivning |
---|---|
Resursplats | Azure-regionen för att skapa resurser. Detta parametervärde återställs till den region som användes för att skapa resursgruppen. |
URL för Dataverse | URL för din Microsoft Cloud for Healthcare Dataverse-miljö. Till exempel: https://*orgname*.crm.dynamics.com |
Publicera till FHIR-server | Ett booleskt värde. Om det är sant publiceras paketet på FHIR-servern. |
URL till FHIR-server | URL till din FHIR-server. Till exempel https://*fhirserver*.azurewebsites.net behöver du endast den här parametern om du vill publicera på FHIR-servern innan du publicerar Dataverse upsert API-slutpunkten. |
Unikt värde | Den unika strängen som används för att skapa resursnamn. Det här värdet är standardvärdet för uniqueString-funktionen. Du kan åsidosätta detta värde om det behövs. |
Distribuerade resurser
Mallen distribuerar följande resurser i miljön:
Resurs | Beskrivning |
---|---|
Hanterad identitet | Namnet på den hanterade identiteten är i formatet mi_UniqueValue. Den här hanterade identiteten tilldelas logikappen och får åtkomst till lagringskontot, FHIR-servern och Dataverse-miljön. |
Azure-lagringskonto | Namnet på lagringskontot är i formatet sa_UniqueValue. Tillsammans med lagringskontot distribuerar mallen även följande tre behållare – bundles , bundlesarchive och bundleserror . |
Rolltilldelning | Tilldelar rollen Storage Blob-datadeltagare till den hanterade identitetens lagringskonto. |
Azure Event Grid | Namnet på aktuellt Event Grid är i formatet eg_UniqueValue. Alla blobbhändelser läggs upp i detta Event Grid. |
Azure Service Bus | Namnet på aktuell Service Bus är i formatet sb_UniqueValue. Event Grid publicerar händelser till denna Service Bus. Namnet på kön är bundleCreated . |
Auktoriseringsregel | Skapar en auktoriseringsregel av typen Lyssna på Service Bus med namnet bundleauthlisten . |
Azure Logic Program-program | En uppsättning relaterade arbetsflöde för logikapp av typen Förbrukning. Arbetsflödet utlöser Service Bus-händelser. Dessa logikappar bearbetar inkommande FHIR-paket och publicerar det i de konfigurerade slutpunkterna. Varje logikapp namnges med hjälp av det unika värde som angavs under distributionen: 1. laprocessfhirbundle_UniqueValue 2. lasendbundletodataverse_UniqueValue 3. lasendbundletofhir_UniqueValue |
API-anslutning | Flera API-anslutningar krävs för logikappar. |
Utdata
Beroende på om körningen avslutas korrekt eller med fel skapas en blob med namnet orginalblobname_response.json i mappen bundlesarchive
eller i mappen bundleserror
med följande schema:
{
"dataverseResponse": "<The response from the Dataverse healthcare API post the call.>",
"fhirServerResponse": "<The response from the FHIR server call if the "Post to FHIR server" parameter value was set to True.>",
"statusMessage": "<Summary of the responses. In case of a failure, the message provides details about how many resources failed to post to the FHIR server and to Dataverse.>",
"statusCode": "<Code value associated with the issue encountered.>"
}
Beroende på vilken logikapp som utlöste felet innehåller JSON-felet antingen noden dataverseResponse
eller noden fhirServerResponse
. Till exempel, om du stöter på ett fel med logikappen lasendbundletofhir_UniqueValue, JSON-svaret innehåller bara fhirServerResponse
-nod och värde.
Steg efter distribution
Följande avsnitt innehåller de steg som du måste följa efter distributionen av mallen.
Bevilja åtkomst till FHIR-servern
För att få åtkomst till FHIR-servern från logikappen krävs tilldelning av rollen FHIR Data-deltagare, vilket gör det möjligt att publicera nya data i tjänsten. Lägg till Azure rolltilldelning i den hanterade identiteten som används av logikappen.
Gå till FHIR-serverinstansen, välj Åtkomstkontroll (IAM) och sedan Lägg till rolltilldelning.
På fliken Roll markerar du rollen FHIR-datadeltagare.
Välj Medlemmar, välj Hanterad identitet och välj sedan + Välj medlemmar.
Lägg till den hanterade identiteten som skapats med ARM-malldistributionen. Den nyligen distribuerade hanterade identiteten ska heta mi_UniqueValue.
Tilldelningen kan ta några minuter att reflektera över den hanterade identiteten. Välj Azure rolltilldelningen för att se rolltilldelningen på den hanterade identiteten.
Bevilja åtkomst till Dataverse Healthcare APIs
Samma hanterade identitet används i logikappen för att få åtkomst till Dataverse Healthcare APIs genom att ansluta den till en programanvändare i Dataverse målinstansen. För mer information om appanvändare, gå till Hantera appanvändare i Power Platform administrationscenter.
Du behöver Azure-klient-ID för den hanterade identiteten för att konfigurera programanvändaren. För att hämta klient-ID:t öppnar du den hanterade identiteten som skapades med ARM-mallens distribution och kopierar värdet Klient-ID från området Översikt.
I Power Platform administrationscentret, öppna Microsoft Cloud for Healthcare-målmiljön. I avsnittet Åtkomst, välj S2S-appar och sedan Ny programanvändare.
I rutan Skapa en ny appanvändare väljer du en lämplig Affärsenhet och sedan Lägg till ett program.
I rutan Lägg till ett program från Microsoft Entra ID söker du efter det klient-ID som du kopierade från den hanterade identiteten.
Välj den hanterade identiteten i listan, välj Lägg till och redigera sedan säkerhetsrollerna.
Välj rollen Appregistreringsanvänder Synkroniseringsadministration för FHIR och välj Spara.
Välj Skapa för att skapa den nya appanvändaren.
När du har slutfört konfigurationen kan du testa logikappens arbetsflöde genom att publicera ett exempelpaket till behållaren sa_UniqueValue för bearbetning. Beroende på vilket lösningskrav du har kan du också ändra någon av dessa logikappar för mer bearbetning.
Hantera fel
Om körningen av en logikapp resulterar i ett fel skapas en fil med namnet originalblobname_response.json i behållaren bundleserror
på lagringskontot. Du kan parsa igenom den här filen för att identifiera felets grundorsak, åtgärda den och skicka paketet igen med de misslyckade resurserna.
Pakettyp: Batch
FHIR-servern och Dataverse Healthcare APIs processen för ett paket av typen batch som en grupp med oberoende åtgärder. Svaren visar därför att varje resurs har lyckats och misslyckats oberoende.
Enligt FHIR-specifikationen resulterar varje resurs som misslyckas i en OperationOutcome allvarlighetsvärde inställt på fel, medan Dataverse healthcare API anger msind_requeststatus
till 935000002. Mer information om begärans statustyper finns i Status för typer av begäranden.
Logikappens arbetsflöde parsar sig genom båda svaren från FHIR-servern och Dataverse Healthcare APIs. Det förser flödet med misslyckat om det inte finns någon resurs som har orsakat ett fel.
Kommentar
Dataverse Healthcare APIs stöder för tillfället endast FHIR-paket av typen batch och batch-svar.
Konfigurera återförsök
När du har identifierat och åtgärdat felet kan du lägga tillbaka paketet i bundles
behållare för upparbetning.
Försök vid begränsning: FHIR-server
HTTP-åtgärden i logikappens arbetsflöde som publicerar på FHIR-servern använder de inbyggda http-åtgärdernas principer för nytt försök. Standardvärdet är en exponentialintervallpolicy inställd på att försöka igen fyra gånger. Du kan redigera återförsökspolicyn.
Välj ellipsen i det övre högra hörnet av åtgärdskortet och välj sedan inställningar.
Under Återförsökspoliy anger du värdet för fältet Typ.
Försök igen vid begränsning: Dataverse Healthcare APIs
API-begränsningar för tjänstskydd påverkar the Dataverse Healthcare APIs. Om en begäran till Dataverse Healthcare APIs begränsas försöker logikappens arbetsflöde igen tre gånger (som standard) enligt det Retry-After
-intervall som anges av API:et i svarshuvudet. Du kan redigera både återförsöksantalet och intervallet.
Om du vill ändra antalet nya försök igen redigerar du värdet Antal i åtgärden Loopa tills.
Om du vill ändra intervallet redigerar du värdet för Antal i åtgärden Fördröjning.
Säkra Logic Apps
När du har slutfört och testat konfigurationen av logikappen kan du låsa spårningen genom att skydda åtgärder för indata och utdata. Läs mer genom att gå till Säkra logikapp.