En esta página se describe cómo importar mensajes HL7v2 desde Cloud Storage a un almacén HL7v2. Importar mensajes HL7v2 de forma masiva es más rápido y sencillo que almacenarlos individualmente mediante la API REST.
Antes de empezar
Consulta los roles que debes conceder a la cuenta de servicio Agente de servicio de Cloud Healthcare en el artículo Importar mensajes HL7v2 desde Cloud Storage.
Requisitos de formato de los archivos de entrada
Para importar mensajes HL7v2, primero debe crear uno o varios archivos JSON delimitados por líneas nuevas (.ndjson
) en Cloud Storage que contengan uno o varios mensajes. Cada línea del archivo es un único recurso Message
que contiene un mensaje HL7v2 codificado en base64. El Message
recurso también puede incluir etiquetas opcionales.
Por ejemplo, el siguiente archivo, llamado messages.ndjson
, contiene dos mensajes HL7v2. Se define una etiqueta en el segundo mensaje.
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg=="}
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==","labels":{"foo":"bar"}}
Importar mensajes HL7v2
Consola
Para importar mensajes HL7v2 desde un segmento de Cloud Storage, sigue estos pasos:
En la Google Cloud consola, ve a la página Conjuntos de datos.
Haga clic en el conjunto de datos que contiene el almacén HL7v2 al que va a importar mensajes HL7v2.
En la lista de almacenes de datos, elige Importar en la lista Acciones del almacén HL7v2.
Aparecerá la página Importar a almacén HL7v2.
En la lista Proyecto, selecciona un proyecto de Cloud Storage.
En la lista Ubicación, selecciona un segmento de Cloud Storage.
Para definir una ubicación específica para importar archivos, sigue estos pasos:
- Despliega Opciones avanzadas.
- Selecciona Reemplazar ruta de Cloud Storage.
Para definir una fuente específica para importar archivos, indica la ruta en el cuadro de texto Ubicación. Puedes usar comodines para importar varios archivos desde uno o más directorios. Para obtener más información sobre la nomenclatura de objetos, consulta las directrices de nomenclatura de objetos.
Se admiten los siguientes comodines:- Usa
*
para hacer coincidir 0 o más caracteres que no sean de separación. Por ejemplo,gs://BUCKET/DIRECTORY/Example*.ndjson
coincide con Example.ndjson y Example22.ndjson en DIRECTORY. - Usa
**
para hacer coincidir 0 o más caracteres (incluidos los de separación). Se debe usar al final de una ruta y no debe haber otros comodines en la ruta. También se puede usar con una extensión de nombre de archivo (como .ndjson), que importa todos los archivos con la extensión de nombre de archivo del directorio especificado y sus subdirectorios. Por ejemplo,gs://BUCKET/DIRECTORY/**.ndjson
importa todos los archivos con la extensión .ndjson de DIRECTORY y sus subdirectorios. - Usa
?
para hacer que coincida 1 carácter. Por ejemplo,gs://BUCKET/DIRECTORY/Example?.ndjson
coincide con Example1.ndjson, pero no con Example.ndjson ni con Example01.ndjson.
- Usa
Haz clic en Importar para importar mensajes HL7v2 desde la fuente definida.
- Para hacer un seguimiento del estado de la operación, haga clic en la pestaña Operaciones. Una vez que se haya completado la operación, aparecerán las siguientes indicaciones:
- La sección Estado de la operación de larga duración tiene una marca de verificación verde en el encabezado OK.
- La sección Resumen tiene una marca de verificación verde y un indicador OK en la misma fila que el ID de operación.
API
En los siguientes ejemplos se muestra cómo importar mensajes HL7v2 desde Cloud Storage mediante el método projects.locations.datasets.hl7V2Stores.import
.
Cuando llames a la operación de importación, ten en cuenta lo siguiente:
- La ubicación del archivo dentro del segmento es arbitraria y no tiene por qué coincidir exactamente con el formato especificado en los siguientes ejemplos.
- Al especificar la ubicación de los mensajes HL7v2 en Cloud Storage, puedes utilizar comodines para importar varios archivos desde uno o más directorios.
Se admiten los siguientes comodines:
- Usa
*
para hacer coincidir 0 o más caracteres que no sean de separación. Por ejemplo,gs://BUCKET/DIRECTORY/Example*.ndjson
coincide con Example.ndjson y Example22.ndjson en DIRECTORY. - Usa
**
para hacer coincidir 0 o más caracteres (incluidos los de separación). Se debe usar al final de una ruta y no debe haber otros comodines en la ruta. También se puede usar con una extensión de nombre de archivo (como .ndjson), que importa todos los archivos con la extensión de nombre de archivo del directorio especificado y sus subdirectorios. Por ejemplo,gs://BUCKET/DIRECTORY/**.ndjson
importa todos los archivos con la extensión .ndjson de DIRECTORY y sus subdirectorios. - Usa
?
para hacer que coincida 1 carácter. Por ejemplo,gs://BUCKET/DIRECTORY/Example?.ndjson
coincide con Example1.ndjson, pero no con Example.ndjson ni con Example01.ndjson.
- Usa
curl
Para importar mensajes HL7v2 en un almacén HL7v2, haz una solicitud POST
y especifica la siguiente información:
- Nombre del conjunto de datos principal
- Nombre del almacén HL7v2.
- Ubicación del objeto en un segmento de Cloud Storage
- Un token de acceso
En el siguiente ejemplo se muestra cómo importar un solo archivo mediante 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 "{ 'gcsSource': { 'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import"
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.ImportMessages", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse" } }
PowerShell
Para importar mensajes HL7v2 en un almacén HL7v2, haz una solicitud POST
y especifica la siguiente información:
- Nombre del conjunto de datos principal
- Nombre del almacén HL7v2.
- Ubicación del objeto en un segmento de Cloud Storage
- Un token de acceso
En el siguiente ejemplo se muestra cómo importar un solo archivo mediante una solicitud POST
que utiliza Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsSource': { 'uri': 'gs://BUCKET/DIRECTORY/HL7V2_MESSAGE_FILE' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:import" | Select-Object -Expand Content
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
:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
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.ImportMessages", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse" } }
Solucionar problemas con solicitudes de importación de HL7v2
Si se producen errores al importar mensajes HL7v2, se registran en Cloud Logging. Para obtener más información, consulta Ver registros de errores en Cloud Logging.
Si una operación de larga duración devuelve un error, consulta Solucionar problemas de operaciones de larga duración.