Distribuire un servizio FHIR all'interno di Servizi dati di integrità di Azure - uso del modello di Resource Manager

In questo articolo si apprenderà come distribuire il servizio FHIR all'interno del servizio Azure Health Data Services (denominato servizio FHIR) usando il modello di Azure Resource Manager (modello arm). Sono disponibili due opzioni usando PowerShell o l'interfaccia della riga di comando.

Un modello di Resource Manager è un file JSON che definisce l'infrastruttura e la configurazione per il progetto. Il modello utilizza la sintassi dichiarativa. Nella sintassi dichiarativa, descrivi la distribuzione prevista senza scrivere la sequenza dei comandi di programmazione per creare la distribuzione.

Prerequisiti

Esaminare il modello di Resource Manager

Il modello usato in questo articolo proviene dai modelli di avvio rapido di Azure.

Il modello definisce tre risorse di Azure:

  • Microsoft.HealthcareApis/workspaces
  • Microsoft.HealthcareApis/workspaces/fhirservices
  • Microsoft.Storage/storageAccounts

Nota

Il controllo degli accessi in base al ruolo locale è deprecato. La configurazione dei criteri di accesso associata al controllo degli accessi in base al ruolo locale nel modello arm è deprecata. I clienti esistenti che usano il controllo degli accessi in base al ruolo locale devono eseguire la migrazione al controllo degli accessi in base al ruolo di Azure entro novembre 2024. Per domande, contattaci.

È possibile distribuire la risorsa del servizio FHIR rimuovendo la risorsa delle aree di lavoro, la risorsa di archiviazione e la dependsOn proprietà nella risorsa "Microsoft.HealthcareApis/workspaces/fhirservices".

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "authorityurl": {
            "type": "string",
            "defaultValue": "https://login.microsoftonline.com"
        },
        "tagName": {
            "type": "string",
            "defaultValue": "My Deployment"
        },
        "region": {
            "type": "string",
                  "allowedValues": [
                "australiaeast",
                "canadacentral",
                "eastus",
                "eastus2",
                "germanywestcentral",
                "japaneast",
                "northcentralus",
                "northeurope",
                "southafricanorth",
                "southcentralus",
                "southeastasia",
                "switzerlandnorth",
                "uksouth",
                "ukwest",
                "westcentralus",
                "westeurope",
                "westus2"
            ]
        },
        "workspaceName": {
            "type": "string"
        },
        "fhirServiceName": {
            "type": "string"
        },
        "tenantid": {
            "type": "string"
        },
        "storageAccountName": {
            "type": "string"
        },
        "storageAccountConfirm": {
            "type": "bool",
            "defaultValue": true
        },
        "AccessPolicies": {
            "type": "array",
            "defaultValue": []
        },
        "smartProxyEnabled": {
            "type": "bool",
            "defaultValue": false
        }
    },
    "variables": { 
        "authority": "[Concat(parameters('authorityurl'), '/', parameters('tenantid'))]",
        "createManagedIdentity": true,
        "managedIdentityType": {
            "type": "SystemAssigned"
        },
        "storageBlobDataContributerRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')]"
    },
    "resources": [
        {
            "type": "Microsoft.HealthcareApis/workspaces",
            "name": "[parameters('workspaceName')]",
            "apiVersion": "2023-11-01",
            "location": "[parameters('region')]",
            "properties": {}
        },
       {          
            "type": "Microsoft.HealthcareApis/workspaces/fhirservices",
            "kind": "fhir-R4",
            "name": "[concat(parameters('workspaceName'), '/', parameters('fhirServiceName'))]",
            "apiVersion": "2023-11-01",
            "location": "[parameters('region')]",
            "dependsOn": [
                "[resourceId('Microsoft.HealthcareApis/workspaces', parameters('workspaceName'))]"
            ],
            "tags": {
                "environmentName": "[parameters('tagName')]"
            },
            "properties": {
                "accessPolicies": "[parameters('AccessPolicies')]",
                "authenticationConfiguration": {
                    "authority": "[variables('Authority')]",
                    "audience": "[concat('https//', parameters('workspaceName'), '-', parameters('fhirServiceName'), '.fhir.azurehealthcareapis.com')]",
                    "smartProxyEnabled": "[parameters('smartProxyEnabled')]"
                },
                "corsConfiguration": {
                    "allowCredentials": false,
                    "headers": ["*"],
                    "maxAge": 1440,
                    "methods": ["DELETE", "GET", "OPTIONS", "PATCH", "POST", "PUT"],
                    "origins": ["https://localhost:6001"]
                },
                "exportConfiguration": {
                    "storageAccountName": "[parameters('storageAccountName')]"
                }
            },
            "identity": "[if(variables('createManagedIdentity'), variables('managedIdentityType'), json('null'))]"
        },
        {
            "name": "[parameters('storageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "location": "[resourceGroup().location]",
            "properties": {
                "supportsHttpsTrafficOnly": "true"
            },
            "condition": "[parameters('storageAccountConfirm')]",
            "dependsOn": [
                "[parameters('fhirServiceName')]"
            ],
            "sku": {
                "name": "Standard_LRS"
            },
            "kind": "Storage",
            "tags": {
                "environmentName": "[parameters('tagName')]",
                "test-account-rg": "true"
            }
        }
    ],
    "outputs": {
    }
}

