Como importar e exportar mensagens HL7v2 usando o Cloud Storage

Nesta página, você aprenderá como importar e exportar mensagens HL7v2 de e para o Cloud Storage usando os métodos projects.locations.datasets.hl7V2Stores.import e projects.locations.datasets.hl7V2Stores.export.

Você pode importar mensagens HL7v2 do Cloud Storage para facilitar o carregamento de muitas mensagens HL7v2 em massa em um armazenamento HL7v2. É possível exportar muitas mensagens HL7v2 para o Cloud Storage de uma vez, em vez de armazená-las no Cloud Storage individualmente.

Como definir permissões do Cloud Storage

Antes de exportar e importar mensagens HL7v2 de e para o Cloud Storage, é necessário conceder outras permissões à conta de serviço do Agente de serviço do Cloud Healthcare. Para mais informações, consulte Armazenar permissões do HL7v2 no Cloud Storage.

Como importar mensagens HL7v2

Para importar mensagens HL7v2, é necessário primeiro criar um ou mais arquivos JSON (.ndjson) delimitados por uma nova linha no Cloud Storage e que contenham uma ou mais mensagens. Cada linha do arquivo é um único recurso Message (em inglês), que contém uma mensagem HL7v2 codificada em base64. O recurso Message também pode incluir rótulos opcionais.

Por exemplo, o arquivo a seguir, chamado messages.ndjson, contém duas mensagens HL7v2. Um rótulo é definido na segunda mensagem.

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

Console

Para importar mensagens de HL7v2 de um bucket do Cloud Storage, siga estas etapas:

  1. No console do Google Cloud, acesse a página Conjuntos de dados.

    Acessar conjuntos de dados

  2. Clique no conjunto de dados que contém o armazenamento de HL7v2 para o qual você está importando mensagens de HL7v2.

  3. Na lista de armazenamentos de dados, selecione Importar na lista Ações do armazenamento HL7v2.

    A página Importar para o armazenamento HL7v2 é exibida.

  4. Na lista Projeto, selecione um projeto do Cloud Storage.

  5. Na lista Local, selecione um bucket do Cloud Storage.

  6. Para definir um local específico para importar arquivos, faça o seguinte:

    1. Expanda Opções avançadas.
    2. Selecione Modificar caminho do Cloud Storage.
    3. Para definir uma origem específica para importar arquivos, defina o caminho na caixa de texto Local. Você pode usar caracteres curinga para importar vários arquivos de um ou mais diretórios. Para mais informações sobre a nomenclatura de objetos, consulte as Diretrizes de nomenclatura de objetos.

      Os seguintes caracteres curinga são suportados:
      • Use * para corresponder a 0 ou mais caracteres que não sejam separadores. Por exemplo, gs://BUCKET/DIRECTORY/Example*.ndjson corresponde a Example.ndjson e Example22.ndjson em DIRECTORY.
      • Use ** para corresponder a 0 ou mais caracteres (incluindo separadores). Precisa ser usado no final de um caminho e sem outros caracteres curinga no caminho. Também pode ser usado com uma extensão de nome de arquivo (como .ndjson), que importa todos os arquivos com a extensão de nome de arquivo no diretório especificado e seus subdiretórios. Por exemplo, gs://BUCKET/DIRECTORY/**.ndjson importa todos os arquivos com a extensão de nome de arquivo .ndjson em DIRECTORY e seus subdiretórios.
      • Use ? para corresponder a um caractere. Por exemplo, gs://BUCKET/DIRECTORY/Example?.ndjson corresponde a Example1.ndjson, mas não corresponde a Example.ndjson nem Example01.ndjson.
  7. Clique em Importar para importar as mensagens de HL7v2 da origem definida.

  8. Para acompanhar o status da operação, clique na guia Operações. Após a conclusão da operação, as seguintes indicações serão exibidas:
    • A seção Status da operação de longa duração tem uma marca de seleção verde no cabeçalho OK.
    • A seção Visão geral tem uma marca de seleção verde e um indicador OK na mesma linha do ID da operação.
    Se você encontrar erros, clique em Ações e depois em Ver detalhes no Cloud Logging.

API

Os exemplos a seguir mostram como importar mensagens HL7v2 do Cloud Storage usando o método projects.locations.datasets.hl7V2Stores.import.

Observe o seguinte ao chamar a operação de importação:

  • O local do arquivo no bucket é arbitrário e não precisa aderir exatamente ao formato especificado nas amostras a seguir.
  • Ao especificar o local das mensagens HL7v2 no Cloud Storage, use caracteres curinga para importar vários arquivos de um ou mais diretórios. Os seguintes caracteres curinga são suportados:
    • Use * para corresponder a 0 ou mais caracteres que não sejam separadores. Por exemplo, gs://BUCKET/DIRECTORY/Example*.ndjson corresponde a Example.ndjson e Example22.ndjson em DIRECTORY.
    • Use ** para corresponder a 0 ou mais caracteres (incluindo separadores). Precisa ser usado no final de um caminho e sem outros caracteres curinga no caminho. Também pode ser usado com uma extensão de nome de arquivo (como .ndjson), que importa todos os arquivos com a extensão de nome de arquivo no diretório especificado e seus subdiretórios. Por exemplo, gs://BUCKET/DIRECTORY/**.ndjson importa todos os arquivos com a extensão de nome de arquivo .ndjson em DIRECTORY e seus subdiretórios.
    • Use ? para corresponder a um caractere. Por exemplo, gs://BUCKET/DIRECTORY/Example?.ndjson corresponde a Example1.ndjson, mas não corresponde a Example.ndjson nem Example01.ndjson.

