Risoluzione dei problemi

Scopri i passaggi per la risoluzione dei problemi, utili in caso di problemi nell'utilizzo dell'API Cloud Healthcare.

Impossibile abilitare l'API Cloud Healthcare

Quando abiliti l'API Cloud Healthcare per la prima volta nel tuo progetto Google Cloud, potresti riscontrare un errore di autorizzazioni che indica che non hai l'autorizzazione per abilitare le API Google Cloud per il tuo progetto.

Consulta Abilitazione e disabilitazione delle API per informazioni su come abilitare le API Google Cloud, compresa l'API Cloud Healthcare.

Impossibile eseguire l'autenticazione nell'API Cloud Healthcare

Quando chiami l'API Cloud Healthcare, potresti ricevere un messaggio di errore che indica che le "Credenziali predefinite dell'applicazione" non sono disponibili.

Consulta Autenticazione nell'API per informazioni su come configurare le Credenziali predefinite dell'applicazione o su come passare manualmente le credenziali di autenticazione a un'applicazione o a un comando.

Manca il ruolo dell'account di servizio dell'API Cloud Healthcare o dell'agente di servizio del settore sanitario

L'account di servizio dell'agente di servizio Cloud Healthcare viene creato automaticamente quando abiliti l'API Cloud Healthcare e crei il tuo primo set di dati. Si tratta di un account di servizio gestito da Google. Non puoi eliminare completamente l'account di servizio, ma in determinate circostanze potrebbe non essere visualizzato nella pagina Identity and Access Management e potresti riscontrare problemi con l'API Cloud Healthcare.

Affinché l'API Cloud Healthcare funzioni correttamente e completi attività come la pubblicazione e la ricezione di messaggi da Pub/Sub o la scrittura di metriche in Cloud Logging, l'account di servizio dell'agente di servizio Cloud Healthcare deve esistere e avere il ruolo IAM Agente di servizio Healthcare.

Puoi ricreare l'account di servizio dell'agente di servizio Cloud Healthcare o concedergli il ruolo IAM Agente di servizio Healthcare se si verifica uno dei seguenti problemi:

  • Non puoi trovare l'account di servizio dell'agente di servizio Cloud Healthcare nella pagina Identity and Access Management.
  • Puoi trovare l'account di servizio Agente di servizio Cloud Healthcare, ma non contiene il ruolo Agente di servizio Cloud Healthcare.

Utilizza Google Cloud CLI per aggiungere il ruolo healthcare.serviceAgent all'account di servizio Agente di servizio Cloud Healthcare utilizzando l'identificatore dell'account di servizio, che utilizza il formato service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.

Per ricreare l'account di servizio o concedergli il ruolo IAM Agente di servizio Healthcare, esegui il comando gcloud projects add-iam-policy-binding. Per trovare PROJECT_ID e PROJECT_NUMBER, consulta Identificazione dei progetti.

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

Se la richiesta ha esito positivo, il prompt dei comandi visualizza un messaggio simile al seguente esempio:

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

Torna nuovamente alla pagina Identity and Access Management e verifica quanto segue:

  • La colonna Membro contiene un identificatore dell'account di servizio nel formato service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.
  • Nella stessa riga della colonna Membro, la colonna Nome contiene l'agente di servizio Cloud Healthcare.
  • Nella stessa riga della colonna Member, la colonna Role contiene Healthcare Service Agent.

Bundle transazionale FHIR interrotto a causa del carico elevato cumulativo

Durante l'esecuzione di un bundle transazionale FHIR, potresti ricevere un messaggio di errore che indica che la richiesta è "interrotta a causa di un carico cumulativo elevato per l'esecuzione del bundle transazionale".

Quando esegui pacchetti transazionali, non esistono limiti alla quantità di contese dei blocchi che puoi creare. Ad esempio, se crei un insieme di pacchetti in cui ogni pacchetto aggiorna una singola risorsa Patient comune e crea anche altre risorse non comuni e le esegui in parallelo, il tempo necessario aumenterà rapidamente, poiché ogni pacchetto deve mantenere il blocco su quel paziente comune per l'intera transazione. Di conseguenza, inizieranno il timeout. Quando l'API Cloud Healthcare rileva la scadenza dei pacchetti transazionali, rifiuta temporaneamente tutti i pacchetti con questo messaggio di errore per cercare di risolvere la contesa.

Per evitare il problema, puoi provare una delle seguenti soluzioni:

  • Se non hai bisogno della semantica delle transazioni, utilizza i pacchetti batch. I bundle batch evitano del tutto questo problema perché non sono atomici. Tuttavia, ciò riduce l'applicazione forzata dell'integrità referenziale.
  • Se riesci a identificare la risorsa che viene aggiornata in parallelo, determina se questi aggiornamenti possono essere esclusi o evitati. In FHIR, questo accade se stai creando una nuova risorsa come Observation e anche aggiornando il paziente associato (o organizzazione, località, dispositivo e così via) che esiste già e non cambia.
  • Limitazione della frequenza sul lato client; se l'esecuzione dei tuoi pacchetti transazionali richiede molto tempo, riduci il tasso di importazione prima che le richieste inizino a funzionare.