Distribuire un modello di Resource Manager

È possibile distribuire il modello di Resource Manager usando due opzioni: PowerShell o l'interfaccia della riga di comando.

Il codice di esempio fornito di seguito usa il modello nella sottocartella "templates" della sottocartella "src". È possibile modificare il percorso in modo che faccia riferimento correttamente al file modello.

Il completamento del processo di distribuzione richiede alcuni minuti. Prendere nota dei nomi per il servizio FHIR e il gruppo di risorse, che verranno usati in un secondo momento.

Distribuire il modello: usando PowerShell

Eseguire il codice in PowerShell in locale, in Visual Studio Code o in Azure Cloud Shell, per distribuire il servizio FHIR.

Se non è stato eseguito l'accesso ad Azure, usare "Connessione-AzAccount" per accedere. Dopo aver eseguito l'accesso, usare "Get-AzContext" per verificare la sottoscrizione e il tenant da usare. Se necessario, è possibile modificare la sottoscrizione e il tenant.

È possibile creare un nuovo gruppo di risorse o usarne uno esistente ignorando il passaggio o commentando la riga a partire da "New-AzResourceGroup".

### variables
$resourcegroupname="your resource group"
$location="South Central US"
$workspacename="your workspace name"
$fhirservicename="your fhir service name"
$tenantid="xxx"
$subscriptionid="xxx"
$storageaccountname="storage account name"
$storageaccountconfirm=1

### login to azure
Connect-AzAccount 
#Connect-AzAccount SubscriptionId $subscriptionid
Set-AzContext -Subscription $subscriptionid
Connect-AzAccount -Tenant $tenantid -SubscriptionId $subscriptionid
#Get-AzContext 

### create resource group
New-AzResourceGroup -Name $resourcegroupname -Location $location

### deploy the resource
New-AzResourceGroupDeployment -ResourceGroupName $resourcegroupname -TemplateFile "src/templates/fhirtemplate.json" -region $location -workspaceName $workspacename -fhirServiceName $fhirservicename -tenantid $tenantid -storageAccountName $storageaccountname -storageAccountConfirm $storageaccountconfirm

Esaminare le risorse distribuite

È possibile verificare che il servizio FHIR sia operativo aprendo il browser e passando a https://<yourfhir servic>.azurehealthcareapis.com/metadata. Se l'istruzione capability viene visualizzata o scaricata automaticamente, la distribuzione ha esito positivo.

Pulire le risorse

Quando la risorsa non è più necessaria, eseguire il codice seguente per eliminare il gruppo di risorse.

$resourceGroupName = “your resource group name”
Remove-AzResourceGroup -Name $resourceGroupName

Passaggi successivi

In questa guida introduttiva è stato distribuito il servizio FHIR in Servizi dati di integrità di Azure usando un modello di Resource Manager. Per altre informazioni sulle funzionalità supportate dal servizio FHIR, vedere.

FHIR® è un marchio registrato di HL7 e viene usato con l'autorizzazione di HL7.