Bagikan melalui


Menyalin data dari Azure API untuk FHIR ke Azure Synapse Analytics

Penting

Azure API untuk FHIR akan dihentikan pada 30 September 2026. Ikuti strategi migrasi untuk beralih ke layanan FHIR® Azure Health Data Services pada tanggal tersebut. Karena penghentian Azure API untuk FHIR, penyebaran baru tidak akan diizinkan mulai 1 April 2025. Layanan Azure Health Data Services FHIR adalah versi Azure API yang berkembang untuk FHIR yang memungkinkan pelanggan mengelola layanan FHIR, DICOM, dan MedTech dengan integrasi ke layanan Azure lainnya.

Dalam artikel ini, Anda mempelajari tiga cara untuk menyalin data dari Azure API untuk FHIR® ke Azure Synapse Analytics, yang merupakan layanan analitik tanpa batas yang menyatukan integrasi data, pergudangan data perusahaan, dan analitik big data. Ini adalah sebagai berikut.

Menggunakan alat OSS Agen Sinkronisasi FHIR ke Synapse

Catatan

FHIR ke Synapse Sync Agent adalah alat sumber terbuka yang dirilis di bawah lisensi MIT, dan tidak dicakup oleh layanan Microsoft SLA for Azure.

FHIR ke Synapse Sync Agent adalah proyek Microsoft OSS yang dirilis di bawah Lisensi MIT. Ini adalah fungsi Azure yang mengekstrak data dari server FHIR menggunakan API Sumber Daya FHIR, mengonversinya menjadi file Parquet hierarkis, dan menulisnya ke Azure Data Lake mendekati real time. Ini juga berisi skrip untuk membuat tabel dan tampilan eksternal di kumpulan SqL Tanpa Server Synapse yang menunjuk ke file Parquet.

Solusi ini memungkinkan Anda untuk mengkueri seluruh data FHIR dengan alat seperti Synapse Studio, SSMS, dan Power BI. Anda juga dapat mengakses file Parquet langsung dari kumpulan Synapse Spark. Anda harus mempertimbangkan solusi ini jika Anda ingin mengakses semua data FHIR Anda hampir secara real time, dan ingin menumpuk transformasi kustom ke sistem hilir.

Ikuti dokumentasi OSS untuk instruksi penginstalan dan penggunaan.

Menggunakan alat OSS generator alur FHIR ke CDM

Catatan

Generator alur FHIR ke CDM adalah alat sumber terbuka yang dirilis di bawah lisensi MIT, dan tidak tercakup oleh microsoft SLA untuk layanan Azure.

Generator alur FHIR ke CDM adalah proyek Microsoft OSS yang dirilis di bawah Lisensi MIT. Ini adalah alat untuk menghasilkan alur ADF untuk menyalin rekam jepret data dari server FHIR menggunakan $export API, mengubahnya menjadi format csv, dan menulis ke folder CDM di Azure Data Lake Storage Gen 2. Alat ini memerlukan file konfigurasi yang dibuat pengguna yang berisi instruksi untuk memproyeksikan dan meratakan Sumber Daya dan bidang FHIR ke dalam tabel. Anda juga dapat mengikuti instruksi untuk membuat alur hilir di ruang kerja Synapse untuk memindahkan data dari folder CDM ke kumpulan SQL khusus Synapse.

Solusi ini memungkinkan Anda mengubah data menjadi format tabular saat ditulis ke folder CDM. Anda harus mempertimbangkan solusi ini jika Anda ingin mengubah data FHIR menjadi skema kustom setelah diekstrak dari server FHIR.

Ikuti dokumentasi OSS untuk instruksi penginstalan dan penggunaan.

Memuat data yang diekspor ke Synapse menggunakan T-SQL

Dalam pendekatan ini, Anda menggunakan operasi FHIR $export untuk menyalin sumber daya FHIR ke penyimpanan blob Azure Data Lake Gen 2 (ADL Gen 2) dalam NDJSON format. Selanjutnya, Anda memuat data dari penyimpanan ke kumpulan SQL tanpa server atau khusus di Synapse menggunakan T-SQL. Anda dapat mengonversi langkah-langkah ini menjadi alur pergerakan data yang kuat menggunakan alur Synapse.

Penyimpanan Azure ke Synapse menggunakan $export.

Menggunakan $export untuk menyalin data

Mengonfigurasi $export di server FHIR

Azure API untuk FHIR mengimplementasikan operasi yang $export ditentukan oleh spesifikasi FHIR untuk mengekspor semua atau subset data FHIR yang difilter dalam NDJSON format. Selain itu, ini mendukung ekspor yang tidak diidentifikasi untuk menganonimkan data FHIR selama ekspor.

