Como configurar notificações do Pub/Sub

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:

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:

Ativar a API

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

  1. Acesse a página de tópicos do Pub/Sub no Console do Cloud:

    Acesse a página de tópicos do Cloud Pub/Sub

  2. Clique em Criar tópico.

  3. 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.

  4. 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

  1. Acesse a página de tópicos do Pub/Sub no Console do Cloud:

    Acesse a página de tópicos do Cloud Pub/Sub

  2. Clique no tópico do projeto.

  3. Clique em Criar assinatura.

  4. Insira o nome da assinatura:

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME

    Deixe o Tipo de entrega configurado como Pull.

  5. 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:

  1. 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.
  2. Adicione o papel pubsub.publisher necessário à conta de serviço do seu projeto.
  3. Armazene uma instância no armazenamento DICOM. Isso aciona a API Cloud Healthcare para publicar uma mensagem no tópico do Pub/Sub configurado.
  4. 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:

  1. Crie ou edite um armazenamento FHIR e configure-o com um tópico do Pub/Sub.
  2. Adicione o papel pubsub.publisher necessário à conta de serviço do seu projeto.
  3. Crie um recurso FHIR no armazenamento FHIR. Isso aciona a API Cloud Healthcare para publicar uma mensagem no tópico do Pub/Sub configurado.
  4. 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:

  1. Crie ou edite um armazenamento HL7v2 e configure-o com um tópico do Pub/Sub.
  2. Adicione o papel pubsub.publisher necessário à conta de serviço do seu projeto.
  3. Ingira uma mensagem HL7v2 no armazenamento HL7v2. Isso aciona a API Cloud Healthcare para publicar uma mensagem no tópico do Pub/Sub configurado.
  4. 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: