疑難排解

瞭解實用的疑難排解步驟,解決您在使用 Cloud Healthcare API 時遇到的問題。

無法啟用 Cloud Healthcare API

首次在Google Cloud 專案中啟用 Cloud Healthcare API 時,您可能會遇到權限錯誤,表示您沒有權限可替專案啟用 API。 Google Cloud

如要瞭解如何啟用 API (包括 Cloud Healthcare API),請參閱「啟用及停用 API」。 Google Cloud

無法驗證 Cloud Healthcare API

呼叫 Cloud Healthcare API 時,您可能會收到一則錯誤訊息,指出「應用程式預設憑證」無法使用。

請參閱「驗證 API」,瞭解如何設定應用程式預設憑證,或是如何手動將驗證憑證傳送至應用程式或指令。

缺少 Cloud Healthcare API 服務帳戶或 Healthcare 服務代理人角色

啟用 Cloud Healthcare API 並建立第一個資料集時,系統會自動建立 Cloud Healthcare Service Agent 服務帳戶。這是由 Google 代管的服務帳戶。 您無法完全刪除該服務帳戶,但在特定情況下,該帳戶可能不會出現在 Identity and Access Management 頁面中,而您可能會遇到 Cloud Healthcare API 相關問題。

為了使 Cloud Healthcare API 正常運作並完成諸如發布及接收 Pub/Sub 訊息,或將指標寫入 Cloud Logging 等工作,Cloud Healthcare 服務代理人服務帳戶就必須存在,且必須具有 Healthcare 服務代理人 IAM 角色。

如果遇到下列任一問題,可以重新建立 Cloud Healthcare 服務代理人服務帳戶,或授予該帳戶 Healthcare 服務代理人 IAM 角色:

  • 您無法在「身分與存取權管理」頁面中找到 Cloud Healthcare 服務代理人服務帳戶。
  • 您可以找到 Cloud Healthcare 服務代理人服務帳戶,但其中不包含 Healthcare 服務代理人角色。

使用 Google Cloud CLI,透過服務帳戶的 ID (格式為 service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com),將 healthcare.serviceAgent 角色新增至 Cloud Healthcare 服務代理人服務帳戶。

如要重新建立服務帳戶或授予 Healthcare 服務代理人 IAM 角色,請執行 gcloud projects add-iam-policy-binding 指令。如要找出 PROJECT_IDPROJECT_NUMBER,請參閱「識別專案」。

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

如果要求成功,命令提示字元就會顯示類似以下範例的訊息:

Updated IAM policy for project [PROJECT_ID].
bindings:
...
- members:
  - serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com
  role: roles/healthcare.serviceAgent
...
etag: VALUE
version: VALUE

再次回到「身分與存取權管理」頁面,並驗證以下內容:

  • 「Member」(成員) 欄包含 service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount 格式的服務帳戶 ID。
  • 在與該「Member」(成員) 位於同一列的「Name」(名稱) 欄中,包含「Cloud Healthcare Service Agent」(Cloud Healthcare 服務代理人)。
  • 在與該「Member」(成員) 位於同一列的「Role」(角色) 欄中,包含「Healthcare Service Agent」(Healthcare 服務代理人)。

FHIR 交易套件因累計負載過重而中止

執行 FHIR 交易套件時,您可能會收到錯誤訊息,指出「由於執行交易套件的累計負載過重,要求已中止」。

執行交易套件時,可建立的鎖定爭用量沒有限制。舉例來說,如果您建構一組套裝組合,其中每個套裝組合都會更新單一常見的病患資源,並建立一些其他非常見資源,然後平行執行這些套裝組合,則由於每個套裝組合都必須在整個交易期間保留該常見病患的鎖定,因此所需時間會迅速增加。因此會開始逾時。當 Cloud Healthcare API 偵測到交易套件逾時時,會暫時拒絕所有交易套件,並顯示這則錯誤訊息,嘗試清除爭用情形。

如要避免這個問題,請嘗試下列任一做法:

  • 如不需要交易語意,請使用批次組合。批次組合並非不可分割,因此完全不會發生這個問題。不過,這樣會降低參照完整性強制執行力。
  • 如果可以找出平行更新的資源,請判斷是否能排除或避免這些更新。在 FHIR 中,如果您要建立新的資源 (例如 Observation),同時更新相關聯的 Patient (或 Organization、Location、Device 等),但這些資源已存在且不會變更,就會發生這種情況。
  • 用戶端速率限制:如果交易套件執行時間過長,請在要求開始逾時前降低擷取速率。