HL7v2 メッセージを Pub/Sub へエクスポートする

このページでは、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 を有効にします。

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"
    }
  }
]