1. مقدمة

تاريخ آخر تعديل: 2020-02-28
يوضّح هذا الدرس البرمجي نمطًا لنقل البيانات من أجل نقل بيانات الرعاية الصحية المنسَّقة بتنسيق CSV إلى BigQuery بشكل مجمّع. سنستخدم مسار البيانات المجمّعة في Cloud Data Fusion في هذا المختبر. تم إنشاء بيانات اختبار واقعية خاصة بالرعاية الصحية وإتاحتها لك في حزمة Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/csv/).
في هذا الدرس العملي، ستتعرّف على ما يلي:
- كيفية نقل بيانات CSV (التحميل المجدوَل المجمّع) من GCS إلى BigQuery باستخدام Cloud Data Fusion
- كيفية إنشاء مسار تكامل بيانات بشكل مرئي في Cloud Data Fusion من أجل تحميل بيانات الرعاية الصحية وتحويلها وإخفاء هويتها بشكل مجمّع
المتطلبات اللازمة لتشغيل هذا الدرس التطبيقي حول الترميز
- يجب أن يكون لديك إذن الوصول إلى مشروع على Google Cloud Platform.
- يجب أن يكون لديك دور "المالك" لمشروع Google Cloud Platform.
- بيانات الرعاية الصحية بتنسيق CSV، بما في ذلك العنوان
إذا لم يكن لديك مشروع على Google Cloud Platform، اتّبِع هذه الخطوات لإنشاء مشروع جديد على Google Cloud Platform.
تم تحميل بيانات الرعاية الصحية بتنسيق CSV مسبقًا في حزمة GCS على gs://hcls_testing_data_fhir_10_patients/csv/. يحتوي كل ملف CSV خاص بمورد على بنية مخطط فريدة. على سبيل المثال، يحتوي ملف Patients.csv على مخطط مختلف عن ملف Providers.csv. يمكن العثور على ملفات المخطط المحمَّلة مسبقًا في gs://hcls_testing_data_fhir_10_patients/csv_schemas.
إذا كنت بحاجة إلى مجموعة بيانات جديدة، يمكنك إنشاؤها في أي وقت باستخدام SyntheaTM. بعد ذلك، حمِّله إلى GCS بدلاً من نسخه من الحزمة في خطوة "نسخ بيانات الإدخال".
2. إعداد مشروع Google Cloud Platform
تهيئة متغيرات shell لبيئتك
للعثور على PROJECT_ID، يُرجى الرجوع إلى تحديد المشاريع.
<!-- CODELAB: Initialize shell variables -> <!-- Your current GCP Project ID -> export PROJECT_ID=<PROJECT_ID> <!-- A new GCS Bucket in your current Project - INPUT -> export BUCKET_NAME=<BUCKET_NAME> <!-- A new BQ Dataset ID - OUTPUT -> export DATASET_ID=<DATASET_ID>
أنشئ حزمة GCS لتخزين بيانات الإدخال وسجلات الأخطاء باستخدام أداة gsutil.
gsutil mb -l us gs://$BUCKET_NAME
الحصول على إذن الوصول إلى مجموعة البيانات الاصطناعية
- من عنوان البريد الإلكتروني الذي تستخدمه لتسجيل الدخول إلى Cloud Console، أرسِل رسالة إلكترونية إلى hcls-solutions-external+subscribe@google.com تطلب فيها الانضمام.
- ستتلقّى رسالة إلكترونية تتضمّن تعليمات حول كيفية تأكيد الإجراء.