curl

Para importar mensagens HL7v2 para um armazenamento HL7v2, faça uma solicitação POST e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento HL7v2
  • O local do objeto em um bucket do Cloud Storage
  • Um token de acesso

O exemplo a seguir mostra como importar um único arquivo usando uma solicitação POST usando 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"

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

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

A resposta contém um nome de operação. Para rastrear o status da operação, use o método get de operação:

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"

Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no 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 mensagens HL7v2 para um armazenamento HL7v2, faça uma solicitação POST e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento HL7v2
  • O local do objeto em um bucket do Cloud Storage
  • Um token de acesso

Veja na amostra a seguir como importar um único arquivo usando uma solicitação POST com o 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

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

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

A resposta contém um nome de operação. Para rastrear o status da operação, use o método get de operação:

$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

Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no 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"
  }
}

Como exportar mensagens HL7v2

Quando você exporta mensagens HL7v2 de um armazenamento HL7v2, todas as mensagens no armazenamento HL7v2 são exportadas. Para exportar apenas um subconjunto dessas mensagens, defina os parâmetros startTime e endTime para incluir apenas mensagens enviadas dentro do período definido. Para exportar apenas partes específicas do recurso Message, defina o MessageView.

Quando as mensagens são exportadas, a API Cloud Healthcare cria um objeto para cada mensagem HL7v2. Cada objeto consiste em um arquivo .ndjson contendo um recurso Message em cada linha. As mensagens são exportadas em ordem crescente com base no sendTime (MSH.7).

Console

Para exportar mensagens de HL7v2 para o Cloud Storage, siga estas etapas:

  1. No console do Google Cloud, acesse a página Conjuntos de dados.

    Acessar conjuntos de dados

  2. Clique no conjunto de dados que contém o armazenamento de HL7v2 do qual você está exportando mensagens de HL7v2.

  3. Na lista de repositórios de dados, escolha Exportar na lista Ações do armazenamento HL7v2.

    A página Exportar mensagens HL7v2 é exibida.

  4. Na lista Projeto, selecione um projeto do Cloud Storage.

  5. Na lista Local, selecione um bucket do Cloud Storage.

  6. Clique em Exportar para exportar instâncias de HL7v2 para o local definido no Cloud Storage.

  7. Para acompanhar o status da operação, clique na guia Operações. Após a conclusão da operação, as seguintes indicações serão exibidas:
    • A seção Status da operação de longa duração tem uma marca de seleção verde no cabeçalho OK.
    • A seção Visão geral tem uma marca de seleção verde e um indicador OK na mesma linha do ID da operação.
    Se você encontrar erros, clique em Ações e depois em Ver detalhes no Cloud Logging.

API

As amostras a seguir mostram como exportar mensagens HL7v2 para o Cloud Storage usando o método projects.locations.datasets.hl7V2Stores.messages.export.

Observe o seguinte ao chamar a operação de exportação:

  • Grave em um bucket ou diretório do Cloud Storage, em vez de um objeto, porque a API Cloud Healthcare pode criar vários arquivos JSON delimitados por linha nova quando houver muitas mensagens. Em cada arquivo JSON, cada linha é uma mensagem HL7v2.
  • Se o comando especificar um diretório que não existe, o diretório será criado.

curl

Para exportar mensagens HL7v2, faça uma solicitação POST e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento HL7v2
  • O bucket ou diretório de destino do Cloud Storage.
  • Um token de acesso

O exemplo a seguir mostra uma solicitação POST usando 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"

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

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

A resposta contém um nome de operação. Para rastrear o status da operação, use o método get de operação:

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"

Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no 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 mensagens HL7v2, faça uma solicitação POST e especifique as seguintes informações:

  • O nome do conjunto de dados pai
  • O nome do armazenamento HL7v2
  • O bucket ou diretório de destino do Cloud Storage.
  • Um token de acesso

O exemplo a seguir mostra uma solicitação POST usando o 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

Se a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

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

A resposta contém um nome de operação. Para rastrear o status da operação, use o método get de operação:

$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

Se a solicitação for bem-sucedida, o servidor retornará uma resposta com o status da operação no 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"
  }
}

Solução de problemas com solicitações de importação e exportação HL7v2

Se ocorrerem erros durante uma solicitação de importação ou exportação HL7v2, os erros serão registrados no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.

Se uma operação retornar um erro, consulte Como solucionar problemas de operações de longa duração.