Tutorial Integrasi BPJS VClaim dengan SIMRS: Panduan Step-by-Step
N
Kembali ke Blog

Tutorial Integrasi BPJS VClaim dengan SIMRS: Panduan Step-by-Step

Tutorial
Nugroho Setiawan 08 Aug 2026 9 min baca 1,799 kata 1 views
Integrasi BPJS VClaim dengan SIMRS merupakan langkah krusial untuk efisiensi operasional rumah sakit. Artikel ini akan memandu Anda secara teknis, dari konsep dasar hingga implementasi kode, untuk menciptakan sistem yang terintegrasi dan responsif. Pelajari cara mengoptimalkan alur kerja dan mengurangi kesalahan manual.

Dalam ekosistem layanan kesehatan Indonesia, efisiensi operasional rumah sakit dan klinik sangat bergantung pada sistem informasi yang terintegrasi. Salah satu tantangan terbesar adalah pengelolaan klaim BPJS Kesehatan, yang seringkali memakan waktu, rentan terhadap kesalahan manual, dan menghambat kecepatan pelayanan pasien. Proses verifikasi klaim (VClaim) yang tidak terotomatisasi dapat menyebabkan antrean panjang, delay dalam penerbitan Surat Eligibilitas Peserta (SEP), bahkan potensi kerugian finansial akibat klaim yang ditolak. Bayangkan skenario di mana petugas harus berulang kali memasukkan data pasien secara manual dari SIMRS ke aplikasi VClaim terpisah, atau menghadapi kesulitan dalam melacak status klaim. Situasi ini bukan hanya membebani staf, tetapi juga menurunkan kualitas pengalaman pasien. Artikel ini hadir sebagai panduan komprehensif untuk para manajer IT rumah sakit, pemilik klinik, manajer operasional, dan pengambil keputusan yang ingin mengatasi masalah ini. Kami akan membedah secara mendalam bagaimana mengintegrasikan BPJS VClaim langsung ke dalam Sistem Informasi Manajemen Rumah Sakit (SIMRS) Anda, mulai dari pemahaman konsep dasar, persiapan teknis, contoh kode implementasi, hingga penanganan error dan praktik terbaik. Tujuan kami adalah memberikan solusi praktis, mendalam, dan actionable agar Anda dapat membangun sistem yang lebih efisien, akurat, dan sesuai standar.

Konsep Dasar Integrasi BPJS VClaim & SIMRS

Integrasi BPJS VClaim dengan SIMRS bukan sekadar menghubungkan dua sistem, melainkan menciptakan jembatan data yang mulus untuk mengotomatisasi proses verifikasi dan penerbitan klaim. VClaim (Verifikasi Klaim Elektronik) adalah sistem yang dikembangkan oleh BPJS Kesehatan untuk memfasilitasi proses pengajuan dan verifikasi klaim secara elektronik, guna memastikan bahwa setiap pelayanan kesehatan yang diberikan kepada peserta BPJS sesuai dengan ketentuan dan hak mereka. Tanpa integrasi, staf rumah sakit harus menggunakan aplikasi VClaim terpisah atau portal web, memasukkan data yang sudah ada di SIMRS secara manual, sebuah proses yang tidak efisien dan sangat rentan terhadap kesalahan penulisan data (typo).

Manfaat utama dari integrasi ini sangat signifikan. Pertama, efisiensi operasional. Proses pendaftaran pasien dan penerbitan SEP dapat dilakukan secara instan dari SIMRS, mengurangi waktu tunggu pasien hingga 70% dan membebaskan staf untuk fokus pada pelayanan yang lebih penting. Kedua, akurasi data. Dengan meminimalkan entri data ganda, risiko kesalahan data yang dapat menyebabkan klaim ditolak berkurang drastis. Data pasien yang sudah tervalidasi di SIMRS langsung digunakan untuk VClaim. Ketiga, pengambilan keputusan yang lebih baik. Data klaim yang terintegrasi memungkinkan manajemen untuk menganalisis pola pelayanan, efisiensi klaim, dan kepatuhan terhadap regulasi BPJS secara lebih akurat dan real-time. Keempat, kepatuhan regulasi. Integrasi membantu memastikan bahwa setiap langkah dalam proses klaim mematuhi Peraturan Menteri Kesehatan (PMK) terkait BPJS Kesehatan, seperti PMK No. 3 Tahun 2023 tentang Standar Tarif Pelayanan Kesehatan dalam Penyelenggaraan Program Jaminan Kesehatan, dan panduan teknis VClaim terbaru dari BPJS Kesehatan.