- استخدِم الخيار للردّ على الرسالة الإلكترونية للانضمام إلى المجموعة. لا تنقر على الزر.
- بعد تلقّي رسالة التأكيد الإلكترونية، يمكنك الانتقال إلى الخطوة التالية في الدرس العملي.
نسخ بيانات الإدخال:
gsutil -m cp -r gs://hcls_testing_data_fhir_10_patients/csv gs://$BUCKET_NAME
إنشاء مجموعة بيانات BigQuery
bq mk --location=us --dataset $PROJECT_ID:$DATASET_ID
3- إعداد بيئة Cloud Data Fusion
اتّبِع الخطوات التالية من أجل تفعيل Cloud Data Fusion API ومنح الأذونات المطلوبة:
فعِّل واجهات برمجة التطبيقات.
- انتقِل إلى مكتبة واجهات برمجة التطبيقات في "وحدة تحكّم Google Cloud Platform".
- من قائمة المشاريع، اختَر مشروعك.
- في "مكتبة واجهات برمجة التطبيقات"، اختَر واجهة برمجة التطبيقات التي تريد تفعيلها. إذا كنت بحاجة إلى مساعدة في العثور على واجهة برمجة التطبيقات، استخدِم حقل البحث و/أو الفلاتر.
- في صفحة واجهة برمجة التطبيقات، انقر على "تفعيل".
إنشاء مثيل Cloud Data Fusion
- في "وحدة تحكّم Google Cloud"، اختَر ProjectID.
- اختَر "دمج البيانات" من القائمة اليمنى، ثمّ انقر على الزرّ "إنشاء مثيل" في منتصف الصفحة (الإنشاء الأول)، أو انقر على الزرّ "إنشاء مثيل" في القائمة العلوية (الإنشاء الإضافي).


- أدخِل اسم المثيل. اختَر مؤسسة.

- انقر على الزر CREATE (إنشاء).
إعداد أذونات المثيل:
بعد إنشاء آلة افتراضية، اتّبِع الخطوات التالية لمنح حساب الخدمة المرتبط بالآلة الافتراضية أذونات في مشروعك:
- انتقِل إلى صفحة تفاصيل الجهاز الظاهري من خلال النقر على اسم الجهاز الظاهري.

- انسخ حساب الخدمة.

- انتقِل إلى صفحة "إدارة الهوية وإمكانية الوصول" (IAM) الخاصة بمشروعك.
- في صفحة أذونات "إدارة الهوية وإمكانية الوصول"، سنضيف الآن حساب الخدمة كعضو جديد ونمنحه دور وكيل خدمة Cloud Data Fusion API. انقر على الزر إضافة، ثم الصِق "حساب الخدمة" في حقل "أعضاء جدد" واختَر "إدارة الخدمة" -> دور "وكيل خادم Cloud Data Fusion API".

- انقر على حفظ.
بعد إكمال هذه الخطوات، يمكنك البدء في استخدام Cloud Data Fusion من خلال النقر على الرابط عرض المثيل في صفحة مثيلات Cloud Data Fusion أو صفحة تفاصيل أحد المثيلات.
إعداد قاعدة جدار الحماية:
- انتقِل إلى "وحدة تحكّم Google Cloud" -> "شبكة السحابة الافتراضية الخاصة" -> "قواعد جدار الحماية" للتحقّق مما إذا كانت قاعدة default-allow-ssh موجودة أم لا.

- إذا لم يكن الأمر كذلك، أضِف قاعدة جدار حماية تسمح بجميع حركة بيانات SSH الواردة إلى الشبكة التلقائية.
باستخدام سطر الأوامر:
gcloud beta compute --project={PROJECT_ID} firewall-rules create default-allow-ssh --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:22 --source-ranges=0.0.0.0/0 --enable-logging
باستخدام واجهة المستخدم: انقر على "إنشاء قاعدة جدار الحماية" (Create Firewall Rule) واملأ المعلومات:


4. إنشاء مخطط للتحويل
بعد أن أنشأنا بيئة Cloud Fusion في Google Cloud Platform، لننشئ مخططًا. نحتاج إلى هذا المخطط لتحويل بيانات CSV.
- في نافذة Cloud Data Fusion، انقر على الرابط "عرض المثيل" في عمود "الإجراء". ستتم إعادة توجيهك إلى صفحة أخرى. انقر على عنوان URL المقدَّم لفتح مثيل Cloud Data Fusion. اختيارك النقر على زر "بدء الجولة" أو "لا، شكرًا" في النافذة المنبثقة "مرحبًا"
- وسِّع قائمة "الهامبرغر"، وانقر على Pipeline -> استوديو

- ضمن قسم "التحويل" (Transform) في لوحة المكوّنات الإضافية على يمين الصفحة، انقر نقرًا مزدوجًا على عقدة Wrangler التي ستظهر في واجهة مستخدم "خطوط نقل البيانات" (Data Pipelines).

