Recuperar mensagens HL7v2 com recuperação pontual (PITR)

Nesta página, descrevemos como usar a recuperação pontual (PITR, na sigla em inglês) para recuperar mensagens HL7v2 em um armazenamento HL7v2 para um estado nos últimos 21 dias. É possível usar a PITR para se recuperar de mudanças indesejadas, como a exclusão acidental de mensagens HL7v2.

Antes de começar

As solicitações de PITR são categorizadas como solicitações de operações avançadas e são faturadas de acordo. Antes de usar a PITR, revise os preços dos pedidos de operação avançada.

Fluxo de trabalho de recuperação

Para garantir que uma recuperação de produção seja executada conforme o esperado, primeiro faça uma simulação. A simulação gera um ou mais arquivos com os IDs das mensagens HL7v2 a serem recuperadas. Verifique a correção dos arquivos de saída antes de executar a recuperação novamente em produção.

Para recuperar mensagens HL7v2 específicas ou de acordo com um critério de filtragem, especifique um filtro.

Fazer um teste

Antes de recuperar mensagens HL7v2 em produção, faça um teste.

Os exemplos a seguir mostram como fazer um teste a seco usando o método hl7V2Stores.rollback.

REST

  1. Recupere as mensagens HL7v2.

    Para fazer uma simulação, verifique se o campo force é false.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu Google Cloud projeto
    • LOCATION: o local do conjunto de dados;
    • DATASET_ID: o conjunto de dados pai do armazenamento HL7v2
    • HL7V2_STORE_ID: o ID do armazenamento HL7v2
    • RECOVERY_TIMESTAMP: um ponto de recuperação nos últimos 21 dias. Use o formato RFC 3339. Especifique a hora até o segundo e inclua um fuso horário, por exemplo, 2015-02-07T13:28:17.239+02:00 ou 2017-01-01T00:00:00Z.
    • CLOUD_STORAGE_BUCKET: o URI totalmente qualificado de uma pasta ou bucket do Cloud Storage em que os arquivos de saída são gravados

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    cat > request.json << 'EOF'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "false"
    }
    EOF

    Depois execute o comando a seguir para enviar a solicitação REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback"

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    @'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "false"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Depois execute o comando a seguir para enviar a solicitação REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback" | Select-Object -Expand Content

    APIs Explorer

    Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para receber o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu Google Cloud projeto
    • DATASET_ID: o ID do conjunto de dados;
    • LOCATION: o local do conjunto de dados;
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth 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

    APIs Explorer

    Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, a operação de longa duração é concluída.

Ver arquivos de saída de simulação

Cada simulação gera um ou mais arquivos com os IDs e tipos das mensagens HL7v2 a serem recuperadas. Os arquivos são criados em uma subpasta na pasta rollback_messages do bucket de destino do Cloud Storage. O nome da subpasta é o ID da LRO retornado na resposta hl7V2Stores.rollback. Para conferir os arquivos e garantir que a recuperação funcione como esperado, consulte Visualizar metadados do objeto.

O número de arquivos é proporcional ao número de mensagens HL7v2 recuperadas.

Os nomes de arquivo usam o formato trial-NUMBER-of-TOTAL_NUMBER.txt, em que NUMBER é o número do arquivo e TOTAL_NUMBER é o número total de arquivos.

Esquema do arquivo de saída da simulação

Os arquivos de saída de uma recuperação de simulação usam o esquema mostrado na tabela a seguir:

MESSAGE_ID TIMESTAMP
O ID da mensagem HL7v2. O momento em que a mensagem HL7v2 foi criada ou atualizada no armazenamento HL7v2.

Recuperar na produção

Antes de fazer a recuperação na produção, faça um teste e inspecione os arquivos de saída do teste para garantir que a recuperação na produção seja executada conforme o esperado.

Os exemplos a seguir mostram como restaurar mensagens HL7v2 em produção usando o método hl7V2Stores.rollback.

REST

  1. Recupere as mensagens HL7v2.

    Verifique se o campo force é true.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu Google Cloud projeto
    • LOCATION: o local do conjunto de dados;
    • DATASET_ID: o conjunto de dados pai do armazenamento HL7v2
    • HL7V2_STORE_ID: o ID do armazenamento HL7v2
    • RECOVERY_TIMESTAMP: um ponto de recuperação nos últimos 21 dias. Use o formato RFC 3339. Especifique a hora até o segundo e inclua um fuso horário, por exemplo, 2015-02-07T13:28:17.239+02:00 ou 2017-01-01T00:00:00Z.
    • CLOUD_STORAGE_BUCKET: o URI totalmente qualificado de uma pasta ou bucket do Cloud Storage em que os arquivos de saída são gravados

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    cat > request.json << 'EOF'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "true"
    }
    EOF

    Depois execute o comando a seguir para enviar a solicitação REST:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback"

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    @'
    {
      "rollbackTime": "RECOVERY_TIMESTAMP",
      "resultGcsBucket": "gs://CLOUD_STORAGE_BUCKET",
      "force": "true"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Depois execute o comando a seguir para enviar a solicitação REST:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:rollback" | Select-Object -Expand Content

    APIs Explorer

    Copie o corpo da solicitação e abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Cole o corpo da solicitação nessa ferramenta, preencha todos os outros campos obrigatórios e clique em Executar.

    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para receber o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu Google Cloud projeto
    • DATASET_ID: o ID do conjunto de dados;
    • LOCATION: o local do conjunto de dados;
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Execute o seguinte comando:

    $cred = gcloud auth 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

    APIs Explorer

    Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, a operação de longa duração é concluída.

Ver arquivos de saída de recuperação de produção

Uma recuperação de produção gera os seguintes arquivos: Os arquivos são criados em uma subpasta na pasta rollback_messages no bucket de destino do Cloud Storage. O nome da subpasta é o ID da LRO retornado na resposta hl7V2Stores.rollback. Para ver os arquivos, consulte Visualizar metadados do objeto.

  • success-NUMBER-of-TOTAL_NUMBER.txt: contém mensagens HL7v2 recuperadas com sucesso.
  • fail-NUMBER-of-TOTAL_NUMBER.txt: contém mensagens HL7v2 que não puderam ser recuperadas. Um arquivo vazio é gerado mesmo que não haja falhas.

Nos nomes de arquivos, NUMBER é o número do arquivo e TOTAL_NUMBER é o número total de arquivos.

Esquema do arquivo de saída de Production

Os arquivos de sucesso e falha de uma recuperação de produção usam o seguinte esquema. Os arquivos de erro contêm uma coluna ERROR_MESSAGE adicional.

MESSAGE_ID ERROR_MESSAGE (somente arquivos de erro)
O ID da mensagem HL7v2. Apenas arquivos de erro. Descreve por que a mensagem HL7v2 não foi recuperada.

Usar filtros para restaurar um armazenamento HL7v2 a um estado anterior

Se um armazenamento HL7v2 foi modificado por uma ou mais operações de longa duração (LROs), é possível especificar os IDs das LROs em um filtro para restaurar o armazenamento HL7v2 ao estado anterior. Por exemplo, é possível restaurar um armazenamento HL7v2 para o estado anterior a uma operação de importação de mensagens HL7v2.

Especifique os IDs de LRO no objeto RollbackHL7MessagesFilteringFields ao enviar uma solicitação hl7V2Stores.rollback.

Consulte Listar LROs para informações sobre como listar e visualizar IDs de LROs em um conjunto de dados da API Cloud Healthcare.