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

1. บทนำ

1f4764c4ca4c50d9.png

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

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

ใน Code Lab นี้ คุณจะได้เรียนรู้เกี่ยวกับสิ่งต่อไปนี้

  • วิธีนำเข้าทรัพยากร FHIR R4 จาก GCS ไปยัง Cloud Healthcare FHIR Store
  • วิธีส่งออกข้อมูล 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/ - แหล่งข้อมูลทั่วไป

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

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

หากต้องการชุดข้อมูลใหม่ คุณสร้างโดยใช้ 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. ไปที่ไลบรารี GCP Console API
  2. เลือกโปรเจ็กต์จากรายการโปรเจ็กต์
  3. เลือก API ที่ต้องการเปิดใช้ในไลบรารี API หากต้องการความช่วยเหลือในการค้นหา API ให้ใช้ช่องค้นหาและตัวกรอง
  4. ในหน้า API ให้คลิกเปิดใช้

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

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

สร้างที่เก็บข้อมูล 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 Service โปรดดูข้อมูลเพิ่มเติมที่หัวข้อ 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 ไปยังชุดข้อมูล Healthcare ใน 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 ซึ่งสามารถใช้ในขั้นตอนการตรวจสอบความถูกต้อง

นำเข้าทรัพยากรปกติจากที่เก็บข้อมูล 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 นาทีจึงจะเสร็จ ดังนั้นคุณอาจต้องพูดคำสั่งนี้ซ้ำอีก 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 ไปยังชุดข้อมูล 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. ล้างข้อมูล

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

ลบโปรเจ็กต์

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

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

  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. ขอแสดงความยินดี

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

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

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

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