- أشِر إلى عقدة Wrangler وانقر على الخصائص. انقر على الزر Wrangle، ثم اختَر ملف مصدر بتنسيق .csv (مثل patients.csv)، ويجب أن يحتوي على جميع حقول البيانات لإنشاء المخطط المطلوب.
- انقر على السهم المتّجه للأسفل (عمليات تحويل الأعمدة) بجانب كل اسم عمود (مثل body).

- بشكلٍ تلقائي، سيفترض الاستيراد الأوّلي أنّه لا يوجد سوى عمود واحد في ملف البيانات. لتحليله كملف CSV، اختَر تحليل → ملف CSV، ثم اختَر المحدد وضَع علامة في مربّع "ضبط الصف الأول كعنوان" حسب الاقتضاء. انقر على الزر "تطبيق".
- انقر على السهم المتّجه للأسفل بجانب حقل "النص"، ثمّ اختَر "حذف العمود" لإزالة حقل "النص". بالإضافة إلى ذلك، يمكنك تجربة عمليات تحويل أخرى، مثل إزالة الأعمدة وتغيير نوع البيانات لبعض الأعمدة (النوع التلقائي هو "سلسلة") وتقسيم الأعمدة وتحديد أسماء الأعمدة وما إلى ذلك.

- تعرض علامتا التبويب "الأعمدة" و"خطوات التحويل" مخطط الإخراج ووصفة Wrangler. انقر على تطبيق في أعلى يسار الصفحة. انقر على الزر "تحقّق". يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.

- في "خصائص Wrangler"، انقر على القائمة المنسدلة الإجراءات ثم على تصدير المخطط المطلوب إلى وحدة التخزين المحلية لتتمكّن من استيراده في المستقبل إذا لزم الأمر.
- احفظ وصفة Wrangler لاستخدامها في المستقبل.
parse-as-csv :body ',' true drop body
- لإغلاق نافذة "خصائص Wrangler"، انقر على الزر X.
5- إنشاء عُقد للمسار
في هذا القسم، سننشئ مكوّنات خط الأنابيب.
- في واجهة مستخدم Data Pipelines، في أعلى يمين الصفحة، من المفترض أن ترى أنّه تم اختيار Data Pipeline - Batch كنوع خط الأنابيب.

- تتضمّن اللوحة اليمنى أقسامًا مختلفة، مثل "الفلتر" و"المصدر" و"التحويل" و"الإحصاءات" و"المستودع" و"الشروط والإجراءات" و"معالجات الأخطاء" و"التنبيهات"، حيث يمكنك اختيار عقدة أو عُقد للخطوات.

عقدة المصدر
- اختَر عقدة المصدر.
- ضمن قسم "المصدر" (Source) في لوحة "المكوّن الإضافي" (Plugin) على يمين الصفحة، انقر مرّتين على عقدة Google Cloud Storage التي تظهر في واجهة مستخدم "خطوط نقل البيانات" (Data Pipelines).
- أشِر إلى عقدة مصدر GCS وانقر على الخصائص.

