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 de HL7v2 a Pub/Sub para su procesamiento posterior. Supongamos que tienes una canalización de Dataflow que transforma mensajes de HL7v2. cuando se transfieren mensajes nuevos a un almacén de HL7v2. La canalización lee de un Suscripción a Pub/Sub y espera notificaciones de HL7v2 nuevos mensajes 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 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 el rol pubsub.publisher en el agente de servicio de Cloud Healthcare del proyecto cuenta de servicio. Consulta los permisos de Pub/Sub para los almacenes de DICOM, FHIR y HL7v2 y sigue los pasos para agregar la función necesaria.

Crea 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 y el ID del proyecto de Google Cloud. 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 de 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 filter . Para conocer el filtro la sintaxis y las consultas de construcción, consulta Cadenas de consulta.

  • message_type: del campo MSH.9.1 Por ejemplo, NOT message_type = "ADT"
  • send_date: Es la fecha de YYYY-MM-DD en la que se envió el mensaje desde el segmento MSH.7, especificada 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 de el segmento MSH.7 del mensaje. Este parámetro usa el Formato de hora RFC 3339 para las 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: 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 de HL7v2 del 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 de HL7v2 exportados en Pub/Sub

Para ver los mensajes HL7v2 exportados en Pub/Sub, sigue estos pasos: ejecuta gcloud pubsub subscriptions pull. . El comando usa la marca --format=json para mostrar el resultado como 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 de HL7v2.

Esta es la salida:

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