Importar y exportar mensajes HL7v2 con Cloud Storage

En esta página, se describe cómo importar y exportar mensajes HL7v2 desde y hacia Cloud Storage con los métodos projects.locations.datasets.hl7V2Stores.import y projects.locations.datasets.hl7V2Stores.export.

Puedes importar mensajes de HL7v2 desde Cloud Storage para facilitar la carga masiva de muchos mensajes de HL7v2 en un almacén HL7v2. Puedes exportar muchos mensajes de HL7v2 a Cloud Storage a la vez, en lugar de tener que almacenarlos en Cloud Storage de forma individual.

Configura permisos de Cloud Storage

Antes de importar y exportar recursos de FHIR desde y hacia Cloud Storage, debes otorgar permisos adicionales a la cuenta de servicio del agente de servicios de Cloud Healthcare. Para obtener más información, consulta Permisos de Cloud Storage del almacén HL7v2.

Importa mensajes HL7v2

Para importar mensajes de HL7v2, primero debes crear uno o más archivos JSON delimitados por saltos de línea (.ndjson) en Cloud Storage que contengan uno o más mensajes. Cada línea del archivo es un recurso Message único que contiene un mensaje de HL7v2 codificada en base64. El recurso Message también puede incluir etiquetas opcionales.

Por ejemplo, el siguiente archivo, llamado messages.ndjson, contiene dos mensajes de HL7v2. Una etiqueta se define en el segundo mensaje.

{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg=="}
{"data" :"TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==","labels":{"foo":"bar"}}

Consola

Para importar mensajes HL7v2 desde un bucket de Cloud Storage, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Conjuntos de datos.

    Ir a Conjuntos de datos

  2. Haz clic en el conjunto de datos que contiene el almacén de HL7v2 en el que deseas importar los mensajes de HL7v2.

  3. En la lista de almacenes de datos, elige Importar en la lista Acciones del almacén de HL7v2.

    Aparecerá la página Importar al almacén de HL7v2 .

  4. En la lista Proyecto, selecciona un proyecto de Cloud Storage.

  5. En la lista Ubicación, selecciona un depósito de Cloud Storage.

  6. Si deseas establecer una ubicación específica para la importación de archivos, haz lo siguiente:

    1. Expande Opciones avanzadas.
    2. Selecciona Anular ruta de Cloud Storage.
    3. Si quieres establecer una fuente específica para importar archivos, define la ruta de acceso en el cuadro de texto Ubicación. Puedes usar comodines para importar varios archivos de uno o más directorios. Si quieres obtener más información sobre la asignación de nombres de objetos, consulta los Lineamientos para asignar nombres a objetos.

      Se admiten los siguientes comodines:
      • Usa * para hacer coincidir 0 o más caracteres sin separadores. 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 (con separadores). 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 en el directorio especificado y en sus subdirectorios. Por ejemplo, gs://BUCKET/DIRECTORY/**.ndjson importa todos los archivos con la extensión de nombre de archivo .ndjson en DIRECTORY y en sus subdirectorios.
      • Usa ? para hacer coincidir 1 carácter. Por ejemplo, gs://BUCKET/DIRECTORY/Example?.ndjson coincide con Example1.ndjson, pero no coincide con Example.ndjson ni Example01.ndjson.
  7. Haz clic en Importar para importar mensajes HL7v2 desde la fuente definida.

  8. Para seguir el estado de la operación, haz clic en la pestaña Operaciones. Una vez que se completa 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 debajo del encabezado Aceptar.
    • La sección Descripción general tiene una marca de verificación verde y un indicador Aceptar en la misma fila que el ID de la operación.
    Si encuentras algún error, haz clic en Acciones y, luego, en Ver detalles en Cloud Logging.

API

En los siguientes ejemplos, se muestra cómo importar mensajes de HL7v2 de Cloud Storage con el método projects.locations.datasets.hl7V2Stores.import.

Ten en cuenta lo siguiente cuando llames a la operación de importación:

  • La ubicación del archivo dentro del bucket es arbitraria y no necesita adherirse exactamente al formato especificado en los siguientes ejemplos.
  • Cuando especificas la ubicación de los mensajes de HL7v2 en Cloud Storage, puedes usar 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 sin separadores. 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 (con separadores). 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 en el directorio especificado y en sus subdirectorios. Por ejemplo, gs://BUCKET/DIRECTORY/**.ndjson importa todos los archivos con la extensión de nombre de archivo .ndjson en DIRECTORY y en sus subdirectorios.
    • Usa ? para hacer coincidir 1 carácter. Por ejemplo, gs://BUCKET/DIRECTORY/Example?.ndjson coincide con Example1.ndjson, pero no coincide con Example.ndjson ni Example01.ndjson.

curl

Para importar mensajes de HL7v2 a un almacén de HL7v2, realiza una solicitud POST y especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de HL7v2
  • La ubicación del objeto en un bucket de Cloud Storage
  • Un token de acceso

En el siguiente ejemplo, se muestra cómo importar un solo archivo con el uso de 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 "{
      '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 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.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

PowerShell

Para importar mensajes de HL7v2 a un almacén de HL7v2, realiza una solicitud POST y especifica la siguiente información:

  • El nombre del conjunto de datos superior
  • El nombre del almacén de HL7v2
  • La ubicación del objeto en un bucket de Cloud Storage
  • Un token de acceso

En el siguiente ejemplo, se muestra cómo importar un solo archivo mediante una solicitud POST con 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 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:

$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 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.ImportMessages",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ImportMessagesResponse"
  }
}

