Delen via


Azure Health Data Services implementeren met behulp van Azure Bicep

In dit artikel leert u hoe u Azure Health Data Services maakt, inclusief werkruimten, FHIR-services, DICOM-services en MedTech-services met behulp van Azure Bicep. U kunt de Bicep-scripts die in dit artikel worden gebruikt, bekijken en downloaden in Voorbeelden van Azure Health Data Services.

Wat is Azure Bicep?

Bicep is gebouwd op basis van een ARM-sjabloon (Azure Resource Manager). Bicep ondersteunt onmiddellijk alle preview-versies en algemeen beschikbare versies (GA) voor Azure-services, waaronder Azure Health Data Services. Tijdens de ontwikkeling kunt u een JSON ARM-sjabloonbestand genereren met behulp van de az bicep build opdracht . Omgekeerd kunt u de JSON-bestanden decompileren naar Bicep met behulp van de az bicep decompile opdracht . Tijdens de implementatie converteert de Bicep CLI een Bicep-bestand naar een ARM-sjabloon-JSON.

U kunt blijven werken met JSON ARM-sjablonen of Bicep gebruiken om uw ARM-sjablonen te ontwikkelen. Zie Wat is Bicep? voor meer informatie over Bicep.

Notitie

De sjablonen en scripts in het artikel worden getest in Visual Studio Code tijdens de openbare preview. Sommige wijzigingen kunnen nodig zijn om de code aan te passen voor uitvoering in uw omgeving.

Parameters en variabelen definiëren

Als u Bicep-parameters en -variabelen gebruikt in plaats van namen en andere waarden vast te coderen, kunt u fouten opsporen en opnieuw gebruiken in uw Bicep-sjablonen.

We definiëren eerst parameters met het trefwoordparameter voor werkruimte, FHIR-service, DICOM-service, MedTech-service. We definiëren ook parameters voor azure-abonnement en Azure Active Directory-tenant (Azure AD). Ze worden gebruikt in de CLI-opdrachtregel met de optie '--parameters'.

Vervolgens definiëren we variabelen voor resources met het sleutelwoord var. We definiëren ook variabelen voor eigenschappen zoals de instantie en de doelgroep voor de FHIR-service. Ze worden intern opgegeven en gebruikt in de Bicep-sjabloon en kunnen worden gebruikt in combinatie met parameters, Bicep-functies en andere variabelen. In tegenstelling tot parameters worden ze niet gebruikt in de CLI-opdrachtregel.

Het is belangrijk te weten dat één Bicep-functie en omgeving(en) vereist zijn om de url voor het logboek op te geven, https://login.microsoftonline.com. Zie Implementatiefuncties voor Bicep voor meer informatie over Bicep-functies.

//Define parameters
param workspaceName string
param fhirName string
param dicomName string
param medtechName string
param tenantId string
param location string

//Define variables
var fhirservicename = '${workspaceName}/${fhirName}'
var dicomservicename = '${workspaceName}/${dicomName}'
var medtechservicename = '${workspaceName}/${medtechName}'
var medtechdestinationname = '${medtechservicename}/output1'
var loginURL = environment().authentication.loginEndpoint
var authority = '${loginURL}${tenantId}'
var audience = 'https://${workspaceName}-${fhirName}.fhir.azurehealthcareapis.com'

Een werkruimtesjabloon maken

Gebruik de trefwoordresource om een resource te definiëren. Voor de werkruimteresource bevatten de vereiste eigenschappen de naam en locatie van de werkruimte. In de sjabloon wordt de locatie van de resourcegroep gebruikt, maar u kunt een andere waarde voor de locatie opgeven. Voor de resourcenaam kunt u verwijzen naar de gedefinieerde parameter of variabele.

Zie Resourcedeclaratie in Bicep voor meer informatie over resources en modules.

//Create a workspace
resource exampleWorkspace 'Microsoft.HealthcareApis/workspaces@2021-06-01-preview' = {
  name: workspaceName
  location: resourceGroup().location
}

Als u een bestaande werkruimte wilt gebruiken of ernaar wilt verwijzen zonder er een te maken, gebruikt u het bestaande trefwoord. Geef de naam van de werkruimteresource op en de naam van het bestaande werkruimte-exemplaar voor de naameigenschap. Houd er rekening mee dat een andere naam voor de bestaande werkruimteresource wordt gebruikt in de sjabloon, maar dat is geen vereiste.

//Use an existing workspace
resource exampleExistingWorkspace 'Microsoft.HealthcareApis/workspaces@2021-06-01-preview' existing = {
   name: workspaceName
}

