En esta página se describe cómo exportar mensajes HL7v2 a Pub/Sub mediante el método projects.locations.datasets.hl7V2Stores.export
.
Puede exportar mensajes HL7v2 a Pub/Sub para su procesamiento posterior.
Supongamos que tienes una canalización de Dataflow que transforma mensajes HL7v2 cuando se ingieren mensajes nuevos en un almacén HL7v2. La canalización lee de una suscripción de Pub/Sub y espera notificaciones de nuevos mensajes HL7v2. Cuando importas mensajes HL7v2 en un almacén HL7v2 mediante el método hl7V2Stores.import
, este no envía notificaciones de Pub/Sub.
Para activar la canalización, importa los mensajes HL7v2 y, a continuación, usa el método hl7v2Stores.export
para exportarlos a Pub/Sub.
Antes de empezar
Habilitar la API Pub/Sub
En la Google Cloud consola, habilita la API Pub/Sub:
Configurar los permisos de Pub/Sub
Para exportar mensajes de un almacén HL7v2 a Pub/Sub, debes añadir el rol pubsub.publisher
a la cuenta de servicio del agente de servicio de Cloud Healthcare de tu proyecto.
Consulta Permisos de Pub/Sub para almacenes DICOM, FHIR y HL7v2 para ver los pasos que debes seguir para añadir el rol necesario.
Crear un tema de Pub/Sub
Para crear un tema, consulta Crear un tema.
Los almacenes de datos individuales pueden tener su propio tema de Pub/Sub, o bien varios almacenes de datos pueden compartir el mismo tema.
Utiliza el siguiente formato al especificar el tema de Pub/Sub:
projects/PROJECT_ID/topics/TOPIC_NAME
PROJECT_ID
es el ID de tu proyecto Google Cloud y TOPIC_NAME
es el nombre del tema de Pub/Sub.
Exportar mensajes HL7v2 a Pub/Sub
curl
Para exportar mensajes HL7v2 a Pub/Sub, haz una solicitud POST
y especifica la siguiente información:
- Nombre del conjunto de datos principal
- Nombre del almacén HL7v2.
- El tema de Pub/Sub de destino
En el siguiente ejemplo se muestra una solicitud POST
que utiliza 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 se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para hacer un seguimiento del estado de la operación, puedes usar el 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"
Si la solicitud se realiza de forma correcta, el servidor devuelve 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" } }
Exportar un subconjunto de mensajes HL7v2 mediante un filtro
Puede usar los siguientes campos en sus criterios de filtro:
Puede especificar los siguientes parámetros de filtro como criterios de filtro en el campo filter
. Para obtener información sobre la sintaxis de los filtros y crear consultas, consulta Cadenas de consulta.
message_type
: del campo MSH.9.1. Por ejemplo,NOT message_type = "ADT"
.send_date
: laYYYY-MM-DD
fecha 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
: marca de tiempo que indica cuándo se envió el mensaje. Este parámetro procede del 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 Cloud Healthcare, con el formato de hora RFC 3339 para las comparaciones. Por ejemplo:create_time < "2017-01-02T00:00:00-05:00"
.send_facility
: el centro de asistencia del que procede 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 HL7v2 exportados en Pub/Sub, ejecuta el comando gcloud pubsub subscriptions pull
. El comando usa la marca --format=json
para devolver el resultado en formato JSON en lugar de YAML, que es el formato predeterminado.
gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \ --format=json
PROJECT_ID
es el ID de tu Google Cloud proyecto.PUBSUB_SUBSCRIPTION
es la suscripción adjunta al tema de Pub/Sub en el que has exportado mensajes HL7v2.
El resultado es el siguiente:
[ { "ackId": "ACK_ID", "message": { "attributes": { "msgType": "TYPE" }, "data": "DATA", "messageId": "8076570784126536", "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ" } } ]