Komponen kunci yang terlibat dalam integrasi ini meliputi: Database SIMRS yang menyimpan data pasien, riwayat medis, dan informasi administratif; API VClaim BPJS Kesehatan yang menyediakan endpoint untuk berbagai fungsi seperti pencarian peserta, pembuatan SEP, dan update data; serta Modul Bridging di SIMRS yang bertugas sebagai penghubung dan penerjemah data antara SIMRS dan API VClaim. Alur data umumnya dimulai ketika pasien mendaftar di SIMRS. SIMRS akan mengirimkan data pasien ke API VClaim untuk verifikasi kepesertaan. Setelah valid, SIMRS akan memanggil API pembuatan SEP, dan nomor SEP yang dihasilkan akan disimpan kembali ke SIMRS. Seluruh proses ini harus diamankan dengan mekanisme autentikasi dan enkripsi yang telah ditentukan oleh BPJS Kesehatan, seperti penggunaan Consumer ID, Consumer Secret, Timestamp, dan Signature berbasis HMAC-SHA256.

Sebagai contoh konkret, bayangkan seorang pasien BPJS datang ke rumah sakit. Tanpa integrasi, petugas pendaftaran harus mencari data pasien di SIMRS, lalu membuka aplikasi VClaim, memasukkan nomor kartu BPJS, tanggal pelayanan, dan data lainnya secara manual. Jika ada kesalahan, proses harus diulang. Dengan integrasi, petugas cukup mencari pasien di SIMRS. Ketika data pasien ditemukan, SIMRS secara otomatis akan memanggil API VClaim untuk memverifikasi keaktifan peserta dan mengambil data rujukan (jika ada). Setelah verifikasi berhasil, SIMRS akan menampilkan formulir SEP yang sudah terisi sebagian, dan dengan satu klik, SEP akan dibuat melalui API VClaim dan nomornya langsung tersimpan di SIMRS. Proses yang sebelumnya memakan waktu 5-10 menit per pasien, kini dapat diselesaikan dalam kurang dari 1 menit. Ini adalah efisiensi yang nyata dan berdampak langsung pada pengalaman pasien dan beban kerja staf.

Persiapan & Detail Implementasi Teknis

Sebelum memulai implementasi teknis integrasi BPJS VClaim, ada beberapa persiapan esensial yang harus dipenuhi untuk memastikan kelancaran proyek. Pertama dan terpenting, Anda harus memiliki akun VClaim aktif yang diberikan oleh BPJS Kesehatan untuk fasilitas kesehatan Anda (PPK). Akun ini akan dilengkapi dengan Consumer ID, Consumer Secret, Kode PPK, dan Kode Aplikasi. Pastikan Anda menyimpan kredensial ini dengan aman dan tidak membagikannya secara sembarangan. Kedua, SIMRS Anda harus mendukung pengembangan kustom atau memiliki modul yang dapat dimodifikasi untuk integrasi API. Mayoritas SIMRS modern yang dibangun dengan teknologi seperti Laravel 11.x (PHP), Node.js 20 LTS, atau Java Spring Boot, biasanya memiliki kapabilitas ini. Pastikan tim pengembang Anda familiar dengan framework yang digunakan dan memiliki akses penuh ke source code SIMRS.

Ketiga, infrastruktur database yang solid sangat penting. Integrasi VClaim akan melibatkan penyimpanan nomor SEP, data rujukan, dan status klaim di database SIMRS Anda. Kami merekomendasikan penggunaan database relasional seperti PostgreSQL 16.x atau MySQL 8.x yang terkenal dengan stabilitas dan skalabilitasnya. Pastikan skema database SIMRS Anda dapat menampung kolom-kolom baru yang relevan dengan data VClaim, seperti `no_sep`, `tgl_sep`, `kode_rujukan`, `poli_tujuan_sep`, dan lainnya. Keempat, pemahaman mendalam tentang konsep RESTful API, format data JSON, serta mekanisme keamanan seperti enkripsi HMAC-SHA256 adalah prasyarat teknis bagi pengembang. Dokumentasi resmi API VClaim dari BPJS Kesehatan (sering diperbarui, pastikan Anda menggunakan versi terbaru, misalnya versi 1.1) adalah referensi utama yang wajib dipelajari.

