Descubre soluciones que pueden resultarte útiles si tienes algún problema mientras usas la API Cloud Healthcare.
No se puede habilitar la API Cloud Healthcare
Cuando habilites la API Cloud Healthcare por primera vez en tuGoogle Cloud proyecto, es posible que se produzca un error de permisos que indique que no tienes permiso para habilitar APIs en tu proyecto. Google Cloud
Consulta el artículo sobre cómo habilitar e inhabilitar APIs para obtener información sobre cómo habilitar APIs, incluida la API Cloud Healthcare. Google Cloud
No se puede autenticar en la API de Cloud Healthcare
Cuando llamas a la API Cloud Healthcare, es posible que recibas un mensaje de error que indica que tus credenciales predeterminadas de la aplicación no están disponibles.
Consulta Autenticación en la API para obtener información sobre cómo configurar las credenciales predeterminadas de la aplicación o cómo transferir manualmente las credenciales de autenticación a una aplicación o un comando.
Falta la cuenta de servicio de la API de Cloud Healthcare o el rol Agente de servicio de Healthcare
La cuenta de servicio Agente de servicio de Cloud Healthcare se crea automáticamente cuando habilitas la API Cloud Healthcare y crea tu primer conjunto de datos. Se trata de una cuenta de servicio gestionada por Google. No puedes eliminar la cuenta de servicio por completo, pero, en determinadas circunstancias, es posible que no aparezca en la página Gestión de identidades y accesos y que tengas problemas con la API Cloud Healthcare.
Para que la API Cloud Healthcare funcione correctamente y complete tareas como publicar y recibir mensajes de Pub/Sub o escribir métricas en Cloud Logging, la cuenta de servicio Agente de servicio de Cloud Healthcare debe existir y tener el rol de gestión de identidades y accesos Agente de servicio de Healthcare.
Puedes volver a crear la cuenta de servicio Agente de servicio de Cloud Healthcare o asignarle el rol de IAM Agente de servicio de Healthcare si te encuentras con alguno de los siguientes problemas:
- No encuentras la cuenta de servicio Agente de servicio de Cloud Healthcare en la página Gestión de Identidades y Accesos.
- Puedes encontrar la cuenta de servicio Agente de servicio de Cloud Healthcare, pero no contiene el rol Agente de servicio de Healthcare.
Usa la CLI de Google Cloud para añadir el rol healthcare.serviceAgent
a la cuenta de servicio Agente de servicio de Cloud Healthcare con el identificador de la cuenta de servicio, que usa el formato service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com
.
Para volver a crear la cuenta de servicio o concederle el rol de IAM Agente de servicio de Healthcare, ejecuta el comando gcloud projects add-iam-policy-binding
. Para localizar los valores de PROJECT_ID y PROJECT_NUMBER, consulta el artículo sobre cómo identificar proyectos.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \ --role=roles/healthcare.serviceAgent
Si la solicitud se realiza correctamente, el símbolo del sistema muestra un mensaje similar al siguiente ejemplo:
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
Vuelve a la página Gestión de Identidades y Accesos y comprueba lo siguiente:
- La columna Miembro contiene un identificador de cuenta de servicio con el formato
service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount
. - En la misma fila que la columna Miembro, la columna Nombre contiene Agente de servicio de Cloud Healthcare.
- En la misma fila que la columna Miembro, la columna Rol contiene Agente de servicio del sector sanitario.
Se ha abortado el paquete transaccional de FHIR debido a una carga pesada acumulativa
Al ejecutar un paquete transaccional de FHIR, puede que recibas un mensaje de error que indique que la solicitud se ha cancelado debido a la carga pesada acumulada al ejecutar el paquete transaccional.
Cuando ejecutas paquetes transaccionales, no hay límite en la cantidad de contención de bloqueo que puedes crear. Por ejemplo, si creas un conjunto de paquetes en el que cada paquete actualiza un único recurso Patient común y también crea algunos otros recursos que no son comunes, y los ejecutas en paralelo, el tiempo que tardan aumentará rápidamente, ya que cada paquete tiene que mantener el bloqueo en ese recurso Patient común durante toda la transacción. Por lo tanto, empezarán a agotarse. Cuando la API Cloud Healthcare detecta que se agota el tiempo de espera de los paquetes transaccionales, rechaza temporalmente todos los paquetes transaccionales con este mensaje de error para intentar que se resuelva la contención.
Para evitar este problema, puedes probar una de las siguientes opciones:
- Usa paquetes por lotes si no necesitas semánticas de transacción. Los paquetes por lotes evitan este problema por completo porque no son atómicos. Sin embargo, esto reduce la aplicación de la integridad referencial.
- Si puedes identificar qué recurso se está actualizando en paralelo, determina si esas actualizaciones se pueden factorizar o evitar. En FHIR, esto ocurre si creas un recurso nuevo, como Observation, y también actualizas el recurso Patient (u Organization, Location, Device, etc.) asociado, que ya existe y no cambia.
- Limitación de la frecuencia en el lado del cliente: si tus paquetes transaccionales tardan mucho en ejecutarse, reduce la frecuencia de ingestión antes de que las solicitudes empiecen a agotar el tiempo de espera.