Untuk mengekspor data FHIR ke penyimpanan blob Azure, Anda harus mengonfigurasi server FHIR terlebih dahulu untuk mengekspor data ke akun penyimpanan. Anda perlu (1) mengaktifkan Identitas Terkelola, (2) buka Kontrol Akses di akun penyimpanan dan tambahkan penetapan peran, (3) pilih akun penyimpanan Anda untuk $export. Petunjuk langkah demi langkah lainnya dapat ditemukan di sini.

Anda dapat mengonfigurasi server untuk mengekspor data ke semua jenis akun penyimpanan Azure, tetapi sebaiknya ekspor ke ADL Gen 2 untuk penyelarasan terbaik dengan Synapse.

Menggunakan $export perintah

Setelah mengonfigurasi server FHIR, Anda dapat mengikuti dokumentasi untuk mengekspor sumber daya FHIR Anda di tingkat Sistem, Pasien, atau Grup. Misalnya, Anda dapat mengekspor semua data FHIR yang terkait dengan pasien dengan Group perintah berikut $export , di mana Anda menentukan nama penyimpanan blob ADL Gen 2 Anda di bidang {{BlobContainer}}:

https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}  

Anda juga dapat menggunakan _type parameter dalam panggilan sebelumnya $export untuk membatasi sumber daya yang ingin Anda ekspor. Misalnya, panggilan berikut hanya Patientmengekspor , MedicationRequest, dan Observation sumber daya:

https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition

Untuk informasi selengkapnya tentang berbagai parameter yang didukung, lihat bagian halaman kami $export pada parameter kueri.

Menggunakan Synapse for Analytics

Membuat ruang kerja Synapse

Sebelum menggunakan Synapse, Anda memerlukan ruang kerja Synapse. Anda perlu membuat layanan Azure Synapse Analytics di portal Azure. Panduan langkah demi langkah lainnya dapat ditemukan di sini. Anda memerlukan ADLSGEN2 akun untuk membuat ruang kerja. Ruang kerja Azure Synapse Anda menggunakan akun penyimpanan ini untuk menyimpan data ruang kerja Synapse Anda.

Setelah membuat ruang kerja, Anda dapat melihat ruang kerja di Synapse Studio dengan masuk ke ruang kerja Anda di https://web.azuresynapse.net, atau meluncurkan Synapse Studio di portal Azure.

Membuat layanan tertaut antara penyimpanan Azure dan Synapse

Untuk menyalin data Anda ke Synapse, Anda perlu membuat layanan tertaut yang tersambung ke akun Azure Storage, tempat Anda telah mengekspor data anda dengan Synapse. Instruksi langkah demi langkah lainnya dapat ditemukan di sini.

  1. Di Synapse Studio, telusuri ke tab Kelola . Di bawah Koneksi eksternal, pilih Layanan tertaut.
  2. Pilih Baru untuk menambahkan layanan tertaut baru.
  3. Pilih Azure Data Lake Storage Gen2 dari daftar, dan pilih Lanjutkan.
  4. Masukkan info masuk autentikasi Anda. Pilih Buat saat selesai.

Sekarang setelah Anda memiliki layanan tertaut antara penyimpanan ADL Gen 2 dan Synapse, Anda siap menggunakan kumpulan Synapse SQL untuk memuat dan menganalisis data FHIR Anda.

Memutuskan antara kumpulan SQL tanpa server dan khusus

Azure Synapse Analytics menawarkan dua kumpulan SQL yang berbeda: kumpulan SQL tanpa server dan kumpulan SQL khusus. Kumpulan SQL tanpa server memberikan fleksibilitas kueri data langsung di penyimpanan blob menggunakan titik akhir SQL tanpa server tanpa provisi sumber daya apa pun. Kumpulan SQL khusus memiliki daya pemrosesan untuk performa dan konkurensi tinggi, dan direkomendasikan untuk kemampuan pergudangan data skala perusahaan. Untuk detail selengkapnya tentang dua kumpulan SQL, lihat halaman dokumentasi Synapse pada arsitektur SQL.

Menggunakan kumpulan SQL tanpa server

Karena tanpa server, tidak ada infrastruktur untuk disiapkan atau kluster untuk dipertahankan. Anda dapat mulai mengkueri data dari Synapse Studio segera setelah ruang kerja dibuat.

Misalnya, kueri berikut dapat digunakan untuk mengubah bidang yang dipilih dari Patient.ndjson menjadi struktur tabular.