Secara arsitektur, SIMRS backend Anda akan bertindak sebagai klien API yang mengirimkan permintaan ke endpoint API VClaim BPJS Kesehatan. Modul bridging dalam SIMRS bertanggung jawab untuk: (1) Mengumpulkan data dari SIMRS (misalnya, nomor kartu BPJS, tanggal pelayanan). (2) Membangun header permintaan yang sesuai (Consumer ID, Timestamp, Signature). (3) Mengirimkan permintaan HTTP (GET/POST/PUT) ke API VClaim. (4) Menerima respons dari VClaim. (5) Mendekripsi respons (jika diperlukan). (6) Memproses dan menyimpan data respons ke database SIMRS atau menampilkannya di antarmuka pengguna. Proses data mapping antara kolom-kolom di SIMRS dan parameter yang dibutuhkan oleh API VClaim adalah langkah krusial. Misalnya, kolom `jenis_kelamin` di SIMRS mungkin perlu diubah menjadi 'L' atau 'P' sesuai format VClaim.

Beberapa API VClaim utama yang umumnya diintegrasikan meliputi: GET /peserta/{nokartu}/{tglpelayanan} untuk pencarian data peserta dan status kepesertaan; POST /sep/insert untuk membuat SEP baru; PUT /sep/update untuk memperbarui data SEP; GET /sep/{nosep} untuk mencari detail SEP berdasarkan nomor SEP; dan GET /Rujukan/List/Peserta/{nokartu} untuk mengambil daftar rujukan peserta. Aspek keamanan adalah pondasi. Setiap permintaan ke API VClaim memerlukan header khusus: X-Cons-ID (Consumer ID Anda), X-Timestamp (Unix timestamp saat permintaan dibuat), dan X-Signature. Signature ini dihasilkan dari gabungan Consumer ID, Timestamp, dan Consumer Secret Anda menggunakan algoritma HMAC-SHA256, lalu dienkripsi dengan Base64. Respons dari VClaim juga seringkali terenkripsi dan perlu di-decrypt di sisi SIMRS menggunakan kunci enkripsi yang sama dengan Consumer Secret. Memastikan implementasi keamanan ini benar adalah kunci untuk mencegah akses tidak sah dan menjaga integritas data.

Contoh Kode Implementasi

Bagian ini akan menyajikan contoh kode konkret dalam PHP, khususnya dengan kerangka kerja Laravel 11.x, yang sering digunakan dalam pengembangan SIMRS. Kode ini akan menunjukkan bagaimana cara menghasilkan signature yang diperlukan untuk setiap permintaan API VClaim dan bagaimana melakukan panggilan API sederhana untuk mendapatkan data peserta.

Code Block 1: Fungsi untuk Menghasilkan Header Keamanan VClaim

