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 progettoGoogle Cloud , potresti riscontrare un errore di autorizzazione che indica che non hai l'autorizzazione per abilitare le API per il tuo progetto. Google Cloud
Consulta Abilitazione e disabilitazione delle API per informazioni su come abilitare le API, inclusa l'API Cloud Healthcare. Google Cloud
Impossibile autenticarsi nell'API Cloud Healthcare
Quando chiami l'API Cloud Healthcare, potresti ricevere un messaggio di errore che indica che le tue "Credenziali predefinite dell'applicazionee" non sono disponibili.
Consulta Autenticazione all'API per informazioni su come configurareCredenziali predefinite dell'applicazionee o su come trasmettere manualmente le credenziali di autenticazione a un'applicazione o a un comando.
Manca il account di servizio dell'API Cloud Healthcare o il ruolo di agente di servizio Healthcare
L'account di servizio 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 service account gestito da Google. Non puoi eliminare completamente il 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 esistere e deve avere il ruolo IAM agente di servizio Healthcare.
Puoi ricreare il account di servizio Agente di servizio Cloud Healthcare o concedergli il ruolo IAM Agente di servizio Healthcare se riscontri uno dei seguenti problemi:
- Non riesci a trovare l'account di servizio 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 Healthcare.
Utilizza la CLI di Google Cloud
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 Cloud Healthcare, 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 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 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.
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 è stata "interrotta a causa del carico elevato cumulativo per l'esecuzione del bundle transazionale".
Quando esegui bundle transazionali, non esiste un limite alla quantità di contesa di blocco che puoi creare. Ad esempio, se crei un insieme di bundle in cui ogni bundle aggiorna una singola risorsa paziente comune e crea anche alcune altre risorse non comuni ed esegui queste operazioni in parallelo, il tempo impiegato aumenterà rapidamente, poiché ogni bundle deve mantenere il blocco della risorsa paziente comune per l'intera transazione. Di conseguenza, inizieranno a scadere. Quando l'API Cloud Healthcare rileva il timeout dei bundle transazionali, rifiuta temporaneamente tutti i bundle transazionali con questo messaggio di errore per cercare di risolvere il problema di contesa.
Per evitare questo problema, puoi provare una delle seguenti soluzioni:
- Utilizza i bundle batch se non hai bisogno della semantica delle transazioni. I bundle 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 questi aggiornamenti possono essere esclusi o evitati. In FHIR, questo accade se stai creando una nuova risorsa come Observation e stai anche aggiornando il paziente (o l'organizzazione, la sede, il dispositivo e così via) associato che esiste già e non sta cambiando.
- Limitazione della frequenza lato client: se i bundle transazionali richiedono molto tempo per l'esecuzione, riduci la velocità di importazione prima che le richieste inizino a scadere.