ポイントインタイム リカバリ(PITR)を使用して HL7v2 メッセージを復元する

このページでは、ポイントインタイム リカバリ(PITR)を使用して、HL7v2 ストア内の HL7v2 メッセージを過去 21 日以内の状態に復元する方法について説明します。PITR を使用して、HL7v2 メッセージが誤って削除されるなどの不要な変更から復元できます。

始める前に

PITR リクエストは高度なオペレーション リクエストに分類され、それに応じて課金されます。PITR を使用する前に、高度なオペレーション リクエストの料金を確認してください。

復元ワークフロー

本番環境の復元が期待どおりに実行されるように、まずドライランを実行します。ドライランでは、復元する HL7v2 メッセージの ID を含む 1 つ以上のファイルが出力されます。本番環境での復元を再度実行する前に、出力ファイルの正確性を確認します。

特定の HL7v2 メッセージを復元する、またはフィルタ条件に従って HL7v2 メッセージを復元するには、フィルタを指定します。

ドライランを行う

本番環境で HL7v2 メッセージを復元する前に、ドライランを行います。

次のサンプルは、hl7V2Stores.rollback メソッドを使用してドライランを行う方法を示しています。

REST

  1. HL7v2 メッセージを復元します。

    ドライランを行うには、force フィールドが false であることを確認します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • LOCATION: データセットの場所
    • DATASET_ID: HL7v2 ストアの親データセット
    • HL7V2_STORE_ID: HL7v2 ストア ID
    • RECOVERY_TIMESTAMP: 過去 21 日以内の復元ポイント。RFC 3339 形式を使用します。2 番目の部分に時刻を指定し、タイムゾーンを加えます(例: 2015-02-07T13:28:17.239+02:002017-01-01T00:00:00Z)。
    • CLOUD_STORAGE_BUCKET: 出力ファイルを書き込む Cloud Storage フォルダまたはバケットの完全修飾 URI

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

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

    その後、次のコマンドを実行して 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

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

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

    その後、次のコマンドを実行して 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

    API Explorer

    リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。OPERATION_IDの値をメモします。この値は次の手順で必要になります。

  2. projects.locations.datasets.operations.get メソッドを使用して、長時間実行オペレーションのステータスを取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • DATASET_ID: データセット ID
    • LOCATION: データセットの場所
    • OPERATION_ID: 長時間実行オペレーションから返された ID。

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    次のコマンドを実行します。

    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

    次のコマンドを実行します。

    $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

    API Explorer

    メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスに "done": true が含まれている場合、長時間実行オペレーションは終了しています。

ドライランの出力ファイルを表示する

各ドライランは、復元する HL7v2 メッセージの ID とタイプを含む 1 つ以上のファイルを出力します。ファイルは、送信先の Cloud Storage バケットの rollback_messages フォルダ内のサブフォルダに作成されます。サブフォルダ名は、hl7V2Stores.rollback レスポンスで返された LRO ID です。ファイルを表示して、復元が想定どおりに機能することを確認するには、オブジェクトのメタデータを表示するをご覧ください。

ファイルの数は、復元された HL7v2 メッセージの数に比例します。

ファイル名の形式は trial-NUMBER-of-TOTAL_NUMBER.txt です。ここで、NUMBER はファイル番号、TOTAL_NUMBER はファイルの合計数です。

ドライランの出力ファイル スキーマ

ドライランの復元からの出力ファイルは、次の表に示すスキーマを使用します。

MESSAGE_ID TIMESTAMP
HL7v2 メッセージ ID。 HL7v2 ストア内で HL7v2 メッセージが作成または更新された時刻。

本番環境で復元する

本番環境で復元する前にドライランを実行し、ドライランの出力ファイルを調べて本番環境での復元が想定どおりに実行されることを確認します。

次のサンプルは、hl7V2Stores.rollback メソッドを使用して本番環境で HL7v2 メッセージを復元する方法を示しています。

REST

  1. HL7v2 メッセージを復元します。

    force フィールドが true であることを確認します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • LOCATION: データセットの場所
    • DATASET_ID: HL7v2 ストアの親データセット
    • HL7V2_STORE_ID: HL7v2 ストア ID
    • RECOVERY_TIMESTAMP: 過去 21 日以内の復元ポイント。RFC 3339 形式を使用します。2 番目の部分に時刻を指定し、タイムゾーンを加えます(例: 2015-02-07T13:28:17.239+02:002017-01-01T00:00:00Z)。
    • CLOUD_STORAGE_BUCKET: 出力ファイルを書き込む Cloud Storage フォルダまたはバケットの完全修飾 URI

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

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

    その後、次のコマンドを実行して 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

    リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

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

    その後、次のコマンドを実行して 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

    API Explorer

    リクエスト本文をコピーして、メソッドのリファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。このツールにリクエスト本文を貼り付け、その他の必須フィールドに入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスには、長時間実行オペレーション(LRO)の識別子が含まれます。長時間実行オペレーションは、メソッドの呼び出しが完了するまでに時間がかかる場合に返されます。OPERATION_IDの値をメモします。この値は次の手順で必要になります。

  2. projects.locations.datasets.operations.get メソッドを使用して、長時間実行オペレーションのステータスを取得します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • DATASET_ID: データセット ID
    • LOCATION: データセットの場所
    • OPERATION_ID: 長時間実行オペレーションから返された ID。

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    次のコマンドを実行します。

    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

    次のコマンドを実行します。

    $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

    API Explorer

    メソッド リファレンス ページを開きます。ページの右側に [API Explorer] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。

    次のとおり出力されます。レスポンスに "done": true が含まれている場合、長時間実行オペレーションは終了しています。

本番環境の復元の出力ファイルを表示する

本番環境の復元では、次のファイルが出力されます。ファイルは、送信先の Cloud Storage バケットの rollback_messages フォルダ内のサブフォルダに作成されます。サブフォルダ名は、hl7V2Stores.rollback レスポンスで返された LRO ID です。ファイルを表示するには、オブジェクトのメタデータを表示するをご覧ください。

  • success-NUMBER-of-TOTAL_NUMBER.txt: 正常に復元された HL7v2 メッセージが含まれます。
  • fail-NUMBER-of-TOTAL_NUMBER.txt: 復元に失敗した HL7v2 メッセージが含まれます。失敗していない場合でも、空のファイルが生成されます。

ファイル名の NUMBER はファイル番号、TOTAL_NUMBER はファイルの合計数です。

本番環境の出力ファイルのスキーマ

本番環境の復元からの成功ファイルと失敗ファイルは、次のスキーマを使用します。エラーファイルには追加の ERROR_MESSAGE 列が含まれています。

MESSAGE_ID ERROR_MESSAGE(エラーファイルのみ)
HL7v2 メッセージ ID。 エラーファイルのみ。HL7v2 メッセージが復元されなかった理由を説明します。

フィルタを使用して HL7v2 ストアを以前の状態に復元する

HL7v2 ストアが 1 つ以上の長時間実行オペレーション(LRO)によって変更された場合は、フィルタで LRO ID を指定して、HL7v2 ストアを以前の状態に復元できます。たとえば、インポート オペレーションで HL7v2 メッセージをインポートする前の状態に HL7v2 ストアを復元できます。

hl7V2Stores.rollback リクエストを送信するときに、RollbackHL7MessagesFilteringFields オブジェクトで LRO ID を指定します。

Cloud Healthcare API データセットで LRO ID を一覧表示して表示する方法については、LRO の一覧表示をご覧ください。