U bent nu klaar om de werkruimteresource te implementeren met behulp van de az deployment group create opdracht . U kunt het ook samen met de andere resources implementeren, zoals verderop in dit artikel wordt beschreven.

Een FHIR-servicesjabloon maken

Voor de FHIR-serviceresource zijn de vereiste eigenschappen de naam van het service-exemplaar, de locatie, het soort en de beheerde identiteit. Het heeft ook een afhankelijkheid van de werkruimteresource. Voor de FHIR-service zelf bevatten de vereiste eigenschappen autoriteit en doelgroep, die zijn opgegeven in het eigenschappenelement.

resource exampleFHIR 'Microsoft.HealthcareApis/workspaces/fhirservices@2021-11-01' = {
  name: fhirservicename
  location: resourceGroup().location
  kind: 'fhir-R4'
  identity: {
    type: 'SystemAssigned'
  }
  dependsOn: [
    exampleWorkspace  
    //exampleExistingWorkspace
  ]
  properties: {
    accessPolicies: []
    authenticationConfiguration: {
      authority: authority
      audience: audience
      smartProxyEnabled: false
    }
    }
}

Op dezelfde manier kunt u een bestaande FHIR-service gebruiken of ernaar verwijzen met behulp van het bestaande trefwoord.

//Use an existing FHIR service
resource exampleExistingFHIR 'Microsoft.HealthcareApis/workspaces/fhirservices@2021-11-01' existing = {
    name: fhirservicename
}

Een DICOM-servicesjabloon maken

Voor de DICOM-serviceresource bevatten de vereiste eigenschappen de naam en locatie van het service-exemplaar, en de afhankelijkheid van het resourcetype van de werkruimte.

//Create DICOM service
resource exampleDICOM 'Microsoft.HealthcareApis/workspaces/dicomservices@2021-11-01' = {
  name: dicomservicename
  location: resourceGroup().location
  dependsOn: [
    exampleWorkspace
  ]
  properties: {}
}

Op dezelfde manier kunt u een bestaande DICOM-service gebruiken of ernaar verwijzen met behulp van het bestaande trefwoord.

//Use an existing DICOM service
 resource exampleExistingDICOM 'Microsoft.HealthcareApis/workspaces/dicomservices@2021-11-01' existing = {
   name: dicomservicename
}

Een MedTech-servicesjabloon maken

Voor de MedTech-serviceresource omvatten de vereiste eigenschappen de naam van de MedTech-service, de locatie, de beheerde identiteit en de afhankelijkheid van de werkruimte. Voor de MedTech-service zelf zijn vereiste eigenschappen Azure Event Hubs naamruimte, Event Hubs, Event Hubs-consumentengroep en de apparaattoewijzing. In de sjabloon wordt bijvoorbeeld de toewijzing van het hartslagapparaat gebruikt.

//Create IoT connector
resource exampleIoT 'Microsoft.HealthcareApis/workspaces/iotconnectors@2021-11-01' = {
  name: iotconnectorname
  location: resourceGroup().location
  identity: {
    type: 'SystemAssigned'
  }
  dependsOn: [
    exampleWorkspace
    //exampleExistingWorkspace
  ]
  properties: {
    ingestionEndpointConfiguration: {
      eventHubName: 'eventhubnamexxx'
      consumerGroup: 'eventhubconsumergroupxxx'
      fullyQualifiedEventHubNamespace: 'eventhubnamespacexxx.servicebus.windows.net'
            }
    deviceMapping: {
    content: {
    templateType: 'CollectionContent'
        template: [
                    {
                      templateType: 'JsonPathContent'
                      template: {
                              typeName: 'heartrate'
                              typeMatchExpression: '$..[?(@heartrate)]'
                              deviceIdExpression: '$.deviceid'
                              timestampExpression: '$.measurementdatetime'
                              values: [
                                {
                                      required: 'true'
                                      valueExpression: '$.heartrate'
                                      valueName: 'Heart rate'
                                      }
                                      ]
                                }
                    }
                  ]
            }
          }
      }
    }

Op dezelfde manier kunt u een bestaande MedTech-service gebruiken of ernaar verwijzen met behulp van het bestaande trefwoord.

//Use an existing IoT 
resource exampleExistingIoT 'Microsoft.HealthcareApis/workspaces/iotconnectors/fhirdestinations@2021-11-01' existing = {
    name: iotconnectorname
}

