Mengekspor pesan HL7v2 ke Pub/Sub

Halaman ini menjelaskan cara mengekspor pesan HL7v2 ke Pub/Sub menggunakan metode projects.locations.datasets.hl7V2Stores.export.

Anda dapat mengekspor pesan HL7v2 ke Pub/Sub untuk pemrosesan downstream. Misalkan Anda memiliki pipeline Dataflow yang mengubah pesan HL7v2 saat pesan baru diserap ke penyimpanan HL7v2. Pipeline membaca dari langganan Pub/Sub dan menunggu notifikasi pesan HL7v2 baru. Saat Anda mengimpor pesan HL7v2 ke penyimpanan HL7v2 menggunakan metode hl7V2Stores.import, metode tersebut tidak akan mengirim notifikasi Pub/Sub. Untuk memicu pipeline, impor pesan HL7v2, lalu gunakan metode hl7v2Stores.export untuk mengekspornya ke Pub/Sub.

Sebelum memulai

Mengaktifkan Pub/Sub API

Di Konsol Google Cloud, aktifkan Pub/Sub API:

Mengaktifkan API

Mengonfigurasi izin Pub/Sub

Untuk mengekspor pesan dari penyimpanan HL7v2 ke Pub/Sub, Anda harus menambahkan peran pubsub.publisher ke akun layanan Cloud Healthcare Service Agent project Anda. Lihat izin Pub/Sub toko DICOM, FHIR, dan HL7v2 untuk mengetahui langkah-langkah menambahkan peran yang diperlukan.

Membuat topik Pub/Sub

Untuk membuat topik, lihat Membuat topik.

Setiap penyimpanan data dapat memiliki topik Pub/Sub sendiri, atau beberapa penyimpanan data dapat berbagi topik yang sama.

Gunakan format berikut saat menentukan topik Pub/Sub:

projects/PROJECT_ID/topics/TOPIC_NAME

PROJECT_ID adalah project ID Google Cloud Anda dan TOPIC_NAME adalah nama topik Pub/Sub.

Mengekspor pesan HL7v2 ke Pub/Sub

Secara default, semua pesan HL7v2 di penyimpanan HL7v2 diekspor. Untuk mengekspor sebagian pesan HL7v2, Anda dapat menggunakan filter untuk hanya mengekspor pesan yang cocok dengan kriteria filter. Untuk mengetahui informasi selengkapnya, lihat Menentukan filter.

curl

Untuk mengekspor pesan HL7v2 ke Pub/Sub, buat permintaan POST dan tentukan informasi berikut:

  • Nama set data induk
  • Nama toko HL7v2
  • Topik Pub/Sub tujuan

Contoh berikut menunjukkan permintaan POST yang menggunakan 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'
      }
    }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID:export"

Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:

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

Respons berisi nama operasi. Untuk melacak status operasi, Anda dapat menggunakan metode get Operasi:

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"

Jika permintaan berhasil, server akan menampilkan respons dengan status operasi dalam format 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"
  }
}

Tentukan filter

Untuk mengekspor sebagian pesan HL7v2, Anda dapat menggunakan filter untuk hanya mengekspor pesan yang cocok dengan kriteria filter.

Parameter filter yang valid mencakup hal berikut:

  • message_type: dari kolom MSH.9.1. Contoh, NOT message_type = "ADT".
  • send_date: tanggal YYYY-MM-DD saat pesan dikirim dari segmen MSH.7, yang ditentukan dalam zona waktu set data. Misalnya, send_date < "2017-01-02".
  • send_time: stempel waktu saat pesan dikirim. Parameter ini berasal dari segmen MSH.7 pesan. Parameter ini menggunakan format waktu RFC 3339 untuk perbandingan. Misalnya, send_time < "2017-01-02T00:00:00-05:00".
  • create_time: stempel waktu saat pesan dibuat di Cloud Healthcare API, menggunakan format waktu RFC 3339 sebagai perbandingan. Contoh: create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: pusat layanan tempat pesan berasal, dari segmen MSH.4. Contoh, send_facility = "ABC".
  • startTime: waktu mulai rentang waktu, yang ditetapkan sebagai parameter send_time, saat pesan HL7v2 dikirim. Untuk mengetahui informasi selengkapnya, lihat startTime.
  • endTime: waktu berakhir rentang waktu, yang ditetapkan sebagai parameter send_time, selama pesan HL7v2 dikirim. Untuk mengetahui informasi selengkapnya, lihat endTime.

Anda dapat menentukan filter menggunakan istilah ini. Untuk mempelajari cara menentukan sintaksis filter dan membuat kueri, lihat String kueri.

Contoh berikut menunjukkan cara menentukan filter yang hanya cocok dengan pesan berjenis ADT.

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"

Melihat pesan HL7v2 yang diekspor di Pub/Sub

Untuk melihat pesan HL7v2 yang diekspor di Pub/Sub, jalankan perintah gcloud pubsub subscriptions pull. Perintah tersebut menggunakan flag --format=json untuk menampilkan output sebagai JSON, bukan YAML default.

gcloud pubsub subscriptions pull --auto-ack projects/PROJECT_ID/subscriptions/PUBSUB_SUBSCRIPTION \
    --format=json
  • PROJECT_ID adalah ID project Google Cloud Anda
  • PUBSUB_SUBSCRIPTION adalah langganan yang disertakan ke topik Pub/Sub tempat Anda mengekspor pesan HL7v2

Output-nya adalah sebagai berikut:

[
  {
    "ackId": "ACK_ID",
    "message": {
      "attributes": {
        "msgType": "TYPE"
      },
      "data": "DATA",
      "messageId": "8076570784126536",
      "publishTime": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ"
    }
  }
]