SELECT * FROM  
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson', 
FORMAT = 'csv', 
FIELDTERMINATOR ='0x0b', 
FIELDQUOTE = '0x0b')  
WITH (doc NVARCHAR(MAX)) AS rows     
CROSS APPLY OPENJSON(doc)     
WITH ( 
    ResourceId VARCHAR(64) '$.id', 
    Active VARCHAR(10) '$.active', 
    FullName VARCHAR(100) '$.name[0].text', 
    Gender VARCHAR(20) '$.gender', 
       ...
) 

Dalam kueri sebelumnya, OPENROWSET fungsi mengakses file di Azure Storage, dan OPENJSON mengurai teks JSON dan mengembalikan properti input JSON sebagai baris dan kolom. Setiap kali kueri ini dijalankan, kumpulan SQL tanpa server membaca file dari penyimpanan blob, mengurai JSON, dan mengekstrak bidang.

Anda juga dapat mewujudkan hasil dalam format Parquet dalam Tabel Eksternal untuk mendapatkan performa kueri yang lebih baik, sebagai berikut.

-- Create External data source where the parquet file will be written 
CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH ( 
    LOCATION = 'https://{{youraccount}}.blob.core.windows.net/{{exttblcontainer}}' 
); 
GO 

-- Create External File Format 
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH ( 
    FORMAT_TYPE = PARQUET, 
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec' 
); 
GO 

CREATE EXTERNAL TABLE [dbo].[Patient] WITH ( 
        LOCATION = 'PatientParquet/', 
        DATA_SOURCE = [MyDataSource], 
        FILE_FORMAT = [ParquetFF] 
) AS 
SELECT * FROM  
OPENROWSET(bulk 'https://{{youraccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson' 
-- Use rest of the SQL statement from the previous example --

Menggunakan kumpulan SQL khusus

Kumpulan SQL khusus mendukung tabel terkelola dan cache hierarkis untuk performa dalam memori. Anda dapat mengimpor big data dengan kueri T-SQL sederhana, lalu menggunakan kekuatan mesin kueri terdistribusi untuk menjalankan analitik berperforma tinggi.

Cara paling sederhana dan tercepat untuk memuat data dari penyimpanan Anda ke kumpulan SQL khusus adalah dengan menggunakan COPY perintah di T-SQL, yang dapat membaca file CSV, Parquet, dan ORC. Seperti dalam contoh kueri berikut. COPY Gunakan perintah untuk memuat NDJSON baris ke dalam struktur tabular.

-- Create table with HEAP, which is not indexed and does not have a column width limitation of NVARCHAR(4000) 
CREATE TABLE StagingPatient ( 
Resource NVARCHAR(MAX) 
) WITH (HEAP) 
COPY INTO StagingPatient 
FROM 'https://{{yourblobaccount}}.blob.core.windows.net/{{yourcontainer}}/Patient.ndjson' 
WITH ( 
FILE_TYPE = 'CSV', 
ROWTERMINATOR='0x0a', 
FIELDQUOTE = '', 
FIELDTERMINATOR = '0x00' 
) 
GO

Setelah Anda memiliki baris JSON dalam StagingPatient tabel yang dihasilkan, Anda dapat membuat format data tabular yang berbeda menggunakan OPENJSON fungsi dan menyimpan hasilnya ke dalam tabel. Berikut ini adalah contoh kueri SQL untuk membuat Patient tabel dengan mengekstrak beberapa bidang dari Patient sumber daya.

SELECT RES.* 
INTO Patient 
FROM StagingPatient
CROSS APPLY OPENJSON(Resource)   
WITH (
  ResourceId VARCHAR(64) '$.id',
  FullName VARCHAR(100) '$.name[0].text',
  FamilyName VARCHAR(50) '$.name[0].family',
  GivenName VARCHAR(50) '$.name[0].given[0]',
  Gender VARCHAR(20) '$.gender',
  DOB DATETIME2 '$.birthDate',
  MaritalStatus VARCHAR(20) '$.maritalStatus.coding[0].display',
  LanguageOfCommunication VARCHAR(20) '$.communication[0].language.text'
) AS RES 
GO

Langkah berikutnya

Dalam artikel ini, Anda mempelajari tiga cara berbeda untuk menyalin data FHIR Anda ke Synapse.

Selanjutnya, Anda dapat mempelajari tentang bagaimana Anda dapat membatalkan identifikasi data FHIR saat mengekspornya ke Synapse untuk melindungi informasi kesehatan pribadi (PHI).

Catatan

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