O Pub/Sub pode ser usado para receber notificações quando ocorrerem eventos médicos nos armazenamentos de dados da API Cloud Healthcare. Essas notificações informam quando:
- Uma instância DICOM é armazenada em um armazenamento DICOM usando
dicomStores.dicomWeb.studies.storeInstances
. No entanto, as notificações não são enviadas quando os recursos DICOM são importados do Cloud Storage. - um recurso FHIR é criado, atualizado ou excluído em um armazenamento FHIR; No entanto, as notificações não são enviadas quando um recurso FHIR é importado do Cloud Storage.
- uma mensagem HL7v2 é ingerida ou criada em um armazenamento HL7v2.
Quando um desses eventos ocorre, a API Cloud Healthcare publica uma mensagem em um recurso do Pub/Sub chamado tópico. A mensagem pode ser recebida por aplicativos que assinam o tópico.
Essas mensagens não incluem informações pessoais. Elas incluem apenas o seguinte:
- O projeto para que a mensagem é gerada
- O ID da mensagem
- Em mensagens FHIR, o resourceType e a ação que causaram a mensagem
- Nas mensagens HL7v2, o tipo de mensagem HL7v2
Para uma visão geral do uso de notificações do Pub/Sub com a API Cloud Healthcare, consulte Notificações do Pub/Sub.
Pré-requisitos
Antes de usar esse recurso, realize as ações a seguir:
Habilitar a API Pub/Sub
Para ativar a API Pub/Sub, clique no seguinte botão:
Configurar permissões do Pub/Sub
Para permitir que mensagens sejam publicadas da API Cloud Healthcare no Pub/Sub, adicione o papel pubsub.publisher
à conta de serviço do Agente de serviço do Cloud Healthcare .
Consulte Permissões do Pub/Sub para armazenamentos DICOM, FHIR e HL7v2 para ver as etapas e adicionar o papel necessário.
Criar um tópico do Pub/Sub
Para cada armazenamento de dados para que você quer receber notificações, é necessário configurar um tópico do Pub/Sub. Os armazenamentos de dados individuais podem ter um tópico próprio do Pub/Sub ou vários armazenamentos de dados podem compartilhar o mesmo tópico. Para criar um tópico, use o Console do Google Cloud ou a ferramenta de linha de comando gcloud
.
Ao criar um tópico ou referir um tópico na configuração de um armazenamento de dados, você precisa usar um URI qualificado no seguinte formato:
projects/PROJECT_ID/topics/TOPIC_NAME
em que PROJECT_ID é o ID do projeto do Google Cloud e TOPIC_NAME é o nome do tópico.
Para criar um tópico, siga estas etapas:
Console
Acesse a página de tópicos do Pub/Sub no Console do Cloud:
Clique em Criar tópico.
Digite um nome de tópico com o URI:
projects/PROJECT_ID/topics/TOPIC_NAME
em que PROJECT_ID é o ID do projeto no Google Cloud.
Clique em Criar
gcloud
Para criar um tópico, execute o comando gcloud pubsub topics create
:
gcloud pubsub topics create projects/PROJECT_ID/topics/TOPIC_NAME
Se a solicitação for bem-sucedida, o comando retornará a seguinte saída:
Created topic [projects/PROJECT_ID/topics/TOPIC_NAME].
Criar uma assinatura no Pub/Sub
Para receber mensagens publicadas em um tópico, você precisa criar uma assinatura do Pub/Sub. Cada tópico do Pub/Sub deve ter pelo menos uma assinatura do Pub/Sub.
A assinatura conecta um tópico a um aplicativo do assinante, que recebe e processa as mensagens publicadas no tópico.
É possível configurar as assinaturas para usar um modelo de envio ou de extração.
Para criar uma assinatura, conclua as etapas a seguir:
Console
Acesse a página de tópicos do Pub/Sub no Console do Cloud:
Clique no tópico do projeto.
Clique em Criar assinatura.
Insira o nome da assinatura:
projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME
Deixe o Tipo de entrega configurado como Pull.
Clique em Criar.
gcloud
Para criar um tópico, execute o comando gcloud pubsub subscriptions create
:
gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME
Se a solicitação for bem-sucedida, o comando retornará a seguinte saída:
Created subscription [projects/PROJECT_ID/subscriptions/TOPIC_NAME].
Visualizar notificações DICOM
O recurso DicomStore
contém um objeto notificationConfig
em que é possível especificar um tópico do Pub/Sub. Opcionalmente, o objeto notificationConfig
também permite indicar se as notificações do Pub/Sub precisam ser enviadas durante a importação em massa. Este campo está disponível apenas na versão v1beta1.
Quando você armazena uma nova instância de DICOM em um repositório DICOM, a API Cloud Healthcare publica uma mensagem no tópico do Pub/Sub do armazenamento DICOM.
Para ver uma notificação de uma instância DICOM armazenada, siga estas etapas:
- Crie ou edite um armazenamento DICOM e configure-o com um tópico do Pub/Sub. Como opção, indique se as notificações do Pub/Sub devem ser enviadas durante a importação em massa. Esse recurso está disponível somente na API v1beta1.
- Adicione o papel
pubsub.publisher
necessário à conta de serviço do seu projeto. - Armazene uma instância no armazenamento DICOM. Isso aciona a API Cloud Healthcare para publicar uma mensagem no tópico do Pub/Sub configurado.
Execute o comando
gcloud pubsub subscriptions pull
para ver a mensagem publicada no tópico do Pub/Sub:gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
O comando retorna a seguinte saída referente à instância DICOM que foi armazenada:
┌----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------┐ | DATA | MESSAGE_ID | ATTRIBUTES | ├---------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|------------| | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID/series/SERIES_UID/instances/INSTANCE_UID | 123456789012345 | | └----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------┘
Ver notificações FHIR
O recurso FhirStore
contém um objeto notificationConfig
em que é possível especificar um tópico do Pub/Sub.
Quando um recurso FHIR é criado, atualizado ou excluído em um armazenamento FHIR, a API Cloud Healthcare publica uma mensagem no tópico do Pub/Sub referente ao armazenamento FHIR.
Para ver uma notificação de um recurso FHIR criado, siga estas etapas:
- Crie ou edite um armazenamento FHIR e configure-o com um tópico do Pub/Sub.
- Adicione o papel
pubsub.publisher
necessário à conta de serviço do seu projeto. - Crie um recurso FHIR no armazenamento FHIR. Isso aciona a API Cloud Healthcare para publicar uma mensagem no tópico do Pub/Sub configurado.
Execute o comando
gcloud pubsub subscriptions pull
para ver a mensagem publicada no tópico do Pub/Sub:gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
O comando retorna a seguinte saída referente ao recurso FHIR criado:
┌----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------┐ | DATA | MESSAGE_ID | ATTRIBUTES | ├----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------| | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/resources/Patient/PATIENT_ID | 123456789012345 | action=CreateResource | | | | resourceType=Patient | └----------------------------------------------------------------------------------------------------------------|-----------------|-----------------------┘
Veja as notificações do HL7v2.
O recurso Hl7V2Store
contém uma matriz notificationConfigs
em que é possível especificar tópicos e critérios de filtragem do Pub/Sub.
Quando uma mensagem HL7v2 é ingerida ou criada em um armazenamento HL7v2, a API Cloud Healthcare publica uma mensagem nos tópicos do Pub/Sub que tenham um filtro que corresponda à mensagem HL7v2.
Para ver uma notificação de uma mensagem HL7v2 ingerida, siga estas etapas:
- Crie ou edite um armazenamento HL7v2 e configure-o com um tópico do Pub/Sub.
- Adicione o papel
pubsub.publisher
necessário à conta de serviço do seu projeto. - Ingira uma mensagem HL7v2 no armazenamento HL7v2. Isso aciona a API Cloud Healthcare para publicar uma mensagem no tópico do Pub/Sub configurado.
Para ver a mensagem publicada no tópico do Pub/Sub, execute o comando
gcloud pubsub subscriptions pull
:gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION
O comando retorna a seguinte saída referente à mensagem HL7v2 ingerida:
┌--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┐ | DATA | MESSAGE_ID | ATTRIBUTES | ├--------------------------------------------------------------------------------------------------------------------|-----------------|---------------| | projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=TYPE | └--------------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
Solução de problemas de mensagens perdidas do Pub/Sub
Se não for possível publicar uma notificação no Pub/Sub, será registrado um erro no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.
Se a taxa de geração de erros exceder um limite, os erros que ultrapassarem esse limite não serão enviados ao Cloud Logging.
A seguir
Saiba como configurar um tópico do Pub/Sub em: