このページでは、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" } } ]