<?php namespace AppServicesBpjs; use CarbonCarbon; class VclaimService { protected $consId; protected $secretKey; protected $baseUrl; public function __construct() { $this->consId = env('BPJS_VCLAIM_CONS_ID'); $this->secretKey = env('BPJS_VCLAIM_SECRET_KEY'); $this->baseUrl = env('BPJS_VCLAIM_BASE_URL', 'https:apijkn.bpjs-kesehatan.go.id/vclaim-kemenkes/'); } protected function generateHeaders() { $timestamp = CarbonCarbon::now()->timestamp; // Unix timestamp $data = $this->consId . '&' . $timestamp; $signature = hash_hmac('sha256', $data, $this->secretKey, true); $encodedSignature = base64_encode($signature); return [ 'X-Cons-ID' => $this->consId, 'X-Timestamp' => $timestamp, 'X-Signature' => $encodedSignature, 'user_key' => env('BPJS_VCLAIM_USER_KEY') // Jika diperlukan, misal untuk VClaim versi tertentu ]; } public function decrypt($string) { $key = $this->consId . $this->secretKey . $this->consId; $encrypt_method = 'AES-256-CBC'; // Standard BPJS encryption method $key_hash = hex2bin(hash('sha256', $key)); $iv = substr(hex2bin(hash('sha256', $key)), 0, 16); $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key_hash, OPENSSL_RAW_DATA, $iv); return unction_exists('gzuncompress') ? gzuncompress($output) : $output; } // ... fungsi lain untuk panggilan API ... }

Penjelasan Code Block 1: Fungsi `generateHeaders()` ini adalah inti dari keamanan komunikasi dengan API VClaim. Ini mengambil Consumer ID dan Secret Key dari variabel lingkungan (`.env` file), menghasilkan timestamp saat ini, lalu menggabungkan Consumer ID dan timestamp untuk membuat string data. String data ini kemudian di-hash menggunakan algoritma HMAC-SHA256 dengan Secret Key sebagai kunci, dan hasilnya di-encode dengan Base64 untuk menjadi `X-Signature`. Fungsi `decrypt()` ini digunakan untuk mendekripsi respons dari VClaim yang seringkali terenkripsi menggunakan metode AES-256-CBC. Kunci dekripsi dibuat dari kombinasi Consumer ID dan Secret Key, sesuai dengan spesifikasi BPJS. Penting untuk memastikan `BPJS_VCLAIM_CONS_ID`, `BPJS_VCLAIM_SECRET_KEY`, dan `BPJS_VCLAIM_USER_KEY` sudah terdefinisi di file `.env` Anda.

Code Block 2: Melakukan Panggilan API untuk Mendapatkan Data Peserta

<?php namespace AppServicesBpjs; use GuzzleHttpClient; class VclaimService { // ... (property dan generateHeaders() & decrypt() dari code block sebelumnya) ... public function getPeserta($noKartu, $tglPelayanan) { $headers = $this->generateHeaders(); try { $client = new Client(['base_uri' => $this->baseUrl]); $response = $client->request('GET', 'Peserta/nokartu/' . $noKartu . '/tglpelayanan/' . $tglPelayanan, [ 'headers' => $headers, 'verify' => false // Sesuaikan dengan konfigurasi SSL Anda, sebaiknya true di production ]); $body = json_decode($response->getBody()->getContents(), true); if ($body['metaData']['code'] == 200) { $decryptedResponse = json_decode($this->decrypt($body['response']), true); return [ 'status' => true, 'data' => $decryptedResponse ]; } else { return [ 'status' => false, 'message' => $body['metaData']['message'] ]; } } catch (	hrowable $e) { // Log the error for debugging logger()->error('VClaim API Error: ' . $e->getMessage(), ['exception' => $e]); return [ 'status' => false, 'message' => 'Terjadi kesalahan saat memanggil API VClaim: ' . $e->getMessage() ]; } } }

Penjelasan Code Block 2: Fungsi `getPeserta()` ini menunjukkan cara memanggil endpoint API VClaim `Peserta/nokartu/{nokartu}/tglpelayanan/{tglpelayanan}`. Ini menggunakan Guzzle HTTP Client (versi 7.x direkomendasikan) untuk melakukan permintaan GET. Header keamanan yang dihasilkan dari `generateHeaders()` disertakan dalam permintaan. Setelah menerima respons, kode memeriksa `metaData.code`. Jika 200 (sukses), respons akan di-decrypt menggunakan fungsi `decrypt()` yang telah dibuat sebelumnya, lalu di-decode dari JSON. Penting untuk menangani kasus di mana respons `metaData.code` bukan 200, yang menunjukkan adanya masalah dari sisi VClaim. Blok `try-catch` juga disertakan untuk menangani pengecualian jaringan atau kesalahan lain yang mungkin terjadi selama panggilan API. Untuk lingkungan produksi, pastikan `verify` di Guzzle diatur ke `true` untuk validasi SSL yang tepat, atau konfigurasikan sertifikat CA Anda dengan benar.

Penanganan Data & Error

Integrasi API yang kuat tidak hanya tentang mengirim permintaan dan menerima respons, tetapi juga tentang bagaimana sistem Anda menangani data yang masuk dan terutama, bagaimana ia merespons ketika terjadi kesalahan. Penanganan data yang tepat memastikan informasi disimpan secara akurat dan konsisten, sementara penanganan error yang efektif mencegah kegagalan sistem dan memberikan pengalaman pengguna yang lebih baik.

Contoh Payload JSON untuk Pembuatan SEP (POST /sep/insert)

{   
Terakhir diperbarui 08 Aug 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!