本教學課程說明可使用 BigQuery 串流功能,讓 FHIR 儲存庫與 BigQuery 資料集保持近乎即時的同步。
目標
本教學課程將示範以下步驟:
- 設定 BigQuery 權限。
- 建立 FHIR 儲存庫並新增病患資源。
- 在 FHIR 儲存庫中設定 BigQuery 串流。
- 確認將資料串流至 BigQuery 的設定。
- 將現有的 FHIR 資源匯出至 BigQuery。
- 將來自多個 FHIR 儲存庫的資源串流至同一個 BigQuery 資料集。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Healthcare API.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
步驟 1:設定 BigQuery 權限
如要將 FHIR 資源變更串流至 BigQuery,您必須為 Cloud Healthcare Service Agent 服務帳戶授予其他權限。詳情請參閱「FHIR 商店 BigQuery 權限」。
步驟 2:設定及驗證 BigQuery 串流
如要啟用 BigQuery 串流功能,請按照下列操作說明進行:
建立 FHIR 儲存庫並新增病患資源
如要建立 FHIR 儲存庫並新增兩個 Patient 資源,請按照下列步驟操作:
建立 FHIR 儲存庫:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID: Google Cloud 專案的 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫的 ID。FHIR 儲存庫 ID 必須符合下列規定:
- 資料集中的專屬 ID
- 1 到 256 個字元的 Unicode 字串,包含下列項目:
- Numbers
- 信件
- 底線
- 破折號
- 週期
- FHIR_STORE_VERSION:FHIR 存放區的 FHIR 版本。可用的選項包括 DSTU2、STU3 或 R4。
JSON 要求主體:
{ "version": "FHIR_STORE_VERSION" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "version": "FHIR_STORE_VERSION" } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "version": "FHIR_STORE_VERSION" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand ContentAPIs Explorer
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
在 FHIR 儲存庫中建立第一個 Patient 資源:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID: Google Cloud 專案的 ID
- LOCATION:資料集位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
JSON 要求主體:
{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content您應該會收到如下的 JSON 回應:
在 FHIR 儲存庫中建立第二個 Patient 資源:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
JSON 要求主體:
{ "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "name": [ { "use": "official", "family": "Zhang", "given": [ "Michael" ] } ], "gender": "male", "birthDate": "1980-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content您應該會收到如下的 JSON 回應:
在 FHIR 儲存庫中搜尋病患資源,並確認儲存庫包含兩個病患資源:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content您應該會收到如下的 JSON 回應:
在 FHIR 儲存庫中設定 BigQuery 串流
更新 FHIR 儲存庫,設定 BigQuery 串流。設定串流後,Cloud Healthcare API 會將任何資源變更串流至 BigQuery 資料集。
更新現有的 FHIR 儲存庫,新增 BigQuery 資料集的位置:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:您的 FHIR 儲存庫 ID
- BIGQUERY_PROJECT_ID: Google Cloud 專案,其中包含用於串流 FHIR 資源變更的 BigQuery 資料集
- BIGQUERY_DATASET_ID:您要串流 FHIR 資源變更的 BigQuery 資料集
JSON 要求主體:
{ "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS_V2" } } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand ContentAPIs Explorer
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
確認將串流資料傳送至 BigQuery
如要確認串流設定正確無誤,請完成下列步驟:
在 FHIR 儲存庫中建立第三個 Patient 資源:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- FHIR_STORE_ID:FHIR 儲存庫 ID
JSON 要求主體:
{ "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content您應該會收到如下的 JSON 回應:
執行
bq query
即可查詢BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
資料表。BigQuery 會依 FHIR 資源類型整理資料表。您建立的第三個 Patient 資源位於Patient
資料表中。bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
查詢會傳回以下結果。結果顯示 BigQuery 資料表中有一筆病患資源記錄,這是因為您在 FHIR 儲存庫中設定串流後,才新增了病患資源。
+-----+ | f0_ | +-----+ | 1 | +-----+
步驟 3:將現有的 FHIR 資源匯出至 BigQuery
如果您有現有的 FHIR 儲存庫,其中含有要與 BigQuery 資料集同步的資料,則必須完成下列步驟,確保現有資料位於 BigQuery 中:
- 設定將資料串流至 BigQuery。
- 將現有資料匯出至 BigQuery 資料集。
如要匯出在設定串流至 BigQuery 資料集之前,FHIR 儲存庫中存在的兩個 Patient 資源,請完成下列步驟:
如要將 FHIR 儲存庫中的資源匯出至 BigQuery,請執行
gcloud healthcare fhir-stores export bq
指令。指令使用--write-disposition=write-append
旗標,可將資料附加至現有的 BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
資料表。gcloud healthcare fhir-stores export bq FHIR_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --bq-dataset=bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET \ --schema-type=analytics_v2 \ --write-disposition=write-append
查詢
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
資料表,驗證 BigQuery 資料集中的病患資源數量:bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
查詢會傳回以下結果,顯示 BigQuery 表格中有 4 個 Patient 資源記錄:
+-----+ | f0_ | +-----+ | 4 | +-----+
BigQuery 資料表中的患者資源實際數量為 3,但查詢會傳回 4 個。如果資源包含來自不同作業的複本,可能會發生不一致的情況。在本例中,第一個 Patient 資源會在以下兩個時間點加入 BigQuery 資料表:
- 建立病患資源的串流時間
- FHIR 儲存庫中的資源匯出至 BigQuery 的時間
BigQuery 資料表也包含第一個病患資源的變異記錄。舉例來說,如果您使用
fhir.delete
刪除 Patient 資源,BigQuery 資料表就會有一個meta.tag.code
資料欄,其值為DELETE
。如要取得 FHIR 儲存庫中最新的資料快照,請查詢檢視畫面。Cloud Healthcare API 只會查看每個資源的最新版本,藉此建構檢視畫面。查詢檢視畫面是讓 FHIR 儲存庫及其對應的 BigQuery 資料表保持同步的最佳方式。
如要查詢檢視畫面,請執行下列指令:
bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
查詢會傳回以下結果,正確顯示 BigQuery 表格中有 3 個 Patient 資源:
+-----+ | f0_ | +-----+ | 3 | +-----+
步驟 4:將來自多個 FHIR 儲存庫的資源串流至同一個 BigQuery 資料集
在某些情況下,您可能會想將 FHIR 資源從多個 FHIR 儲存庫串流至同一個 BigQuery 資料集,以便針對 FHIR 儲存庫中的匯總 FHIR 資源執行分析。
在後續步驟中,您會在與第一個 FHIR 儲存庫相同的 Cloud Healthcare API 資料集中建立第二個 FHIR 儲存庫,但在匯總 FHIR 資源時,您可以使用不同資料集中的 FHIR 儲存庫。
建立第二個啟用 BigQuery 串流功能的 FHIR 儲存庫,並使用在在 FHIR 儲存庫中設定 BigQuery 串流中使用的 BigQuery 資料集。
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- SECOND_FHIR_STORE_ID:第二個 FHIR 存放區的 ID。FHIR 儲存庫 ID 在資料集中不得重複。FHIR 儲存庫 ID 可以是任何萬國碼字串,長度介於 1 到 256 個字元之間,且只能使用數字、英文字母、底線、破折號和句號。
- FHIR_STORE_VERSION:FHIR 儲存庫版本:DSTU2、STU3 或 R4
- BIGQUERY_PROJECT_ID: Google Cloud 專案,其中包含用於串流 FHIR 資源變更的 BigQuery 資料集
- BIGQUERY_DATASET_ID:您要串流 FHIR 資源變更的 BigQuery 資料集
JSON 要求主體:
{ "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "version": "FHIR_STORE_VERSION" "streamConfigs": [ { "bigqueryDestination": { "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID", "schemaConfig": { "schemaType": "ANALYTICS" } } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID" | Select-Object -Expand ContentAPIs Explorer
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
在第二個 FHIR 儲存庫中建立 Patient 資源:
REST
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:父資料集的位置
- DATASET_ID:FHIR 儲存庫的父項資料集
- SECOND_FHIR_STORE_ID:第二個 FHIR 儲存庫 ID
JSON 要求主體:
{ "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,即可在目前目錄中建立或覆寫此檔案:@' { "name": [ { "use": "official", "family": "Lee", "given": [ "Alex" ] } ], "gender": "male", "birthDate": "1990-01-01", "resourceType": "Patient" } '@ | Out-File -FilePath request.json -Encoding utf8
接著,執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content您應該會收到如下的 JSON 回應:
查詢
BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient
資料表,確認 BigQuery 資料表中的患者資源數量:bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
當您串流新患者資源的資料時,BigQuery 會使用 BigQuery 資料集中現有的
Patient
資料表。查詢會傳回以下結果,顯示 BigQuery 表格中有 5 筆病患資源記錄。如要瞭解為何資料表包含 5 個資源而非 4 個,請參閱「將現有的 FHIR 資源匯出至 BigQuery」。+-----+ | f0_ | +-----+ | 5 | +-----+
執行下列指令來查詢檢視畫面:
bq query \ --project_id=BIGQUERY_PROJECT_ID \ --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
查詢會傳回以下結果,顯示在第一和第二個 FHIR 儲存庫和 BigQuery 表格中,有 4 個 Patient 資源:
+-----+ | f0_ | +-----+ | 4 | +-----+
清除所用資源
如果您是為了這個教學課程建立新專案,請按照「刪除專案」中的步驟操作。如要只刪除 Cloud Healthcare API 和 BigQuery 資源,請完成「刪除 Cloud Healthcare API 資料集」和「刪除 BigQuery 資料集」中的步驟。
刪除專案
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
刪除 Cloud Healthcare API 資料集
如果不再需要本教學課程中建立的 Cloud Healthcare API 資料集,您可以刪除該資料集。如果刪除資料集,該資料集以及其中包含的所有 FHIR 儲存庫都會永久刪除。
如要刪除資料集,請使用
gcloud healthcare datasets delete
指令:gcloud healthcare datasets delete DATASET_ID \ --location=LOCATION \ --project=PROJECT_ID
更改下列內容:
- DATASET_ID:Cloud Healthcare API 資料集
- LOCATION:資料集的位置
- PROJECT_ID:您的 Google Cloud 專案 ID
輸入 Y 確認。
輸出內容如下:
Deleted dataset [DATASET_ID].
刪除 BigQuery 資料集
如果您不再需要本教學課程中建立的 BigQuery 資料集,可以刪除該資料集。刪除資料集後,該資料集及其所含的任何資料表都會永久刪除。
移除 BIGQUERY_PROJECT_ID。BIGQUERY_DATASET_ID 資料集,執行
bq rm
指令:bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID
旗標
--recursive
會刪除資料集內的所有資料表,包括資料表Patient
。輸入 Y 確認。
後續步驟
- 如果串流至 BigQuery 時發生錯誤,系統會將錯誤記錄到 Cloud Logging。詳情請參閱「查看 Cloud Logging 中的錯誤記錄檔」。
- 請參閱將 FHIR 資源匯出至 BigQuery的總覽。
- 如要建立、查看、列出或刪除 FHIR 儲存庫,請參閱「建立及管理 FHIR 儲存庫」。