De MedTech-service vereist een onderliggende resource en bestemming en ondersteunt momenteel alleen de FHIR-servicebestemming. Voor de doelresource van de MedTech-service bevatten de vereiste eigenschappen een naam, locatie en de afhankelijkheid van de MedTech-service. Voor de FHIR-servicebestemming omvatten vereiste eigenschappen het oplossingstype, waarvoor de waarde Maken of Opzoeken, de resource-id van de FHIR-service en een FHIR-resourcetype wordt gebruikt. Als voorbeeld wordt de hartslagtoewijzing voor de FHIR-observatieresource gebruikt in de sjabloon.

//Create IoT destination
resource exampleIoTDestination 'Microsoft.HealthcareApis/workspaces/iotconnectors/fhirdestinations@2021-11-01'  = {
  name:   iotdestinationname
  location: resourceGroup().location
  dependsOn: [
    exampleIoT
    //exampleExistingIoT
  ]
  properties: {
    resourceIdentityResolutionType: 'Create'
    fhirServiceResourceId: exampleFHIR.id //exampleExistingFHIR.id
    fhirMapping: {
                content: {
                    templateType: 'CollectionFhirTemplate'
                    template: [
                        {
                            templateType: 'CodeValueFhir'
                            template: {
                                codes: [
                                    {
                                        code: '8867-4'
                                        system: 'http://loinc.org'
                                        display: 'Heart rate'
                                    }
                                ]
                                periodInterval: 60
                                typeName: 'heartrate'
                                value: {
                                    defaultPeriod: 5000
                                    unit: 'count/min'
                                    valueName: 'hr'
                                    valueType: 'SampledData'
                                }
                            }
                        }
                    ]
                }
            }
        }
}

Azure Health Data Services implementeren

U kunt de az deployment group create opdracht gebruiken om afzonderlijke Bicep-sjablonen of gecombineerde sjablonen te implementeren, vergelijkbaar met de manier waarop u Azure-resources implementeert met JSON-sjablonen. Geef de naam van de resourcegroep op en neem de parameters op in de opdrachtregel. Met de optie '--parameters' geeft u het parameter- en waardepaar op als 'parameter = waarde', en scheidt u de parameter- en waardeparen door een spatie als er meer dan één parameter is gedefinieerd.

Voor het Azure-abonnement en de tenant kunt u de waarden opgeven of CLI-opdrachten gebruiken om deze op te halen uit de huidige aanmeldingssessie.

deploymentname=xxx
resourcegroupname=rg-$deploymentname
location=centralus
workspacename=ws$deploymentname
fhirname=fhir$deploymentname
dicomname=dicom$deploymentname
medtechname=medtech$deploymentname
bicepfilename=ahds.bicep
subscriptionid=$(az account show --query id --output tsv)
tenantid=$(az account show --subscription $subscriptionid --query tenantId --output tsv)

az group create --name $resourcegroupname --location $location
az deployment group create --resource-group $resourcegroupname --template-file $bicepfilename --parameters workspaceName=$workspacename fhirName=$fhirname dicomName=$dicomname medtechName=$medtechname tenantId=$tenantid location=$location

Houd er rekening mee dat de naam van de onderliggende resource, zoals de FHIR-service, de naam van de bovenliggende resource bevat en dat de eigenschap dependsOn vereist is. Wanneer de onderliggende resource echter binnen de bovenliggende resource wordt gemaakt, hoeft de naam van de bovenliggende resource niet te bevatten en is de eigenschap dependsOn niet vereist. Zie Naam en type instellen voor onderliggende resources in Bicep voor meer informatie over geneste resources.

Foutopsporing in Bicep-sjablonen

U kunt fouten opsporen in Bicep-sjablonen in Visual Studio Code of in andere omgevingen en problemen oplossen op basis van het antwoord. U kunt ook het activiteitenlogboek voor een specifieke resource in de resourcegroep bekijken tijdens het opsporen van fouten.

Daarnaast kunt u de uitvoerwaarde gebruiken voor foutopsporing of als onderdeel van het implementatieantwoord. U kunt bijvoorbeeld twee uitvoerwaarden definiëren om de waarden van autoriteit en doelgroep voor de FHIR-service in het antwoord weer te geven. Zie Uitvoer in Bicep voor meer informatie.

output stringOutput1 string = authority
output stringOutput2 string = audience

Volgende stappen

In dit artikel hebt u geleerd hoe u Azure Health Data Services maakt, inclusief werkruimten, FHIR-services, DICOM-services en MedTech-services met behulp van Bicep. U hebt ook geleerd hoe u Bicep-sjablonen kunt maken en fouten kunt opsporen. Zie voor meer informatie over Azure Health Data Services

FHIR® is een gedeponeerd handelsmerk van HL7 en wordt gebruikt met de toestemming van HL7.