Exporta mensajes de HL7v2 a Pub/Sub

En esta página, se describe cómo exportar mensajes de HL7v2 a Pub/Sub con el método projects.locations.datasets.hl7V2Stores.export.

Puedes exportar mensajes HL7v2 a Pub/Sub para su procesamiento posterior. Supongamos que tienes una canalización de Dataflow que transforma los mensajes de HL7v2 cuando los mensajes nuevos se transfieren a un almacén de HL7v2. La canalización lee desde una suscripción a Pub/Sub y espera notificaciones de mensajes de HL7v2 nuevos. Cuando importas mensajes de HL7v2 a un almacén de HL7v2 con el método hl7V2Stores.import, este no envía notificaciones de Pub/Sub. Para activar la canalización, importa los mensajes de HL7v2 y, luego, usa el método hl7v2Stores.export para exportarlos a Pub/Sub.

Antes de comenzar

Habilita la API de Pub/Sub

En la consola de Google Cloud, habilita la API de Pub/Sub:

Habilitar la API

Configura los permisos de Pub/Sub

Para exportar mensajes de un almacén de HL7v2 a Pub/Sub, debes agregar la función pubsub.publisher a la cuenta de servicio del agente de servicio de Cloud Healthcare de tu proyecto. Consulta los permisos de Pub/Sub para los almacenes de DICOM, FHIR y HL7v2 y sigue los pasos para agregar la función necesaria.

Crear un tema de Pub/Sub

Para crear un tema, consulta Cómo crear un tema.

Los almacenes de datos individuales pueden tener su propio tema de Pub/Sub, o múltiples almacenes de datos pueden compartir el mismo tema.

Usa el siguiente formato cuando especifiques el tema de Pub/Sub:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID es el ID del proyecto de Google Cloud y TOPIC_NAME es el nombre del tema de Pub/Sub.

Exporta mensajes de HL7v2 a Pub/Sub

curl

Para exportar mensajes de HL7v2 a Pub/Sub, realiza una solicitud POST y especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de HL7v2
  • El tema de Pub/Sub de destino

En el siguiente ejemplo, se muestra una solicitud POST mediante 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"

Si la solicitud tiene éxito, se mostrará la respuesta en formato JSON en el servidor:

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

La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get de la operación:

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"

Si la solicitud es exitosa, el servidor mostrará una respuesta con el estado de la operación en 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"
  }
}

Exporta un subconjunto de mensajes HL7v2 con un filtro

Puedes usar los siguientes campos en tus criterios de filtro:

Puedes especificar los siguientes parámetros de filtro como tus criterios de filtro en el campo filter. Para aprender la sintaxis del filtro y crear consultas, revisa Cadenas de consulta.

  • message_type: desde el campo MSH.9.1 Por ejemplo, NOT message_type = "ADT"
  • send_date: la fecha YYYY-MM-DD en la que se envió el mensaje desde el segmento MSH.7, especificado en la zona horaria del conjunto de datos. Por ejemplo, send_date < "2017-01-02".
  • send_time: Es la marca de tiempo en la que se envió el mensaje. Este parámetro proviene del segmento MSH.7 del mensaje. Este parámetro usa el formato de hora RFC 3339 para realizar comparaciones. Por ejemplo, send_time < "2017-01-02T00:00:00-05:00".
  • create_time: la marca de tiempo en la que se creó el mensaje en la API de Cloud Healthcare con el formato de tiempo RFC 3339 para las comparaciones. Por ejemplo: create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: Es el centro de atención del que proviene el mensaje, del segmento MSH.4. Por ejemplo, send_facility = "ABC"

En los siguientes ejemplos, se muestra cómo especificar un filtro para exportar solo mensajes HL7v2 de 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 mensajes HL7v2 exportados en Pub/Sub

Para ver los mensajes de HL7v2 exportados en Pub/Sub, ejecuta el comando gcloud pubsub subscriptions pull. El comando usa la marca --format=json para mostrar el resultado en formato JSON en lugar del YAML predeterminado.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID es el ID de tu proyecto de Google Cloud.
  • PUBSUB_SUBSCRIPTION es la suscripción adjunta al tema de Pub/Sub en el que exportaste mensajes HL7v2.

Esta es la salida:

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