Exporte mensagens HL7v2 para o Pub/Sub

Esta página descreve como exportar mensagens HL7v2 para o Pub/Sub através do método projects.locations.datasets.hl7V2Stores.export.

Pode exportar mensagens HL7v2 para o Pub/Sub para processamento a jusante. Suponha que tem um pipeline do Dataflow que transforma mensagens HL7v2 quando são carregadas novas mensagens num armazenamento HL7v2. O pipeline lê a partir de uma subscrição do Pub/Sub e aguarda notificações de novas mensagens HL7v2. Quando importa mensagens HL7v2 para uma loja HL7v2 através do método hl7V2Stores.import, o método não envia notificações do Pub/Sub. Para acionar o pipeline, importe as mensagens HL7v2 e, em seguida, use o método hl7v2Stores.export para as exportar para o Pub/Sub.

Antes de começar

Ative a API Pub/Sub

Na Google Cloud consola, ative a API Pub/Sub:

Ative a API

Configure autorizações do Pub/Sub

Para exportar mensagens de um arquivo HL7v2 para o Pub/Sub, tem de adicionar a função pubsub.publisher à conta de serviço do agente do serviço Cloud Healthcare do seu projeto. Consulte as autorizações do Pub/Sub da loja DICOM, FHIR e HL7v2 para ver os passos para adicionar a função necessária.

Crie um tópico do Pub/Sub

Para criar um tópico, consulte o artigo Crie um tópico.

Os arquivos de dados individuais podem ter o seu próprio tópico do Pub/Sub, ou vários arquivos de dados podem partilhar o mesmo tópico.

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

projects/PROJECT_ID/topics/TOPIC_NAME

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

Exporte mensagens HL7v2 para o Pub/Sub

curl

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

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

O exemplo seguinte mostra um pedido POST através de 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 o pedido for bem-sucedido, o servidor devolve 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 acompanhar o estado da operação, pode usar o método Operation get:

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 o pedido for bem-sucedido, o servidor devolve uma resposta com o estado 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"
  }
}

Exporte um subconjunto de mensagens HL7v2 através de um filtro

Pode usar os seguintes campos nos critérios de filtro:

Pode especificar os seguintes parâmetros de filtro como critérios de filtro no campo filter. Para saber mais sobre a sintaxe dos filtros e criar consultas, consulte o artigo Strings de consulta.

  • message_type: do campo MSH.9.1. Por exemplo, NOT message_type = "ADT".
  • send_date: a YYYY-MM-DD data em que a mensagem foi enviada a partir do segmento MSH.7, especificada no fuso horário do conjunto de dados. Por exemplo, send_date < "2017-01-02".
  • send_time: a data/hora em que a mensagem foi enviada. Este parâmetro é do segmento MSH.7 da mensagem. Este 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: a data/hora em que a mensagem foi criada na Cloud Healthcare API, 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 cuidados de onde a mensagem foi enviada, a partir do segmento MSH.4. Por exemplo, send_facility = "ABC".

Os exemplos seguintes 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"

Veja mensagens HL7v2 exportadas no Pub/Sub

Para ver as mensagens HL7v2 exportadas no Pub/Sub, execute o comando gcloud pubsub subscriptions pull. O comando usa a flag --format=json para devolver a saída como JSON em vez do YAML predefinido.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID é o ID do seu Google Cloud projeto
  • PUBSUB_SUBSCRIPTION é a subscrição anexada ao tópico Pub/Sub para o qual exportou mensagens HL7v2

O resultado é o seguinte:

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