Risoluzione dei problemi

Scopri i passaggi per la risoluzione dei problemi che potrebbero esserti utili in caso di problemi con l'uso 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 relativo alle autorizzazioni che indica di non avere l'autorizzazione per abilitare Google Cloud per il tuo progetto.

Per informazioni, consulta Attivazione e disattivazione delle API su come abilitare le API Google Cloud, inclusa 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 l'account di servizio dell'API Cloud Healthcare o il ruolo Agente di servizio Healthcare

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. Questo è un account di servizio gestito da Google. Non puoi eliminare completamente l'account di servizio, ma in determinate circostanze è possibile che non venga 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à quali la pubblicazione e la ricezione di messaggi da Pub/Sub o la scrittura di metriche Cloud Logging, l'account di servizio dell'agente di servizio Cloud Healthcare deve esistere e deve avere l'IAM dell'agente di servizio sanitario ruolo.

Puoi ricreare l'account di servizio dell'agente di servizio Cloud Healthcare oppure assegnagli l'IAM dell'agente di servizio sanitario ruolo se si verificano i seguenti problemi:

  • Impossibile trovare l'account di servizio dell'agente di servizio Cloud Healthcare della pagina Identity and Access Management.
  • Puoi trovare l'account di servizio dell'agente di servizio Cloud Healthcare, non contiene il ruolo Agente di servizio sanitario.

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

Per ricreare l'account di servizio o concedergli l'agente di servizio sanitario,IAM 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 a nel 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 alla pagina Identity and Access Management. di nuovo 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 Member (Membro), la colonna Name (Nome) contiene Cloud Healthcare Service Agent.
  • Nella stessa riga della colonna Member (Membro), la colonna Role contiene Healthcare Service Agent.

Bundle transazionale FHIR interrotto a causa del carico elevato cumulativo

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

Quando esegui bundle transazionali, non è previsto alcun limite del blocco che puoi creare. Ad esempio, se crei un insieme di bundle in cui ogni pacchetto aggiorna una singola risorsa Paziente comune e crea anche altre risorse che non sono comuni ed eseguirle in parallelo, che fanno aumenterà rapidamente perché ogni bundle deve mantenere il blocco paziente comune per l'intera transazione. Di conseguenza, inizieranno a scadono. Quando l'API Cloud Healthcare rileva bundle transazionali. in timeout, rifiuta temporaneamente tutti i bundle transazionali con questo per cercare di chiarire meglio la contesa.

Per evitare questo problema, prova una delle seguenti soluzioni:

  • Utilizza i pacchetti batch se non hai bisogno della semantica della transazione. Bundle batch evitare del tutto questo problema perché non sono atomici. Tuttavia, questo riduce l'applicazione forzata dell'integrità referenziale.
  • Se riesci a identificare quale risorsa viene aggiornata in parallelo, determina se è possibile escludere o evitare questi aggiornamenti. In FHIR, questo accade se stai creando una nuova risorsa, come Observation, e anche aggiornando il (o Organizzazione, Località, Dispositivo e così via) associato che già esiste e non cambia.
  • limitazione di frequenza sul lato client. se i tuoi pacchetti transazionali tempi lunghi, riduci la frequenza di importazione prima dell'inizio delle richieste in timeout.