Pada saat ini, integrasi Sistem Informasi Manajemen Rumah Sakit(SIMRS) dengan web service BPJS sudah umum dilakukan. Aplikasi Medifirst2000 buatan kantor tempat saya bekerja(Jasamedika) pun sudah melakukan integrasi dengan web service BPJS. Pada tulisan ini, saya akan berbagi kodingan untuk melakukan bridging dengan web service BPJS. Kodingan bridging ini saya buat menggunakan bahasa C# dan editor Visual Studio 2019 Preview. Pada tulisan ini saya hanya akan memberi contoh untuk mendapatkan data peserta BPJS menggunakan nomor kartu BPJS. Menurut saya ini sudah cukup untuk memberikan contoh bagaimana untuk melakukan get data dari web service BPJS. Pada part 2, nanti saya akan memberi contoh untuk melakukan insert SEP pada web service BPJS.
Kodingan Lengkap Bridging ke Web Service BPJS Menggunakan C#
Buat project baru dengan nama “BridgingBPJS”, kemudian tambahkan class pada project tersebut, namai class tersebut dengan nama “Bridging”. Kemudian masukan kodingan berikut ke dalam class Bridging.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Net; using System.Security.Cryptography; using System.Text; namespace BridgingBPJS { public class Bridging { private string scretKey; private string consID; private string baseURL; #region Properties //Untuk menyimpan atau mendapatkan secretkey public string SecretKey { get { return scretKey; } set { scretKey = value; } } //Untuk menyimpan atau mendapatkan consumer ID public string ConsID { get { return consID; } set { consID = value; } } //Untuk menyimpan atau mendapatkan base URL web service public string BaseURL { get { return baseURL; } set { baseURL = value; } } #endregion properties //Constructor class Bridging public Bridging(string consID,string secretKey,string baseURL) { ConsID = consID; SecretKey = secretKey; BaseURL = baseURL; } //Method cek data peserta menggunakan nomor kartu BPJS public string CekDataPesertaByNoKartu(string noKartu) { WebClient client = CreateWebClient(); var datas = client.DownloadString(BaseURL + "Peserta/nokartu/" + noKartu + "/tglSEP/" + DateTime.Now.ToString("yyyy-MM-dd")); return datas; } //Method untuk membuat object WebClient public WebClient CreateWebClient() { WebClient client = new WebClient(); string timeStamp = Bridging.GetTimeStamp(); // Set user agent and also accept-encoding headers. client.Headers["X-cons-id"] = ConsID; client.Headers["X-timestamp"] = timeStamp; client.Headers["X-signature"] = GetSignature(ConsID, SecretKey, timeStamp); client.Headers["Content-Type"] = "application/json"; return client; } //Method untuk mendapatkan time stamp public static string GetTimeStamp() { //Create TimeStamp Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; return unixTimestamp.ToString(); } //Method untuk membuat signature public static string GetSignature(string consumerID,string secretKey,string timestamp) { HMACSHA256 hashObject = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey)); var data = consumerID + "&" + timestamp; var signature = hashObject.ComputeHash(Encoding.UTF8.GetBytes(data)); var encodedSignature = Convert.ToBase64String(signature); return encodedSignature; } //Method main class Bridging static void Main() { Bridging bridging = new Bridging("xxxConsumerID", "xxxSecretKey", "https://dvlp.bpjs-kesehatan.go.id/vclaim-rest/"); var data = bridging.CekDataPesertaByNoKartu("0000018165756"); Console.WriteLine(data); Console.ReadKey(); } } } |
Pada umumnya, untuk melakukan pemanggilan pada web service, diperlukan informasi tambahan yang harus dimasukkan pada HTTP Header berupa variabel dan nilainya. Variabel dan nilainya tersebut diperlukan untuk proses autentikasi. Variabel-variabel itu adalah X-cons-id, X-timestamp, dan X-signature. Untuk keterangan masing-masing variabel dan nilanya kalian bisa lihat di bagian Help pada katalog resminya di sini atau kalian bisa lihat pada screenshot di bawah.

Penjelasan Kodingan
Pada contoh kodingan ini saya menggunakan consumer ID dan secret key milik salah satu pelanggan perusahaan tempat saya bekerja.
Method Main
Pada method main, di baris pertama, dilakukan pemanggilan constructor class Bridging untuk membuat object dari class Bridging. Pada saat pemanggilan constructor, disertakan juga parameter consumer ID, secret key(Consumer Secret), dan base URL web service. Parameter tersebut digunakan untuk menginisialisasi properties di class Bridging. Di baris kedua, dilakukan pemanggilan method CekDataPesertaByNoKartu dengan memasukan parameter nomor kartu BPJS. Di baris ketiga, data peserta yang disimpan pada variabel data, di tampilkan ke console.
1 2 3 4 5 6 7 8 | static void Main() { Bridging bridging = new Bridging("xxxConsumerID", "xxxSecretKey", "https://dvlp.bpjs-kesehatan.go.id/vclaim-rest/"); var data = bridging.CekDataPesertaByNoKartu("0000018165756"); Console.WriteLine(objectData); Console.ReadKey(); } |
Method CekDataPesertaByNoKartu
Pada saat pemanggilan method CekDataPesertaByNoKartu. Di dalam method tersebut, dilakukan pembuatan object dari class WebClient dengan memanggil method CreateWebClient. Class WebClient memiliki method-method yang bisa digunakan untuk keperluan pemanggilan web service. Ketika object class WebClient sudah dibuat, kemudian dilakukan pemanggilan method DownloadString dengan menyertakan parameter URL web service BPJS yang akan dipanggil. Pada contoh ini URL yang akan dipanggil adalah URL untuk mengecek data kepesertaan BPJS menggunakan nomor kartu. Berikut adalah URL lengkapnya.
1 | {BASE URL}/{Service Name}/Peserta/nokartu/{parameter 1}/tglSEP/{parameter 2} |
1 2 3 4 5 6 7 8 | public string CekDataPesertaByNoKartu(string noKartu) { WebClient client = CreateWebClient(); var datas = client.DownloadString(BaseURL + "Peserta/nokartu/" + noKartu + "/tglSEP/" + DateTime.Now.ToString("yyyy-MM-dd")); return datas; } |
Method CreateWebClient
Pada method CreateWebClient, di baris pertama, dilakukan pembuatan object dari class WebClient yang nantinya akan dikirim ke method CekDataPesertaByNoKartu yang memanggilnya. Di baris kedua, dilakukan pembuatan time stamp dengan memanggil method GetTimeStamp milik class Bridging. Pada baris berikutnya dilakukan inisialisasi pada property Headers milik object WebClient. Untuk property cHeaders[“X-cons-id”] diisi menggunakan nilai dari property ConsID milik class Bridging. Untuk property Headers[“X-timestamp”] diisi menggunakan variabel timeStamps yang sebelumnya diisi menggunakan time stamp hasil pemanggilan method GetTimeStamp milik class Bridging. Untuk property client.Headers[“X-signature”] diisi dengan signature hasil dari pemanggilan GetSignature. Pada pemanggilan method GetSignature dimasukkan dua parameter, yaitu parameter consumer ID, secret key dan time stamp. Untuk property Headers[“Content-Type”] diisi dengan string “application/json” yang artinya data balikan yang akan dikirim oleh web service adalah data berformat json.
1 2 3 4 5 6 7 8 9 10 11 12 | public WebClient CreateWebClient() { WebClient client = new WebClient(); string timeStamp = Bridging.GetTimeStamp(); client.Headers["X-cons-id"] = ConsID; client.Headers["X-timestamp"] = timeStamp; client.Headers["X-signature"] = GetSignature(ConsID, SecretKey, timeStamp); client.Headers["Content-Type"] = "application/json"; return client; } |
Method GetSignature
Pada method GetSignature. Pertama, dibuat dulu object hash dari class HMACSHA256 dengan memanggil constructornya. Pada saat pemanggilan constructor dimasukkan juga parameter secret key. Kemudian dilakukan pembuatan signature dengan memanggil method ComputeHash dengan menyertakan variabel string gabungan dari consumer ID ditambah string “&” dan ditambah string time stamp. Karena hasil dari pemanggilan method ComputeHash adalah byte array, sedangkan tipe balikan GetSignature adalah string, maka perlu dilakukan konversi ke string seperti yang dilakukan pada baris kode berikutnya.
1 2 3 4 5 6 7 8 9 10 11 12 | public static string GetSignature(string consumerID,string secretKey,string timestamp) { HMACSHA256 hashObject = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey)); var data = consumerID + "&" + timestamp; var signature = hashObject.ComputeHash(Encoding.UTF8.GetBytes(data)); var encodedSignature = Convert.ToBase64String(signature); return encodedSignature; } |
Tampilan Program

Pada part 2 nanti, saya akan memberikan contoh kodingan bridging ke web service BPJS untuk melakukan insert SEP. Mudah-mudahan penjelasan saya di part 1 ini bisa difahami. Jika ada yang ingin ditanyakan, ayo kita diskusi di kolom komentar atau kalian bisa hubungi saya melalu WhatsApp. Terima kasih.
Itโs really useful for programmer and other too..
Hope Uโll always sharing like this. ๐๐๐
Heu euh ke ku urang disering deui nu lainnya. Matakan kunjungi terus blog urg, dukung terus supaya urg terus berkarya.
Bah mantap kali kang bro, ngebantu bgt kykx ni buat pra programmer ๐
Kalau untuk om, ngebantu tidak om?
Bantu bkin nambah kerutan di jidat kang bro ๐
Ditanyakan saja om yang tidak mengerti apa?
Semuanya wkwkwkw๐
Sini om main ke rumah, belajar bareng.
Busett jauh yakโฆ
Tuntutlah ilmu sampai ke negara sunda om