Exportar mensagens HL7v2 para o Pub/Sub

Nesta página, descrevemos como exportar mensagens HL7v2 para o Pub/Sub usando a projects.locations.datasets.hl7V2Stores.export .

É possível exportar mensagens HL7v2 para o Pub/Sub para processamento posterior. Suponha que você tenha um pipeline do Dataflow que transforma mensagens HL7v2. quando novas mensagens são ingeridas em um armazenamento HL7v2. O pipeline faz a leitura de um Assinatura do Pub/Sub e espera notificações de novo HL7v2 mensagens. Quando você importa mensagens de HL7v2 para um armazenamento de HL7v2 usando o hl7V2Stores.import método, ele não vai enviar notificações do Pub/Sub. Para acionar o pipeline, importe as mensagens HL7v2 e use o método hl7v2Stores.export para exportá-las para o Pub/Sub.

Antes de começar

Habilitar a API Pub/Sub

No console do Google Cloud, ative a API Pub/Sub:

Ativar a API

Configurar permissões do Pub/Sub

Para exportar mensagens de um armazenamento HL7v2 para o Pub/Sub, é preciso adicionar o papel pubsub.publisher para o Agente de serviço do Cloud Healthcare do seu projeto conta de serviço. 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 criar um tópico, consulte Criar um tópico.

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.

Use o seguinte formato ao especificar o tópico do Pub/Sub:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID é o ID do projeto do Google Cloud. TOPIC_NAME é o nome do tópico do Pub/Sub.

Exportar mensagens HL7v2 para o Pub/Sub

curl

Para exportar mensagens HL7v2 para o Pub/Sub, faça uma solicitação POST e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento HL7v2
  • O tópico do Pub/Sub de destino

O exemplo a seguir mostra uma solicitação POST usando curl.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'pubsubDestination': {
        'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

A resposta contém um nome de operação. Para rastrear o status da operação, use o método get de operação:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no formato JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.hl7v2.Hl7V2Service.ExportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "counter": {
      "success": "RESOURCE_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse"
  }
}

Exportar um subconjunto de mensagens HL7v2 usando um filtro

É possível usar os seguintes campos nos critérios de filtro:

É possível especificar os parâmetros de filtro a seguir como critérios de filtro no campo filter. Para saber mais sobre a sintaxe de filtro e criar consultas, consulte Strings de consulta.

  • message_type: do campo MSH.9.1. Por exemplo, NOT message_type = "ADT".
  • send_date: a data YYYY-MM-DD em que a mensagem foi enviada do segmento MSH.7, especificada no fuso horário do conjunto de dados. Por exemplo, send_date < "2017-01-02".
  • send_time: o carimbo de data/hora em que a mensagem foi enviada. Esse parâmetro é de o segmento MSH.7 da mensagem. Esse parâmetro usa o Formato de hora RFC 3339 para comparações. Por exemplo, send_time < "2017-01-02T00:00:00-05:00".
  • create_time: o carimbo de data/hora em que a mensagem foi criada na API Cloud Healthcare, usando o formato de hora RFC 3339 para comparações. Por exemplo, create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: o centro de atendimento de origem da mensagem, no segmento MSH.4. Por exemplo, send_facility = "ABC".

Os exemplos a seguir mostram como especificar um filtro para exportar apenas mensagens HL7v2 do tipo ADT.

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'pubsubDestination': {
        'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC'
      },
      'filter': 'message_type = \"ADT\"'
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"

Ver mensagens de HL7v2 exportadas no Pub/Sub

Para acessar as mensagens de HL7v2 exportadas no Pub/Sub, executar gcloud pubsub subscriptions pull kubectl. O comando usa a flag --format=json para retornar a saída como JSON em vez do YAML padrão.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID é o ID do seu projeto do Google Cloud
  • PUBSUB_SUBSCRIPTION é a assinatura anexada ao tópico do Pub/Sub em que você exportou as mensagens HL7v2.

A saída é esta:

[
  {
    "ackId": "ACK_ID",
    "message": {
      "attributes": {
        "msgType": "TYPE"
      },
      "data": "DATA",
      "messageId": "8076570784126536",
      "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
    }
  }
]