นำเข้า FHIR (Fast Healthcare Interoperability Resources) ไปยัง BigQuery

1. บทนำ

1f4764c4ca4c50d9.png

อัปเดตล่าสุด: 16-05-2020

Codelab นี้แสดงรูปแบบการนำเข้าข้อมูลเพื่อนำเข้าข้อมูล Healthcare ที่จัดรูปแบบ FHIR R4 (ทรัพยากรปกติ) ไปยัง BigQuery โดยใช้ Cloud Healthcare FHIR API ระบบได้สร้างข้อมูลทดสอบด้านการดูแลสุขภาพที่สมจริงและพร้อมใช้งานใน Bucket ของ Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/) สำหรับคุณ

ในโค้ดแล็บนี้ คุณจะได้เรียนรู้สิ่งต่อไปนี้

  • วิธีนำเข้าทรัพยากร FHIR R4 จาก GCS ไปยังที่เก็บ FHIR ของ Cloud Healthcare
  • วิธีส่งออกข้อมูล FHIR จากที่เก็บ FHIR ไปยังชุดข้อมูลใน BigQuery

คุณต้องมีอะไรบ้างในการเรียกใช้การสาธิตนี้

  • คุณต้องมีสิทธิ์เข้าถึงโปรเจ็กต์ GCP
  • คุณต้องได้รับมอบหมายบทบาทเจ้าของโปรเจ็กต์ GCP
  • ทรัพยากร FHIR R4 ในรูปแบบ NDJSON (content-structure=RESOURCE)

หากไม่มีโปรเจ็กต์ GCP ให้ทำตามขั้นตอนเหล่านี้เพื่อสร้างโปรเจ็กต์ GCP ใหม่

ระบบได้โหลดทรัพยากร FHIR R4 ในรูปแบบ NDJSON ลงในที่เก็บข้อมูล GCS ล่วงหน้าแล้วในตำแหน่งต่อไปนี้

  • gs://hcls_testing_data_fhir_10_patients/fhir_r4_ndjson/ - ทรัพยากรปกติ

แหล่งข้อมูลทั้งหมดข้างต้นมีรูปแบบไฟล์ JSON ที่มีตัวคั่นบรรทัดใหม่ (NDJSON) แต่มีโครงสร้างเนื้อหาที่แตกต่างกัน ดังนี้

  • ทรัพยากรปกติในรูปแบบ ndjson - แต่ละบรรทัดในไฟล์มีทรัพยากร FHIR หลักในรูปแบบ JSON (เช่น Patient, Observation ฯลฯ) ไฟล์ ndjson แต่ละไฟล์มีทรัพยากร FHIR ที่มีประเภททรัพยากรเดียวกัน เช่น Patient.ndjson จะมีทรัพยากร FHIR อย่างน้อย 1 รายการที่มี resourceType = ‘ Patient’ และ Observation.ndjson จะมีทรัพยากร FHIR อย่างน้อย 1 รายการที่มี resourceType = ‘ Observation

หากต้องการชุดข้อมูลใหม่ คุณสร้างชุดข้อมูลได้ทุกเมื่อโดยใช้ SyntheaTM จากนั้นให้อัปโหลดไปยัง GCS แทนการใช้ที่เก็บข้อมูลที่ระบุไว้ใน Codelab

2. การตั้งค่าโปรเจ็กต์

ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้ Healthcare API และให้สิทธิ์ที่จำเป็น

เริ่มต้นตัวแปร Shell สำหรับสภาพแวดล้อม

หากต้องการค้นหา PROJECT_NUMBER และ PROJECT_ID โปรดดูการระบุโปรเจ็กต์

<!-- CODELAB: Initialize shell variables -->
export PROJECT_ID=<PROJECT_ID>
export PROJECT_NUMBER=<PROJECT_NUMBER>
export SRC_BUCKET_NAME=hcls_testing_data_fhir_10_patients
export BUCKET_NAME=<BUCKET_NAME>
export DATASET_ID=<DATASET_ID>
export FHIR_STORE=<FHIR_STORE>
export BQ_DATASET=<BQ_DATASET>

เปิดใช้ Healthcare API

ขั้นตอนต่อไปนี้จะเปิดใช้ Healthcare API ในโปรเจ็กต์ GCP โดยจะเพิ่มบัญชีบริการ Healthcare API ลงในโปรเจ็กต์

  1. ไปที่คลัง API ของคอนโซล GCP
  2. เลือกโปรเจ็กต์จากรายการโปรเจ็กต์
  3. เลือก API ที่ต้องการเปิดใช้ในไลบรารี API หากต้องการความช่วยเหลือในการค้นหา API ให้ใช้ช่องค้นหาและตัวกรอง
  4. คลิกเปิดใช้ในหน้า API

รับสิทธิ์เข้าถึงชุดข้อมูลสังเคราะห์

  1. จากอีเมลที่คุณใช้เพื่อเข้าสู่ระบบ Cloud Console ให้ส่งอีเมลไปที่ hcls-solutions-external+subscribe@google.com เพื่อขอเข้าร่วม
  2. คุณจะได้รับอีเมลพร้อมวิธีการยืนยันการดำเนินการ
  3. ใช้ตัวเลือกเพื่อตอบกลับอีเมลเพื่อเข้าร่วมกลุ่ม
  4. อย่าคลิกปุ่ม 525a0fa752e0acae.png ไม่ได้ผล
  5. เมื่อได้รับอีเมลยืนยันแล้ว คุณจะไปยังขั้นตอนถัดไปใน Codelab ได้

สร้าง Bucket ของ Google Cloud Storage ในโปรเจ็กต์ GCP

gsutil mb gs://$BUCKET_NAME

คัดลอกข้อมูลสังเคราะห์ไปยังโปรเจ็กต์ GCP

gsutil -m cp gs://$SRC_BUCKET_NAME/fhir_r4_ndjson/**.ndjson \
gs://$BUCKET_NAME/fhir_r4_ndjson/

ให้สิทธิ์

ก่อนที่จะนำเข้าทรัพยากร FHIR จาก Cloud Storage และส่งออกไปยัง BigQuery คุณต้องให้สิทธิ์เพิ่มเติมแก่บัญชีบริการ ของตัวแทนบริการ Cloud Healthcare ดูข้อมูลเพิ่มเติมได้ที่สิทธิ์ของ Cloud Storage สำหรับที่เก็บข้อมูล FHIR และสิทธิ์ของ BigQuery สำหรับที่เก็บข้อมูล FHIR

ให้สิทธิ์ผู้ดูแลระบบพื้นที่เก็บข้อมูล

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
  --role=roles/storage.objectViewer

ให้สิทธิ์ผู้ดูแลระบบ BigQuery

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
  --role=roles/bigquery.admin

3. การตั้งค่าสภาพแวดล้อม

ทำตามขั้นตอนต่อไปนี้เพื่อนำเข้าข้อมูลจากไฟล์ NDJSON ไปยังชุดข้อมูลด้านการดูแลสุขภาพใน BigQuery โดยใช้ Cloud Healthcare FHIR API

สร้างชุดข้อมูล Healthcare และที่เก็บ FHIR

สร้างชุดข้อมูล Healthcare โดยใช้ Cloud Healthcare API

gcloud beta healthcare datasets create $DATASET_ID --location=us-central1

สร้างที่เก็บ FHIR ในชุดข้อมูลโดยใช้ Cloud Healthcare API

gcloud beta healthcare fhir-stores create $FHIR_STORE \
  --dataset=$DATASET_ID --location=us-central1 --version=r4

4. นำเข้าข้อมูลไปยังที่เก็บ FHIR

นำเข้าข้อมูลทดสอบจาก Google Cloud Storage ไปยัง FHIR Store

เราจะใช้ไฟล์ที่โหลดไว้ล่วงหน้าจากที่เก็บข้อมูล GCS ไฟล์เหล่านี้มีทรัพยากรปกติของ FHIR R4 ในรูปแบบ NDJSON คุณจะได้รับ OPERATION_NUMBER เป็นการตอบกลับ ซึ่งสามารถใช้ในขั้นตอนการตรวจสอบได้

นำเข้าทรัพยากรปกติจาก Bucket ของ GCS ในโปรเจ็กต์ GCP

gcloud beta healthcare fhir-stores import gcs $FHIR_STORE \
  --dataset=$DATASET_ID --async \
  --gcs-uri=gs://$BUCKET_NAME/fhir_r4_ndjson/**.ndjson \
  --location=us-central1 --content-structure=RESOURCE

ตรวจสอบความถูกต้อง

การดำเนินการตรวจสอบเสร็จสมบูรณ์แล้ว การดำเนินการอาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ คุณจึงอาจต้องเรียกใช้คำสั่งนี้ซ้ำ 2-3 ครั้งโดยเว้นช่วงเวลา

gcloud beta healthcare operations describe OPERATION_NUMBER \
  --dataset=$DATASET_ID --location=us-central1

5. ส่งออกข้อมูลจาก FHIR Store ไปยัง BigQuery

สร้างชุดข้อมูล BigQuery

bq mk --location=us --dataset $PROJECT_ID:$BQ_DATASET

ส่งออกข้อมูลด้านการดูแลสุขภาพจาก FHIR Store ไปยังชุดข้อมูล BigQuery

gcloud beta healthcare fhir-stores export bq $FHIR_STORE \
  --dataset=$DATASET_ID --location=us-central1 --async \
  --bq-dataset=bq://$PROJECT_ID.$BQ_DATASET \
  --schema-type=analytics

คุณจะได้รับ OPERATION_NUMBER เป็นการตอบกลับ ซึ่งสามารถใช้ในขั้นตอนการตรวจสอบได้

ตรวจสอบความถูกต้อง

ตรวจสอบว่าการดำเนินการเสร็จสมบูรณ์แล้ว

gcloud beta healthcare operations describe OPERATION_NUMBER \
  --dataset=$DATASET_ID --location=us-central1

ตรวจสอบว่าชุดข้อมูล BigQuery มีตารางทั้ง 16 ตารางหรือไม่

bq ls $PROJECT_ID:$BQ_DATASET

6. ล้างข้อมูล

หากต้องการหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud Platform สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้ คุณสามารถล้างข้อมูลทรัพยากรที่สร้างไว้ใน GCP เพื่อไม่ให้ใช้โควต้า และคุณจะไม่ถูกเรียกเก็บเงินสำหรับทรัพยากรเหล่านั้นในอนาคต ส่วนต่อไปนี้จะอธิบายวิธีลบหรือปิดทรัพยากรเหล่านี้

ลบโปรเจ็กต์

วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างขึ้นสำหรับบทแนะนำ

วิธีลบโปรเจ็กต์

  1. ในคอนโซล GCP ให้ไปที่หน้าโปรเจ็กต์ ไปที่หน้าโปรเจ็กต์
  2. ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
  3. ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเพื่อลบโปรเจ็กต์

หากต้องการเก็บโปรเจ็กต์ไว้ คุณสามารถลบชุดข้อมูล Cloud Healthcare และชุดข้อมูล BigQuery ได้โดยใช้คำสั่งต่อไปนี้

ลบชุดข้อมูล Cloud Healthcare API

ทำตามขั้นตอนเพื่อลบชุดข้อมูล Healthcare API โดยใช้ทั้งคอนโซล GCP และ gcloud CLI

คำสั่ง CLI ด่วน

gcloud beta healthcare datasets delete $DATASET_ID --location=us-central1

ลบชุดข้อมูล BigQuery

ทำตามขั้นตอนเพื่อลบชุดข้อมูล BigQuery โดยใช้อินเทอร์เฟซต่างๆ

คำสั่ง CLI ด่วน

bq rm -r -f $PROJECT_ID:$DATASET_ID

7. ขอแสดงความยินดี

ขอแสดงความยินดี คุณได้ทำโค้ดแล็บเพื่อนำเข้าข้อมูลด้านการดูแลสุขภาพใน BigQuery โดยใช้ Cloud Healthcare API เสร็จสมบูรณ์แล้ว

คุณนำเข้าข้อมูลสังเคราะห์ที่สอดคล้องกับ FHIR R4 จาก Google Cloud Storage ไปยัง Cloud Healthcare FHIR API

คุณส่งออกข้อมูลจาก Cloud Healthcare FHIR API ไปยัง BigQuery

ตอนนี้คุณทราบขั้นตอนสำคัญที่จำเป็นในการเริ่มต้นเส้นทางการวิเคราะห์ข้อมูลด้านการดูแลสุขภาพด้วย BigQuery ใน Google Cloud Platform แล้ว