- املأ الحقول المطلوبة. اضبط الحقول التالية:
- Label = {any text}
- اسم المرجع = {أي نص}
- رقم تعريف المشروع = اكتشاف تلقائي
- المسار = عنوان URL لخدمة GCS يؤدي إلى الحزمة في مشروعك الحالي. على سبيل المثال، gs://$BUCKET_NAME/csv/
- التنسيق = نص
- حقل المسار = اسم الملف
- Path Filename Only = true
- Read Files Recursively = true
- أضِف الحقل "اسم الملف" إلى مخطط الإخراج في "خدمة التخزين السحابي من Google" من خلال النقر على الزر +.
- انقر على المستندات للحصول على شرح مفصّل. انقر على الزر "تحقّق". يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.
- لإغلاق "خصائص GCS"، انقر على الزر X.
تحويل عقدة
- اختَر عقدة "التحويل".
- ضمن قسم "التحويل" (Transform) في لوحة "المكوّنات الإضافية" (Plugin) على يمين الصفحة، انقر نقرًا مزدوجًا على عقدة Wrangler التي تظهر في واجهة مستخدم "خطوط نقل البيانات" (Data Pipelines). ربط عقدة مصدر GCS بعقدة تحويل Wrangler
- أشِر إلى عقدة Wrangler وانقر على الخصائص.
- انقر على القائمة المنسدلة الإجراءات واختَر استيراد لاستيراد مخطط محفوظ (على سبيل المثال: gs://hcls_testing_data_fhir_10_patients/csv_schemas/ schema (Patients).json)، ثم ألصِق الوصفة المحفوظة من القسم السابق.
- أو أعِد استخدام عقدة Wrangler من القسم: إنشاء مخطط للتحويل.
- املأ الحقول المطلوبة. اضبط الحقول التالية:
- Label = {any text}
- اسم حقل الإدخال = {*}
- Precondition = {filename != "patients.csv"} للتمييز بين كل ملف إدخال (على سبيل المثال، patients.csv وproviders.csv وallergies.csv وما إلى ذلك) من عقدة المصدر.

- أضِف عقدة JavaScript لتنفيذ JavaScript المقدَّم من المستخدم والذي يحوّل السجلات بشكل أكبر. في هذا الدرس التطبيقي حول الترميز، نستفيد من عقدة JavaScript للحصول على طابع زمني لكل تعديل على السجلّ. وصِّل عقدة تحويل Wrangler بعقدة تحويل JavaScript. افتح السمات في JavaScript، وأضِف الدالة التالية:

function transform(input, emitter, context) {
input.TIMESTAMP = (new Date()).getTime()*1000;
emitter.emit(input);
}
- أضِف الحقل المسمّى TIMESTAMP إلى "مخطط الإخراج" (Output Schema) (إذا لم يكن متوفّرًا) من خلال النقر على علامة +. اختَر الطابع الزمني كنوع البيانات.

- انقر على المستندات للحصول على شرح مفصّل. انقر على الزر "التحقّق" للتحقّق من صحة جميع المعلومات المُدخَلة. يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.
- لإغلاق نافذة "خصائص التحويل"، انقر على الزر X.
إخفاء البيانات وإزالة معلومات تحديد الهوية
- يمكنك اختيار أعمدة البيانات الفردية من خلال النقر على السهم المتّجه للأسفل في العمود وتطبيق قواعد الإخفاء ضمن "اختيار إخفاء البيانات" حسب متطلباتك (على سبيل المثال، عمود رقم الضمان الاجتماعي).

- يمكنك إضافة المزيد من التوجيهات في نافذة الوصفة لعقدة Wrangler. على سبيل المثال، استخدام توجيه التجزئة مع خوارزمية التجزئة باتّباع هذه البنية لغرض إخفاء معلومات تحديد الهوية:
hash <column> <algorithm> <encode> <column>: name of the column <algorithm>: Hashing algorithm (i.e. MD5, SHA-1, etc.) <encode>: default is true (hashed digest is encoded as hex with left-padding zeros). To disable hex encoding, set <encode> to false.

عُقدة الحذف
- اختَر عقدة المصدر.
- ضمن قسم Sink في لوحة المكوّنات الإضافية على يمين الصفحة، انقر مرّتين على عقدة BigQuery التي ستظهر في واجهة مستخدم "مسار نقل البيانات".
- أشِر إلى عقدة مخزَن BigQuery وانقر على "السمات".

- املأ الحقول المطلوبة. اضبط الحقول التالية:
- Label = {any text}
- اسم المرجع = {أي نص}
- رقم تعريف المشروع = اكتشاف تلقائي
- مجموعة البيانات = مجموعة بيانات BigQuery المستخدَمة في المشروع الحالي (أي DATASET_ID)
- الجدول = {اسم الجدول}
- انقر على المستندات للحصول على شرح مفصّل. انقر على الزر "التحقّق" للتحقّق من صحة جميع المعلومات المُدخَلة. يشير اللون الأخضر "لم يتم العثور على أي أخطاء" إلى النجاح.

- لإغلاق "خصائص BigQuery"، انقر على الزر X.
6. إنشاء مسار بيانات مجمّعة
ربط جميع العُقد في مسار
- اسحب سهم اتصال > على الحافة اليسرى لعقدة المصدر وأفلِته على الحافة اليمنى لعقدة الوجهة.
- يمكن أن تتضمّن سلسلة المعالجة فروعًا متعددة تتلقّى ملفات الإدخال من عقدة "مصدر GCS" نفسها.

- أدخِل اسمًا لعملية النقل.
انتهيت! لقد أنشأت للتو مسار بيانات مجمّعة الأول ويمكنك نشره وتشغيله.
إرسال تنبيهات مسار الإحالة الناجحة عبر البريد الإلكتروني (اختياري)
لاستخدام ميزة SendEmail في Pipeline Alert، يتطلّب الإعداد توفير خادم بريد لإرسال الرسائل من مثيل جهاز افتراضي. يُرجى الاطّلاع على رابط المرجع أدناه للحصول على مزيد من المعلومات:
إرسال رسائل إلكترونية من جهاز افتراضي | مستندات Compute Engine
في هذا الدرس التطبيقي حول الترميز، سنعدّ خدمة ترحيل البريد عبر Mailgun باتّباع الخطوات التالية:
- اتّبِع التعليمات الواردة في إرسال رسائل إلكترونية باستخدام Mailgun | مستندات Compute Engine لإعداد حساب على Mailgun وإعداد خدمة الإرسال عبر البريد الإلكتروني. في ما يلي تعديلات إضافية.
- أضِف جميع عناوين البريد الإلكتروني للمستلِمين إلى قائمة Mailgun المسموح بها. يمكن العثور على هذه القائمة في Mailgun>Sending>Overview على اللوحة اليمنى.

بعد أن ينقر المستلمون على "أوافق" في الرسالة الإلكترونية المُرسَلة من support@mailgun.net، يتم حفظ عناوين بريدهم الإلكتروني في القائمة المسموح بها لتلقّي رسائل التنبيهات بشأن خطوط الإنتاج.

- الخطوة 3 من قسم "قبل البدء" - إنشاء قاعدة جدار الحماية على النحو التالي:

- الخطوة 3 من "ضبط Mailgun كخدمة ترحيل بريد باستخدام Postfix" اختَر موقع إلكتروني على الإنترنت أو الإنترنت مع مضيف ذكي بدلاً من محلي فقط كما هو مذكور في التعليمات.

- الخطوة 4 من "ضبط Mailgun كخدمة ترحيل بريد باستخدام Postfix" عدِّل vi /etc/postfix/main.cf لإضافة 10.128.0.0/9 في نهاية mynetworks.

- عدِّل vi /etc/postfix/master.cf لتغيير بروتوكول نقل البريد البسيط (SMTP) التلقائي (25) إلى المنفذ 587.

- في أعلى يسار "استوديو Data Fusion"، انقر على ضبط. انقر على تنبيه خط الأنابيب، ثمّ انقر على زر + لفتح نافذة التنبيهات. اختَر SendEmail.

- املأ نموذج إعدادات البريد الإلكتروني. اختَر الإكمال أو النجاح أو التعذّر من القائمة المنسدلة شرط التشغيل لكل نوع تنبيه. إذا كان تضمين رمز سير العمل = false، سيتم إرسال المعلومات من حقل "الرسالة" فقط. إذا كان تضمين رمز سير العمل = صحيح، سيتم إرسال المعلومات من حقل "الرسالة" ومعلومات رمز سير العمل التفصيلية. يجب استخدام أحرف صغيرة في البروتوكول. استخدِم أي عنوان بريد إلكتروني وهمي غير عنوان البريد الإلكتروني لشركتك في حقل المرسِل.

7. ضبط خط أنابيب ونشره وتشغيله/جدولته

- في أعلى يسار "استوديو Data Fusion"، انقر على ضبط. اختَر Spark من أجل Engine Config. انقر على "حفظ" في نافذة "الإعداد".

- انقر على معاينة لمعاينة البيانات**،** ثم انقر على **معاينة** مرة أخرى للرجوع إلى النافذة السابقة. يمكنك أيضًا **تشغيل** خط الأنابيب في "وضع المعاينة".

- انقر على السجلات لعرض السجلات.
- انقر على حفظ لحفظ جميع التغييرات.
- انقر على استيراد لاستيراد إعدادات المسار المحفوظة عند إنشاء مسار جديد.
- انقر على تصدير لتصدير إعدادات مسار.
- انقر على نشر لنشر خط الأنابيب.
- بعد نشرها، انقر على تشغيل وانتظِر إلى أن يكتمل تشغيل خط الأنابيب.

- يمكنك تكرار خطة التسويق من خلال النقر على "تكرار" ضمن زر الإجراءات.
- يمكنك تصدير إعدادات مسار الإحالة الناجحة من خلال النقر على "تصدير" ضمن زر الإجراءات.
- انقر على المشغّلات الواردة أو المشغّلات الصادرة على الحافة اليمنى أو اليسرى من نافذة Studio لضبط مشغّلات خطوط الإنتاج إذا أردت ذلك.
- انقر على جدولة لجدولة تشغيل المسار وتحميل البيانات بشكلٍ دوري.

- تعرض الملخّص رسومات بيانية لسجلّ عمليات التنفيذ والسجلات وسجلّات الأخطاء والتحذيرات.
8. التحقّق من الصحة
- تم تنفيذ عملية التحقّق من صحة البيانات بنجاح.

- التحقّق ممّا إذا كانت مجموعة بيانات BigQuery تتضمّن جميع الجداول
bq ls $PROJECT_ID:$DATASET_ID
tableId Type Labels Time Partitioning
----------------- ------- -------- -------------------
Allergies TABLE
Careplans TABLE
Conditions TABLE
Encounters TABLE
Imaging_Studies TABLE
Immunizations TABLE
Medications TABLE
Observations TABLE
Organizations TABLE
Patients TABLE
Procedures TABLE
Providers TABLE
- تلقّي رسائل إلكترونية تتضمّن تنبيهات (في حال ضبطها)
عرض النتائج
لعرض النتائج بعد تشغيل مسار العرض، اتّبِع الخطوات التالية:
- إجراء طلب بحث في الجدول من خلال واجهة مستخدم BigQuery الانتقال إلى واجهة مستخدم BigQuery
- عدِّل الاستعلام أدناه ليناسب اسم مشروعك ومجموعة البيانات والجدول.

9- تنظيف
لتجنُّب تحمّل رسوم في حسابك على Google Cloud Platform مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، اتّبِع الخطوات التالية:
بعد الانتهاء من البرنامج التعليمي، يمكنك تنظيف الموارد التي أنشأتها على Google Cloud Platform حتى لا تشغل حصتك، ولن يتم تحصيل رسوم منك مقابلها في المستقبل. توضّح الأقسام التالية كيفية حذف هذه الموارد أو إيقافها.
حذف مجموعة بيانات BigQuery
اتّبِع هذه التعليمات من أجل حذف مجموعة بيانات BigQuery التي أنشأتها كجزء من هذا البرنامج التعليمي.
حذف حزمة GCS
اتّبِع هذه التعليمات من أجل حذف حزمة GCS التي أنشأتها كجزء من هذا البرنامج التعليمي.
حذف مثيل Cloud Data Fusion
اتّبِع هذه التعليمات لحذف مثيل Cloud Data Fusion.
حذف المشروع
أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.
لحذف المشروع، اتّبِع الخطوات التالية:
- في "وحدة تحكّم Google Cloud Platform"، انتقِل إلى صفحة المشاريع. الانتقال إلى صفحة المشاريع
- في قائمة المشاريع، اختَر المشروع الذي تريد حذفه وانقر على حذف.
- في مربّع الحوار، اكتب رقم تعريف المشروع، ثم انقر على إيقاف لحذف المشروع.
10. تهانينا
تهانينا، لقد أكملت بنجاح تجربة الترميز لنقل بيانات الرعاية الصحية إلى BigQuery باستخدام Cloud Data Fusion.
لقد استوردت بيانات CSV من Google Cloud Storage إلى BigQuery.
لقد أنشأت بشكل مرئي مسار دمج البيانات لتحميل بيانات الرعاية الصحية وتحويلها وإخفائها بشكل مجمّع.
أصبحت الآن على دراية بالخطوات الأساسية المطلوبة لبدء رحلة تحليل بيانات الرعاية الصحية باستخدام BigQuery على Google Cloud Platform.