FHIR için Azure API'den Azure Synapse Analytics'e veri kopyalama
Önemli
FHIR İçin Azure API'si 30 Eylül 2026 tarihinde kullanımdan kaldırılacaktır. Bu tarihe kadar Azure Health Data Services FHIR® hizmetine geçiş yapmak için geçiş stratejilerini izleyin. FHIR İçin Azure API'sinin kullanımdan kaldırılması nedeniyle 1 Nisan 2025 tarihinden itibaren yeni dağıtımlara izin verilmeyecektir. Azure Health Data Services FHIR hizmeti , müşterilerin FHIR, DICOM ve MedTech hizmetlerini diğer Azure hizmetleriyle tümleştirmelerle yönetmesine olanak tanıyan FHIR için Azure API'sinin gelişmiş sürümüdür.
Bu makalede, FHIR® için Azure API'den veri tümleştirme, kurumsal veri ambarı ve büyük veri analizini bir araya getiren sınırsız bir analiz hizmeti olan Azure Synapse Analytics'e veri kopyalamanın üç yolunu öğreneceksiniz. Bunlar aşağıdaki gibidir.
- FHIR to Synapse Sync Agent OSS aracını kullanma
- FHIR to CDM işlem hattı oluşturucu OSS aracını kullanma
- T-SQL kullanarak Synapse'e veri kullanma
$export
ve yükleme
FHIR to Synapse Sync Aracısı OSS aracını kullanma
Not
FHIR to Synapse Sync Agent, MIT lisansı altında yayımlanan bir açık kaynak aracıdır ve Azure için Microsoft SLA hizmetleri kapsamında değildir.
FHIR to Synapse Sync Agent, MIT Lisansı altında yayımlanan bir Microsoft OSS projesidir. FHIR Kaynak API'lerini kullanarak bir FHIR sunucusundan veri ayıklayan, hiyerarşik Parquet dosyalarına dönüştüren ve neredeyse gerçek zamanlı olarak Azure Data Lake'e yazan bir Azure işlevidir. Ayrıca Synapse Sunucusuz SQL havuzunda Parquet dosyalarına işaret eden dış tablolar ve görünümler oluşturmaya yönelik bir betik içerir.
Bu çözüm Synapse Studio, SSMS ve Power BI gibi araçlarla tüm FHIR verilerini sorgulamanızı sağlar. Parquet dosyalarına doğrudan bir Synapse Spark havuzundan da erişebilirsiniz. Tüm FHIR verilerinize gerçek zamanlıya yakın bir şekilde erişmek ve aşağı akış sistemlerine özel dönüşümü ertelemek istiyorsanız bu çözümü göz önünde bulundurmanız gerekir.
Yükleme ve kullanım yönergeleri için OSS belgelerini izleyin.
FHIR-CDM işlem hattı oluşturucu OSS aracını kullanma
Not
FHIR-CDM işlem hattı oluşturucu, MIT lisansı altında yayımlanan bir açık kaynak aracıdır ve Azure için Microsoft SLA hizmetleri kapsamında değildir.
FHIR-CDM işlem hattı oluşturucu, MIT Lisansı altında yayımlanan bir Microsoft OSS projesidir. API kullanarak $export
bir FHIR sunucusundan verilerin anlık görüntüsünü kopyalamak, csv biçimine dönüştürmek ve Azure Data Lake Storage 2. Nesil'de bir CDM klasörüne yazmak için bir ADF işlem hattı oluşturmak için kullanılan bir araçtır. Araç, FHIR Kaynaklarını ve alanlarını tablolar halinde yansıtma ve düzleştirme yönergelerini içeren kullanıcı tarafından oluşturulmuş bir yapılandırma dosyası gerektirir. Verileri CDM klasöründen Synapse ayrılmış SQL havuzuna taşımak için Synapse çalışma alanında aşağı akış işlem hattı oluşturma yönergelerini de izleyebilirsiniz.
Bu çözüm, bir CDM klasörüne yazıldıkçe verileri tablo biçiminde dönüştürmenizi sağlar. FHIR verileri FHIR sunucusundan ayıklandıktan sonra özel bir şemaya dönüştürmek istiyorsanız bu çözümü göz önünde bulundurmanız gerekir.
Yükleme ve kullanım yönergeleri için OSS belgelerini izleyin.
Dışarı aktarılan verileri T-SQL kullanarak Synapse'e yükleme
Bu yaklaşımda FHIR işlemini kullanarak FHIR $export
kaynaklarını bir Azure Data Lake 2. Nesil (ADL 2. Nesil) blob depolama alanına NDJSON
biçiminde kopyalarsınız. Daha sonra, T-SQL kullanarak synapse'teki sunucusuz veya ayrılmış SQL havuzlarına depolamadan verileri yüklersiniz. Synapse işlem hatlarını kullanarak bu adımları sağlam bir veri taşıma işlem hattına dönüştürebilirsiniz.
Verileri kopyalamak için kullanma $export
FHIR sunucusunda yapılandırma $export
FHIR için Azure API, FHIR belirtimi tarafından tanımlanan işlemi uygulayarak $export
FHIR verilerinin NDJSON
tümünü veya filtrelenmiş bir alt kümesini biçiminde dışarı aktarır. Ayrıca, dışarı aktarma sırasında FHIR verilerini anonim hale getirmek için kimliksizleştirilmiş dışarı aktarmayı destekler.
FHIR verilerini Azure blob depolama alanına aktarmak için önce FHIR sunucunuzu verileri depolama hesabına aktaracak şekilde yapılandırmanız gerekir. (1) Yönetilen Kimliği etkinleştirmeniz gerekir, (2) depolama hesabında Erişim Denetimi'ne gidin ve bir rol ataması ekleyin, (3) için $export
depolama hesabınızı seçin. Daha fazla adım adım yönergeler burada bulunabilir.
Sunucuyu verileri herhangi bir Azure depolama hesabına aktaracak şekilde yapılandırabilirsiniz, ancak Synapse ile en iyi hizalama için ADL 2. Nesil'e aktarmanızı öneririz.
Komutu kullanma $export
FHIR sunucunuzu yapılandırdıktan sonra FHIR kaynaklarınızı Sistem, Hasta veya Grup düzeyinde dışarı aktarmak için belgeleri izleyebilirsiniz. Örneğin, adl 2. nesil blob depolama adınızı alanında {{BlobContainer}}
belirttiğiniz aşağıdaki $export
komutu kullanarak içindeki hastalarla Group
ilgili tüm FHIR verilerinizi dışarı aktarabilirsiniz:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
Dışarı aktarmak istediğiniz kaynakları kısıtlamak için önceki $export
çağrıda parametresini de kullanabilirsiniz_type
. Örneğin, aşağıdaki çağrı yalnızca Patient
, MedicationRequest
ve Observation
kaynaklarını dışarı aktarır:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
Desteklenen farklı parametreler hakkında daha fazla bilgi için sorgu parametreleriyle ilgili sayfa bölümümüze $export
göz atın.
Analiz için Synapse'i kullanma
Synapse çalışma alanı oluşturma
Synapse'i kullanmadan önce bir Synapse çalışma alanı gerekir. Azure portalında bir Azure Synapse Analytics hizmeti oluşturmanız gerekir. Daha fazla adım adım kılavuza buradan ulaşabilirsiniz. Çalışma alanı oluşturmak için bir ADLSGEN2
hesaba ihtiyacınız vardır. Azure Synapse çalışma alanınız, Synapse çalışma alanı verilerinizi depolamak için bu depolama hesabını kullanır.
Çalışma alanı oluşturduktan sonra, üzerinde çalışma alanınızda oturum açarak veya Azure portalında Synapse Studio'yu başlatarak Synapse Studio'da çalışma alanınızı https://web.azuresynapse.netgörüntüleyebilirsiniz.
Azure depolama ile Synapse arasında bağlı hizmet oluşturma
Verilerinizi Synapse'e kopyalamak için Verilerinizi Synapse ile dışarı aktardığınız Azure Depolama hesabına bağlanan bir bağlı hizmet oluşturmanız gerekir. Daha fazla adım adım yönerge burada bulunabilir.
- Synapse Studio'da Yönet sekmesine gidin. Dış bağlantılar'ın altında Bağlı hizmetler'i seçin.
- Yeni bir bağlı hizmet eklemek için Yeni'yi seçin.
- Listeden Azure Data Lake Storage 2. Nesil'ı seçin ve Devam'ı seçin.
- Kimlik doğrulama kimlik bilgilerinizi girin. Bittiğinde Oluştur’u seçin.
ADL 2. Nesil depolama alanınızla Synapse arasında bağlı bir hizmetiniz olduğuna göre, FHIR verilerinizi yüklemek ve analiz etmek için Synapse SQL havuzlarını kullanmaya hazırsınız.
Sunucusuz ve ayrılmış SQL havuzu arasında karar verme
Azure Synapse Analytics iki farklı SQL havuzu sunar: sunucusuz SQL havuzu ve ayrılmış SQL havuzu. Sunucusuz SQL havuzu, herhangi bir kaynak sağlama olmadan sunucusuz SQL uç noktasını kullanarak verileri doğrudan blob depolamada sorgulama esnekliği sağlar. Ayrılmış SQL havuzu, yüksek performans ve eşzamanlılık için işleme gücüne sahiptir ve kurumsal ölçekli veri ambarı özellikleri için önerilir. İki SQL havuzu hakkında daha fazla bilgi için SQL mimarisiyle ilgili Synapse belgeleri sayfasına bakın.
Sunucusuz SQL havuzunu kullanma
Sunucusuz olduğundan, kurulacak altyapı veya korunacak kümeler yoktur. Çalışma alanı oluşturulur oluşturulmaz Synapse Studio'dan veri sorgulamaya başlayabilirsiniz.
Örneğin, aşağıdaki sorgu seçili alanları Patient.ndjson
tablosal bir yapıya dönüştürmek için kullanılabilir.
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',
...
)
Önceki sorguda OPENROWSET
işlev Azure Depolama'daki dosyalara erişir ve OPENJSON
JSON metnini ayrıştırarak JSON giriş özelliklerini satır ve sütun olarak döndürür. Bu sorgu her yürütülürken sunucusuz SQL havuzu blob depolamadan dosyayı okur, JSON ayrıştırıp alanları ayıklar.
Daha iyi sorgu performansı elde etmek için sonuçları aşağıdaki gibi Bir Dış Tablo'da Parquet biçiminde de gerçekleştirebilirsiniz.
-- 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 --
Ayrılmış SQL havuzunu kullanma
Ayrılmış SQL havuzu, bellek içi performans için yönetilen tabloları ve hiyerarşik önbelleği destekler. Basit T-SQL sorguları ile büyük verileri içeri aktarabilir ve ardından yüksek performanslı analiz çalıştırmak için dağıtılmış sorgu altyapısının gücünü kullanabilirsiniz.
Depolama alanınızdan ayrılmış bir SQL havuzuna veri yüklemenin en basit ve en hızlı yolu, CSV, Parquet ve ORC dosyalarını okuyabilen T-SQL'de komutunu kullanmaktır COPY
. Aşağıdaki örnek sorguda olduğu gibi. COPY
Satırları tablosal bir yapıya yüklemek NDJSON
için komutunu kullanın.
-- 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
Tabloda JSON satırları StagingPatient
oluşturulduktan sonra işlevini kullanarak ve sonuçları tablolarda depolayarak OPENJSON
verilerin farklı tablosal biçimlerini oluşturabilirsiniz. Aşağıda, kaynaktan birkaç alan ayıklayarak tablo oluşturmaya Patient
yönelik örnek bir SQL sorgusu verilmiştir Patient
.
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
Sonraki adımlar
Bu makalede FHIR verilerinizi Synapse'e kopyalamanın üç farklı yolunu öğrendiniz.
Daha sonra, kişisel sağlık bilgilerini (PHI) korumak için FHIR verilerinizi Synapse'e aktarırken nasıl kimliklerini kaldırabileceğinizi öğrenebilirsiniz.