Saiba mais sobre os passos de resolução de problemas que podem ser úteis se tiver problemas ao usar a API Cloud Healthcare.
Não é possível ativar a API Cloud Healthcare
Quando ativa a API Cloud Healthcare pela primeira vez no seu Google Cloud projeto, pode ocorrer um erro de autorizações a indicar que não tem autorização para ativar Google Cloud APIs para o seu projeto.
Consulte o artigo Ativar e desativar APIs para obter informações sobre como ativar Google Cloud APIs, incluindo a Cloud Healthcare API.
Não é possível autenticar na API Cloud Healthcare
Quando chama a Cloud Healthcare API, pode receber uma mensagem de erro a indicar que as suas "Credenciais predefinidas da aplicação" não estão disponíveis.
Consulte o artigo Autenticação na API para ver informações sobre como configurar as Credenciais padrão da aplicação ou como transmitir manualmente credenciais de autenticação a uma aplicação ou um comando.
A conta de serviço da API Cloud Healthcare ou a função de agente do serviço Healthcare está em falta
A conta de serviço do agente do serviço Cloud Healthcare é criada automaticamente quando ativa a Cloud Healthcare API e cria o seu primeiro conjunto de dados. Esta é uma conta de serviço gerida pela Google. Não pode eliminar completamente a conta de serviço, mas, em determinadas circunstâncias, esta pode não aparecer na página Gestão de identidade e de acesso e pode ter problemas com a Cloud Healthcare API.
Para que a Cloud Healthcare API funcione corretamente e conclua tarefas como publicar e receber mensagens do Pub/Sub ou escrever métricas no Cloud Logging, a conta de serviço do agente de serviço da Cloud Healthcare tem de existir e ter a função de IAM do agente de serviço da Healthcare.
Pode recriar a conta de serviço do agente do serviço Cloud Healthcare ou conceder-lhe a função do IAM agente do serviço Healthcare se encontrar algum dos seguintes problemas:
- Não consegue encontrar a conta de serviço do agente do serviço Cloud Healthcare na página de gestão de identidade e de acesso.
- Pode encontrar a conta de serviço do agente do serviço de saúde na nuvem, mas não contém a função de agente do serviço de saúde.
Use a CLI do Google Cloud
para adicionar a função healthcare.serviceAgent
à conta de serviço do
agente do serviço Cloud Healthcare através do identificador da conta de serviço, que usa o formato service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com
.
Para recriar a conta de serviço ou conceder-lhe a função de IAM Healthcare Service Agent, execute o comando gcloud projects add-iam-policy-binding
. Para encontrar o PROJECT_ID e o PROJECT_NUMBER,
consulte o artigo Identificar projetos.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \ --role=roles/healthcare.serviceAgent
Se o pedido for bem-sucedido, a linha de comandos apresenta uma mensagem semelhante à do seguinte exemplo:
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
Regresse à página Identity and Access Management e verifique novamente o seguinte:
- A coluna Membro contém um identificador de conta de serviço no formato
service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount
. - Na mesma linha que a coluna Membro, a coluna Nome contém Agente do serviço Cloud Healthcare.
- Na mesma linha que a coluna Membro, a coluna Função contém Agente do serviço de saúde.
O pacote transacional FHIR foi anulado devido à carga pesada cumulativa
Quando executa um pacote transacional FHIR, pode receber uma mensagem de erro a indicar que o pedido foi "anulado devido à carga pesada cumulativa para executar o pacote transacional".
Quando executa pacotes transacionais, não existe limite para a quantidade de contenção de bloqueios que pode criar. Por exemplo, se criar um conjunto de pacotes em que cada pacote atualiza um único recurso de paciente comum e também cria alguns outros recursos que não são comuns, e os executar em paralelo, o tempo que demoram aumenta rapidamente, uma vez que cada pacote tem de manter o bloqueio nesse paciente comum durante toda a transação. Como tal, vão começar a expirar. Quando a API Cloud Healthcare deteta que os pacotes transacionais estão a atingir o limite de tempo, rejeita temporariamente todos os pacotes transacionais com esta mensagem de erro para tentar permitir que a contenção seja resolvida.
Para evitar este problema, pode experimentar uma das seguintes opções:
- Use pacotes em lote se não precisar de semântica de transação. Os conjuntos de lotes evitam completamente este problema porque não são atómicos. No entanto, isto reduz a aplicação da integridade referencial.
- Se conseguir identificar o recurso que está a ser atualizado em paralelo, determine se essas atualizações podem ser eliminadas ou evitadas. No FHIR, isto acontece se estiver a criar um novo recurso, como Observation, e também a atualizar o Patient (ou Organization, Location, Device, etc.) associado que já existe e não está a ser alterado.
- Limitação da taxa no lado do cliente; se os seus pacotes transacionais demorarem muito tempo a ser executados, reduza a taxa de carregamento antes de os pedidos começarem a expirar.