Implementación de un servicio de FHIR en Azure Health Data Services mediante una plantilla de ARM

En este artículo, obtendrá información sobre cómo implementar el servicio FHIR en Azure Health Data Services (denominado servicio FHIR) mediante la plantilla de Azure Resource Manager (plantilla de ARM). Le proporcionamos dos opciones mediante PowerShell o la CLI.

Una plantilla de ARM es un archivo JSON que define la infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa. En la sintaxis declarativa, se describe la implementación deseada sin escribir la secuencia de comandos de programación para crearla.

Requisitos previos

Revisión de la plantilla de ARM

La plantilla usada en este artículo forma parte de las plantillas de inicio rápido de Azure.

La plantilla define tres recursos de Azure:

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

Nota:

RBAC local está en desuso. La configuración de directivas de acceso asociada a RBAC local en la plantilla de ARM está en desuso. Los clientes existentes que usan RBAC local deben migrar a RBAC de Azure para noviembre de 2024. Para preguntas, por favor póngase en contacto con nosotros.

Puede implementar el recurso del servicio FHIR quitando el recurso de áreas de trabajo, el recurso de almacenamiento y la dependsOn propiedad del recurso "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": {
    }
}

Implementación de una plantilla de ARM

Puede implementar la plantilla de ARM mediante dos opciones: PowerShell o la CLI.

El código de ejemplo que se proporciona a continuación usa la plantilla en la subcarpeta "templates" de la subcarpeta "src". Es posible que desee cambiar la ruta de acceso de ubicación para hacer referencia al archivo de plantilla correctamente.

El proceso de implementación tarda unos minutos en completarse. Tome nota de los nombres del servicio FHIR y del grupo de recursos, que usará más adelante.

Implementación de la plantilla: mediante PowerShell

Ejecute el código en PowerShell localmente, en Visual Studio Code o en Azure Cloud Shell, para implementar el servicio FHIR.

Si no ha iniciado sesión en Azure, use "Conectar-AzAccount" para iniciar sesión. Una vez que haya iniciado sesión, use "Get-AzContext" para comprobar la suscripción y el inquilino que desea usar. Si es necesario, puede cambiar la suscripción y el inquilino.

Puede crear un nuevo grupo de recursos o usar uno existente omitiendo el paso o comentando la línea a partir de "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

Examen de los recursos implementados

Para comprobar que el servicio FHIR está activo y en ejecución, abra el explorador y vaya a https://<yourfhir servic>.azurehealthcareapis.com/metadata. Si la instrucción de funcionalidad se muestra o descarga automáticamente, la implementación se realiza correctamente.

Limpiar los recursos

Cuando el recurso ya no sea necesario, ejecute el código siguiente para eliminar el grupo de recursos.

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

Pasos siguientes

En esta guía de inicio rápido, ha implementado el servicio FHIR en Azure Health Data Services mediante una plantilla de ARM. Para obtener más información sobre las características compatibles con el servicio FHIR, consulte.

FHIR® es una marca registrada de HL7 y se usa con su permiso.