Resolução de problemas

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.