Nhập FHIR (Tài nguyên có khả năng tương tác nhanh trong hoạt động chăm sóc sức khoẻ) vào BigQuery

1. Giới thiệu

1f4764c4ca4c50d9.png

Lần cập nhật gần đây nhất: Ngày 16 tháng 5 năm 2020

Lớp học lập trình này minh hoạ một mẫu nhập dữ liệu để nhập dữ liệu chăm sóc sức khoẻ được định dạng FHIR R4 (Tài nguyên thông thường) vào BigQuery bằng Cloud Healthcare FHIR API. Dữ liệu kiểm thử thực tế về dịch vụ chăm sóc sức khoẻ đã được tạo và cung cấp cho bạn trong bộ chứa Google Cloud Storage (gs://hcls_testing_data_fhir_10_patients/).

Trong lớp học lập trình này, bạn sẽ tìm hiểu:

  • Cách nhập tài nguyên FHIR R4 từ GCS vào Cửa hàng FHIR của Cloud Healthcare.
  • Cách xuất dữ liệu FHIR từ Cửa hàng FHIR sang một Tập dữ liệu trong BigQuery.

Bạn cần làm gì để chạy bản minh hoạ này?

  • Bạn cần có quyền truy cập vào một Dự án trên Google Cloud Platform (GCP).
  • Bạn phải được chỉ định vai trò Chủ sở hữu cho Dự án GCP.
  • Tài nguyên FHIR R4 ở định dạng NDJSON (content-structure=RESOURCE)

Nếu bạn chưa có Dự án GCP, hãy làm theo các bước này để tạo một Dự án GCP mới.

Các tài nguyên FHIR R4 ở định dạng NDJSON đã được tải sẵn vào vùng chứa GCS tại các vị trí sau:

  • gs://hcls_testing_data_fhir_10_patients/fhir_r4_ndjson/ – Tài nguyên thông thường

Tất cả các tài nguyên trên đều có định dạng tệp JSON phân tách bằng dòng mới (NDJSON) nhưng có cấu trúc nội dung khác nhau:

  • Tài nguyên thông thường ở định dạng ndjson – mỗi dòng trong tệp chứa một tài nguyên FHIR cốt lõi ở định dạng JSON (chẳng hạn như Bệnh nhân, Quan sát, v.v.). Mỗi tệp ndjson chứa các tài nguyên FHIR thuộc cùng một loại tài nguyên. Ví dụ: Patient.ndjson sẽ chứa một hoặc nhiều tài nguyên FHIR có resourceType = "Patient" và Observation.ndjson sẽ chứa một hoặc nhiều tài nguyên FHIR có resourceType = "Observation".

Nếu cần một tập dữ liệu mới, bạn luôn có thể tạo tập dữ liệu đó bằng SyntheaTM. Sau đó, hãy tải tệp lên GCS thay vì sử dụng nhóm được cung cấp trong lớp học lập trình.

2. Thiết lập dự án

Hãy làm theo các bước sau để bật Healthcare API và cấp các quyền bắt buộc:

Khởi chạy các biến shell cho môi trường của bạn

Để tìm PROJECT_NUMBERPROJECT_ID, hãy tham khảo phần Xác định dự án.

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

Bật Healthcare API

Các bước sau đây sẽ bật Healthcare API trong Dự án GCP của bạn. Thao tác này sẽ thêm tài khoản dịch vụ Healthcare API vào dự án.

  1. Chuyển đến Thư viện API của Bảng điều khiển GCP.
  2. Trong danh sách dự án, hãy chọn dự án của bạn.
  3. Trong Thư viện API, hãy chọn API mà bạn muốn bật. Nếu bạn cần trợ giúp tìm API, hãy sử dụng trường tìm kiếm và bộ lọc.
  4. Trên trang API, hãy nhấp vào BẬT.

Truy cập vào tập dữ liệu tổng hợp

  1. Từ địa chỉ email mà bạn đang dùng để đăng nhập vào Cloud Console, hãy gửi email đến hcls-solutions-external+subscribe@google.com để yêu cầu tham gia.
  2. Bạn sẽ nhận được email hướng dẫn cách xác nhận hành động này.
  3. Sử dụng lựa chọn trả lời email để tham gia nhóm.
  4. KHÔNG nhấp vào nút 525a0fa752e0acae.png. Cách này không hiệu quả.
  5. Sau khi nhận được email xác nhận, bạn có thể chuyển sang bước tiếp theo trong lớp học lập trình.

Tạo một bộ chứa Google Cloud Storage trong Dự án GCP

gsutil mb gs://$BUCKET_NAME

Sao chép dữ liệu tổng hợp vào Dự án GCP

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

Cấp quyền

Trước khi nhập tài nguyên FHIR từ Cloud Storage và xuất sang BigQuery, bạn phải cấp thêm quyền cho tài khoản dịch vụ Cloud Healthcare Service Agent . Để biết thêm thông tin, hãy xem các quyền đối với Cloud Storage của kho lưu trữ FHIRBigQuery của kho lưu trữ FHIR.

Cấp quyền quản trị bộ nhớ

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

Cấp quyền quản trị 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. Thiết lập môi trường

Hãy làm theo các bước sau để nhập dữ liệu từ tệp NDJSON vào tập dữ liệu chăm sóc sức khoẻ trong BigQuery bằng Cloud Healthcare FHIR API:

Tạo tập dữ liệu chăm sóc sức khoẻ và kho lưu trữ FHIR

Tạo tập dữ liệu Healthcare bằng Cloud Healthcare API

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

Tạo FHIR Store trong tập dữ liệu bằng Cloud Healthcare API

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

4. Nhập dữ liệu vào Cửa hàng FHIR

Nhập dữ liệu kiểm thử từ Google Cloud Storage vào FHIR Store.

Chúng tôi sẽ sử dụng các tệp được tải sẵn từ Bộ chứa GCS. Các tệp này chứa các tài nguyên thông thường FHIR R4 ở định dạng NDJSON. Khi phản hồi, bạn sẽ nhận được OPERATION_NUMBER. Bạn có thể dùng số này trong bước xác thực.

Nhập tài nguyên thông thường từ bộ chứa GCS trong dự án 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

Xác thực

Thao tác xác thực đã hoàn tất. Thao tác này có thể mất vài phút để hoàn tất, vì vậy, bạn có thể cần lặp lại lệnh này vài lần với một độ trễ nhất định.

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

5. Xuất dữ liệu từ Cửa hàng FHIR sang BigQuery

Tạo tập dữ liệu BigQuery

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

Xuất dữ liệu chăm sóc sức khoẻ từ FHIR Store sang Tập dữ liệu 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

Khi phản hồi, bạn sẽ nhận được OPERATION_NUMBER. Bạn có thể dùng số này trong bước xác thực.

Xác thực

Xác thực hoạt động đã hoàn tất thành công

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

Xác thực xem Tập dữ liệu BigQuery có đủ 16 bảng hay không

bq ls $PROJECT_ID:$BQ_DATASET

6. Dọn dẹp

Để tránh phát sinh phí cho tài khoản Google Cloud Platform của bạn đối với các tài nguyên được dùng trong hướng dẫn này, bạn có thể dọn dẹp các tài nguyên mà bạn đã tạo trên GCP để chúng không chiếm hạn mức của bạn và bạn sẽ không bị tính phí cho các tài nguyên đó trong tương lai. Các phần sau đây mô tả cách xoá hoặc tắt các tài nguyên này.

Xoá dự án

Cách dễ nhất để không bị tính phí là xoá dự án mà bạn đã tạo cho hướng dẫn này.

Cách xoá dự án:

  1. Trong Bảng điều khiển của GCP, hãy chuyển đến trang Dự án. CHUYỂN ĐẾN TRANG DỰ ÁN
  2. Trong danh sách dự án, hãy chọn dự án bạn muốn xoá rồi nhấp vào Xoá.
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.

Nếu cần giữ lại dự án, bạn có thể xoá tập dữ liệu Cloud Healthcare và tập dữ liệu BigQuery theo hướng dẫn sau.

Xoá tập dữ liệu Cloud Healthcare API

Hãy làm theo các bước để xoá tập dữ liệu Healthcare API bằng cả Bảng điều khiển GCP và gcloud CLI.

Lệnh CLI nhanh:

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

Xoá tập dữ liệu BigQuery

Làm theo các bước để xoá tập dữ liệu BigQuery bằng nhiều giao diện.

Lệnh CLI nhanh:

bq rm -r -f $PROJECT_ID:$DATASET_ID

7. Xin chúc mừng

Xin chúc mừng, bạn đã hoàn tất thành công lớp học lập trình để nhập dữ liệu chăm sóc sức khoẻ vào BigQuery bằng Cloud Healthcare API.

Bạn đã nhập dữ liệu tổng hợp tuân thủ FHIR R4 từ Google Cloud Storage vào Cloud Healthcare FHIR API.

Bạn đã xuất dữ liệu từ Cloud Healthcare FHIR API sang BigQuery.

Giờ đây, bạn đã biết các bước chính cần thiết để bắt đầu hành trình Phân tích dữ liệu y tế bằng BigQuery trên Google Cloud Platform.