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 Google Cloudper il tuo progetto.
Consulta Abilitazione e disabilitazione delle API per informazioni 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 tue "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.
Account di servizio API Cloud Healthcare o ruolo Agente di servizio Healthcare mancante
Il account di servizio Cloud Healthcare Service Agent viene creato automaticamente quando 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, deve esistere il account di servizio Cloud Healthcare Service Agent e deve avere il ruolo IAM Healthcare Service Agent.
Puoi creare manualmente il account di servizio Cloud Healthcare Service Agent o concedergli il ruolo IAM Healthcare Service Agent se riscontri uno dei seguenti problemi:
- Non riesci a trovare il account di servizio Cloud Healthcare Service Agent nella pagina Identity and Access Management.
- Puoi trovare il account di servizio Cloud Healthcare Service Agent, ma non contiene il ruolo Healthcare Service Agent.
Per creare manualmente il account di servizio, segui le istruzioni riportate in Attiva manualmente la creazione.
Utilizza Google Cloud CLI per aggiungere il ruolo healthcare.serviceAgent al account di servizio Cloud Healthcare Service Agent utilizzando l'identificatore del account di servizio, che utilizza il formato service-PROJECT_NUMBER@gcp-sa-healthcare..
Per trovare PROJECT_ID e PROJECT_NUMBER, consulta Identifica i progetti.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare. \ --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. 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 del account di servizio nel formato
service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount. - Nella stessa riga della colonna Membro, la colonna Nome contiene Cloud Healthcare Service Agent.
- Nella stessa riga della colonna Membro, la colonna Ruolo contiene Healthcare Service Agent.
Bundle 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 bundle 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 bundle aggiorna una singola risorsa Patient comune e crea anche altre risorse non comuni, ed esegui questi bundle in parallelo, il tempo necessario aumenterà rapidamente perché ogni bundle deve mantenere il blocco sulla risorsa Patient comune per l'intera transazione. Di conseguenza, inizieranno ad andare in timeout. 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 conflitto.
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 crei una nuova risorsa, ad esempio Observation, e aggiorni anche il paziente associato (o l'organizzazione, la località, il dispositivo e così via) che esiste già e non cambia.
- Limitazione di frequenza sul lato client: se l'esecuzione dei bundle transazionali richiede molto tempo, riduci la frequenza di importazione prima che le richieste inizino ad andare in timeout.