Tutorial ini memberikan petunjuk untuk mengirim pesan HL7v2 melalui koneksi TCP/IP menggunakan minimal lower layer protocol (MLLP). Untuk mewajibkan image MLLP ditandatangani oleh pengautentikasi, ikuti langkah-langkah di Mengirim pesan HL7v2 melalui koneksi TCP/IP menggunakan image MLLP bertanda tangan.
Tutorial ini memberikan petunjuk untuk menjalankan adaptor MLLP open source yang dihosting di GitHub di lingkungan berikut:
- Secara lokal/di lokasi.
- Dalam penampung di GKE dengan Cloud VPN.
- Dalam penampung di GKE tanpa Cloud VPN.
Tujuan
Setelah menyelesaikan tutorial ini, Anda akan tahu cara:
- Mem-build dan mengonfigurasi adaptor MLLP secara lokal dengan Cloud Healthcare API dan menguji pengiriman pesan HL7v2 ke penyimpanan HL7v2.
- Men-deploy adaptor MLLP ke GKE dan mengirim pesan HL7v2 dari instance VM Compute Engine.
- Konfigurasikan VPN yang mengamankan koneksi antara instance "on-premises" dan adaptor MLLP serta kirim pesan HL7v2 dari instance "on-premises".
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Healthcare API
- Google Kubernetes Engine
- Compute Engine
- Cloud VPN
- Pub/Sub
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Sebelum memulai tutorial ini, pahami dokumentasi konseptual tentang minimal lower layer protocol (MLLP) dengan meninjau MLLP dan adaptor MLLP Google Cloud. Dokumentasi konseptual memberikan ringkasan tentang MLLP, cara sistem perawatan dapat mengirim dan menerima pesan ke dan dari Cloud Healthcare API melalui koneksi MLLP, dan dasar-dasar keamanan MLLP.
Sebelum dapat menyiapkan adaptor MLLP, Anda harus memilih atau membuat project Google Cloud dan mengaktifkan API yang diperlukan dengan menyelesaikan langkah-langkah berikut:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Healthcare API, Google Kubernetes Engine, Container Registry, and Pub/Sub APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Healthcare API, Google Kubernetes Engine, Container Registry, and Pub/Sub APIs.
- Tunggu hingga Kubernetes Engine API dan layanan terkait diaktifkan. Proses ini dapat memerlukan waktu beberapa menit.
Memilih shell
Untuk menyelesaikan tutorial ini, Anda dapat menggunakan Cloud Shell atau shell lokal Anda.
Cloud Shell adalah lingkungan shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell telah diinstal lebih dulu dengan alat gcloud CLI dan alat kubectl
. Gcloud CLI menyediakan antarmuka command line utama untuk Google Cloud. kubectl
menyediakan antarmuka command line untuk menjalankan perintah terhadap cluster GKE.
Jika lebih suka menggunakan shell lokal, Anda harus menginstal gcloud CLI.
Untuk membuka Cloud Shell atau mengonfigurasi shell lokal, selesaikan langkah-langkah berikut:
Cloud Shell
Untuk meluncurkan Cloud Shell, selesaikan langkah-langkah berikut:
Buka Konsol Google Cloud.
Dari pojok kanan atas konsol, klik tombol Aktifkan Google Cloud Shell:
Sesi Cloud Shell akan terbuka di dalam frame di bagian bawah konsol. Anda
menggunakan shell ini untuk menjalankan perintah gcloud
dan kubectl
.
Shell Lokal
Untuk menginstal gcloud CLI dan alat kubectl
, selesaikan
langkah-langkah berikut:
- Instal dan lakukan inisialisasi Google Cloud CLI.
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Jika hanya menguji adaptor secara lokal, Anda tidak perlu menyelesaikan langkah apa pun lagi dan dapat melanjutkan ke Membuat set data. Jika Anda men-deploy adaptor ke GKE, instal alat command line
kubectl
dengan menjalankan perintah berikut:gcloud components install kubectl
Membuat set data
Jika Anda belum membuat set data Cloud Healthcare API, buat set data dengan menyelesaikan langkah-langkah berikut:
Konsol
- Di konsol Google Cloud, buka halaman Datasets.
- Klik Create dataset.
-
Di kolom Name, masukkan ID untuk set data. ID set data harus memiliki hal berikut:
- ID unik di lokasinya
- String Unicode dari 1-256 karakter yang terdiri dari hal berikut:
- Numbers
- Surat
- Garis bawah
- Tanda Hubung
- Periode
-
Di bagian Jenis lokasi, pilih salah satu jenis lokasi berikut:
- Region: set data berada secara permanen dalam satu region Google Cloud. Setelah memilih, ketik atau pilih lokasi di kolom Region.
- Multi-region: set data berada secara permanen dalam satu lokasi yang mencakup beberapa region Google Cloud. Setelah memilih, ketik atau pilih lokasi multi-region di kolom Multi-region.
- Klik Create.
Set data baru akan muncul dalam daftar set data.
gcloud
Untuk membuat set data, jalankan perintah
gcloud healthcare datasets create
:
gcloud healthcare datasets create DATASET_ID \ --location=LOCATION
Jika permintaan berhasil, perintah akan menampilkan output berikut:
Create request issued for: [DATASET_ID] Waiting for operation [OPERATION_ID] to complete...done. Created dataset [DATASET_ID].
Membuat topik dan langganan Pub/Sub
Untuk menerima notifikasi saat pesan dibuat atau diserap, Anda perlu mengonfigurasi topik Pub/Sub dengan penyimpanan HL7v2. Untuk informasi selengkapnya, lihat Mengonfigurasi notifikasi Pub/Sub.
Untuk membuat topik, selesaikan langkah-langkah berikut:
Konsol
Buka halaman Topics Pub/Sub di konsol Google Cloud.
Klik Buat Topik.
Masukkan nama topik dengan URI:
projects/PROJECT_ID/topics/TOPIC_NAME
dengan PROJECT_ID sebagai project ID Google Cloud Anda.
Klik Create.
gcloud
Untuk membuat topik, jalankan perintah
gcloud pubsub topics create
:
gcloud pubsub topics create projects/PROJECT_ID/topics/TOPIC_NAME
Jika permintaan berhasil, perintah akan menampilkan output berikut:
Created topic [projects/PROJECT_ID/topics/TOPIC_NAME].
Untuk membuat langganan, selesaikan langkah-langkah berikut:
Konsol
Buka halaman Topics Pub/Sub di konsol Google Cloud.
Klik topik project Anda.
Klik Buat Langganan.
Masukkan nama langganan:
projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME
Tetapkan Delivery Type ke Pull, lalu klik Create.
gcloud
Untuk membuat langganan, jalankan perintah
gcloud pubsub subscriptions create
:
gcloud pubsub subscriptions create SUBSCRIPTION_NAME \ --topic=projects/PROJECT_ID/topics/TOPIC_NAME
Jika permintaan berhasil, perintah akan menampilkan output berikut:
Created subscription [projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME].
Membuat penyimpanan HL7v2 yang dikonfigurasi dengan topik Pub/Sub
Buat penyimpanan HL7v2 dan konfigurasikan dengan topik Pub/Sub. Untuk membuat penyimpanan HL7v2, Anda harus sudah membuat set data. Untuk tujuan tutorial ini, gunakan project yang sama untuk penyimpanan HL7v2 dan untuk topik Pub/Sub.
Untuk membuat penyimpanan HL7v2 yang dikonfigurasi dengan topik Pub/Sub, selesaikan langkah-langkah berikut:
curl
curl -X POST \ --data "{ 'notificationConfigs': [ { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC', 'filter': '' } ] }" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID", "notificationConfigs": [ { "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC" } ] }
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'notificationConfigs': [ { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC', 'filter': '' } ] }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID", "notificationConfigs": [ { "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC" } ] }
Mengonfigurasi izin Pub/Sub
Untuk mengirim notifikasi ke Pub/Sub saat pesan HL7v2 dibuat atau diserap, Anda perlu mengonfigurasi izin Pub/Sub di Cloud Healthcare API. Langkah ini perlu dilakukan sekali per project.
Untuk menambahkan peran pubsub.publisher
yang diperlukan ke akun layanan project Anda, selesaikan langkah-langkah berikut:
Konsol
Di halaman IAM di konsol Google Cloud, pastikan peran Healthcare Service Agent muncul di kolom Role untuk akun layanan project yang relevan. Nama akunnya adalah service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com. Untuk informasi tentang cara menemukan PROJECT_NUMBER, lihat Mengidentifikasi project.
Di kolom Pewarisan yang cocok dengan peran, klik ikon pensil. Panel Edit izin akan terbuka.
Klik Tambahkan peran lain, lalu telusuri peran Pub/Sub Publisher.
Pilih peran, lalu klik Simpan. Peran
pubsub.publisher
ditambahkan ke akun layanan.
gcloud
Untuk menambahkan izin akun layanan, jalankan perintah
gcloud projects add-iam-policy-binding
. Untuk informasi tentang cara menemukan PROJECT_ID dan
PROJECT_NUMBER, lihat
Mengidentifikasi project.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \ --role=roles/pubsub.publisher
Mengambil image Docker yang telah dibuat sebelumnya
Adaptor MLLP adalah aplikasi dalam container yang di-staging dalam image Docker yang telah dibuat sebelumnya di Container Registry.
Untuk mengambil versi terbaru image, jalankan perintah berikut:
docker pull gcr.io/cloud-healthcare-containers/mllp-adapter:latest
Menguji adaptor MLLP secara lokal
Saat menguji adaptor secara lokal, Anda dapat mengonfigurasinya untuk berjalan sebagai penerima, penayang, atau keduanya. Konfigurasi penerima dan penayang memiliki perbedaan utama berikut:
- Saat berjalan sebagai penerima, adaptor akan menerima pesan HL7v2 dari
sumber eksternal dan memanggil
messages.ingest
untuk menyerap pesan ke dalam penyimpanan HL7v2, sehingga membuat notifikasi Pub/Sub. Notifikasi dikirim ke aplikasi yang berlangganan topik Pub/Sub penyimpanan HL7v2. - Saat berjalan sebagai penayang, adaptor akan memproses pesan HL7v2 yang
dibuat atau diserap di penyimpanan HL7v2 menggunakan
messages.create
ataumessages.ingest
. Setelah pesan dibuat, notifikasi Pub/Sub akan dikirim ke adaptor dan adaptor memublikasikan pesan ke penerima eksternal.
Bagian berikut menunjukkan cara menjalankan adaptor agar berfungsi sebagai penerima atau penayang.
Setelah memverifikasi bahwa Anda dapat menjalankan adaptor MLLP di komputer lokal, Anda dapat melanjutkan ke bagian berikutnya tentang Men-deploy adaptor MLLP ke Google Kubernetes Engine.
Menguji adaptor MLLP secara lokal sebagai penerima
Saat adaptor menerima pesan HL7v2 dari sumber eksternal, seperti
pusat perawatan, adaptor akan memanggil
messages.ingest
dan menyerap pesan HL7v2 ke dalam penyimpanan HL7v2 yang dikonfigurasi. Anda dapat
mengamatinya di kode sumber untuk adaptor.
Untuk menguji adaptor secara lokal sebagai penerima, selesaikan langkah-langkah berikut:
Di mesin tempat Anda mengambil image Docker yang telah dibuat sebelumnya, jalankan perintah berikut:
docker run \ --network=host \ -v ~/.config:/root/.config \ gcr.io/cloud-healthcare-containers/mllp-adapter \ /usr/mllp_adapter/mllp_adapter \ --hl7_v2_project_id=PROJECT_ID \ --hl7_v2_location_id=LOCATION \ --hl7_v2_dataset_id=DATASET_ID \ --hl7_v2_store_id=HL7V2_STORE_ID \ --export_stats=false \ --receiver_ip=0.0.0.0 \ --port=2575 \ --api_addr_prefix=https://healthcare.googleapis.com:443/v1 \ --logtostderr
dengan:
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi penyimpanan HL7v2 Anda.
- LOCATION adalah region tempat penyimpanan HL7v2 Anda berada.
- DATASET_ID adalah ID untuk set data induk penyimpanan HL7v2 Anda.
- HL7V2_STORE_ID adalah ID untuk penyimpanan HL7v2 tempat Anda mengirim pesan HL7v2.
Setelah menjalankan perintah sebelumnya, adaptor akan mencetak pesan yang mirip dengan berikut dan mulai berjalan di komputer lokal Anda di alamat IP 127.0.0.1 di port 2575:
I0000 00:00:00.000000 1 healthapiclient.go:171] Dialing connection to https://healthcare.googleapis.com:443/v1 I0000 00:00:00.000000 1 mllp_adapter.go:89] Either --pubsub_project_id or --pubsub_subscription is not provided, notifications of the new messages are not read and no outgoing messages will be sent to the target MLLP address.
Jika Anda mengalami error, ikuti langkah-langkah pemecahan masalah berikut:
Jika Anda menggunakan Mac OS dan perintah sebelumnya gagal dengan error
Connection refused
, lihat Error koneksi ditolak saat berjalan secara lokal.Jika perintah sebelumnya gagal dengan error
healthapiclient.NewHL7V2Client: oauth2google.DefaultTokenSource: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
, lihat errorcould not find default credentials
saat berjalan secara lokal.Jika Anda mengalami error autentikasi lainnya, lihat Error autentikasi.
Untuk melanjutkan pengujian saat adaptor berjalan sebagai proses latar depan, buka terminal lain di komputer lokal Anda.
Di terminal baru, untuk menginstal Netcat, jalankan perintah berikut:
sudo apt install netcat
Download file
hl7v2-mllp-sample.txt
dan simpan ke komputer lokal Anda.Untuk mengirim pesan HL7v2 ke adaptor, di direktori tempat Anda mendownload file, jalankan perintah berikut. Adaptor MLLP memproses di host lokal Anda pada port 2575. Perintah ini mengirim pesan melalui adaptor MLLP ke penyimpanan HL7v2 Anda.
Linux
echo -n -e "\x0b$(cat hl7v2-mllp-sample.txt)\x1c\x0d" | nc -q1 localhost 2575 | less
Jika pesan berhasil diserap ke dalam penyimpanan HL7v2, perintah akan menampilkan output berikut:
^KMSH|^~\&|TO_APP|TO_FACILITY|FROM_APP|FROM_FACILITY|19700101010000||ACK|c507a97e-438d-44b0-b236-ea95e5ecbbfb|P|2.5^MMSA|AA|20150503223000^\
Output ini menunjukkan bahwa penyimpanan HL7v2 merespons dengan jenis respons
AA
(Application Accept
), yang berarti pesan telah divalidasi dan berhasil diserap.Anda juga dapat memverifikasi bahwa pesan berhasil dikirim dengan membuka terminal tempat Anda menjalankan adaptor. Output akan terlihat seperti contoh berikut:
I0000 00:00:00.000000 1 healthapiclient.go:171] Dialing connection to https://healthcare.googleapis.com:443/v1 I0000 00:00:00.000000 1 mllp_adapter.go:89] Either --pubsub_project_id or --pubsub_subscription is not provided, notifications of the new messages are not read and no outgoing messages will be sent to the target MLLP address. I0213 00:00:00.000000 1 healthapiclient.go:190] Sending message of size 319. I0213 00:00:00.000000 1 healthapiclient.go:223] Message was successfully sent.
Pesan disimpan di penyimpanan HL7v2, sehingga Anda dapat memanggil
messages.list
untuk melihat pesan:curl
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
Jika permintaan berhasil, server akan menampilkan ID pesan dalam jalur resource:
{ "hl7V2Messages": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" } ] }
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan ID pesan dalam jalur resource:
{ "hl7V2Messages": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" } ] }
Menguji adaptor MLLP secara lokal sebagai penayang
Saat menguji adaptor sebagai penayang, Anda membuat pesan dengan memanggil
messages.create
atau messages.ingest
dan menyediakan file pesan sebagai data biner.
Adaptor secara otomatis mengonfirmasi pesan Pub/Sub yang dikirim melalui messages.create
dan messages.ingest
.
Adaptor akan memberi tahu Anda saat berhasil mengambil dan mengirim pesan Pub/Sub. Adaptor adalah pelanggan Pub/Sub, sehingga otomatis mengonfirmasi pesan ini. Akibatnya, pesan tersebut akan dihapus dari antrean pesan dalam langganan Pub/Sub yang Anda konfigurasi dengan adaptor.
Untuk mengambil dari langganan Pub/Sub dan memverifikasi secara terpisah bahwa pesan dipublikasikan, Anda perlu membuat langganan Pub/Sub kedua yang ditetapkan ke topik yang Anda buat sebelumnya. Pesan yang dikirim ke langganan kedua tidak otomatis diakui oleh adaptor dan tetap ada sehingga Anda dapat menariknya.
Untuk membuat langganan Pub/Sub kedua yang ditetapkan ke topik yang Anda buat sebelumnya, selesaikan langkah-langkah berikut:
Konsol
Buka halaman Topics Pub/Sub di konsol Google Cloud.
Klik topik project Anda. Ini adalah topik yang Anda gunakan untuk membuat langganan awal.
Klik Buat Langganan.
Masukkan nama langganan:
projects/PROJECT_ID/subscriptions/SECOND_SUBSCRIPTION_NAME
Biarkan Delivery Type ditetapkan ke Pull.
Klik Create.
gcloud
Untuk membuat langganan Pub/Sub kedua yang ditetapkan ke
topik yang Anda buat sebelumnya, jalankan perintah
gcloud pubsub subscriptions create
:
gcloud pubsub subscriptions create SECOND_SUBSCRIPTION_NAME --topic=projects/PROJECT_ID/topics/TOPIC_NAME
Jika permintaan berhasil, perintah akan menampilkan output berikut:
Created subscription [projects/PROJECT_ID/subscriptions/SECOND_SUBSCRIPTION_NAME].
Untuk menguji adaptor secara lokal sebagai penayang, selesaikan langkah-langkah berikut di komputer tempat Anda mengambil image Docker bawaan:
Instal Netcat:
sudo apt install netcat
Download file
hl7v2-mllp-ack-sample.txt
dan simpan ke komputer lokal Anda. File ini berisi pesan ACK yang diperlukan adaptor sebagai respons saat mencoba memublikasikan pesan.Untuk mengizinkan Netcat memproses koneksi masuk di port 2525, di direktori tempat Anda mendownload file, jalankan perintah berikut.
Linux
echo -n -e "\x0b$(cat hl7v2-mllp-ack-sample.txt)\x1c\x0d" | nc -q1 -lv -p 2525 | less
Setelah memulai Netcat, pesan output yang mirip dengan contoh berikut akan ditampilkan:
listening on [any] 2525 ...
Netcat berjalan sebagai proses latar depan, jadi untuk melanjutkan pengujian, buka terminal lain di komputer lokal Anda.
Untuk memulai adaptor, di terminal baru, jalankan perintah berikut:
docker run \ --network=host \ gcr.io/cloud-healthcare-containers/mllp-adapter \ /usr/mllp_adapter/mllp_adapter \ --hl7_v2_project_id=PROJECT_ID \ --hl7_v2_location_id=LOCATION \ --hl7_v2_dataset_id=DATASET_ID \ --hl7_v2_store_id=HL7V2_STORE_ID \ --export_stats=false \ --receiver_ip=127.0.0.1 --port 2575 \ --mllp_addr=127.0.0.1:2525 \ --pubsub_project_id=PROJECT_ID \ --pubsub_subscription=PUBSUB_SUBSCRIPTION \ --api_addr_prefix=https://healthcare.googleapis.com:443/v1 \ --logtostderr
dengan:
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi penyimpanan HL7v2 Anda.
- LOCATION adalah region tempat penyimpanan HL7v2 Anda berada.
- DATASET_ID adalah ID untuk set data induk penyimpanan HL7v2 Anda.
- HL7V2_STORE_ID adalah ID untuk penyimpanan HL7v2 tempat Anda mengirim pesan HL7v2.
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi topik Pub/Sub.
- PUBSUB_SUBSCRIPTION adalah nama langganan pertama yang Anda buat yang dikaitkan dengan topik Pub/Sub. Adaptor menggunakan pesan dari langganan ini dan secara otomatis mengonfirmasinya, sehingga untuk melihat pesan yang dipublikasikan ke topik, Anda harus mengambil pesan dari langganan kedua yang dibuat sebelumnya.
Setelah menjalankan perintah sebelumnya, adaptor akan mulai berjalan di komputer lokal Anda di alamat IP 127.0.0.1 pada port 2575.
Jika Anda mengalami error, ikuti langkah-langkah pemecahan masalah berikut:
Jika Anda menggunakan Mac OS dan perintah sebelumnya gagal dengan error
Connection refused
, lihat Error koneksi ditolak saat berjalan secara lokal.Jika perintah sebelumnya gagal dengan error
healthapiclient.NewHL7V2Client: oauth2google.DefaultTokenSource: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.
, lihat errorcould not find default credentials
saat berjalan secara lokal.Jika Anda mengalami error autentikasi lainnya, lihat Error autentikasi.
Adaptor berjalan sebagai proses latar depan, jadi untuk melanjutkan pengujian, buka terminal lain di komputer lokal Anda.
Download file
hl7v2-sample.json
dan simpan ke komputer lokal Anda. Di direktori tempat Anda mendownload file, panggil metodemessages.create
untuk membuat pesan di penyimpanan HL7v2:curl
Untuk membuat pesan HL7v2, buat permintaan
POST
dan tentukan informasi berikut:- Nama set data induk
- Nama penyimpanan HL7v2
- Pesan
- Token akses
Contoh berikut menunjukkan permintaan
POST
yang menggunakancurl
dan contoh file JSON yang disebuthl7v2-sample.json
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data-binary @hl7v2-sample.json \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID", "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=", "sendFacility": "SEND_FACILITY", "sendTime": "2018-01-01T00:00:00Z", "messageType": "TYPE", "createTime": "1970-01-01T00:00:00Z", "patientIds": [ { "value": "14\u0001111", "type": "MRN" }, { "value": "11111111", "type": "MRN" }, { "value": "1111111111", "type": "ORGNMBR" } ] }
PowerShell
Untuk membuat pesan HL7v2, buat permintaan
POST
dan tentukan informasi berikut:- Nama set data induk
- Nama penyimpanan HL7v2
- Pesan
- Token akses
Contoh berikut menunjukkan permintaan
POST
menggunakan Windows PowerShell dan contoh file JSON yang disebuthl7v2-sample.json
.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile hl7v2-sample.json ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID", "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZfEF8QXwyMDE4MDEwMTAwMDAwMHx8VFlQRV5BfDIwMTgwMTAxMDAwMDAwfFR8MC4wfHx8QUF8fDAwfEFTQ0lJDUVWTnxBMDB8MjAxODAxMDEwNDAwMDANUElEfHwxNAExMTFeXl5eTVJOfDExMTExMTExXl5eXk1STn4xMTExMTExMTExXl5eXk9SR05NQlI=", "sendFacility": "SEND_FACILITY", "sendTime": "2018-01-01T00:00:00Z", "messageType": "TYPE", "createTime": "1970-01-01T00:00:00Z", "patientIds": [ { "value": "14\u0001111", "type": "MRN" }, { "value": "11111111", "type": "MRN" }, { "value": "1111111111", "type": "ORGNMBR" } ] }
Setelah membuat pesan, adaptor MLLP akan menampilkan respons yang mirip dengan berikut ini:
I0214 00:00:00.000000 1 healthapiclient.go:244] Started to fetch message from the Cloud Healthcare API HL7V2 Store I0214 00:00:00.000000 1 healthapiclient.go:283] Message was successfully fetched from the Cloud Healthcare API HL7V2 Store.
Di terminal tempat Anda menjalankan Netcat, output yang mirip dengan contoh berikut akan ditampilkan. Output ini menunjukkan bahwa pesan telah dipublikasikan:
connect to [127.0.0.1] from localhost [127.0.0.1] 39522 ^KMSH|^~\&|A|SEND_FACILITY|A|A|20180101000000||TYPE^A|20180101000000|T|0.0|||AA||00|ASCII^MEVN|A00|20180101040000^MPID||14^A111^^^^MRN|11111111^^^^MRN~1111111111^^^^ORGNMBR^\
Ini sesuai dengan nilai di kolom
data
respons yang Anda terima saat membuat pesan. Nilai ini sama dengan nilaidata
dalam filehl7v2-sample.json
.Untuk melihat pesan yang dipublikasikan adaptor ke topik Pub/Sub, jalankan perintah
gcloud pubsub subscriptions pull
di langganan Pub/Sub kedua yang Anda buat:gcloud pubsub subscriptions pull --auto-ack SECOND_SUBSCRIPTION
Perintah ini menampilkan output berikut tentang pesan HL7v2 yang dibuat. Perhatikan nilai
publish=true
di kolomATTRIBUTES
, yang menunjukkan bahwa pesan dipublikasikan ke Pub/Sub:┌-----------------------------------------------------------------------------------------------------------------|-----------------|---------------┐ | DATA | MESSAGE_ID | ATTRIBUTES | ├-----------------------------------------------------------------------------------------------------------------|-----------------|---------------| | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=ADT | | | | publish=true | └-----------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
Memublikasikan pesan ke penerima eksternal yang berbeda
Anda dapat mengonfigurasi penyimpanan HL7v2 dengan beberapa topik Pub/Sub dan menggunakan filter untuk mengirim notifikasi ke berbagai topik Pub/Sub. Kemudian, Anda dapat menjalankan adaptor MLLP untuk setiap topik Pub/Sub untuk memublikasikan pesan ke penerima eksternal yang berbeda.
Untuk mengonfigurasi penyimpanan HL7v2 dengan beberapa topik Pub/Sub dan filter untuk setiap topik, selesaikan langkah-langkah berikut:
Buat dua topik Pub/Sub dan langganan untuk setiap topik. Untuk mengetahui informasi selengkapnya, lihat Membuat topik dan langganan Pub/Sub.
Jalankan perintah berikut:
curl
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'notificationConfigs': [ { 'pubsubTopic': 'projects/PROJECT_ID/topics/PUBSUB_TOPIC', 'filter' : 'sendFacility=\"SEND_FACILITY_1\"' }, { 'pubsubTopic': 'projects/PROJECT_ID/topics/SECOND_PUBSUB_TOPIC', 'filter': 'sendFacility=\"SEND_FACILITY_2\"' } ] }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID?updateMask=notificationConfigs"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID", "notificationConfigs": [ { "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC", "filter": "sendFacility=\"SEND_FACILITY_1\"" }, { "pubsubTopic": "projects/PROJECT_ID/topics/SECOND_PUBSUB_TOPIC", "filter": "sendFacility=\"SEND_FACILITY_2\"" } ] }
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Patch ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'notificationConfigs': [ { 'pubsubTopic' : 'projects/PROJECT_ID/topics/PUBSUB_TOPIC', 'filter': 'sendFacility=\"SEND_FACILITY_1\"' }, { 'pubsubTopic' : 'projects/PROJECT_ID/topics/SECOND_PUBSUB_TOPIC', 'filter' : 'sendFacility=\"SEND_FACILITY_2\"' } ] }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores?hl7V2StoreId=HL7V2_STORE_ID?updateMask=notificationConfigs" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID", "notificationConfigs": [ { "pubsubTopic": "projects/PROJECT_ID/topics/PUBSUB_TOPIC", "filter": "sendFacility=\"SEND_FACILITY_1\"" }, { "pubsubTopic": "projects/PROJECT_ID/topics/SECOND_PUBSUB_TOPIC", "filter": "sendFacility=\"SEND_FACILITY_2\"" } ] }
Menguji pemilihan rute pesan
Untuk menguji pemilihan rute pesan, selesaikan langkah-langkah di bagian berikut.
Mengonfigurasi dan memulai penerima dan adaptor pertama
Untuk mengonfigurasi dan memulai penerima dan adaptor pertama, selesaikan langkah-langkah berikut:
Di mesin tempat Anda mengambil image Docker bawaan, jalankan perintah berikut untuk menginstal Netcat:
sudo apt install netcat
Download
hl7v2-mllp-ack-sample.txt
, jika Anda belum melakukannya. File ini berisi pesanACK
yang digunakan sebagai respons oleh adaptor saat mencoba memublikasikan pesan.Untuk menetapkan port 2525 bagi penerima pertama, jalankan perintah berikut:
Linux
echo -n -e "\x0b$(cat hl7v2-mllp-ack-sample.txt)\x1c\x0d" | nc -q1 -lv -p 2525 | less
Saat proses Netcat dimulai, output berikut akan ditampilkan:
listening on [any] 2525 ...
Untuk memulai adaptor pertama, di terminal baru, jalankan perintah berikut:
docker run \ --network=host \ gcr.io/cloud-healthcare-containers/mllp-adapter \ /usr/mllp_adapter/mllp_adapter \ --hl7_v2_project_id=PROJECT_ID \ --hl7_v2_location_id=LOCATION \ --hl7_v2_dataset_id=DATASET_ID \ --hl7_v2_store_id=HL7V2_STORE_ID \ --export_stats=false \ --receiver_ip=127.0.0.1 --port 2575 \ --mllp_addr=127.0.0.1:2525 \ --pubsub_project_id=PROJECT_ID \ --pubsub_subscription=PUBSUB_SUBSCRIPTION \ --api_addr_prefix=https://healthcare.googleapis.com:443/v1 \ --logtostderr
dengan:
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi penyimpanan HL7v2 Anda.
- LOCATION adalah region tempat penyimpanan HL7v2 Anda berada.
- DATASET_ID adalah ID untuk set data induk penyimpanan HL7v2 Anda.
- HL7V2_STORE_ID adalah ID untuk penyimpanan HL7v2 tempat Anda mengirim pesan HL7v2.
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi topik Pub/Sub.
- PUBSUB_SUBSCRIPTION adalah nama langganan pertama yang Anda buat yang dikaitkan dengan topik Pub/Sub pertama Anda. Adaptor menggunakan pesan dari langganan ini dan secara otomatis mengonfirmasinya.
Setelah menjalankan perintah ini, adaptor akan mulai berjalan di komputer lokal Anda di 127.0.0.1:2575. Fungsi ini memublikasikan pesan baru ke penerima eksternal pertama di port 2525.
Mengonfigurasi dan memulai penerima dan adaptor kedua
Untuk mengonfigurasi dan memulai penerima dan adaptor kedua, selesaikan langkah-langkah berikut:
Di mesin tempat Anda mengambil image Docker bawaan, jalankan perintah berikut untuk menginstal Netcat:
sudo apt install netcat
Download
hl7v2-mllp-ack-sample.txt
, jika Anda belum melakukannya. File ini berisi pesanACK
yang digunakan sebagai respons oleh adaptor saat mencoba memublikasikan pesan.Untuk menetapkan port 2526 bagi penerima kedua, jalankan perintah berikut.
Linux
echo -n -e "\x0b$(cat hl7v2-mllp-ack-sample.txt)\x1c\x0d" | nc -q1 -lv -p 2526 | less
Saat proses Netcat dimulai, output berikut akan ditampilkan:
listening on [any] 2526 ...
Untuk memulai adaptor kedua, di terminal baru, jalankan perintah berikut:
docker run \ --network=host \ gcr.io/cloud-healthcare-containers/mllp-adapter \ /usr/mllp_adapter/mllp_adapter \ --hl7_v2_project_id=PROJECT_ID \ --hl7_v2_location_id=LOCATION \ --hl7_v2_dataset_id=DATASET_ID \ --hl7_v2_store_id=HL7V2_STORE_ID \ --export_stats=false \ --receiver_ip=127.0.0.1 --port 2576 \ --mllp_addr=127.0.0.1:2526 \ --pubsub_project_id=PROJECT_ID \ --pubsub_subscription=SECOND_PUBSUB_SUBSCRIPTION \ --api_addr_prefix=https://healthcare.googleapis.com:443/v1 \ --logtostderr
dengan:
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi penyimpanan HL7v2 Anda.
- LOCATION adalah region tempat penyimpanan HL7v2 Anda berada.
- DATASET_ID adalah ID untuk set data induk penyimpanan HL7v2 Anda.
- HL7V2_STORE_ID adalah ID untuk penyimpanan HL7v2 tempat Anda mengirim pesan HL7v2.
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi topik Pub/Sub.
- SECOND_PUBSUB_SUBSCRIPTION adalah nama langganan kedua yang Anda buat dan dikaitkan dengan topik Pub/Sub kedua. Adaptor menggunakan pesan dari langganan ini dan otomatis mengonfirmasinya.
Setelah menjalankan perintah ini, adaptor akan mulai berjalan di komputer lokal Anda pada alamat IP port 127.0.0.1:2576. Pesan baru dipublikasikan ke penerima eksternal kedua di port 2526.
Memublikasikan pesan ke penerima pertama
Untuk membuat pesan yang hanya akan dipublikasikan ke penerima eksternal pertama, selesaikan langkah-langkah berikut:
Download
hl7v2-sample1.json
.Di direktori tempat Anda mendownload
hl7v2-sample1.json
, panggil metodemessages.create
untuk membuat pesan di penyimpanan HL7v2:curl
Untuk membuat pesan HL7v2, buat permintaan
POST
dan tentukan informasi berikut:- Nama set data induk
- Nama penyimpanan HL7v2
- Pesan
- Token akses
Contoh berikut menunjukkan permintaan
POST
menggunakancurl
dan contoh file JSON,hl7v2-sample1.json
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data-binary @hl7v2-sample1.json \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID", "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==", "sendFacility": "SEND_FACILITY_1", "sendTime": "2018-01-01T00:00:00Z", "messageType": "TYPE", "createTime": "1970-01-01T00:00:00Z", "patientIds": [ { "value": "14\u0001111", "type": "MRN" }, { "value": "11111111", "type": "MRN" }, { "value": "1111111111", "type": "ORGNMBR" } ] }
PowerShell
Untuk membuat pesan HL7v2, buat permintaan
POST
dan tentukan informasi berikut:- Nama set data induk
- Nama penyimpanan HL7v2
- Pesan
- Token akses
Contoh berikut menunjukkan permintaan
POST
menggunakan Windows PowerShell dan contoh file JSON yang disebuthl7v2-sample1.json
.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile hl7v2-sample1.json ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID", "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzF8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==", "sendFacility": "SEND_FACILITY_1", "sendTime": "2018-01-01T00:00:00Z", "messageType": "TYPE", "createTime": "1970-01-01T00:00:00Z", "patientIds": [ { "value": "14\u0001111", "type": "MRN" }, { "value": "11111111", "type": "MRN" }, { "value": "1111111111", "type": "ORGNMBR" } ] }
Dalam respons ini,
sendFacility
ditetapkan keSEND_FACILITY_1
, sehingga notifikasi Pub/Sub hanya dikirim ke topik Pub/Sub pertama. Setelah membuat pesan, adaptor MLLP pertama akan menampilkan respons berikut:I0214 00:00:00.000000 1 healthapiclient.go:266] Started to fetch message. I0214 00:00:00.000000 1 healthapiclient.go:283] Message was successfully fetched.
Adaptor MLLP kedua tidak menampilkan respons apa pun karena tidak ada pemberitahuan yang dikirim ke topik Pub/Sub kedua.
Di terminal tempat Anda menjalankan proses Netcat pertama, output berikut akan ditampilkan. Output ini menunjukkan bahwa pesan telah dipublikasikan.
connect to [127.0.0.1] from localhost [127.0.0.1] 39522 ^KMSH|^~\&|A|SEND_FACILITY_1|A|A|20180101000000||TYPE^A|20180101000000|T|0.0|||AA||00|ASCII^MEVN|A00|20180101040000^MPID||14^A111^^^^MRN|11111111^^^^MRN~1111111111^^^^ORGNMBR^\
Output ini sesuai dengan nilai di kolom
data
respons yang Anda terima saat membuat pesan. Nilai ini sama dengan nilaidata
dalam filehl7v2-sample1.json
.
Memublikasikan pesan ke penerima kedua
Untuk membuat pesan yang hanya akan dipublikasikan ke penerima eksternal kedua, selesaikan langkah-langkah berikut:
Buka terminal baru di komputer lokal Anda.
Untuk membuat pesan yang hanya akan dipublikasikan ke penerima eksternal kedua, download
hl7v2-sample2.json
.Di direktori tempat Anda mendownload
hl7v2-sample2.json
, panggil metodemessages.create
untuk membuat pesan di penyimpanan HL7v2:curl
Untuk membuat pesan HL7v2, buat permintaan
POST
dan tentukan informasi berikut:- Nama set data induk
- Nama penyimpanan HL7v2
- Pesan
- Token akses
Contoh berikut menunjukkan permintaan
POST
menggunakancurl
dan contoh file JSON,hl7v2-sample2.json
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data-binary @hl7v2-sample2.json \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID", "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==", "sendFacility": "SEND_FACILITY_2", "sendTime": "2018-01-01T00:00:00Z", "messageType": "TYPE", "createTime": "1970-01-01T00:00:00Z", "patientIds": [ { "value": "14\u0001111", "type": "MRN" }, { "value": "11111111", "type": "MRN" }, { "value": "1111111111", "type": "ORGNMBR" } ] }
PowerShell
Untuk membuat pesan HL7v2, buat permintaan
POST
dan tentukan informasi berikut:- Nama set data induk
- Nama penyimpanan HL7v2
- Pesan
- Token akses
Contoh berikut menunjukkan permintaan
POST
menggunakan Windows PowerShell dan contoh file JSON,hl7v2-sample2.json
.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile hl7v2-sample2.json ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID", "data": "TVNIfF5+XCZ8QXxTRU5EX0ZBQ0lMSVRZXzJ8QXxBfDIwMTgwMTAxMDAwMDAwfHxUWVBFXkF8MjAxODAxMDEwMDAwMDB8VHwwLjB8fHxBQXx8MDB8QVNDSUkNRVZOfEEwMHwyMDE4MDEwMTA0MDAwMA1QSUR8fDE0ATExMV5eXl5NUk58MTExMTExMTFeXl5eTVJOfjExMTExMTExMTFeXl5eT1JHTk1CUg==", "sendFacility": "SEND_FACILITY_2", "sendTime": "2018-01-01T00:00:00Z", "messageType": "TYPE", "createTime": "1970-01-01T00:00:00Z", "patientIds": [ { "value": "14\u0001111", "type": "MRN" }, { "value": "11111111", "type": "MRN" }, { "value": "1111111111", "type": "ORGNMBR" } ] }
Perhatikan bahwa sendFacility adalah
SEND_FACILITY_2
, sehingga notifikasi Pub/Sub hanya dikirim ke topik Pub/Sub kedua. Setelah membuat pesan, adaptor MLLP pertama tidak menampilkan respons apa pun, sedangkan adaptor MLLP kedua menampilkan respons berikut:I0214 00:00:00.000000 1 healthapiclient.go:266] Started to fetch message. I0214 00:00:00.000000 1 healthapiclient.go:283] Message was successfully fetched.
Di terminal tempat Anda menjalankan proses Netcat kedua, output berikut akan ditampilkan. Output ini menunjukkan bahwa pesan telah dipublikasikan.
connect to [127.0.0.1] from localhost [127.0.0.1] 39522 ^KMSH|^~\&|A|SEND_FACILITY_2|A|A|20180101000000||TYPE^A|20180101000000|T|0.0|||AA||00|ASCII^MEVN|A00|20180101040000^MPID||14^A111^^^^MRN|11111111^^^^MRN~1111111111^^^^ORGNMBR^\
Output ini sesuai dengan nilai di kolom
data
respons yang Anda terima saat membuat pesan. Nilai ini sama dengan nilaidata
dalam filehl7v2-sample2.json
.
Men-deploy adaptor MLLP ke Google Kubernetes Engine
Saat mengirimkan pesan HL7v2 melalui MLLP dari pusat perawatan Anda, salah satu kemungkinan konfigurasi adalah mengirim pesan ke adaptor yang di-deploy di Google Cloud dan dapat meneruskannya ke Cloud Healthcare API.
Adaptor MLLP berjalan sebagai aplikasi stateless di cluster GKE. Cluster GKE adalah grup instance VM terkelola untuk menjalankan aplikasi dalam container. Aplikasi stateless adalah aplikasi yang tidak menyimpan data atau status aplikasi ke cluster atau ke penyimpanan persisten. Sebaliknya, status data dan aplikasi tetap berada di klien, yang membuat aplikasi stateless lebih skalabel.
GKE menggunakan pengontrol Deployment untuk men-deploy aplikasi stateless sebagai Pod yang seragam dan tidak unik. Deployment mengelola status yang diinginkan untuk aplikasi Anda: berapa banyak Pod yang harus menjalankan aplikasi Anda, versi image container apa yang harus dijalankan, label apa yang harus diberi pada Pod, dan seterusnya. Status yang diinginkan dapat diubah secara dinamis melalui update pada spesifikasi Pod deployment.
Saat men-deploy adaptor, Anda juga membuat pengontrol Layanan yang memungkinkan Anda menghubungkan adaptor ke Cloud Healthcare API menggunakan load balancing internal.
Jika baru mengenal GKE, Anda harus menyelesaikan panduan memulai GKE untuk mempelajari cara kerja produk tersebut.
Menambahkan izin Pub/Sub API ke akun layanan GKE
Seperti yang dinyatakan dalam dokumentasi GKE tentang Melakukan autentikasi ke Cloud Platform dengan akun layanan, setiap node dalam cluster penampung adalah instance Compute Engine. Oleh karena itu, saat adaptor MLLP berjalan di cluster container, adaptor tersebut akan otomatis mewarisi cakupan instance Compute Engine tempatnya di-deploy.
Google Cloud secara otomatis membuat akun layanan bernama "Akun layanan default Compute Engine" dan GKE mengaitkan akun layanan ini dengan node yang dibuat GKE. Bergantung pada cara project Anda dikonfigurasi, akun layanan default mungkin memiliki atau tidak memiliki izin untuk menggunakan Cloud Platform API lainnya. GKE juga menetapkan beberapa cakupan akses terbatas ke instance Compute Engine.
Untuk hasil terbaik, jangan melakukan autentikasi ke layanan Google Cloud lainnya (seperti Pub/Sub) dari Pod yang berjalan di GKE dengan memperbarui izin akun layanan default atau menetapkan lebih banyak cakupan akses ke instance Compute Engine. Sebagai gantinya, buat akun layanan Anda sendiri.
Anda harus memberikan izin Pub/Sub yang diperlukan ke cluster penampung, tetapi Anda juga memiliki opsi untuk memberikan izin menulis metrik ke Cloud Monitoring.
Untuk membuat akun layanan baru yang hanya berisi cakupan yang diperlukan oleh cluster penampung, selesaikan langkah-langkah berikut:
Konsol
Buat akun layanan:
Di konsol Google Cloud, buka halaman Buat akun layanan.
Pilih project.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Opsional: Di kolom Deskripsi akun layanan, masukkan deskripsi.
Klik Create.
Klik kolom Pilih peran.
Di bagian Semua peran, klik Pub/Sub > Pub/Sub Subscriber.
Klik Tambahkan peran lain, lalu klik kolom Pilih peran.
Di bagian Semua peran, klik Cloud Healthcare > Healthcare HL7v2 Message Ingest.
Opsional: Jika Anda ingin mengaktifkan pemantauan, klik Tambahkan peran lain, lalu klik kolom Pilih peran.
Di bagian Semua peran, klik Monitoring > Monitoring Metric Writer.
Klik Lanjutkan.
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
Jangan tutup jendela browser Anda. Anda akan menggunakan jendela tersebut di prosedur berikutnya.
gcloud
Untuk membuat akun layanan, jalankan perintah
gcloud iam service-accounts create
.gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Output-nya adalah akun layanan:
Created service account SERVICE_ACCOUNT_NAME.
Untuk memberikan setiap peran ke akun layanan, jalankan perintah
gcloud projects add-iam-policy-binding
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/pubsub.subscriber gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/healthcare.hl7V2Ingest gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter
Output-nya mencakup kebijakan yang telah diperbarui:
bindings: - members: - user:SERVICE_ACCOUNT_NAME role: roles/pubsub.publisher - members: - user:SERVICE_ACCOUNT_NAME roles/healthcare.hl7V2Ingest - members: - user:SERVICE_ACCOUNT_NAME roles/monitoring.metricWriter etag: ETAG version: 1
Membuat cluster
Untuk membuat cluster di GKE, jalankan perintah gcloud container clusters create
:
gcloud container clusters create mllp-adapter \ --zone=COMPUTE_ZONE \ --service-account CLIENT_EMAIL
dengan:
- COMPUTE_ZONE adalah zona
tempat cluster Anda di-deploy. Zona adalah perkiraan lokasi regional tempat cluster Anda dan resource-nya berada. Misalnya,
us-west1-a
adalah zona di regionus-west
. Jika Anda telah menetapkan zona default menggunakangcloud config set compute/zone
, nilai tanda ini akan menggantikan default. - CLIENT_EMAIL adalah ID untuk akun layanan yang ingin Anda gunakan. Formatnya adalah SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
Perintah ini menampilkan output yang mirip dengan contoh berikut:
Creating cluster mllp-adapter in COMPUTE_ZONE... Cluster is being configured... Cluster is being deployed... Cluster is being health-checked... Cluster is being health-checked (master is healthy)...done. Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/mllp-adapter]. To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/COMPUTE_ZONE/mllp-adapter?project=PROJECT_ID kubeconfig entry generated for mllp-adapter. NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS mllp-adapter COMPUTE_ZONE 1.11.7-gke.4 203.0.113.1 n1-standard-1 1.11.7-gke.4 3 RUNNING
Setelah membuat cluster, GKE akan membuat tiga instance VM Compute Engine. Anda dapat memverifikasinya dengan mencantumkan instance menggunakan perintah berikut:
gcloud compute instances list
Mengonfigurasi deployment
Saat men-deploy aplikasi ke GKE, Anda menentukan properti deployment menggunakan file manifes deployment, yang biasanya berupa file YAML. Untuk contohnya, lihat Membuat deployment.
Buka terminal terpisah.
Dengan menggunakan editor teks, buat file manifes deployment bernama
mllp_adapter.yaml
dengan konten berikut:
apiVersion: apps/v1 kind: Deployment metadata: name: mllp-adapter-deployment spec: replicas: 1 selector: matchLabels: app: mllp-adapter template: metadata: labels: app: mllp-adapter spec: containers: - name: mllp-adapter imagePullPolicy: Always image: gcr.io/cloud-healthcare-containers/mllp-adapter ports: - containerPort: 2575 protocol: TCP name: "port" command: - "/usr/mllp_adapter/mllp_adapter" - "--port=2575" - "--hl7_v2_project_id=PROJECT_ID" - "--hl7_v2_location_id=LOCATION" - "--hl7_v2_dataset_id=DATASET_ID" - "--hl7_v2_store_id=HL7V2_STORE_ID" - "--api_addr_prefix=https://healthcare.googleapis.com:443/v1" - "--logtostderr" - "--receiver_ip=0.0.0.0"
dengan:
- PROJECT_ID adalah ID untuk project Google Cloud yang berisi penyimpanan HL7v2 Anda.
- LOCATION adalah region tempat penyimpanan HL7v2 Anda berada.
- DATASET_ID adalah ID untuk set data induk penyimpanan HL7v2 Anda.
- HL7V2_STORE_ID adalah ID untuk penyimpanan HL7v2 tempat Anda mengirim pesan HL7v2.
Deployment memiliki properti berikut:
spec: replicas:
adalah jumlah pod replika yang dikelola deployment.spec: template: metadata: labels:
adalah label yang diberikan ke setiap Pod, yang digunakan deployment untuk mengelola pod.spec: template: spec:
adalah spesifikasi Pod, yang menentukan cara menjalankan setiap Pod.spec: containers
berisi nama container yang akan dijalankan di setiap Pod dan image container yang akan dijalankan.
Untuk mengetahui informasi selengkapnya tentang spesifikasi deployment, lihat referensi Deployment API.
Mengonfigurasi Layanan
Agar adaptor MLLP dapat diakses oleh aplikasi di luar cluster (seperti pusat layanan), Anda harus mengonfigurasi load balancer internal.
Jika Anda belum mengonfigurasi VPN, aplikasi dapat mengakses adaptor MLLP melalui load balancer internal selama aplikasi menggunakan jaringan VPC yang sama dan berada di region Google Cloud yang sama. Misalnya, agar adaptor dapat diakses oleh instance VM Compute Engine di region yang sama dan di jaringan VPC yang sama, Anda dapat menambahkan load balancer internal ke resource Service cluster.
Di direktori tempat Anda membuat file manifes deployment, gunakan
editor teks untuk membuat file manifes Layanan yang disebut
mllp_adapter_service.yaml
dengan konten berikut. File ini
bertanggung jawab untuk mengonfigurasi load balancing internal:
apiVersion: v1
kind: Service
metadata:
name: mllp-adapter-service
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
type: LoadBalancer
ports:
- name: port
port: 2575
targetPort: 2575
protocol: TCP
selector:
app: mllp-adapter
Layanan memiliki properti berikut:
metadata: name:
adalah nama yang Anda pilih untuk Layanan. Dalam hal ini, nilainya adalahmllp-adapter-service
.metadata: annotations:
adalah anotasi yang menentukan bahwa load balancer internal akan dikonfigurasi.spec: type:
adalah jenis load balancer.ports: port:
digunakan untuk menentukan port tempat layanan dapat menerima traffic dari layanan lain dalam cluster yang sama. Port MLLP default2575
digunakan.ports: targetPort:
digunakan untuk menentukan port di setiap Pod tempat layanan berjalan.spec: selector: app:
menentukan Pod yang ditargetkan oleh Layanan.
Meskipun Anda dapat menentukan alamat IP untuk load balancer (menggunakan kolom clusterIP
), load balancer dapat membuat alamat IP-nya sendiri yang dapat Anda gunakan untuk mengirim pesan. Untuk saat ini, biarkan cluster membuat alamat IP, yang akan Anda
gunakan nanti dalam tutorial ini.
Untuk mengetahui informasi selengkapnya tentang load balancing internal, lihat dokumentasi GKE.
Untuk mengetahui informasi selengkapnya tentang spesifikasi Layanan, silakan melihat Referensi Service API.
Men-deploy deployment
Untuk men-deploy adaptor ke cluster GKE, di direktori yang berisi file manifes deployment mllp_adapter.yaml
, jalankan perintah berikut:
kubectl apply -f mllp_adapter.yaml
Perintah ini menampilkan output berikut:
deployment.extensions "mllp-adapter-deployment" created
Memeriksa deployment
Setelah membuat deployment, Anda dapat menggunakan alat kubectl
untuk memeriksanya.
Untuk mendapatkan informasi mendetail tentang deployment, jalankan perintah berikut:
kubectl describe deployment mllp-adapter
Untuk menampilkan daftar Pod yang dibuat oleh deployment, jalankan perintah berikut:
kubectl get pods -l app=mllp-adapter
Untuk mendapatkan informasi tentang Pod yang dibuat:
kubectl describe pod POD_NAME
Jika deployment berhasil, bagian terakhir output dari perintah sebelumnya akan berisi informasi berikut:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 1m default-scheduler Successfully assigned default/mllp-adapter-deployment-85b46f8-zxw68 to gke-mllp-adapter-default-pool-9c42852d-95sn
Normal Pulling 1m kubelet, gke-mllp-adapter-default-pool-9c42852d-95sn pulling image "gcr.io/cloud-healthcare-containers/mllp-adapter"
Normal Pulled 1m kubelet, gke-mllp-adapter-default-pool-9c42852d-95sn Successfully pulled image "gcr.io/cloud-healthcare-containers/mllp-adapter"
Normal Created 1m kubelet, gke-mllp-adapter-default-pool-9c42852d-95sn Created container
Normal Started 1m kubelet, gke-mllp-adapter-default-pool-9c42852d-95sn Started container
Men-deploy Layanan dan membuat load balancer internal
Untuk membuat load balancer internal, di direktori yang berisi file manifes Service mllp_adapter_service.yaml
, jalankan perintah berikut:
kubectl apply -f mllp_adapter_service.yaml
Perintah ini menampilkan output berikut:
service "mllp-adapter-service" created
Memeriksa Layanan
Setelah membuat Layanan, periksa untuk memverifikasi bahwa layanan tersebut telah berhasil dikonfigurasi.
Untuk memeriksa load balancer internal, jalankan perintah berikut:
kubectl describe service mllp-adapter-service
Output perintah mirip dengan contoh berikut:
Name: mllp-adapter-service
Namespace: default
Labels: <none>
Annotations: cloud.google.com/load-balancer-type=Internal
kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"cloud.google.com/load-balancer-type":"Internal"},"name":"mllp-adapter-service","namespa...
Selector: app=mllp-adapter
Type: LoadBalancer
IP: 203.0.113.1
LoadBalancer Ingress: 203.0.113.1
Port: port 2575/TCP
TargetPort: 2575/TCP
NodePort: port 30660/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal EnsuringLoadBalancer 1m service-controller Ensuring load balancer
Normal EnsuredLoadBalancer 1m service-controller Ensured load balancer
Alamat IP LoadBalancer Ingress
mungkin
memerlukan waktu hingga satu menit untuk diisi. Anda akan menggunakan alamat IP
ini dan port 2575
untuk mengakses Layanan dari luar cluster
di langkah berikutnya.
Membuat VM Compute Engine dan mengirim pesan
Sebelumnya dalam tutorial ini, Anda menguji adaptor MLLP secara lokal dan mengirim pesan HL7v2 ke penyimpanan HL7v2. Sekarang, Anda akan mengirim pesan dari VM Compute Engine ke adaptor MLLP yang berjalan di GKE. Pesan tersebut kemudian diteruskan ke penyimpanan HL7v2.
Untuk mengirim permintaan dari instance baru ke cluster GKE, instance dan instance yang ada harus berada di region yang sama dan menggunakan jaringan VPC yang sama.
Di akhir bagian ini, Anda akan mencantumkan notifikasi yang dipublikasikan ke topik Pub/Sub dan pesan HL7v2 di penyimpanan HL7v2. Instance VM Compute Engine harus diberi izin untuk melakukan tugas ini. Sebelum membuat instance, buat akun layanan baru dengan izin yang diperlukan dengan menyelesaikan langkah-langkah berikut:
Konsol
Buat akun layanan:
Di konsol Google Cloud, buka halaman Buat akun layanan.
Pilih project.
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Opsional: Di kolom Deskripsi akun layanan, masukkan deskripsi.
Klik Create.
Klik kolom Pilih peran.
Di bagian Semua peran, klik Pub/Sub > Pub/Sub Subscriber.
Klik Tambahkan peran lain, lalu klik kolom Pilih peran.
Di bagian Semua peran, klik Cloud Healthcare > Healthcare HL7v2 Message Consumer.
Klik Lanjutkan.
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
Jangan tutup jendela browser Anda. Anda akan menggunakan jendela tersebut di prosedur berikutnya.
gcloud
Untuk membuat akun layanan, jalankan perintah
gcloud iam service-accounts create
.gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Output-nya adalah akun layanan:
Created service account SERVICE_ACCOUNT_NAME.
Untuk memberikan setiap peran ke akun layanan, jalankan perintah
gcloud projects add-iam-policy-binding
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/pubsub.publisher gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/healthcare.hl7V2Consumer
Output-nya mencakup kebijakan yang telah diperbarui:
bindings: - members: - user:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com role: roles/pubsub.publisher - members: - user:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com roles/healthcare.hl7V2Consumer etag: ETAG version: 1
Langkah-langkah berikut menunjukkan cara membuat instance virtual machine Linux di Compute Engine:
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Klik Create instance.
Pilih Region dan Zone untuk instance yang cocok dengan zona yang Anda pilih saat membuat cluster. Misalnya, jika Anda menggunakan
us-central1-a
untuk COMPUTE_ZONE saat membuat cluster, lalu di layar pembuatan instance, pilihus-central1 (Iowa)
untuk Region danus-central1-a
untuk Zone.Di bagian Boot disk, klik Change untuk mulai mengonfigurasi boot disk Anda.
Pada tab Public images, pilih versi 9 dari sistem operasi Debian.
Klik Pilih.
Di bagian Identity and API access, pilih akun layanan yang Anda buat.
Di bagian Firewall, pilih Izinkan traffic HTTP.
Klik Buat untuk membuat instance.
gcloud
Untuk membuat instance komputasi, jalankan metode gcloud compute instances create
dengan opsi berikut:
- ZONE yang Anda pilih saat membuat cluster
- Tag
http-server
untuk mengizinkan traffic HTTP - SERVICE_ACCOUNT yang Anda buat
gcloud compute instances create COMPUTE_NAME \ --project=PROJECT_ID \ --zone=ZONE \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=http-server \ --service-account=SERVICE_ACCOUNT
Outputnya mirip dengan contoh berikut:
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/COMPUTE_NAME]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS COMPUTE_NAME ZONE n1-standard-1 INTERNAL_IP EXTERNAL_IP RUNNING
Tunggu hingga instance memulai. Setelah dimulai, instance akan dicantumkan di halaman VM Instances dengan ikon status hijau.
Secara default, instance menggunakan jaringan VPC default yang sama dengan yang digunakan cluster, yang berarti traffic dapat dikirim dari instance ke cluster.
Untuk terhubung ke instance, selesaikan langkah-langkah berikut:
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Dalam daftar instance virtual machine, klik SSH di baris instance yang Anda buat.
gcloud
Untuk terhubung ke instance, jalankan perintah
gcloud compute ssh
:
gcloud compute ssh INSTANCE_NAME \ --project PROJECT_ID \ --zone ZONE
Sekarang Anda memiliki jendela terminal untuk berinteraksi dengan instance Linux.
Di jendela terminal, instal Netcat:
sudo apt install netcat
Download file
hl7v2-mllp-sample.txt
dan simpan ke instance. Untuk informasi tentang encoding dan terminator segmen yang digunakan dalam file, lihat pemisah dan encoding segmen pesan HL7v2.Untuk mulai mengirim pesan HL7v2 melalui adaptor MLLP ke penyimpanan HL7v2, jalankan perintah berikut di direktori tempat Anda mendownload file. Gunakan nilai
LoadBalancer Ingress
yang ditampilkan saat Anda memeriksa Layanan.echo -n -e "\x0b$(cat hl7v2-mllp-sample.txt)\x1c\x0d" | nc LOAD_BALANCER_INGRESS_IP_ADDRESS 2575
Setelah menjalankan perintah, pesan akan dikirim melalui adaptor MLLP ke penyimpanan HL7v2 Anda. Jika pesan berhasil diserap ke dalam penyimpanan HL7v2, perintah akan menampilkan output berikut:
MSA|AA|20150503223000|ILITY|FROM_APP|FROM_FACILITY|20190312162410||ACK|f4c59243-19c2-4373-bea0-39c1b2ba616b|P|2.5
Output ini menunjukkan bahwa penyimpanan HL7v2 merespons dengan jenis respons
AA
(Application Accept
), yang berarti pesan telah divalidasi dan berhasil diserap.Untuk melihat pesan yang dipublikasikan ke topik Pub/Sub, jalankan perintah
gcloud pubsub subscriptions pull
:gcloud pubsub subscriptions pull --auto-ack PUBSUB_SUBSCRIPTION
Perintah ini menampilkan output berikut tentang pesan HL7v2 yang ditransfer:
┌-----------------------------------------------------------------------------------------------------------------|-----------------|---------------┐ | DATA | MESSAGE_ID | ATTRIBUTES | ├-----------------------------------------------------------------------------------------------------------------|-----------------|---------------| | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=ADT | └-----------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
Anda juga dapat mencantumkan pesan di penyimpanan HL7v2 untuk melihat apakah pesan tersebut ditambahkan:
curl
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
Jika permintaan berhasil, server akan menampilkan ID pesan dalam jalur resource:
{ "hl7V2Messages": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" } ] }
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan ID pesan dalam jalur resource:
{ "hl7V2Messages": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" } ] }
Setelah menyelesaikan bagian ini, Anda telah berhasil men-deploy adaptor MLLP ke GKE dan mengirim pesan HL7v2 dari instance jarak jauh melalui adaptor dan ke Cloud Healthcare API.
Di bagian tutorial ini, Anda akan mempelajari cara mengenkripsi pesan HL7v2 yang dikirim dengan aman dengan mengonfigurasi VPN antara instance Compute Engine, yang berfungsi sebagai instance "on-premises", dan adaptor.
Mengonfigurasi VPN
Dengan menggunakan VPN, Anda dapat memperluas jaringan pribadi tempat Anda mengirim pesan HL7v2 di seluruh jaringan publik, seperti internet. Dengan menggunakan VPN, Anda dapat mengirim pesan dari pusat layanan melalui adaptor MLLP dan ke Google Cloud. Sistem dalam alur ini bertindak seolah-olah berada di satu jaringan pribadi.
Ada dua metode untuk mengamankan koneksi MLLP Anda menggunakan VPN:
- Menggunakan Cloud VPN
- Menggunakan solusi VPN menyeluruh Strongswan di Docker
Mengonfigurasi Cloud VPN
Cloud VPN menghubungkan jaringan lokal Anda dengan aman ke jaringan Virtual Private Cloud (VPC) Google Cloud melalui koneksi VPN IPsec. Traffic yang beralih di antara dua jaringan tersebut dienkripsi oleh satu gateway VPN, lalu didekripsi oleh gateway VPN lainnya. Hal ini melindungi data Anda saat berpindah melalui internet atau melalui jaringan pusat layanan.
Dalam tutorial ini, setiap gateway VPN yang Anda konfigurasi berada di jaringan dan subnet kustom yang berbeda di region Google Cloud yang berbeda.
Gateway VPN yang dikonfigurasi di us-central1
berfungsi sebagai gateway Cloud VPN di sisi Google Cloud, sedangkan gateway Cloud VPN di europe-west1
menyimulasikan gateway "lokal" Anda.
Referensi penamaan dan pemberian alamat
Sebagai referensi, tutorial ini menggunakan penamaan dan pemberian alamat IP berikut:
Sisi Google Cloud
- Nama jaringan:
cloud-vpn-network
- Nama subnet:
subnet-us-central-10-0-1
- Region:
us-central1
- Rentang subnet:
10.0.1.0/24
- Nama alamat IP eksternal:
cloud-vpn-ip
- Nama gateway VPN:
vpn-us-central
- Nama tunnel VPN:
vpn-us-central-tunnel-1
Sisi "On-premises"
- Nama jaringan:
on-prem-vpn-network
- Nama subnet:
subnet-europe-west-10-0-2
- Region:
europe-west1
- Rentang subnet:
10.0.2.0/24
- Nama alamat IP eksternal:
on-prem-vpn-ip
- Nama gateway VPN:
vpn-europe-west
- Nama tunnel VPN:
vpn-europe-west-tunnel-1
Membuat jaringan VPC dan subnet kustom
Langkah pertama dalam mengonfigurasi Cloud VPN adalah membuat dua jaringan VPC. Satu jaringan, yang disebut on-prem-vpn-network
,
dikonfigurasi di lingkungan "on-premise" dan berjalan di
instance VM Compute Engine yang disebut on-prem-instance
. Jaringan lainnya,
yang disebut cloud-vpn-network
, adalah yang digunakan cluster GKE yang menjalankan
adaptor MLLP. Anda akan terhubung ke VM on-prem-instance
dan mengirim pesan HL7v2 ke adaptor MLLP yang berjalan di jaringan cloud-vpn-network
melalui load balancer internal adaptor MLLP.
Buat dua jaringan VPC kustom dan subnetnya dengan menyelesaikan langkah-langkah berikut:
Untuk membuat jaringan VPC pertama,
cloud-vpn-network
, jalankan perintah berikut:gcloud compute networks create cloud-vpn-network \ --project=PROJECT_ID \ --subnet-mode=custom
Untuk membuat subnet
subnet-us-central-10-0-1
untuk jaringancloud-vpn-network
, jalankan perintah berikut:gcloud compute networks subnets create subnet-us-central-10-0-1 \ --project=PROJECT_ID \ --region=us-central1 \ --network=cloud-vpn-network \ --range=10.0.1.0/24
Untuk membuat jaringan VPC
on-prem-vpn-network
, jalankan perintah berikut:gcloud compute networks create on-prem-vpn-network \ --project=PROJECT_ID \ --subnet-mode=custom
Untuk membuat subnet
subnet-europe-west-10-0-2
untuk jaringan VPCon-prem-vpn-network
, jalankan perintah berikut:gcloud compute networks subnets create subnet-europe-west-10-0-2 \ --project=PROJECT_ID \ --region=europe-west1 \ --network=on-prem-vpn-network \ --range=10.0.2.0/24
Membuat alamat IP eksternal
Sebelum membuat gateway VPN, cadangankan alamat IP eksternal untuk setiap gateway dengan menyelesaikan langkah-langkah berikut:
Untuk mencadangkan alamat IP (statis) eksternal regional untuk alamat
cloud-vpn-ip
, jalankan perintah berikut:gcloud compute addresses create cloud-vpn-ip \ --project=PROJECT_ID \ --region=us-central1
Untuk mencadangkan alamat IP (statis) eksternal regional untuk alamat
on-prem-vpn-ip
, jalankan perintah berikut:gcloud compute addresses create on-prem-vpn-ip \ --project=PROJECT_ID \ --region=europe-west1
Catat alamat IP eksternal sehingga Anda dapat menggunakannya untuk mengonfigurasi gateway VPN di bagian berikutnya. Untuk mengambil alamat IP eksternal, jalankan perintah berikut:
Alamat IP Cloud VPN:
gcloud compute addresses describe cloud-vpn-ip \ --project PROJECT_ID \ --region us-central1 \ --format='flattened(address)'
Alamat IP VPN"Lokal":
gcloud compute addresses describe on-prem-vpn-ip \ --project PROJECT_ID \ --region europe-west1 \ --format='flattened(address)'
Perintah ini menampilkan output yang mirip dengan berikut ini:
address: 203.0.113.1
Membuat gateway, tunnel, dan rute VPN
Selesaikan langkah-langkah berikut untuk membuat gateway, tunnel, dan rute VPN untuk Cloud VPN:
Buat pre-shared key (rahasia bersama) yang kuat secara kriptografis dengan mengikuti petunjuk di Membuat pre-shared key yang kuat. Kunci ini dirujuk sebagai SHARED_SECRET di bagian ini.
Untuk membuat objek gateway VPN target, jalankan perintah berikut:
gcloud compute target-vpn-gateways create vpn-us-central \ --project PROJECT_ID \ --region us-central1 \ --network cloud-vpn-network
Untuk membuat tiga aturan penerusan, jalankan perintah berikut, dengan mengganti variabel CLOUD_VPN_EXTERNAL_ADDRESS dengan nilai dari alamat IP Cloud VPN di bagian sebelumnya:
Kirim traffic ESP (IPsec) ke gateway:
gcloud compute forwarding-rules create vpn-us-central-rule-esp \ --project PROJECT_ID \ --region us-central1 \ --address CLOUD_VPN_EXTERNAL_ADDRESS \ --ip-protocol ESP \ --target-vpn-gateway vpn-us-central
Kirim traffic UDP 500 ke gateway:
gcloud compute forwarding-rules create vpn-us-central-rule-udp500 \ --project PROJECT_ID \ --region us-central1 \ --address CLOUD_VPN_EXTERNAL_ADDRESS \ --ip-protocol UDP \ --ports 500 \ --target-vpn-gateway vpn-us-central
Kirim traffic UDP 4500 ke gateway:
gcloud compute forwarding-rules create vpn-us-central-rule-udp4500 \ --project PROJECT_ID \ --region us-central1 \ --address CLOUD_VPN_EXTERNAL_ADDRESS \ --ip-protocol UDP \ --ports 4500 \ --target-vpn-gateway vpn-us-central
Untuk membuat tunnel ke gateway Cloud VPN, jalankan perintah berikut. Ganti ON_PREM_VPN_IP dengan nilai dari alamat IP VPN"On-premises" di bagian sebelumnya.
gcloud compute vpn-tunnels create vpn-us-central-tunnel-1 \ --project PROJECT_ID \ --region us-central1 \ --peer-address ON_PREM_VPN_IP \ --shared-secret SHARED_SECRET \ --ike-version 2 \ --local-traffic-selector 0.0.0.0/0 \ --target-vpn-gateway vpn-us-central
Untuk membuat rute statis ke
10.0.2.0/24
, jalankan perintah berikut:gcloud compute routes create "vpn-us-central-tunnel-1-route-1" \ --project PROJECT_ID \ --network "cloud-vpn-network" \ --next-hop-vpn-tunnel "vpn-us-central-tunnel-1" \ --next-hop-vpn-tunnel-region "us-central1" \ --destination-range "10.0.2.0/24"
Selesaikan langkah-langkah berikut untuk membuat gateway, tunnel, dan rute VPN untuk VPN "on-premises":
Untuk membuat objek gateway VPN target, jalankan perintah berikut:
gcloud compute target-vpn-gateways create "vpn-europe-west" \ --project PROJECT_ID \ --region "europe-west1" \ --network "on-prem-vpn-network"
Untuk membuat tiga aturan penerusan, jalankan perintah berikut, dengan mengganti variabel ON_PREMISES_VPN_EXTERNAL_ADDRESS dengan nilai dari alamat IP VPN"On-premises" di bagian sebelumnya:
Kirim traffic ESP (IPsec) ke gateway:
gcloud compute forwarding-rules create vpn-europe-west-rule-esp \ --project PROJECT_ID \ --region europe-west1 \ --address ON_PREMISES_VPN_EXTERNAL_ADDRESS \ --ip-protocol ESP \ --target-vpn-gateway vpn-europe-west
Kirim traffic UDP 500 ke gateway:
gcloud compute forwarding-rules create vpn-europe-west-rule-udp500 \ --project PROJECT_ID \ --region europe-west1 \ --address ON_PREMISES_VPN_EXTERNAL_ADDRESS \ --ip-protocol UDP \ --ports 500 \ --target-vpn-gateway vpn-europe-west
Kirim traffic UDP 4500 ke gateway:
gcloud compute forwarding-rules create vpn-europe-west-rule-udp4500 \ --project PROJECT_ID \ --region europe-west1 \ --address ON_PREMISES_VPN_EXTERNAL_ADDRESS \ --ip-protocol UDP \ --ports 4500 \ --target-vpn-gateway vpn-europe-west
Untuk membuat tunnel ke gateway "on-premises", jalankan perintah berikut:
gcloud compute vpn-tunnels create vpn-europe-west-tunnel-1 \ --project PROJECT_ID \ --region europe-west1 \ --peer-address CLOUD_VPN_IP \ --shared-secret SHARED_SECRET \ --ike-version 2 \ --local-traffic-selector 0.0.0.0/0 \ --target-vpn-gateway vpn-europe-west
Untuk membuat rute statis ke
10.0.1.0/24
, jalankan perintah berikut:gcloud compute routes create "vpn-europe-west-tunnel-1-route-1" \ --project PROJECT_ID \ --network "on-prem-vpn-network" \ --next-hop-vpn-tunnel "vpn-europe-west-tunnel-1" \ --next-hop-vpn-tunnel-region "europe-west1" \ --destination-range "10.0.1.0/24"
Anda telah membuat gateway Cloud VPN dan "on-premises" serta memulai tunnel-nya. Gateway VPN tidak akan terhubung hingga Anda membuat aturan firewall untuk mengizinkan traffic melalui tunnel di antara keduanya.
Membuat aturan firewall
Anda harus membuat aturan firewall untuk kedua sisi tunnel VPN. Aturan ini mengizinkan semua traffic TCP, UDP, dan ICMP masuk dari subnet di satu sisi tunnel VPN ke sisi lainnya.
Untuk membuat aturan firewall untuk subnet Cloud VPN, jalankan perintah berikut:
gcloud compute firewall-rules create allow-tcp-udp-icmp-cloud-vpn \ --project=PROJECT_ID \ --direction=INGRESS \ --priority=1000 \ --network=cloud-vpn-network \ --action=ALLOW \ --rules=tcp,udp,icmp \ --source-ranges=10.0.2.0/24
Untuk membuat aturan firewall untuk subnet "on-premises", jalankan perintah berikut:
gcloud compute firewall-rules create allow-tcp-udp-icmp-on-prem-vpn \ --project=PROJECT_ID \ --direction=INGRESS \ --priority=1000 \ --network=on-prem-vpn-network \ --action=ALLOW \ --rules=tcp,udp,icmp \ --source-ranges=10.0.1.0/24
Buat aturan firewall yang memungkinkan Anda menggunakan SSH ke instance VM di port 22 dengan menjalankan perintah berikut:
gcloud compute firewall-rules create on-prem-vpn-allow-ssh \ --project=PROJECT_ID \ --direction=INGRESS \ --priority=1000 \ --network=on-prem-vpn-network \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=0.0.0.0/0
Memeriksa status tunnel VPN
Untuk memverifikasi bahwa tunnel Anda aktif, selesaikan langkah-langkah berikut:
Buka halaman VPN di konsol Google Cloud.
Klik tab Google VPN Tunnels.
Di kolom Status untuk setiap tunnel, cari tanda centang hijau dan kata "Established". Jika item ini ada, gateway Anda telah melakukan negosiasi tunnel. Jika tidak ada tanda yang muncul setelah beberapa menit, lihat Pemecahan masalah.
Untuk informasi logging tambahan terkait tunnel VPN, lihat Memeriksa Log VPN di halaman Pemecahan masalah. Misalnya, Anda dapat melihat metrik tentang paket yang dihapus, status tunnel, byte yang diterima, dan byte yang dikirim.
Setelah berhasil mengonfigurasi Cloud VPN dengan gateway, tunnel, dan aturan firewall yang diperlukan, Anda dapat membuat koneksi aman antara instance VM "on-premises" dan adaptor MLLP yang berjalan di GKE.
Menggabungkan deployment ke GKE dan Cloud VPN
Sebelumnya dalam tutorial ini, Anda telah menguji adaptor MLLP secara lokal dan mengirim pesan HL7v2 melalui koneksi non-VPN ke adaptor MLLP. Sekarang, Anda akan mengirim pesan dari VM Compute Engine melalui koneksi aman menggunakan Cloud VPN ke adaptor MLLP yang berjalan di GKE. Pesan tersebut kemudian diteruskan ke penyimpanan HL7v2.
Membuat ulang deployment
Pertama, buat ulang deployment di GKE sehingga cluster menggunakan setelan yang Anda konfigurasikan di Mengonfigurasi Cloud VPN:
Untuk menghapus cluster
mllp-adapter
yang Anda buat, jalankan perintahgcloud container clusters delete
. Masukkan nilai COMPUTE_ZONE yang Anda gunakan saat membuat cluster.gcloud container clusters delete mllp-adapter --zone=COMPUTE_ZONE
Ikuti langkah-langkah di Men-deploy adaptor MLLP ke Kubernetes Engine, tetapi saat Anda membuat cluster di GKE, tambahkan jaringan
cloud-vpn-network
dan subnetsubnet-us-central-10-0-1
yang Anda buat di Membuat jaringan dan subnet VPN kustom.Pastikan perintah pembuatan cluster terlihat seperti berikut:
gcloud container clusters create mllp-adapter \ --zone=COMPUTE_ZONE \ --service-account=CLIENT_EMAIL \ --network=cloud-vpn-network \ --subnetwork=subnet-us-central-10-0-1
dengan:
COMPUTE_ZONE adalah zona tempat cluster Anda di-deploy. Saat mengonfigurasi Cloud VPN di bagian sebelumnya, Anda menetapkan jaringan "sisi Google Cloud" untuk menggunakan
us-central1
. Jaringan "sisi Google Cloud" ini adalah tempat cluster GKE berjalan. Gunakan salah satu zona berikut dius-central1
:us-central1-c
,us-central1-a
,us-central1-f
,us-central1-b
.CLIENT_EMAIL adalah ID untuk akun layanan yang ingin Anda gunakan. Formatnya adalah SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com.
Membuat VM Compute Engine baru dengan setelan jaringan
Langkah-langkah berikut menunjukkan cara membuat instance virtual machine Linux di Compute Engine menggunakan konsol Google Cloud. Tidak seperti VM Compute Engine yang Anda buat, VM ini menggunakan setelan jaringan "sisi lokal" untuk berkomunikasi dengan cluster GKE melalui VPN.
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Klik Create instance.
Pilih Region dan Zone untuk instance yang cocok dengan setelan jaringan "sisi 'on-premise'":
europe-west1 (Belgium)
untuk Region daneurope-west1-b
untuk Zone.Di bagian Boot disk, klik Ubah untuk mulai mengonfigurasi boot disk Anda.
Pada tab Public images, pilih versi 9 dari sistem operasi Debian.
Klik Pilih.
Di bagian Identity and API access, pilih akun layanan yang Anda buat.
Di bagian Firewall, pilih Izinkan traffic HTTP.
Luaskan bagian Management, security, disks, networking, sole tenancy.
Di bagian Network interfaces pada tab Networking, tentukan detail jaringan untuk setelan jaringan "sisi 'on-premises'":
- Di kolom Network, pilih on-prem-vpn-network.
- Di kolom Subnetwork, pilih subnet-europe-west-10-0-2 (10.0.2.0/24).
Klik Buat untuk membuat instance.
Tunggu hingga instance memulai. Jika sudah siap, instance akan dicantumkan di halaman VM Instances dengan ikon status hijau.
gcloud
Untuk membuat instance komputasi, jalankan metode gcloud compute instances create
dengan opsi berikut:
- ZONE yang cocok dengan
setelan jaringan "sisi 'on-premise'":
europe-west1-b
untuk Zona. - Mengizinkan traffic HTTP dengan menentukan tag
http-server
- SERVICE_ACCOUNT yang Anda buat
gcloud compute instances create COMPUTE_NAME \ --project=PROJECT_ID --zone=ZONE --image-family=debian-10 \ --tags=http-server,https-server --service-account=SERVICE_ACCOUNT
Outputnya mirip dengan contoh berikut:
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/COMPUTE_NAME]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS COMPUTE_NAME ZONE n1-standard-1 INTERNAL_IP EXTERNAL_IP RUNNING
Untuk terhubung ke instance, selesaikan langkah-langkah berikut:
Konsol
Di konsol Google Cloud, buka halaman Instance VM.
Dalam daftar instance virtual machine, klik SSH di baris instance yang Anda buat.
gcloud
Untuk terhubung ke instance, jalankan perintah
gcloud compute ssh
:
gcloud compute ssh INSTANCE_NAME \ --project PROJECT_ID \ --zone ZONE
Sekarang Anda memiliki jendela terminal untuk berinteraksi dengan instance Linux.
Di jendela terminal, instal Netcat:
sudo apt install netcat
Download file
hl7v2-mllp-sample.txt
dan simpan ke instance.Untuk mulai mengirim pesan HL7v2 melalui adaptor MLLP ke penyimpanan HL7v2, jalankan perintah berikut di direktori tempat Anda mendownload file. Gunakan nilai
LoadBalancer Ingress
yang ditampilkan saat Anda memeriksa Layanan.echo -n -e "\x0b$(cat hl7v2-mllp-sample.txt)\x1c\x0d" | nc LOAD_BALANCER_INGRESS_IP_ADDRESS 2575
Setelah menjalankan perintah, pesan akan dikirim melalui adaptor MLLP ke penyimpanan HL7v2 Anda. Jika pesan berhasil diserap ke dalam penyimpanan HL7v2, perintah akan menampilkan output berikut:
MSA|AA|20150503223000|ILITY|FROM_APP|FROM_FACILITY|20190312162410||ACK|f4c59243-19c2-4373-bea0-39c1b2ba616b|P|2.5
Output ini menunjukkan bahwa penyimpanan HL7v2 merespons dengan jenis respons
AA
(Application Accept
), yang berarti pesan telah divalidasi dan berhasil diserap.Untuk melihat pesan yang dipublikasikan ke topik Pub/Sub, jalankan perintah
gcloud pubsub subscriptions pull
:gcloud pubsub subscriptions pull --auto-ack PUBSUB_SUBSCRIPTION
Perintah ini menampilkan output berikut tentang pesan HL7v2 yang ditransfer:
┌-----------------------------------------------------------------------------------------------------------------|-----------------|---------------┐ | DATA | MESSAGE_ID | ATTRIBUTES | ├-----------------------------------------------------------------------------------------------------------------|-----------------|---------------| | projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/HL7V2_MESSAGE_ID | 123456789012345 | msgType=ADT | └-----------------------------------------------------------------------------------------------------------------|-----------------|---------------┘
Anda juga dapat mencantumkan pesan di penyimpanan HL7v2 untuk melihat apakah pesan tersebut ditambahkan:
curl
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages"
Jika permintaan berhasil, server akan menampilkan ID pesan dalam jalur resource:
{ "hl7V2Messages": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" } ] }
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan ID pesan dalam jalur resource:
{ "hl7V2Messages": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/hl7V2Stores/HL7V2_STORE_ID/messages/MESSAGE_ID" } ] }
Setelah menyelesaikan bagian ini, Anda telah berhasil men-deploy adaptor MLLP ke GKE dan, melalui VPN, mengirim pesan HL7v2 dengan aman dari instance "on-premises" melalui adaptor dan ke Cloud Healthcare API.
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, Anda dapat membersihkan resource yang dibuat di Google Cloud.
Menghapus project
Ikuti langkah-langkah di bawah ini untuk menghapus project yang Anda buat dalam tutorial ini:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Pemecahan masalah
Kegagalan adaptor
Setelah men-deploy adaptor MLLP ke GKE, adaptor mengalami kegagalan.
- Ikuti langkah-langkah di Memecahkan masalah terkait workload yang di-deploy.
Error Connection refused
saat berjalan secara lokal
Saat menguji adaptor MLLP secara lokal, Anda
akan mengalami error Connection refused
.
Error ini terjadi pada beberapa pengguna Mac OS. Gunakan
-p 2575:2575
, bukan flag--network=host
. Selain itu, tetapkan--receiver_ip=0.0.0.0
, bukan--receiver_ip=127.0.0.0
. Perintahnya akan terlihat seperti ini:docker run \ -p 2575:2575 \ gcr.io/cloud-healthcare-containers/mllp-adapter \ /usr/mllp_adapter/mllp_adapter \ --hl7_v2_project_id=PROJECT_ID \ --hl7_v2_location_id=LOCATION \ --hl7_v2_dataset_id=DATASET_ID \ --hl7_v2_store_id=HL7V2_STORE_ID \ --export_stats=false \ --receiver_ip=0.0.0.0 \ --pubsub_project_id=PROJECT_ID \ --pubsub_subscription=PUBSUB_SUBSCRIPTION \ --api_addr_prefix=https://healthcare.googleapis.com:443/v1 \ --logtostderr
Error could not find default credentials
saat berjalan secara lokal
Saat menguji adaptor MLLP secara lokal, Anda
akan mengalami error
healthapiclient.NewHL7V2Client: oauth2google.DefaultTokenSource: google: could not find default credentials.
.
Error ini terjadi saat adaptor tidak dapat menemukan kredensial ADC lokal Anda. Pastikan Anda telah menyiapkan Kredensial Default Aplikasi di lingkungan lokal.
Error autentikasi
Jika Anda mengalami error autentikasi saat menguji adaptor MLLP secara lokal
yang tidak tercakup di bagian lain dalam bagian ini, jalankan kembali perintah docker run
dan tambahkan tanda -v ~/.config:/root/.config
ke akhir perintah,
seperti ini:
docker run \
-v ~/.config:/root/.config \
...