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

$export kullanarak Azure depolamadan Synapse'e.

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 $exportdepolama 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, MedicationRequestve 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.

  1. Synapse Studio'da Yönet sekmesine gidin. Dış bağlantılar'ın altında Bağlı hizmetler'i seçin.
  2. Yeni bir bağlı hizmet eklemek için Yeni'yi seçin.
  3. Listeden Azure Data Lake Storage 2. Nesil'ı seçin ve Devam'ı seçin.
  4. 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.

Not

FHIR®, HL7'nin tescilli ticari markasıdır ve HL7'nin izniyle kullanılır.