# Integrasi BPJS pada Antrean

Panduan fitur integrasi BPJS pada modul Antrean, termasuk status job BPJS (PCare dan Antrean FKTP) serta fitur pengiriman ulang (resend) data PCare.

# Status Job BPJS pada Antrean

## Pengantar

Untuk setiap antrean pasien dengan penjamin **BPJS**, Dekacare secara otomatis mengirimkan data pendaftaran ke sistem BPJS melalui dua job (proses latar belakang). Status dari kedua job ini ditampilkan secara real-time pada kartu antrean, membantu petugas memantau keberhasilan sinkronisasi data dengan BPJS.

Pemahaman terhadap status job BPJS sangat penting untuk memastikan data kunjungan pasien tercatat dengan benar di sistem Jaminan Kesehatan Nasional.

## Jenis Job BPJS

Setiap antrean BPJS memiliki dua job yang berjalan secara otomatis:

<table id="bkmrk-badgenama-jobjob-typ"><thead><tr><th>Badge</th><th>Nama Job</th><th>Job Type</th><th>Fungsi</th></tr></thead><tbody><tr><td>**P**</td><td>Pendaftaran PCare</td><td>`pendaftaran_pcare`</td><td>Mengirimkan data pendaftaran kunjungan pasien ke layanan PCare BPJS</td></tr><tr><td>**A**</td><td>Antrean FKTP</td><td>`tambah_antrean_fktp`</td><td>Mengirimkan data antrean ke sistem antrean FKTP (Fasilitas Kesehatan Tingkat Pertama) BPJS</td></tr></tbody></table>

## Tampilan Badge Status

Status job ditampilkan dalam bentuk **badge kecil** pada baris detail kartu antrean. Badge hanya muncul untuk pasien dengan penjamin BPJS (`penjamin_id = 2`).

### Format Badge

Setiap badge menampilkan format: **\[Huruf\]: \[Status\]**

- **P: OK** — Pendaftaran PCare berhasil
- **P: Gagal** — Pendaftaran PCare gagal
- **P: processing** — Pendaftaran PCare sedang diproses
- **A: OK** — Antrean FKTP berhasil
- **A: Gagal** — Antrean FKTP gagal
- **A: processing** — Antrean FKTP sedang diproses

### Warna Badge

<table id="bkmrk-statuswarna-badgeket"><thead><tr><th>Status</th><th>Warna Badge</th><th>Keterangan</th></tr></thead><tbody><tr><td>**OK (Success)**</td><td><span style="color: #166534; background: #dcfce7; padding: 2px 8px; border-radius: 4px;">Hijau</span></td><td>Job berhasil dieksekusi dan data terkirim ke BPJS</td></tr><tr><td>**Gagal (Failed)**</td><td><span style="color: #991b1b; background: #fee2e2; padding: 2px 8px; border-radius: 4px;">Merah</span></td><td>Job gagal, data tidak terkirim ke BPJS</td></tr><tr><td>**Processing**</td><td><span style="color: #92400e; background: #fef3c7; padding: 2px 8px; border-radius: 4px;">Kuning</span></td><td>Job sedang dalam antrian proses</td></tr><tr><td>**N/A**</td><td><span style="color: #6b7280; background: #e5e7eb; padding: 2px 8px; border-radius: 4px;">Abu-abu</span></td><td>Tidak ada data job tracker untuk antrean ini</td></tr></tbody></table>

## Nomor Antrean PCare

Selain badge status job, kartu antrean juga menampilkan **badge PCare** di area status (pojok kanan atas) yang menunjukkan nomor antrean PCare:

<table id="bkmrk-kondisitampilanwarna"><thead><tr><th>Kondisi</th><th>Tampilan</th><th>Warna</th></tr></thead><tbody><tr><td>Pendaftaran PCare sukses</td><td>**PCare: \[nomor\]**</td><td>Hijau (background hijau muda)</td></tr><tr><td>Pendaftaran PCare gagal</td><td>**PCare: 0**</td><td>Merah (background merah muda)</td></tr></tbody></table>

## Detail Error BPJS

Ketika badge status menunjukkan **Gagal**, petugas dapat melihat detail error dengan cara:

1. **Hover (arahkan kursor)** pada badge yang berstatus Gagal
2. Sistem akan menampilkan **tooltip** berisi pesan error dari BPJS
3. Pesan error ini berasal langsung dari respons API BPJS dan membantu mengidentifikasi penyebab kegagalan

