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 dalam 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 penyimpanan 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-nya 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 Google Cloud project ID Anda dan TOPIC_NAME adalah nama topik Pub/Sub.

Mengekspor pesan HL7v2 ke Pub/Sub

curl

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

  • Nama set data induk
  • Nama penyimpanan 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"
  }
}

Mengekspor sebagian pesan HL7v2 menggunakan filter

Anda dapat menggunakan kolom berikut dalam kriteria filter:

Anda dapat menentukan parameter filter berikut sebagai kriteria filter di kolom filter. Untuk mempelajari sintaksis filter dan membuat kueri, lihat String kueri.

  • 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 untuk perbandingan. Contoh: create_time < "2017-01-02T00:00:00-05:00".
  • send_facility: pusat perawatan tempat pesan berasal, dari segmen MSH.4. Contoh, send_facility = "ABC".

Contoh berikut menunjukkan cara menentukan filter untuk hanya mengekspor pesan HL7v2 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 ini 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 Google Cloud project Anda
  • PUBSUB_SUBSCRIPTION adalah langganan yang dilampirkan ke topik Pub/Sub tempat Anda mengekspor pesan HL7v2

Outputnya adalah sebagai berikut:

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