Bagikan melalui


Menyebarkan Azure Health Data Services menggunakan Azure Bicep

Dalam artikel ini, Anda akan mempelajari cara membuat Azure Health Data Services, termasuk ruang kerja, layanan FHIR, layanan DICOM, dan layanan MedTech menggunakan Azure Bicep. Anda dapat melihat dan mengunduh skrip Bicep yang digunakan dalam artikel ini dalam sampel Azure Health Data Services.

Apa itu Azure Bicep

Bicep dibangun di atas templat Azure Resource Manager (ARM). Bicep segera mendukung semua versi pratinjau dan tersedia secara umum (GA) untuk layanan Azure, termasuk Azure Health Data Services. Selama pengembangan, Anda dapat membuat file templat JSON ARM menggunakan az bicep build perintah . Sebaliknya, Anda dapat mendekompilasi file JSON ke Bicep menggunakan az bicep decompile perintah . Selama penyebaran, Bicep CLI mengubah file Bicep menjadi JSON templat ARM.

Anda dapat terus bekerja dengan templat JSON ARM, atau menggunakan Bicep untuk mengembangkan templat ARM Anda. Untuk informasi selengkapnya tentang Bicep, lihat Apa itu Bicep.

Catatan

Templat dan skrip dalam artikel diuji di Visual Studio Code selama pratinjau publik. Beberapa perubahan mungkin diperlukan untuk menyesuaikan kode yang akan dijalankan di lingkungan Anda.

Menentukan parameter dan variabel

Menggunakan parameter dan variabel Bicep alih-alih nama pengkodean keras dan nilai lainnya memungkinkan Anda untuk men-debug dan menggunakan kembali templat Bicep Anda.

Pertama-tama kami mendefinisikan parameter dengan param kata kunci untuk ruang kerja, layanan FHIR, layanan DICOM, layanan MedTech. Selain itu, kami menentukan parameter untuk langganan Azure dan penyewa Azure Active Directory (Azure AD). Mereka digunakan dalam baris perintah CLI dengan opsi "--parameters".

Kami kemudian mendefinisikan variabel untuk sumber daya dengan kata kunci var. Selain itu, kami mendefinisikan variabel untuk properti seperti otoritas dan audiens untuk layanan FHIR. Mereka ditentukan dan digunakan secara internal dalam templat Bicep, dan dapat digunakan dalam kombinasi parameter, fungsi Bicep, dan variabel lainnya. Tidak seperti parameter, parameter tidak digunakan di baris perintah CLI.

Penting untuk dicatat bahwa satu fungsi dan lingkungan Bicep diperlukan untuk menentukan URL masuk, https://login.microsoftonline.com. Untuk informasi selengkapnya tentang fungsi Bicep, lihat Fungsi penyebaran untuk Bicep.

//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'

Membuat templat ruang kerja

Untuk menentukan sumber daya, gunakan sumber daya kata kunci. Untuk sumber daya ruang kerja, properti yang diperlukan mencakup nama dan lokasi ruang kerja. Dalam templat, lokasi grup sumber daya digunakan, tetapi Anda dapat menentukan nilai yang berbeda untuk lokasi tersebut. Untuk nama sumber daya, Anda dapat mereferensikan parameter atau variabel yang ditentukan.

Untuk informasi selengkapnya tentang sumber daya dan modul, lihat Deklarasi sumber daya di Bicep.

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

Untuk menggunakan atau mereferensikan ruang kerja yang sudah ada tanpa membuatnya, gunakan kata kunci yang ada. Tentukan nama sumber daya ruang kerja, dan nama instans ruang kerja yang ada untuk properti nama. Perhatikan bahwa nama yang berbeda untuk sumber daya ruang kerja yang ada digunakan dalam templat, tetapi itu bukan persyaratan.

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

Anda sekarang siap untuk menyebarkan sumber daya ruang kerja menggunakan az deployment group create perintah . Anda juga dapat menyebarkannya bersama dengan sumber daya lainnya, seperti yang dijelaskan lebih lanjut nanti dalam artikel ini.

Membuat templat layanan FHIR

Untuk sumber daya layanan FHIR, properti yang diperlukan mencakup nama instans layanan, lokasi, jenis, dan identitas terkelola. Selain itu, ia memiliki dependensi pada sumber daya ruang kerja. Untuk layanan FHIR itu sendiri, properti yang diperlukan mencakup otoritas dan audiens, yang ditentukan dalam elemen properti.

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
    }
    }
}

