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 relativo alle autorizzazioni che indica di non avere l'autorizzazione per abilitare Google Cloud per il tuo progetto.
Consulta Abilitazione e disattivazione delle API per informazioni su come attivare le API Google Cloud, inclusa l'API Cloud Healthcare.
Impossibile autenticarsi 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 la sezione Autenticare l'accesso all'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. 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 Agente di servizio Cloud Healthcare deve essere esistente e deve avere il ruolo IAM Agente di servizio sanitario.
Puoi ricreare l'account di servizio dell'agente di servizio Cloud Healthcare oppure assegnagli l'IAM dell'agente di servizio sanitario 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 Agente di servizio Cloud Healthcare, ma 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 il ruolo IAM Agente di servizio sanitario, esegui il comando gcloud projects add-iam-policy-binding
. Per trovare l'ID progetto (PROJECT_ID) e il numero del progetto (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 va a buon fine, 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 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 Membro, la colonna Nome contiene Agente di servizio Cloud Healthcare.
- Nella stessa riga della colonna Membro, la colonna Ruolo contiene Agente di servizio settore sanitario.
Pacchetto transazionale FHIR interrotto a causa di un carico elevato cumulativo
Quando esegui un bundle transazionale FHIR, potresti ricevere un messaggio di errore che indica che la richiesta è stata "interrotta a causa di un carico elevato cumulativo per l'esecuzione del bundle transazionale".
Quando esegui pacchetti transazionali, non esiste un limite alla quantità di conflitti di 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, puoi provare 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 dell'integrità referenziale.
- Se riesci a identificare la risorsa che viene aggiornata in parallelo, determina se gli aggiornamenti possono essere eliminati o evitati. 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.