Cloud Storage から HL7v2 メッセージをインポートする

このページでは、HL7v2 メッセージを Cloud Storage から HL7v2 ストアにインポートする方法について説明します。HL7v2 メッセージの一括インポートは、REST API を使用して個別に保存するよりも高速かつ簡単です。

始める前に

Cloud Healthcare サービス エージェントのサービス アカウントに付与する必要があるロールについては、Cloud Storage から HL7v2 メッセージをインポートするをご覧ください。

入力ファイル形式の要件

HL7v2 メッセージをインポートするには、まず、1 つ以上のメッセージを含む Cloud Storage に、改行区切りの JSON(.ndjson)ファイルを 1 つ以上作成する必要があります。このファイルの各行は、base64 でエンコードされた HL7v2 メッセージを含む単一の Message リソースです。Message リソースには、任意のラベルを含めることもできます。

たとえば、次のファイル(messages.ndjson という名前)には、2 つの HL7v2 メッセージが含まれています。2 番目のメッセージでラベルが定義されています。

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

HL7v2 メッセージをインポートする

コンソール

Cloud Storage バケットから HL7v2 メッセージをインポートする手順は次のとおりです。

  1. Google Cloud コンソールで、[データセット] ページに移動します。

    [データセット] に移動

  2. HL7v2 メッセージのインポート先の HL7v2 ストアを含むデータセットをクリックします。

  3. データストアのリストで、HL7v2 ストアの [アクション] リストから [インポート] を選択します。

    [HL7v2 ストアにインポート] ページが表示されます。

  4. [プロジェクト] リストで、Cloud Storage プロジェクトを選択します。

  5. [ロケーション] リストで、Cloud Storage バケットを選択します。

  6. ファイルをインポートする特定の場所を設定するには、次のようにします。

    1. [詳細オプション] を展開します。
    2. [Cloud Storage のパスをオーバーライド] を選択します。
    3. ファイルをインポートする特定のソースを設定するには、[ロケーション] テキスト ボックスでパスを定義します。ワイルドカードを使用すると、1 つ以上のディレクトリから複数のファイルをインポートできます。オブジェクトの命名の詳細については、オブジェクトの命名ガイドラインをご覧ください。

      次のワイルドカードがサポートされています。
      • * は、0 個以上の区切り文字でない文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example*.ndjsonDIRECTORY の Example.ndjson と Example22.ndjson に一致します。
      • ** は 0 個以上の文字(区切り文字を含む)と一致します。パスの末尾で使用する必要があり、パスには他のワイルドカードを使用しないでください。ファイル名の拡張子(.ndjson など)でも使用できます。この場合、指定したディレクトリとそのサブディレクトリに、このファイル名拡張子を持つすべてのファイルをインポートできます。 たとえば、gs://BUCKET/DIRECTORY/**.ndjson では .ndjson というファイル名拡張子を持つすべてのファイルを DIRECTORYとそのサブディレクトリにインポートします。
      • ? は 1 つの文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example?.ndjson は Example1.ndjson と一致しますが、Example.ndjson や Example01.ndjson とは一致しません。
  7. 定義済みのソースから HL7v2 メッセージをインポートするには、[インポート] をクリックします。

  8. オペレーションのステータスを追跡するには、[オペレーション] タブをクリックします。オペレーションが完了すると、次の状況が表示されます。
    • [長時間実行オペレーションのステータス] セクションでは、[OK] の見出しの下に、緑色のチェックマークが表示されます。
    • [概要] セクションでは、オペレーション ID と同じ行に緑色のチェックマークと [OK] インジケーターが表示されます。
    エラーが発生した場合は、[アクション] をクリックしてから、[Cloud Logging で詳細を表示] をクリックします。

API

次のサンプルでは、projects.locations.datasets.hl7V2Stores.import メソッドを使用して Cloud Storage から HL7v2 メッセージをインポートする方法を示しています。

インポート オペレーションを呼び出すときは、次の点に注意してください。

  • バケット内のファイルの場所は任意であり、次のサンプルで指定されている形式を厳密に遵守する必要はありません。
  • Cloud Storage 内の HL7v2 メッセージのロケーションを指定するときは、ワイルドカードを使用して 1 つ以上のディレクトリから複数のファイルをインポートできます。次のワイルドカードがサポートされています。
    • * は、0 個以上の区切り文字でない文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example*.ndjsonDIRECTORY の Example.ndjson と Example22.ndjson に一致します。
    • ** は 0 個以上の文字(区切り文字を含む)と一致します。パスの末尾で使用する必要があり、パスには他のワイルドカードを使用しないでください。ファイル名の拡張子(.ndjson など)でも使用できます。この場合、指定したディレクトリとそのサブディレクトリに、このファイル名拡張子を持つすべてのファイルをインポートできます。 たとえば、gs://BUCKET/DIRECTORY/**.ndjson では .ndjson というファイル名拡張子を持つすべてのファイルを DIRECTORYとそのサブディレクトリにインポートします。
    • ? は 1 つの文字に一致します。たとえば、gs://BUCKET/DIRECTORY/Example?.ndjson は Example1.ndjson と一致しますが、Example.ndjson や Example01.ndjson とは一致しません。

curl

HL7v2 メッセージを HL7v2 ストアにインポートするには、POST リクエストを行い、次の情報を指定します。

  • 親データセットの名前
  • HL7v2 ストアの名前。
  • Cloud Storage バケット内のオブジェクトの場所。
  • アクセス トークン

次のサンプルは、curl を使用した POST リクエストを使用して単一のファイルをインポートする方法を示しています。

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"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

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

レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの 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"

リクエストが成功すると、サーバーはオペレーションのステータスを含む 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

HL7v2 メッセージを HL7v2 ストアにインポートするには、POST リクエストを行い、次の情報を指定します。

  • 親データセットの名前
  • HL7v2 ストアの名前。
  • Cloud Storage バケット内のオブジェクトの場所。
  • アクセス トークン

次のサンプルは、Windows PowerShell を用いた POST リクエストを使用して、単一のファイルをインポートする方法を示しています。

$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

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

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

レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの 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

リクエストが成功すると、サーバーはオペレーションのステータスを含む 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"
  }
}

HL7v2 インポート リクエストのトラブルシューティング

HL7v2 メッセージのインポート中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。

長時間実行オペレーションでエラーが返された場合は、長時間実行オペレーションのトラブルシューティングをご覧ください。