<div class="callout info" id="bkmrk-tips%3A-pesan-error-da">**Tips:** Pesan error dari BPJS biasanya cukup deskriptif. Contoh umum: *“Nomor kartu BPJS tidak ditemukan”*, *“Pasien tidak aktif”*, *“Tanggal kunjungan tidak valid”*.

</div>## Validasi Status BPJS Sebelum Terima Antrean

Saat petugas menekan tombol **Terima** pada antrean BPJS, sistem melakukan validasi status job terlebih dahulu:

### Alur Validasi

1. Sistem memeriksa status **Pendaftaran PCare** (job type: `pendaftaran_pcare`)
2. Sistem memeriksa status **Antrean FKTP** (job type: `tambah_antrean_fktp`)
3. Jika **salah satu atau keduanya gagal**:
    - Dialog peringatan ditampilkan dengan detail error dari setiap job yang gagal
    - Petugas harus mengonfirmasi apakah tetap ingin melanjutkan penerimaan
4. Jika **keduanya sukses**: proses penerimaan berjalan normal tanpa peringatan tambahan

<div class="callout warning" id="bkmrk-peringatan%3A-menerima">**Peringatan:** Menerima antrean dengan status job BPJS gagal berarti data kunjungan pasien *belum* tercatat di sistem BPJS. Hal ini dapat berdampak pada:

- Klaim BPJS yang tidak dapat diproses
- Data kunjungan yang tidak tersinkronisasi
- Potensi penolakan klaim di kemudian hari

Disarankan untuk melakukan **Resend PCare** terlebih dahulu sebelum menerima antrean.

</div>## Panduan Penanganan Status Job

<table id="bkmrk-skenariotindakan-yan"><thead><tr><th>Skenario</th><th>Tindakan yang Disarankan</th></tr></thead><tbody><tr><td>P: OK, A: OK</td><td>Terima antrean seperti biasa</td></tr><tr><td>P: Gagal, A: OK</td><td>Coba **Resend PCare** terlebih dahulu. Jika tetap gagal, hubungi administrator</td></tr><tr><td>P: OK, A: Gagal</td><td>Terima antrean dengan konfirmasi. Antrean FKTP dapat di-handle manual</td></tr><tr><td>P: Gagal, A: Gagal</td><td>Coba **Resend PCare**. Jika gagal, konsultasikan dengan administrator sebelum menerima</td></tr><tr><td>P: Processing, A: Processing</td><td>Tunggu beberapa saat dan **Refresh** data. Job sedang dalam antrian proses</td></tr></tbody></table>

# Resend PCare

## Pengantar

Fitur **Resend PCare** memungkinkan petugas mengirim ulang data pendaftaran PCare/BPJS yang sebelumnya gagal. Fitur ini sangat penting untuk memastikan data kunjungan pasien BPJS tercatat dengan benar di sistem PCare tanpa harus membatalkan dan membuat ulang antrean.

## Kondisi Munculnya Tombol Resend PCare

Tombol Resend PCare **tidak selalu tampil** pada setiap kartu antrean. Sistem menampilkan tombol ini hanya jika **seluruh kondisi** berikut terpenuhi secara bersamaan:

<table id="bkmrk-nokondisiketerangan1"><thead><tr><th>No</th><th>Kondisi</th><th>Keterangan</th></tr></thead><tbody><tr><td>1</td><td>**Penjamin BPJS**</td><td>Pasien menggunakan penjamin BPJS (`penjamin_id = 2`)</td></tr><tr><td>2</td><td>**Jenis kunjungan Rawat Jalan**</td><td>Ruangan memiliki jenis kunjungan 1 (Rawat Jalan/Poliklinik)</td></tr><tr><td>3</td><td>**Ada kegagalan pengiriman**</td><td>Minimal salah satu kondisi berikut terpenuhi:- Pendaftaran PCare berstatus **gagal** atau belum terkirim
- Antrean FKTP berstatus **gagal** atau belum terkirim
- Tidak memiliki nomor antrean PCare (bernilai `0` atau kosong)

</td></tr></tbody></table>

