このページでは、projects.locations.datasets.hl7V2Stores.export メソッドを使用して HL7v2 メッセージを Pub/Sub にエクスポートする方法について説明します。
HL7v2 メッセージを Pub/Sub にエクスポートして、ダウンストリーム処理を行うことができます。新しいメッセージが HL7v2 ストアに取り込まれたときに、HL7v2 メッセージを変換する Dataflow パイプラインがあるとします。パイプラインは Pub/Sub サブスクリプションから読み取り、新しい HL7v2 メッセージの通知を待機します。HL7v2 メッセージを hl7V2Stores.importメソッドを使用している HL7v2 ストアにインポートするときは、メソッドは Pub/Sub 通知を送信しません。パイプラインをトリガーするには、HL7v2 メッセージをインポートし、hl7v2Stores.export メソッドを使用して Pub/Sub にエクスポートします。
準備
Pub/Sub API を有効にする
Google Cloud コンソールで、Pub/Sub API を有効にします。
Pub/Sub 権限の構成
HL7v2 ストアから Pub/Sub にメッセージをエクスポートするには、プロジェクトの Cloud Healthcare サービス エージェント
サービス アカウントに pubsub.publisher ロールを追加する必要があります。必要なロールを追加する手順については、DICOM、FHIR、HL7v2 ストアの Pub/Sub 権限をご覧ください。
Pub/Sub トピックの作成
トピックを作成するには、トピックを作成するをご覧ください。
個々のデータストアに独自の Pub/Sub トピックを含めるか、複数のデータストアで同じトピックを共有できます。
Pub/Sub トピックを指定する際は、次の形式を使用します。
projects/PROJECT_ID/topics/TOPIC_NAME
PROJECT_ID は Google Cloud プロジェクト ID、TOPIC_NAME は Pub/Sub トピックの名前です。
HL7v2 メッセージを Pub/Sub へエクスポートする
curl
HL7v2 メッセージを Pub/Sub にエクスポートするには、POST リクエストを作成して次の情報を指定します。
- 親データセットの名前
- HL7v2 ストアの名前。
- 宛先 Pub/Sub トピック
次のサンプルは、curlを使用した POST リクエストを示しています。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'pubsubDestination': { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"
リクエストが成功すると、サーバーは 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.ExportMessages",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"counter": {
"success": "RESOURCE_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.hl7v2.ExportMessagesResponse"
}
}
フィルタを使用して 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 メッセージのみをエクスポートするフィルタを指定する方法を示しています。
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'pubsubDestination': { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC' }, 'filter': 'message_type = \"ADT\"' }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"
Pub/Sub でエクスポートされた HL7v2 メッセージを表示する
Pub/Sub でエクスポートされた HL7v2 メッセージを表示するには、gcloud pubsub subscriptions pull コマンドを実行します。このコマンドでは、--format=json フラグを使用して、デフォルトの YAML ではなく JSON として出力を返します。
gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \ --format=json
PROJECT_IDは、 Google Cloud プロジェクトの ID です。PUBSUB_SUBSCRIPTIONは、HL7v2 メッセージをエクスポートした Pub/Sub トピックにアタッチされたサブスクリプションです。
次のような出力が表示されます。
[
{
"ackId": "ACK_ID",
"message": {
"attributes": {
"msgType": "TYPE"
},
"data": "DATA",
"messageId": "8076570784126536",
"publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
}
}
]