Mapping Error Code BPJS yang Paling Sering Bikin Darah Tinggi
Sobat IT RS, siapa di sini yang belum pernah kena bentakan staf frontliner gara-gara error BPJS di SIMRS? Atau tiba-tiba ada notifikasi WA tengah malam: "Mas, peserta nggak bisa daftar. Error 201. Tolong cepet, ini antrean sudah panjang!" Rasanya pengen langsung jadi petani hidroponik. Tapi, ya namanya IT RS, urusan error code BPJS itu makanan sehari-hari. Daripada tiap kali error langsung panik, mending punya cheat sheet error code BPJS plus cara nanggapinya di kode backend kita.
Artikel ini bakal bongkar error code BPJS yang sering muncul, artinya apa, kenapa bisa kejadian, plus trik handling dengan kode. Pokok e, biar Sobat IT RS bisa jawab cepat, "Tenang, Bu. Itu cuma error 212. Bentar, saya reset status bridging."
Kenapa Error Code BPJS Itu Nggak Bisa Dihindari
- BPJS API kadang timpang (maintenance dadakan, timeout, overload, validasi ngaco).
- Data SIMRS nggak selalu sinkron sama data di Pusat (NIK dobel, status peserta beda, surat rujukan expired).
- User kadang salah input data di frontliner (salah ketik NIK, nomor kartu, tanggal lahir).
- Regulasi sering ganti mendadak. Kemarin valid, besok error.
Daftar Error Code BPJS yang Sering Nampol
Error 201: Data Tidak Ditemukan
Pesan: "Peserta tidak ditemukan" atau "Data tidak ditemukan".
- Paling sering pas cek kepesertaan atau rujukan.
- Penyebab: NIK/Kartu salah, peserta belum didaftarkan, atau status non-aktif di DB BPJS.
Error 212: Data Sudah Pernah Didaftarkan
Pesan: "No SEP sudah pernah didaftarkan"
- Muncul saat buat SEP dengan data yang sama persis (no rujukan, tgl pelayanan) sudah pernah masuk.
- Penyebab: Frontliner klik "Proses" dua kali, atau ada retry otomatis di kode.
Error 102: Data Tidak Lengkap
Pesan: "Data tidak lengkap"
- Muncul saat request body ke BPJS API kurang field wajib (misal tgl lahir, kode poli, cara masuk RS).
- Penyebab: Mapping field di form atau database kacau.
Error 404: Data Tidak Ditemukan/Invalid Endpoint
Pesan: "Not Found" atau endpoint salah.
- Endpoint BPJS berubah, URL salah, atau resource nggak ada.
Error 412: Permintaan Ditolak
Pesan: "Permintaan tidak sesuai aturan", sering muncul buat SEP rawat inap tanpa rujukan valid.
- Poli/surat rujukan tidak sesuai, atau ada field yang tidak comply aturan terbaru BPJS.
Error 500: Server Error BPJS
Pesan: "Internal server error", "Oops something wrong", atau blank response.
- Masalah di sisi BPJS. Sering nongol pas jam sibuk atau habis deploy API baru.
Error 400: Bad Request
Pesan: "Bad Request"
- Format JSON salah (kurung kurawal kurang, typo field, data numerik dikirim string dll).
Cara Smart Handling Error Code BPJS di Kode
Jangan biarkan user lihat pesan asli BPJS mentah-mentah. Backend harus mapping kode error ke pesan yang jelas & aksi yang bisa diambil. Nah, begini biasanya skema mapping dan handling-nya:
Struktur Contoh Response BPJS
{
"metaData": {
"code": "201",
"message": "Peserta tidak ditemukan"
},
"response": null
}
Contoh Struktur Table Mapping Error (SQL)
-- Table: bpjs_error_mapping
CREATE TABLE bpjs_error_mapping (
code VARCHAR(10) PRIMARY KEY,
bpjs_message TEXT,
user_message TEXT,
suggestion TEXT
);
INSERT INTO bpjs_error_mapping VALUES
('201', 'Peserta tidak ditemukan', 'Data peserta BPJS tidak ditemukan. Cek NIK atau nomor kartu.', 'Pastikan NIK/No BPJS sudah benar dan aktif di BPJS Pusat. Jika peserta baru, tunggu 1x24 jam lalu coba lagi.'),
('212', 'No SEP sudah pernah didaftarkan', 'SEP sudah terdaftar sebelumnya.', 'Cek di dashboard SIMRS, jika SEP sudah ada tidak perlu input ulang. Jika belum, cek status bridging.'),
('102', 'Data tidak lengkap', 'Data tidak lengkap. Periksa input.', 'Lengkapi semua field wajib. Cek mapping form.'),
('404', 'Data tidak ditemukan/endpoint salah', 'Data/resource BPJS tidak ditemukan.', 'Cek endpoint dan parameter API. Laporkan ke IT jika perlu update.'),
('412', 'Permintaan tidak sesuai aturan', 'Permintaan BPJS ditolak. Cek aturan terbaru.', 'Cek aturan terbaru BPJS untuk jenis layanan ini. Pastikan semua field comply.'),
('500', 'Internal server error', 'Server BPJS sedang gangguan.', 'Coba lagi beberapa menit. Jika sering, hubungi admin BPJS.'),
('400', 'Bad Request', 'Format data salah.', 'Cek kembali format pengiriman data. Pastikan JSON valid.');
Handling Mapping Error di Backend (PHP Example)
// pseudo handler
function handleBpjsError($response) {
$code = $response['metaData']['code'];
$bpjsMessage = $response['metaData']['message'];
// query mapping table
$mapping = getErrorMappingFromDb($code);
if ($mapping) {
return [
'user_message' => $mapping['user_message'],
'suggestion' => $mapping['suggestion'],
'code' => $code
];
} else {
// fallback, pesan asli BPJS
return [
'user_message' => 'Terjadi error BPJS: ' . $bpjsMessage . ' (code: ' . $code . ')',
'suggestion' => 'Laporkan ke IT untuk investigasi lebih lanjut.',
'code' => $code
];
}
}
Contoh Implementasi Feedback di Frontend (JavaScript)
// handle error on AJAX BPJS request
function showBpjsError(errorObj) {
// errorObj: dari backend (lihat fungsi PHP di atas)
let msg = errorObj.user_message + '<br>' + '<em>' + errorObj.suggestion + '</em>';
$('#error_bpjs').html(msg).show();
}
Logika Khusus Handling Beberapa Error Code BPJS
Case: Error 212 (No SEP sudah pernah didaftarkan)
- Langsung request data SEP dengan parameter yang sama, tampilkan ke user jika memang sudah ada.
- Jangan bikin SEP baru, hindari double entry.
// pseudo code
if ($code == '212') {
$sep = getSepByCriteria($params);
if ($sep) {
// tampilkan SEP lama ke user
} else {
// fallback, suruh cek manual
}
}
Case: Error 201 (Peserta tidak ditemukan)
- Validasi ulang NIK/no kartu, tanya user soal kepesertaan.
- Jika peserta baru, suruh tunggu 1x24 jam.
- Jika data sudah benar, escalate ke admin BPJS.
Case: Error 500 (Server Error BPJS)
- Retry max 3x tiap 3-5 detik, jangan spam request.
- Jika tetap error, log dan tampilkan pesan maintenance ke user.
Case: Error 400 (Bad Request)
- Log body request ke file/error log. Sering typo key, format tanggal/kode salah.
- Cek dengan Postman/Swagger dulu sebelum nuduh BPJS bug.
Tips Otomatisasi Mapping dan Handling Error BPJS
1. Centralized Error Mapping di DB
- Semua pesan error dan saran tindakan mapping di tabel (lihat contoh SQL di atas).
- Tinggal update tabel kalau ada error baru, nggak perlu ubah kode tiap kali aturan BPJS berubah.
2. Logging Error Split Level
- Error BPJS: simpan lengkap kode, pesan BPJS, parameter request, timestamp, user yang request.
- Audit Trail: siapa retry/memaksa input, buat tracking fraud/kelalaian frontliner.
-- Table: bpjs_error_log
CREATE TABLE bpjs_error_log (
id SERIAL PRIMARY KEY,
code VARCHAR(10),
bpjs_message TEXT,
request_param JSONB,
user_id INT,
ts TIMESTAMP DEFAULT now()
);
3. Auto-Notification untuk Error Fatal
- Error 500, 404, 400 jika sering berturut-turut, trigger notifikasi ke admin IT via WA/Telegram.
- Set threshold, misal 10x dalam 10 menit, baru ping admin.
Contoh Studi Kasus Real: Antrian SEP Macet karena Error 500
Kasus: Suatu pagi, poli anak antrean SEP stuck. Semua request SEP dari SIMRS gagal. Error log: "metaData": {"code": "500", "message": "Internal server error"}.
- Retry manual 3x masih gagal.
- Frontend error mapping sudah benar, user lihat pesan: "Server BPJS sedang gangguan. Silakan coba lagi beberapa menit."
- Auto-notif WA ke admin IT langsung jalan karena threshold error 500 tercapai.
- Admin cek status di grup BPJS Pusat, ternyata memang ada maintenance.
- Setelah 15 menit, SEP bisa dibuat. Antrian jalan lagi. Semua error log terekam, data yang gagal bisa di-retry otomatis tanpa input ulang.
Cheat Sheet Error Code BPJS Untuk Ditulis di Meja Frontliner
Kode Pesan BPJS Penjelasan Action Cepat 201 Peserta tidak ditemukan NIK/Kartu salah, peserta non-aktif, data belum masuk BPJS. Cek NIK/kartu, pastikan peserta sudah aktif. Peserta baru tunggu 1x24 jam. 212 No SEP sudah pernah didaftarkan Data SEP sudah ada di BPJS. Cek SEP di SIMRS, jangan input lagi. 102 Data tidak lengkap Field wajib kosong/format salah. Periksa data input, lengkapi semua field. 412 Permintaan tidak sesuai aturan Ada field tidak comply aturan BPJS terbaru. Cek aturan, pastikan data sesuai regulasi. 400 Bad Request Format JSON/body salah. Review mapping data, perbaiki format. 404 Data tidak ditemukan/endpoint salah Resource/endpoint tidak ada. Laporkan ke IT, cek endpoint API. 500 Internal server error BPJS down/gangguan. Tunggu, retry maksimal 3x, lapor jika lebih dari 30 menit.Kesimpulan? Nggak Ada, Yang Ada Cheat Sheet!
Sobat IT RS, error BPJS itu nggak bisa hilang, tapi bisa dikendalikan. Ngga perlu tiap kali error langsung darah tinggi. Simpan saja mapping error code di backend, tampilkan pesan user-friendly, dan log semua kejadian buat bukti kalau ada yang nanya. Kalau error baru muncul, tinggal tambah ke tabel mapping, nggak perlu begadang revisi kode tiap malam Jumat. Biar hari-harimu ngoding tetap stabil, kepala tetap dingin, dan frontliner nggak perlu teriak-teriak lagi. Pokok e, mapping error + handle logis di kode = hidup lebih tenang.
PETIRS