Dela via


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. Denna lösning fungerar som ett företagsklart Logic App-flöde som i sin tur fungerar som en vidarebefordran mellan Azure Health Data Services och Dataverse Healthcare APIs, samt hanterar även logik för återförsök och undantagshantering. Flödet förlitar sig på en Azure Blob Storage-utlösare snarare än den HTTP-utlösare som används i den manuella konfigurationen.

Detta arbetsflöde görs tillgängligt för distribution som en Azure Resource Manager (ARM)-mall kallad 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 behöver bara 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 tänkt att uppdateras av användare och utgör ingen slutgiltig lösning i dess aktuella tillstånd.

  • 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änsten baseras på en Azure Blob Storage-utlösare för att starta asynkron bearbetning av paketen som har skickats till en konfigurerbar lagringsplats. Detta alternativ hanterar kraftigare belastning för företagskunder och omfattar extra undantagshanteringssteg. Du bör dock utföra omfattande tester med de förväntade dagliga belastningarna.

Efter distributionen kan Logic Apps utökas till att passa just dina systembehov.

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:

Designa

Följande diagram illustrerar utformningen av den pipeline som distribueras via mallen:

En skärmbild med malldesign och flöde.

ARM-mallen distribuerar flera modulariserade Logic Apps. Den innehåller följande tre Logic Apps:

Logic App Beskrivning
Bearbeta FHIR-paket Den första logikappinstansen som utlöses när ett paket överförs till bloblagringen. Denna logikapp avgör om du ska publicera paketet till FHIR eller direkt till Dataverse.
Skicka paket till FHIR Den andra logikappen som utlöses från logikappen Bearbeta FHIR-paket när du väljer att publicera paketet på FHIR. Denna logikapp bearbetar begäranspaketet och publicerar det på FHIR-servern. När paketet har publiceras på FHIR-servern vidarebefordrar logikappen paketet till nästa logikapp Skicka paket till Dataverse för vidare 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. Denna logikapp hanterar också rensningen av paketbehållarna genom att flytta begäranspaketet till antingen behållaren bundleserror eller behållaren bundlesarchive.

Mallparametrar

Parameter Beskrivning
Resursplats Azure-regionen där resurserna ska skapas. 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 sant ("true") läggs paketet upp på FHIR-servern.
URL till FHIR-server URL till din FHIR-server. Till exempel: https://*fhirserver*.azurewebsites.net
Denna parameter krävs endast om du publicerar till FHIR-servern innan du publicerar till API-upsert-slutpunkten för Dataverse.
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 vid behov.

Distribuerade resurser

Mallen distribuerar följande resurser i miljön:

Resurs Beskrivning
Hanterad identitet Namnet på den hanterade identiteten är i formatet mi_UniqueValue. Logikappen skulle tilldelas denna hanterade identitet, och den hanterade identiteten skulle få å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 det här händelserutnätet.
Azure Service Bus Namnet på aktuell Service Bus är i formatet sb_UniqueValue. Händelserutnätet 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 Logic App-arbetsflöden av typen Förbrukning. Arbetsflödet utlöses av Service Bus-händelserna. 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 Logic Apps.

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. Om ett fel till exempel påträffas med logikprogrammet lasendbundletofhir_UniqueValue innehåller JSON-svaret endast noden fhirServerResponse och värdet.

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. Den här Azure-rolltilldelningen bör läggas till i den hanterade identiteten som används av logikappen.

  1. Gå till FHIR-serverinstansen, välj Åtkomstkontroll (IAM) och sedan Lägg till rolltilldelning.

    På fliken Roll markerar du rollen FHIR-datadeltagare.

    En skärmbild som visar valet av rollen FHIR-datadeltagare.

  2. Välj Medlemmar, välj Hanterad identitet och välj sedan + Välj medlemmar.

  3. Lägg till den hanterade identiteten som skapades under distributionen av ARM-mallen. Den nyligen distribuerade hanterade identiteten ska heta mi_UniqueValue.

  4. Tilldelningen kan ta några minuter att reflektera över den hanterade identiteten. När den har tillämpats väljer du Azure-rolltilldelningar för att visa rolltilldelningen för 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.

  1. Du behöver Azure-klient-ID för den hanterade identiteten för att konfigurera programanvändaren. Hämta klient-ID:t genom att öppna den hanterade identiteten som skapades under distributionen av ARM-mallen och kopiera värdet för Klient-ID från området Översikt .

  2. I Power Platform administrationscentret, öppna Microsoft Cloud for Healthcare-målmiljön. I avsnittet Åtkomst, välj S2S-appar och sedan Ny programanvändare.

  3. I rutan Skapa en ny appanvändare väljer du en lämplig Affärsenhet och sedan Lägg till ett program.

  4. 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.

  5. Välj rollen Appregistreringsanvänder Synkroniseringsadministration för FHIR och välj Spara.

  6. 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å lösningens krav kan du också ändra någon av dessa logikappar för ytterligare 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 med allvarlighetsvärdet inställt på fel, medan Dataverse Healthcare API anger msind_requeststatus som 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 och avslutar flödet som misslyckat om det finns en resurs som har lett till 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.

  1. Välj ellipsen i det övre högra hörnet av åtgärdskortet och välj sedan inställningar.

  2. Under Återförsökspoliy anger du värdet för fältet Typ.

    En skärmbild som visar hur du redigerar policytypen för återförsök.

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.

  1. Om du vill ändra antalet nya försök igen redigerar du värdet Antal i åtgärden Loopa tills.

    En skärmbild som visar hur du redigerar antalet återförsök.

  2. Om du vill ändra intervallet redigerar du värdet för Antal i åtgärden Fördröjning.

    En skärmbild som visar hur du redigerar värdet för 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.

Se även

Vad är Microsoft Cloud for Healthcare?
Översikt över Dataverse Healthcare APIs
Konfigurera Dataverse Healthcare APIs
Dataverse Healthcare APIs: Konfigurera Azure Logic-appmed en HTTP-utlösare
Använda Dataverse Healthcare APIs