Exporta mensajes HL7v2

Cuando exportas mensajes de HL7v2 desde un almacén de HL7v2, se exportan todos los mensajes del almacén de HL7v2. Para exportar solo un subconjunto de estos mensajes, puedes definir los parámetros startTime y endTime a fin de incluir solo los mensajes enviados dentro del período definido. Para exportar solo partes específicas del recurso Message, configura MessageView.

Cuando se exportan los mensajes, la API de Cloud Healthcare crea un objeto para cada mensaje de HL7v2. Cada objeto consiste en un archivo .ndjson que contiene un recurso Message en cada línea. Los mensajes se exportan en orden ascendente según el sendTime (MSH.7).

Consola

Para exportar mensajes de HL7v2 a Cloud Storage, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Conjuntos de datos.

    Ir a Conjuntos de datos

  2. Haz clic en el conjunto de datos que contiene el almacén de HL7v2 desde el que exportarás mensajes de HL7v2.

  3. En la lista de almacenes de datos, selecciona Exportar en la lista Acciones para el almacén de HL7v2.

    Aparecerá la página Exportar mensajes de HL7v2.

  4. En la lista Proyecto, selecciona un proyecto de Cloud Storage.

  5. En la lista Ubicación, selecciona un bucket de Cloud Storage.

  6. Haz clic en Exportar para exportar las instancias de HL7v2 a la ubicación definida en Cloud Storage.

  7. Para seguir el estado de la operación, haz clic en la pestaña Operaciones. Una vez que se completa 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 debajo del encabezado Aceptar.
    • La sección Descripción general tiene una marca de verificación verde y un indicador Aceptar en la misma fila que el ID de la operación.
    Si encuentras algún error, haz clic en Acciones y, luego, en Ver detalles en Cloud Logging.

API

En los siguientes ejemplos, se muestra cómo exportar mensajes HL7v2 a Cloud Storage con el método projects.locations.datasets.hl7V2Stores.messages.export.

Ten en cuenta lo siguiente cuando llames a la operación de importación:

  • Escribe en un bucket o un directorio de Cloud Storage, en lugar de en un objeto, ya que la API de Cloud Healthcare puede crear varios archivos JSON delimitados por saltos de línea cuando hay muchos mensajes. En cada archivo JSON, cada línea es un mensaje de HL7v2.
  • Si el comando especifica un directorio que no existe, este se creará.

curl

Para exportar mensajes de HL7v2, 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 bucket o el directorio de Cloud Storage de destino
  • Un token de acceso

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 "{
      'gcsDestination': {
        'uriPrefix': 'gs://BUCKET/DIRECTORY'
      }
    }" "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"
  }
}

PowerShell

Para exportar mensajes de HL7v2, 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 bucket o el directorio de Cloud Storage de destino
  • Un token de acceso

En el siguiente ejemplo, se muestra una solicitud POST mediante 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 "{
    'gcsDestination': {
      'uriPrefix': 'gs://BUCKET/DIRECTORY'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export" | Select-Object -Expand Content

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:

$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 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"
  }
}

Soluciona problemas de importación y exportación de HL7v2

Si se producen errores durante una solicitud de importación o exportación de HL7v2, los errores se registran en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.

Si una operación muestra un error, consulta Solución de problemas de operaciones de larga duración.