Demikian pula, Anda dapat menggunakan atau mereferensikan layanan FHIR yang ada menggunakan kata kunci yang ada.

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

Membuat templat layanan DICOM

Untuk sumber daya layanan DICOM, properti yang diperlukan mencakup nama dan lokasi instans layanan, dan dependensi pada jenis sumber daya ruang kerja.

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

Demikian pula, Anda dapat menggunakan atau mereferensikan layanan DICOM yang ada menggunakan kata kunci yang ada.

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

Membuat templat layanan MedTech

Untuk sumber daya layanan MedTech, properti yang diperlukan mencakup nama layanan MedTech, lokasi, identitas terkelola, dan dependensi pada ruang kerja. Untuk layanan MedTech itu sendiri, properti yang diperlukan termasuk namespace Azure Event Hubs, Azure Event Hubs, grup konsumen Azure Event Hubs, dan pemetaan perangkat. Sebagai contoh, pemetaan perangkat denyut jantung digunakan dalam templat.

//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'
                                      }
                                      ]
                                }
                    }
                  ]
            }
          }
      }
    }

Demikian pula, Anda dapat menggunakan, atau mereferensikan layanan MedTech yang ada menggunakan kata kunci yang ada.

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

Layanan MedTech memerlukan sumber daya anak, tujuan, dan saat ini hanya mendukung tujuan layanan FHIR. Untuk sumber daya tujuan layanan MedTech, properti yang diperlukan mencakup nama, lokasi, dan dependensi pada layanan MedTech. Untuk tujuan layanan FHIR, properti yang diperlukan mencakup jenis resolusi, yang dibutuhkan nilai Buat atau Cari, ID sumber daya layanan FHIR, dan jenis sumber daya FHIR. Sebagai contoh, pemetaan denyut jantung untuk sumber daya Observasi FHIR digunakan dalam templat.

//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'
                                }
                            }
                        }
                    ]
                }
            }
        }
}

Menyebarkan Azure Health Data Services

Anda dapat menggunakan az deployment group create perintah untuk menyebarkan templat Bicep individual atau templat gabungan, mirip dengan cara Anda menyebarkan sumber daya Azure dengan templat JSON. Tentukan nama grup sumber daya, dan sertakan parameter di baris perintah. Dengan opsi "--parameters", tentukan parameter dan pasangan nilai sebagai "parameter = value", dan pisahkan pasangan parameter dan nilai dengan spasi jika lebih dari satu parameter ditentukan.

Untuk langganan dan penyewa Azure, Anda dapat menentukan nilai, atau menggunakan perintah CLI untuk mendapatkannya dari sesi masuk saat ini.

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

Perhatikan bahwa nama sumber daya anak seperti layanan FHIR menyertakan nama sumber daya induk, dan properti "dependsOn" diperlukan. Namun, ketika sumber daya anak dibuat dalam sumber daya induk, namanya tidak perlu menyertakan nama sumber daya induk, dan properti "dependsOn" tidak diperlukan. Untuk informasi selengkapnya tentang sumber daya berlapis, lihat Mengatur nama dan jenis untuk sumber daya anak di Bicep.

Men-debug templat Bicep

Anda dapat men-debug templat Bicep di Visual Studio Code, atau di lingkungan lain dan memecahkan masalah berdasarkan respons. Selain itu, Anda dapat meninjau log aktivitas untuk sumber daya tertentu di grup sumber daya saat men-debug.

Selain itu, Anda dapat menggunakan nilai output untuk penelusuran kesalahan atau sebagai bagian dari respons penyebaran. Misalnya, Anda dapat menentukan dua nilai output untuk menampilkan nilai otoritas dan audiens untuk layanan FHIR dalam respons. Untuk mengetahui informasi selengkapnya, lihat Output dalam Bicep.

output stringOutput1 string = authority
output stringOutput2 string = audience

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara membuat Azure Health Data Services, termasuk ruang kerja, layanan FHIR, layanan DICOM, dan layanan MedTech menggunakan Bicep. Anda juga mempelajari cara membuat dan men-debug templat Bicep. Untuk informasi selengkapnya tentang Azure Health Data Services, lihat

FHIR® adalah merek dagang terdaftar HL7 dan digunakan dengan izin HL7.