このページでは、HL7v2 ストアから Cloud Storage に HL7v2 メッセージをエクスポートする方法について説明します。HL7v2 メッセージを Cloud Storage に一括エクスポートして、ダウンストリーム処理を行うことができます。
始める前に
Cloud Healthcare サービス エージェントのサービス アカウントに付与する必要があるロールについては、Cloud Storage から HL7v2 メッセージをエクスポートするをご覧ください。
HL7v2 メッセージを Cloud Storage にエクスポートする
このタスクに必要な権限
このタスクを実行するには、次の権限または Identity and Access Management(IAM)のロールが付与されている必要があります。
権限
- リクエストされた HL7v2 ストアに対する
healthcare.hl7V2Stores.export
ロール
これらの Identity and Access Management ロールを付与するよう管理者に依頼できます。ロールの付与手順については、アクセスを管理するまたは Cloud Healthcare API リソースへのアクセスを制御するをご覧ください。必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Healthcare API は、各 HL7v2 メッセージを NDJSON .ndjson
ファイル内の行としてエクスポートします。HL7v2 メッセージは、sendTime
値で時系列に並べ替えられます。
多数の HL7v2 メッセージがある場合は Cloud Healthcare API により複数の NDJSON ファイルが作成される可能性があるため、オブジェクトではなく Cloud Storage バケットまたはフォルダにエクスポートします。
存在しない Cloud Storage フォルダにエクスポートすると、フォルダが作成されます。
HL7v2 メッセージを Cloud Storage にエクスポートするには、次の手順を実施します。
Google Cloud コンソールで、[データセット] ページに移動します。
HL7v2 メッセージをエクスポートする HL7v2 ストアを含むデータセットをクリックします。
データストアのリストで、HL7v2 ストアの [アクション] リストから [エクスポート] を選択します。
[HL7v2 メッセージのエクスポート] ページが表示されます。
[プロジェクト] リストで、Cloud Storage プロジェクトを選択します。
[ロケーション] リストで、Cloud Storage バケットを選択します。
[エクスポート] をクリックして、Cloud Storage の定義された場所に HL7v2 インスタンスをエクスポートします。
- オペレーションのステータスを追跡するには、[オペレーション] タブをクリックします。オペレーションが完了すると、次の状況が表示されます。
- [長時間実行オペレーションのステータス] セクションでは、[OK] の見出しの下に、緑色のチェックマークが表示されます。
- [概要] セクションでは、オペレーション ID と同じ行に緑色のチェックマークと [OK] インジケーターが表示されます。
フィルタを使用して HL7v2 メッセージを Cloud Storage にエクスポートする
デフォルトでは、HL7v2 メッセージを Cloud Storage にエクスポートすると、HL7v2 ストア内のすべての HL7v2 メッセージと、各 Message
オブジェクト内のすべてのフィールドが含まれます。
エクスポートされた HL7v2 メッセージは、次のようにフィルタリングできます。
- フィルタを使用して、フィルタ条件に一致する HL7v2 メッセージのサブセットをエクスポートします。詳細については、フィルタを使用して HL7v2 メッセージのサブセットをエクスポートするをご覧ください。
MessageView
オブジェクトを使用して、エクスポートする各Message
のフィールドを選択します。詳細については、Message
フィールドによる HL7v2 メッセージをエクスポートするをご覧ください。
フィルタを使用して HL7v2 メッセージのサブセットをエクスポートする
フィルタ条件には次のフィールドを使用できます。
filter
フィールドで、次のフィルタ パラメータをフィルタ条件として指定できます。フィルタの構文とクエリの作成については、クエリ文字列をご覧ください。
message_type
: MSH.9.1 フィールドから。例:NOT message_type = "ADT"
send_date
: MSH.7 セグメントからメッセージが送信されたYYYY-MM-DD
日付(データセットのタイムゾーンで指定)。例:send_date < "2017-01-02"
send_time
: メッセージ送信時のタイムスタンプ。このパラメータは、メッセージの MSH.7 セグメントから取得されます。このパラメータでは、比較に RFC 3339 時間形式を使用します。例:send_time < "2017-01-02T00:00:00-05:00"
create_time
: Cloud Healthcare API でメッセージが作成されたときのタイムスタンプ(比較のためにRFC 3339 時間形式を使用)。例:create_time < "2017-01-02T00:00:00-05:00"
。send_facility
: MSH.4 セグメントからのメッセージの送信元であるケアセンター。例:send_facility = "ABC"
次のサンプルは、ADT
タイプの HL7v2 メッセージのみをエクスポートするようにフィルタを指定する方法を示しています。
hl7V2Stores.export
メソッドを使用して HL7v2 メッセージをエクスポートします。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセットの場所LOCATION
: HL7v2 ストアの親データセットDATASET_ID
: HL7v2 ストア IDHL7V2_STORE_ID
: エクスポートされた HL7v2 メッセージを書き込む Cloud Storage バケットまたはフォルダの名前CLOUD_STORAGE_LOCATION
リクエストの本文(JSON):
{ "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" }リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" } 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 :export"リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION " }, "filter": "message_type = \"ADT\"" } '@ | 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 :export" | Select-Object -Expand ContentOPERATION_ID
の値をメモします。この値は次の手順で必要になります。レスポンス
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }projects.locations.datasets.operations.get
メソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセット IDDATASET_ID
: データセットの場所LOCATION
: 長時間実行オペレーションから返された ID。OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
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 "次のコマンドを実行します。
$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] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": true
が含まれている場合、長時間実行オペレーションは終了しています。レスポンス
{ "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": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL " "counter": { "success": "SUCCESS_COUNT ", // If there were any failures, they display in the `failure` field. "failure": "FAILURE_COUNT " } }, "done": true, // The `response` field only displays if there were no errors. "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse", }, // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. "error": { "code":ERROR_CODE , "message": "DESCRIPTION ", "details": [ { "@type": "...",FIELD1 : ..., ... } ] } }
Message
フィールドによる HL7v2 メッセージをエクスポートする
Cloud Healthcare API では、HL7v2 メッセージは Message
リソースに保存されます。MessageView
列挙型を使用して、エクスポートされた各 HL7v2 メッセージに含まれる Message
リソースのフィールドを特定できます。
次のサンプルは、MessageView
で BASIC
値を使用して、エクスポートされた HL7v2 メッセージ内に name
フィールドのみを含める方法を示しています。
hl7V2Stores.export
メソッドを使用して HL7v2 メッセージをエクスポートします。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセットの場所LOCATION
: HL7v2 ストアの親データセットDATASET_ID
: HL7v2 ストア IDHL7V2_STORE_ID
: エクスポートされた HL7v2 メッセージを書き込む Cloud Storage バケットまたはフォルダの名前CLOUD_STORAGE_LOCATION
リクエストの本文(JSON):
{ "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } }リクエストを送信するには、次のいずれかのオプションを選択します。
リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。cat > request.json << 'EOF' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } } 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 :export"リクエスト本文を
request.json
という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。@' { "gcsDestination": { "uriPrefix": "gs://
CLOUD_STORAGE_LOCATION ", "messageView": "BASIC" } } '@ | 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 :export" | Select-Object -Expand ContentOPERATION_ID
の値をメモします。この値は次の手順で必要になります。レスポンス
{ "name": "projects/
PROJECT_ID /locations/LOCATION /datasets/DATASET_ID /operations/OPERATION_ID " }projects.locations.datasets.operations.get
メソッドを使用して、長時間実行オペレーションのステータスを取得します。リクエストのデータを使用する前に、次のように置き換えます。
: Google Cloud プロジェクトの IDPROJECT_ID
: データセット IDDATASET_ID
: データセットの場所LOCATION
: 長時間実行オペレーションから返された ID。OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
次のコマンドを実行します。
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 "次のコマンドを実行します。
$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] パネルが開きます。このツールを操作してリクエストを送信できます。必須フィールドを入力して、[Execute] をクリックします。
"done": true
が含まれている場合、長時間実行オペレーションは終了しています。レスポンス
{ "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": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "endTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ ", "logsUrl": "https://console.cloud.google.com/CLOUD_LOGGING_URL " "counter": { "success": "SUCCESS_COUNT ", // If there were any failures, they display in the `failure` field. "failure": "FAILURE_COUNT " } }, "done": true, // The `response` field only displays if there were no errors. "response": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse", }, // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. "error": { "code":ERROR_CODE , "message": "DESCRIPTION ", "details": [ { "@type": "...",FIELD1 : ..., ... } ] } }
HL7v2 エクスポート リクエストのトラブルシューティング
HL7v2 メッセージのエクスポート中にエラーが発生した場合、エラーは Cloud Logging に記録されます。詳細については、Cloud Logging でのエラーログの表示をご覧ください。
長時間実行オペレーションでエラーが返された場合は、長時間実行オペレーションのトラブルシューティングをご覧ください。