نسخ البيانات من واجهة برمجة تطبيقات Azure ل FHIR إلى Azure Synapse Analytics
في هذه المقالة، ستتعلم ثلاث طرق لنسخ البيانات من واجهة برمجة تطبيقات Azure ل FHIR إلى Azure Synapse Analytics، وهي خدمة تحليلات لا حدود لها تجمع بين تكامل البيانات وتخزين بيانات المؤسسة وتحليلات البيانات الضخمة.
- استخدام أداة FHIR إلى Synapse Sync Agent OSS
- استخدام أداة FHIR إلى أداة OSS لمنشئ البنية الأساسية لبرنامج ربط العمليات التجارية CDM
- استخدام $export وتحميل البيانات إلى Synapse باستخدام T-SQL
استخدام أداة FHIR إلى Synapse Sync Agent OSS
ملاحظة
FHIR إلى Synapse Sync Agent هي أداة مصدر مفتوح تم إصدارها بموجب ترخيص MIT، ولا يغطيها Microsoft SLA لخدمات Azure.
FHIR إلى عامل مزامنة Synapse هو مشروع Microsoft OSS تم إصداره بموجب ترخيص MIT. إنها دالة Azure تستخرج البيانات من خادم FHIR باستخدام واجهات برمجة تطبيقات موارد FHIR، وتحولها إلى ملفات Parquet هرمية، وتكتبها في Azure Data Lake في الوقت الفعلي تقريبا. يحتوي هذا أيضا على برنامج نصي لإنشاء جداول خارجية وطرق عرض في تجمع SQL بلا خادم Synapse يشير إلى ملفات Parquet.
يمكنك هذا الحل من الاستعلام مقابل بيانات FHIR بأكملها باستخدام أدوات مثل Synapse Studio وSSMS وPower BI. يمكنك أيضا الوصول إلى ملفات Parquet مباشرة من تجمع Synapse Spark. يجب أن تفكر في هذا الحل إذا كنت تريد الوصول إلى جميع بيانات FHIR الخاصة بك في الوقت الفعلي تقريبا، وتريد تأجيل التحويل المخصص إلى أنظمة انتقال البيانات من الخادم.
اتبع وثائق OSS للحصول على إرشادات التثبيت والاستخدام.
استخدام FHIR إلى أداة OSS لمنشئ البنية الأساسية لبرنامج ربط العمليات التجارية CDM
ملاحظة
FHIR إلى مولد البنية الأساسية لبرنامج ربط العمليات التجارية CDM هو أداة مصدر مفتوح تم إصدارها بموجب ترخيص MIT، ولا يغطيها Microsoft SLA لخدمات Azure.
منشئ البنية الأساسية لبرنامج ربط العمليات التجارية FHIR إلى CDM هو مشروع Microsoft OSS تم إصداره بموجب ترخيص MIT. إنها أداة لإنشاء مسار ADF لنسخ لقطة من البيانات من خادم FHIR باستخدام $export API، وتحويلها إلى تنسيق csv، والكتابة إلى مجلد CDM في Azure Data Lake Storage Gen 2. تتطلب الأداة ملف تكوين أنشأه المستخدم يحتوي على إرشادات لعرض موارد FHIR والحقول وتسويةها في جداول. يمكنك أيضا اتباع الإرشادات الخاصة بإنشاء مسار انتقال البيانات من الخادم في مساحة عمل Synapse لنقل البيانات من مجلد CDM إلى تجمع SQL المخصص ل Synapse.
يمكنك هذا الحل من تحويل البيانات إلى تنسيق جدولي أثناء كتابتها إلى مجلد CDM. يجب مراعاة هذا الحل إذا كنت تريد تحويل بيانات FHIR إلى مخطط مخصص بعد استخراجها من خادم FHIR.
اتبع وثائق OSS للحصول على إرشادات التثبيت والاستخدام.
تحميل البيانات المصدرة إلى Synapse باستخدام T-SQL
في هذا الأسلوب، يمكنك استخدام عملية FHIR $export
لنسخ موارد FHIR إلى تخزين كائن ثنائي كبير الحجم Azure Data Lake Gen 2 (ADL Gen 2) بتنسيق NDJSON
. بعد ذلك، يمكنك تحميل البيانات من التخزين إلى تجمعات SQL بلا خادم أو مخصصة في Synapse باستخدام T-SQL. يمكنك تحويل هذه الخطوات إلى مسار حركة بيانات قوي باستخدام مسارات Synapse.
استخدام $export
لنسخ البيانات
التكوين $export
في خادم FHIR
تنفذ $export
واجهة برمجة تطبيقات Azure ل FHIR العملية المحددة بواسطة مواصفات FHIR لتصدير جميع أو مجموعة فرعية تمت تصفيتها من بيانات FHIR بتنسيق NDJSON
. بالإضافة إلى ذلك، فإنه يدعم التصدير غير المحدد إلى بيانات FHIR مجهولة الهوية أثناء التصدير.
لتصدير بيانات FHIR إلى تخزين Azure blob، تحتاج أولا إلى تكوين خادم FHIR الخاص بك لتصدير البيانات إلى حساب التخزين. ستحتاج إلى (1) تمكين الهوية المدارة، (2) انتقل إلى التحكم في الوصول في حساب التخزين وإضافة تعيين الدور، (3) حدد حساب التخزين الخاص بك ل $export
. يمكن العثور على المزيد خطوة بخطوة هنا.
يمكنك تكوين الخادم لتصدير البيانات إلى أي نوع من حساب تخزين Azure، ولكننا نوصي بالتصدير إلى ADL Gen 2 للحصول على أفضل محاذاة مع Synapse.
استخدام $export
الأمر
بعد تكوين خادم FHIR الخاص بك، يمكنك اتباع الوثائق لتصدير موارد FHIR على مستوى النظام أو المريض أو المجموعة. على سبيل المثال، يمكنك تصدير جميع بيانات FHIR المتعلقة بالمرضى في Group
باستخدام الأمر التالي $export
، حيث يمكنك تحديد اسم تخزين كائن ثنائي كبير الحجم ADL Gen 2 في الحقل {{BlobContainer}}
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}
يمكنك أيضا استخدام _type
المعلمة في $export
الاستدعاء أعلاه لتقييد الموارد التي تريد تصديرها. على سبيل المثال، سيقوم الاستدعاء التالي بتصدير الموارد و و Observation
فقطPatient
MedicationRequest
:
https://{{FHIR service base URL}}/Group/{{GroupId}}/$export?_container={{BlobContainer}}&
_type=Patient,MedicationRequest,Condition
لمزيد من المعلومات حول المعلمات المختلفة المدعومة، راجع قسم صفحتنا $export
على معلمات الاستعلام.
استخدام Synapse للتحليليات
إنشاء مساحة عمل Synapse
قبل استخدام Synapse، ستحتاج إلى مساحة عمل Synapse. ستقوم بإنشاء خدمة Azure Synapse Analytics على مدخل Microsoft Azure. يمكن العثور على مزيد من الدليل خطوة بخطوة هنا. تحتاج إلى ADLSGEN2
حساب لإنشاء مساحة عمل. ستستخدم مساحة عمل Azure Synapse حساب التخزين هذا لتخزين بيانات مساحة عمل Synapse.
بعد إنشاء مساحة عمل، يمكنك عرض مساحة العمل الخاصة بك في Synapse Studio عن طريق تسجيل الدخول إلى مساحة العمل الخاصة بك على https://web.azuresynapse.net، أو تشغيل Synapse Studio في مدخل Microsoft Azure.
إنشاء خدمة مرتبطة بين تخزين Azure وSynapse
لنسخ بياناتك إلى Synapse، تحتاج إلى إنشاء خدمة مرتبطة تربط حساب Azure Storage الخاص بك، حيث قمت بتصدير بياناتك، باستخدام Synapse. يمكن العثور على مزيد من الإرشادات خطوة بخطوة هنا.
- في Synapse Studio، استعرض للوصول إلى علامة التبويب إدارة وضمن الاتصالات الخارجية، حدد الخدمات المرتبطة.
- حدد جديد لإضافة خدمة مرتبطة جديدة.
- حدد Azure Data Lake Storage Gen2 من القائمة وحدد متابعة.
- أدخل بيانات اعتماد المصادقة. قم بتحديدإنشاءعند الانتهاء.
الآن بعد أن أصبح لديك خدمة مرتبطة بين تخزين ADL Gen 2 وSynapse، فأنت مستعد لاستخدام تجمعات Synapse SQL لتحميل بيانات FHIR وتحليلها.
تحديد بين تجمع SQL بلا خادم ومخصص
يوفر Azure Synapse Analytics مجموعتي SQL مختلفتين، تجمع SQL بلا خادم وتجمع SQL مخصص. يمنح تجمع SQL بلا خادم مرونة الاستعلام عن البيانات مباشرة في تخزين الكائن الثنائي كبير الحجم باستخدام نقطة نهاية SQL بلا خادم دون أي توفير للموارد. يحتوي تجمع SQL المخصص على قوة المعالجة للأداء العالي والتزامن، ويوصى به لقدرات تخزين البيانات على نطاق المؤسسة. لمزيد من التفاصيل حول تجمعي SQL، راجع صفحة وثائق Synapse على بنية SQL.
استخدام تجمع SQL بلا خادم
نظرا لأنه بلا خادم، لا توجد بنية أساسية لإعدادها أو مجموعات للحفاظ عليها. يمكنك البدء في الاستعلام عن البيانات من Synapse Studio بمجرد إنشاء مساحة العمل.
على سبيل المثال، يمكن استخدام الاستعلام التالي لتحويل الحقول المحددة من Patient.ndjson
إلى بنية جدولية:
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',
...
)
في الاستعلام أعلاه، تصل الدالة OPENROWSET
إلى الملفات في Azure Storage، وتحلل OPENJSON
نص JSON وتعيد خصائص إدخال JSON كصفوف وأعمدة. في كل مرة يتم فيها تنفيذ هذا الاستعلام، يقرأ تجمع SQL بلا خادم الملف من تخزين الكائن الثنائي كبير الحجم، ويوزع JSON، ويستخرج الحقول.
يمكنك أيضا تحقيق النتائج بتنسيق Parquet في جدول خارجي للحصول على أداء استعلام أفضل، كما هو موضح أدناه:
-- 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 --
استخدام تجمع SQL مخصص
يدعم تجمع SQL المخصص الجداول المدارة وذاكرة التخزين المؤقت الهرمية للأداء في الذاكرة. يمكنك استيراد البيانات الضخمة باستخدام استعلامات T-SQL بسيطة، ثم استخدام قوة محرك الاستعلام الموزع لتشغيل التحليلات عالية الأداء.
أبسط وأسرع طريقة لتحميل البيانات من التخزين إلى تجمع SQL مخصص هي استخدام COPY
الأمر في T-SQL، والذي يمكنه قراءة ملفات CSV وParquet وORC. كما هو الحال في مثال الاستعلام أدناه، استخدم COPY
الأمر لتحميل NDJSON
الصفوف في بنية جدولية.
-- 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
بمجرد أن يكون لديك صفوف JSON في StagingPatient
الجدول أعلاه، يمكنك إنشاء تنسيقات جدولية مختلفة للبيانات باستخدام الدالة OPENJSON
وتخزين النتائج في جداول. فيما يلي نموذج استعلام SQL لإنشاء Patient
جدول عن طريق استخراج بعض الحقول من 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
الخطوات التالية
في هذه المقالة، تعلمت ثلاث طرق مختلفة لنسخ بيانات FHIR إلى Synapse.
بعد ذلك، يمكنك التعرف على كيفية إلغاء تحديد بيانات FHIR الخاصة بك أثناء تصديرها إلى Synapse من أجل حماية PHI.
FHIR® هي علامة تجارية مسجلة ل HL7 وتستخدم بإذن من HL7.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