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 attivi l'API Cloud Healthcare per la prima volta nel tuo progetto Google Cloud, potresti riscontrare un errore di autorizzazione che indica che non disponi dell'autorizzazione per attivare le API 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 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 sanitario
L'account di servizio Cloud Healthcare Service Agent viene creato automaticamente quando attivi 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 Agente di servizio Cloud Healthcare o concedergli il ruolo IAM Agente di servizio sanitario se riscontri uno dei seguenti problemi:
- Non riesci a trovare l'account di servizio Cloud Healthcare Service Agent 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 sanitario.
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.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 di nuovo 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 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 è "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 pacchetti in cui ogni pacchetto aggiorna una singola risorsa comune Patient e crea anche altre risorse non comuni, ed esegui questi pacchetti in parallelo, il tempo impiegato aumenterà rapidamente poiché ogni pacchetto deve mantenere il blocco su quel paziente comune per l'intera transazione. Di conseguenza, inizieranno a scadere. Quando l'API Cloud Healthcare rileva il timeout dei set di pacchetti transazionali, rifiuta temporaneamente tutti i set di pacchetti transazionali con questo messaggio di errore per provare a risolvere il conflitto.
Per evitare questo problema, puoi provare una delle seguenti soluzioni:
- Utilizza i pacchetti batch se non hai bisogno della semantica delle transazioni. I pacchetti batch evitano completamente 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, ciò accade se stai creando una nuova risorsa come Osservazione e aggiorni anche il paziente (o l'organizzazione, la località, il dispositivo e così via) associato che esiste già e non cambia.
- Limitazione della frequenza lato client: se l'esecuzione dei bundle transazionali richiede molto tempo, riduci la frequenza di importazione prima che le richieste inizino a scadere.