<div class="callout info" id="bkmrk-catatan%3A-tombol-rese">**Catatan:** Tombol Resend PCare hanya muncul untuk antrean rawat jalan (jenis kunjungan 1), karena pendaftaran PCare khusus digunakan untuk layanan rawat jalan di FKTP. Antrean apotek, laboratorium, dan radiologi tidak memerlukan fitur ini.

</div>## Tampilan Tombol

Tombol Resend PCare ditampilkan sebagai tombol kecil dengan:

- **Ikon:** RefreshCw (panah melingkar) berwarna kuning
- **Variant:** `flat-warning`
- **Tooltip:** “Resend PCare” (muncul saat hover)
- **Posisi:** Di baris aksi kartu antrean, di samping tombol Panggil dan Batalkan

## Cara Menggunakan Resend PCare

1. Identifikasi kartu antrean BPJS yang memiliki status job gagal (badge P atau A berwarna merah)
2. Klik tombol **Resend PCare** (ikon panah melingkar kuning) pada kartu antrean
3. Sistem menampilkan **dialog konfirmasi**:  
    *“Apakah anda yakin ingin mengirim ulang data PCare untuk antrean #\[nomor antrean\]?”*
4. Klik **“Ya, Kirim Ulang”** untuk melanjutkan atau **“Batal”** untuk membatalkan
5. Jika dikonfirmasi, sistem akan memproses pengiriman ulang

## Proses Pengiriman Ulang

Setelah konfirmasi, sistem menjalankan proses berikut:

<table id="bkmrk-noprosesketerangan1d"><thead><tr><th>No</th><th>Proses</th><th>Keterangan</th></tr></thead><tbody><tr><td>1</td><td>**Disable Tombol**</td><td>Tombol berubah menjadi spinner untuk mencegah klik ganda</td></tr><tr><td>2</td><td>**Kirim Request**</td><td>Mengirim request POST ke API `antrian_ruangan/resend-pcare/[id]`</td></tr><tr><td>3</td><td>**Proses di Server**</td><td>Server mengirim ulang data pendaftaran ke layanan PCare BPJS</td></tr><tr><td>4</td><td>**Response**</td><td>Server mengembalikan status keberhasilan pengiriman</td></tr><tr><td>5</td><td>**Update Tampilan**</td><td>Data antrean dimuat ulang untuk memperbarui status badge</td></tr></tbody></table>

## Feedback Status Setelah Resend

### Pengiriman Berhasil

Jika pengiriman ulang **berhasil**:

- Notifikasi sukses: *“Data PCare berhasil dikirim ulang”*
- Data antrean di-refresh secara otomatis
- Badge status job akan berubah dari merah (Gagal) menjadi hijau (OK)
- Nomor antrean PCare akan terisi jika sebelumnya kosong

### Pengiriman Gagal

Jika pengiriman ulang **gagal**:

- Notifikasi error dengan prefix: *“INFO RESPON DARI BPJS:”* diikuti pesan error dari BPJS
- Atau pesan umum: *“Tidak dapat mengirim ulang data PCare”* jika error tidak berasal dari BPJS
- Badge status tetap berwarna merah

<div class="callout warning" id="bkmrk-peringatan%3A-jika-res">**Peringatan:** Jika resend berulang kali gagal, kemungkinan penyebabnya adalah:

- Data pasien BPJS tidak valid (nomor kartu, status kepesertaan)
- Layanan PCare BPJS sedang mengalami gangguan
- Konfigurasi BPJS pada faskes perlu diperiksa

Hubungi administrator atau tim IT untuk penanganan lebih lanjut.

</div>## Alur Kerja yang Disarankan

Berikut adalah alur kerja yang disarankan untuk menangani kegagalan job BPJS:

1. **Identifikasi** — Periksa badge status job (P dan A) pada kartu antrean BPJS
2. **Analisis** — Hover pada badge yang gagal untuk melihat detail error
3. **Resend** — Klik tombol Resend PCare untuk mengirim ulang data
4. **Verifikasi** — Periksa apakah badge berubah menjadi hijau setelah resend
5. **Terima** — Jika semua badge sudah hijau, terima antrean seperti biasa
6. **Eskalasi** — Jika resend tetap gagal, hubungi administrator

<div class="callout info" id="bkmrk-tips%3A-sebelum-melaku">**Tips:** Sebelum melakukan resend, pastikan koneksi internet stabil. Kegagalan pengiriman bisa disebabkan oleh masalah jaringan yang bersifat sementara.

</div>