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 FHIR ke Synapse Sync Agent OSS
- Gunakan alat OSS generator alur FHIR ke CDM
- Menggunakan
$export
dan memuat data ke Synapse menggunakan T-SQL
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.
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 Patient
mengekspor , 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.
- Di Synapse Studio, telusuri ke tab Kelola . Di bawah Koneksi eksternal, pilih Layanan tertaut.
- Pilih Baru untuk menambahkan layanan tertaut baru.
- Pilih Azure Data Lake Storage Gen2 dari daftar, dan pilih Lanjutkan.
- 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).