# Antrean

Panduan penggunaan modul Antrean pada Dekacare

# Manajemen Antrean

Panduan lengkap manajemen antrean pasien pada sistem Dekacare, termasuk tampilan utama, filter, pencarian, panggilan pasien, penerimaan, dan pembatalan antrean.

# Halaman Utama Antrean

## Pengantar

Halaman Utama Antrean merupakan pusat kendali manajemen antrean pasien di Dekacare. Melalui halaman ini, petugas fasilitas kesehatan dapat memantau seluruh antrean pasien yang sedang menunggu pelayanan, melakukan panggilan, menerima kunjungan, hingga membatalkan antrean secara real-time.

Halaman ini dirancang agar alur kerja pendaftaran dan pelayanan pasien berjalan cepat dan terstruktur. Setiap antrean ditampilkan dalam bentuk **kartu interaktif** yang memuat informasi penting pasien secara ringkas.

## Hak Akses

Halaman Antrean dapat diakses oleh pengguna yang memiliki **permission `view antrean`**. Berikut peran (role) yang umumnya memiliki akses:

<table id="bkmrk-peranketeranganpenda"><thead><tr><th>Peran</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Pendaftaran**</td><td>Petugas loket pendaftaran yang menerima dan mengelola antrean pasien baru</td></tr><tr><td>**Dokter**</td><td>Tenaga medis yang memantau antrean pasien di poli masing-masing</td></tr><tr><td>**Perawat**</td><td>Tenaga kesehatan yang membantu alur pelayanan pasien</td></tr><tr><td>**Kasir**</td><td>Petugas pembayaran yang memantau status antrean</td></tr><tr><td>**Farmasi**</td><td>Petugas apotek yang menerima antrean resep obat</td></tr><tr><td>**Superadmin**</td><td>Administrator utama dengan akses penuh ke seluruh modul</td></tr><tr><td>**Admin**</td><td>Administrator fasilitas kesehatan dengan hak kelola sistem</td></tr></tbody></table>

<div class="callout info" id="bkmrk-catatan%3A-hak-akses-d">**Catatan:** Hak akses dapat dikustomisasi melalui manajemen role &amp; permission sesuai kebijakan fasilitas kesehatan Anda.

</div>## Tampilan Kartu Antrean

Setiap antrean pasien ditampilkan dalam bentuk kartu yang memuat informasi berikut:

### Informasi Utama

- **Nomor Antrean** — Ditampilkan dalam badge besar di sisi kiri kartu sebagai identifikasi utama urutan pasien
- **Nama Pasien** — Nama lengkap pasien yang terdaftar dalam antrean
- **Nomor Rekam Medis (No. RM)** — Ditampilkan dalam badge biru sebagai identitas unik pasien
- **Dokter** — Nama dokter yang dituju pasien, ditandai ikon *UserCheck*
- **Penjamin** — Jenis penjaminan pasien (BPJS, Umum, Asuransi), ditandai ikon *Shield*

### Badge Status Ruangan &amp; Jenis Kunjungan

- **Badge Ruangan** — Menampilkan nama poli atau departemen tujuan pasien dalam badge berwarna biru tua di pojok kanan atas kartu
- **Badge Sumber Antrean** — Menunjukkan asal pendaftaran:
    - `MJKN` — Pasien mendaftar melalui aplikasi Mobile JKN (berwarna biru info)
    - `Online` — Pasien mendaftar melalui kanal online lainnya (berwarna biru primer)

### Status BPJS (Khusus Pasien BPJS)

Untuk pasien dengan penjamin BPJS, kartu antrean menampilkan informasi tambahan:

- **Badge PCare** — Menampilkan nomor antrean PCare jika pendaftaran berhasil (hijau) atau status gagal (merah)
- **Badge P (Pendaftaran PCare)** — Status pengiriman data ke PCare: `OK` / `Gagal` / `Processing`
- **Badge A (Antrean FKTP)** — Status pengiriman antrean ke FKTP BPJS: `OK` / `Gagal` / `Processing`

## Estimasi Waktu Dilayani

Setiap kartu antrean menampilkan **estimasi waktu dilayani** di bagian bawah kartu, ditandai dengan ikon jam (*Clock*). Informasi ini membantu petugas mengetahui perkiraan kapan pasien akan mendapatkan pelayanan.

## Paginasi

Daftar antrean menampilkan **8 item per halaman** secara default. Navigasi paginasi tersedia di bagian bawah daftar dengan fitur:

- **Tombol Sebelumnya/Selanjutnya** — Berpindah antar halaman
- **Input Nomor Halaman** — Langsung menuju halaman tertentu dengan mengetik nomor halaman
- **Informasi Paginasi** — Menampilkan range data (contoh: *1–8 dari 24*)

<div class="callout info" id="bkmrk-tips%3A-gunakan-fitur-">**Tips:** Gunakan fitur pencarian dan filter untuk mempersempit daftar antrean agar lebih mudah menemukan pasien yang dicari tanpa harus berpindah halaman.

</div>## Tombol Aksi pada Kartu

Setiap kartu antrean menyediakan tombol aksi yang terletak di sisi kanan:

<table id="bkmrk-tombolikonfungsiperm"><thead><tr><th>Tombol</th><th>Ikon</th><th>Fungsi</th><th>Permission</th></tr></thead><tbody><tr><td>**Terima**</td><td>CheckCircle (hijau)</td><td>Menerima antrean dan membuka sesi kunjungan pasien</td><td>`accept antrean`</td></tr><tr><td>**Panggil**</td><td>PhoneCall (kuning)</td><td>Memanggil pasien menggunakan Text-to-Speech</td><td>`call antrean`</td></tr><tr><td>**Batalkan**</td><td>XCircle (merah)</td><td>Membatalkan antrean pasien</td><td>`cancel antrean`</td></tr><tr><td>**Resend PCare**</td><td>RefreshCw (kuning)</td><td>Mengirim ulang data PCare yang gagal (khusus BPJS)</td><td>Muncul otomatis saat kondisi terpenuhi</td></tr></tbody></table>

<div class="callout info" id="bkmrk-catatan%3A-tombol-aksi">**Catatan:** Tombol aksi hanya tampil sesuai permission pengguna. Klik pada area kartu (di luar tombol aksi) akan membuka detail antrean sesuai jenis kunjungan.

</div>

# Filter dan Pencarian Antrean

## Pengantar

Halaman Antrean menyediakan beberapa mekanisme filter dan pencarian yang memudahkan petugas menemukan antrean pasien tertentu secara cepat. Semua filter berada di **toolbar** bagian atas halaman dan dapat dikombinasikan satu sama lain untuk mempersempit hasil.

## Pencarian Berdasarkan No. RM atau Nama Pasien

Di sisi kiri toolbar terdapat **kolom pencarian** dengan placeholder *“Cari no. RM atau nama pasien...”*.

### Cara Menggunakan

1. Klik pada kolom pencarian atau langsung ketik kata kunci
2. Masukkan **Nomor Rekam Medis (No. RM)** atau **nama pasien** yang ingin dicari
3. Tekan tombol **Enter** pada keyboard untuk memulai pencarian
4. Sistem akan menampilkan antrean yang sesuai dengan kata kunci

<div class="callout info" id="bkmrk-tips%3A-pencarian-bers">**Tips:** Pencarian bersifat fleksibel — Anda dapat memasukkan sebagian nama atau nomor RM. Sistem akan mencocokkan secara otomatis.

</div>## Filter Berdasarkan Loket

Filter **Loket** digunakan untuk menampilkan antrean berdasarkan loket (counter) pelayanan tertentu.

### Cara Menggunakan

1. Klik tombol dropdown berlabel **“Loket”** di bagian toolbar kanan
2. Pilih salah satu loket yang tersedia dari daftar dropdown
3. Data antrean akan dimuat ulang sesuai loket yang dipilih
4. Tombol akan berubah warna menjadi **biru (primary)** menandakan filter aktif

<div class="callout warning" id="bkmrk-penting%3A-anda-harus-">**Penting:** Anda *harus* memilih loket terlebih dahulu sebelum daftar antrean ditampilkan. Jika belum memilih loket, sistem akan menampilkan pesan *“Silahkan pilih loket terlebih dahulu”*.

</div>## Filter Berdasarkan Ruangan

Filter **Ruangan** memungkinkan petugas menyaring antrean berdasarkan poli atau departemen tujuan pasien.

### Cara Menggunakan

1. Klik tombol dropdown berlabel **“Ruangan”**
2. Pilih ruangan atau poli yang diinginkan dari daftar
3. Pilih **“Semua Ruangan”** untuk menghapus filter ruangan
4. Daftar antrean akan langsung difilter sesuai ruangan yang dipilih

<div class="callout info" id="bkmrk-catatan%3A-daftar-ruan">**Catatan:** Daftar ruangan yang ditampilkan hanya mencakup ruangan aktif dengan jenis pelayanan rawat jalan (Poli).

</div>## Filter Berdasarkan Sumber

Filter **Sumber** menyaring antrean berdasarkan kanal asal pendaftaran pasien.

### Pilihan Filter Sumber

<table id="bkmrk-opsiketerangansemua-"><thead><tr><th>Opsi</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Semua Sumber**</td><td>Menampilkan seluruh antrean tanpa filter sumber</td></tr><tr><td>**MJKN**</td><td>Menampilkan antrean pasien yang mendaftar melalui aplikasi Mobile JKN</td></tr><tr><td>**Online**</td><td>Menampilkan antrean pasien yang mendaftar melalui kanal online lainnya</td></tr></tbody></table>

### Cara Menggunakan

1. Klik tombol dropdown berlabel **“Sumber”**
2. Pilih salah satu opsi sumber
3. Daftar antrean akan langsung difilter sesuai sumber yang dipilih

## Tombol Reset Filter

Tombol **Reset** berwarna kuning (gradient-warning) berfungsi mengembalikan seluruh filter ke kondisi awal.

### Cara Menggunakan

1. Klik tombol **Reset** (ikon panah melingkar) di toolbar kanan
2. Sistem akan:
    - Mengosongkan kolom pencarian
    - Menghapus filter loket yang dipilih
    - Menghapus filter ruangan
    - Menghapus filter sumber
    - Memuat ulang data antrean dari awal

## Tombol Refresh Data

Tombol **Refresh** (ikon panah melingkar dua arah) berfungsi memuat ulang data antrean tanpa mengubah filter yang sedang aktif.

### Cara Menggunakan

1. Klik tombol **Refresh** di ujung kanan toolbar
2. Ikon akan berubah menjadi **spinner** saat data sedang dimuat
3. Data antrean akan diperbarui dengan tetap mempertahankan halaman dan filter aktif

<div class="callout info" id="bkmrk-tips%3A-gunakan-tombol">**Tips:** Gunakan tombol Refresh secara berkala untuk memastikan data antrean selalu terkini, terutama saat terjadi pendaftaran pasien baru.

</div>## Kombinasi Filter

Semua filter dapat dikombinasikan secara bersamaan. Berikut contoh skenario:

<table id="bkmrk-skenariofilter-yang-"><thead><tr><th>Skenario</th><th>Filter yang Digunakan</th></tr></thead><tbody><tr><td>Mencari pasien BPJS di Poli Umum</td><td>Loket + Ruangan: Poli Umum + Sumber: MJKN</td></tr><tr><td>Mencari pasien tertentu di semua loket</td><td>Pencarian nama/No. RM</td></tr><tr><td>Melihat semua antrean online</td><td>Loket + Sumber: Online</td></tr></tbody></table>

# Panggil Pasien

## Pengantar

Fitur **Panggil Pasien** memungkinkan petugas memanggil pasien ke loket pelayanan menggunakan teknologi **Text-to-Speech (TTS)**. Dengan fitur ini, sistem akan mengumumkan nama pasien, tujuan ruangan, dan loket yang dituju secara otomatis melalui speaker komputer atau perangkat audio yang terhubung.

Fitur ini menggantikan panggilan manual dan membantu menciptakan suasana pelayanan yang lebih profesional serta teratur.

## Persyaratan

<table id="bkmrk-persyaratanketeranga"><thead><tr><th>Persyaratan</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Permission**</td><td>Pengguna harus memiliki permission `call antrean`</td></tr><tr><td>**Browser**</td><td>Browser harus mendukung Web Speech API (Chrome, Edge, Firefox terbaru)</td></tr><tr><td>**Loket**</td><td>Loket harus dipilih terlebih dahulu sebelum memanggil pasien</td></tr><tr><td>**Audio**</td><td>Perangkat harus memiliki speaker atau output audio aktif</td></tr></tbody></table>

## Cara Memanggil Pasien

1. Pastikan Anda telah memilih **Loket** pada dropdown filter di toolbar
2. Temukan kartu antrean pasien yang ingin dipanggil
3. Klik tombol **Panggil** (ikon telepon berwarna kuning) pada kartu antrean
4. Sistem akan melakukan proses berikut secara berurutan:
    1. Mengirim request ke server untuk mencatat panggilan dan memperbarui loket tujuan
    2. Memperbarui informasi loket pada kartu antrean
    3. Memainkan **suara dingdong** sebagai tanda awal pengumuman
    4. Mengumumkan panggilan menggunakan **Text-to-Speech** dalam Bahasa Indonesia

## Format Pengumuman Suara

Pengumuman suara yang dihasilkan mengikuti format baku berikut:

<div class="callout info" id="bkmrk-%E2%80%9Cpanggilan-kepada-%5Bn">*“Panggilan kepada **\[nama pasien\]**, dengan tujuan **\[nama ruangan\]**, silahkan ke **\[nama loket\]**”*

</div>### Contoh Pengumuman

- *“Panggilan kepada budi santoso, dengan tujuan Poli Umum, silahkan ke loket 1”*
- *“Panggilan kepada siti rahayu, dengan tujuan Poli Gigi, silahkan ke loket pelayanan”*

### Detail Teknis Pengumuman

<table id="bkmrk-elemensumber-datafor"><thead><tr><th>Elemen</th><th>Sumber Data</th><th>Format</th></tr></thead><tbody><tr><td>**Nama Pasien**</td><td>`antrean.pasien.nama`</td><td>Huruf kecil semua (lowercase)</td></tr><tr><td>**Ruangan Tujuan**</td><td>`antrean.ruangan.nama`</td><td>Sesuai data master ruangan</td></tr><tr><td>**Loket**</td><td>`antrean.loket.name`</td><td>Jika tidak diawali “loket”, otomatis ditambahkan prefix “loket”</td></tr></tbody></table>

## Suara Dingdong

Sebelum pengumuman TTS diputar, sistem akan memainkan **suara dingdong** terlebih dahulu. Jeda sekitar **2,25 detik** diberikan antara dingdong dan pengumuman suara agar pendengar siap menerima informasi.

## Sinkronisasi BPJS

Untuk pasien dengan penjamin **BPJS**, sistem secara otomatis mengirimkan notifikasi panggilan ke layanan antrean BPJS setelah panggilan lokal berhasil. Proses ini berjalan di latar belakang dan tidak mengganggu pengumuman suara lokal.

<div class="callout warning" id="bkmrk-perhatian%3A-jika-sink">**Perhatian:** Jika sinkronisasi panggilan ke BPJS gagal, sistem akan menampilkan pesan error dari BPJS. Kegagalan ini tidak mempengaruhi panggilan lokal yang sudah berhasil dilakukan.

</div>## Fallback Browser Tidak Mendukung TTS

Jika browser yang digunakan **tidak mendukung** Web Speech API, sistem akan menampilkan notifikasi:

<div class="callout warning" id="bkmrk-%E2%80%9Cbrowser-anda-tidak-">*“Browser anda tidak mendukung fitur ini — Silahkan gunakan browser lain untuk menggunakan fitur ini.”*

</div>### Rekomendasi Browser

- **Google Chrome** (disarankan) — Dukungan TTS terbaik
- **Microsoft Edge** — Dukungan penuh
- **Mozilla Firefox** — Dukungan terbatas pada versi terbaru

## Kondisi Khusus

<table id="bkmrk-kondisiperilaku-sist"><thead><tr><th>Kondisi</th><th>Perilaku Sistem</th></tr></thead><tbody><tr><td>Loket belum dipilih</td><td>Menampilkan pesan error *“Pilih loket terlebih dahulu”*</td></tr><tr><td>Nama pasien tidak tersedia</td><td>Menampilkan pesan *“Tidak dapat membaca nama pasien”*</td></tr><tr><td>Nama loket tidak mengandung kata “loket”</td><td>Sistem otomatis menambahkan prefix “loket”</td></tr><tr><td>Nama loket tidak tersedia</td><td>Menggunakan default *“loket pelayanan”*</td></tr><tr><td>Proses panggilan sedang berjalan</td><td>Tombol panggil dinonaktifkan (disabled) hingga proses selesai</td></tr></tbody></table>

# Terima Antrean

## Pengantar

Fitur **Terima Antrean** digunakan untuk menerima pasien dari daftar antrean dan secara otomatis membuka sesi kunjungan baru. Proses ini merupakan langkah penting yang menghubungkan antrean pendaftaran dengan modul kunjungan pasien di Dekacare.

Setelah antrean diterima, sistem akan membuat record kunjungan dan mengarahkan petugas ke halaman detail pasien untuk memulai pelayanan.

## Persyaratan

<table id="bkmrk-persyaratanketeranga"><thead><tr><th>Persyaratan</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Permission**</td><td>Pengguna harus memiliki permission `accept antrean`</td></tr><tr><td>**Status Antrean**</td><td>Antrean harus dalam status menunggu (belum diterima)</td></tr></tbody></table>

## Cara Menerima Antrean

1. Temukan kartu antrean pasien yang ingin diterima
2. Klik tombol **Terima** (tombol hijau dengan ikon centang) pada kartu antrean
3. Sistem akan menampilkan **dialog konfirmasi**:  
    *“Apakah anda yakin menerima antrean nomor tiket #\[nomor\]?”*
4. Klik **“Terima”** untuk melanjutkan atau **“Tidak”** untuk membatalkan
5. Jika dikonfirmasi, sistem akan:
    1. Membuat record kunjungan baru secara otomatis
    2. Menampilkan notifikasi *“Antrean berhasil diterima”*
    3. Mengarahkan (redirect) ke halaman kunjungan pasien berdasarkan No. RM

<div class="callout info" id="bkmrk-catatan%3A-selama-pros">**Catatan:** Selama proses penerimaan berlangsung, tombol Terima akan menampilkan *spinner* dan berubah teks menjadi “Proses...”. Tombol akan dinonaktifkan untuk mencegah klik ganda.

</div>## Peringatan BPJS Job Gagal

Untuk pasien dengan penjamin **BPJS**, sistem melakukan pengecekan status job BPJS sebelum menerima antrean. Jika terdapat job yang gagal, sistem akan menampilkan **dialog peringatan khusus**.

### Alur Validasi BPJS

1. Sistem memeriksa status **Pendaftaran PCare** dan **Antrean FKTP**
2. Jika salah satu atau keduanya berstatus **gagal**, dialog peringatan ditampilkan
3. Dialog menampilkan detail error dari masing-masing job yang gagal
4. Petugas dapat memilih:
    - **“Ya, Lanjutkan”** — Tetap menerima antrean meski BPJS gagal
    - **“Batal”** — Membatalkan penerimaan untuk menangani masalah BPJS terlebih dahulu

<div class="callout warning" id="bkmrk-peringatan%3A-menerima">**Peringatan:** Menerima antrean dengan status BPJS gagal berarti data pendaftaran atau antrean pasien *belum* tercatat di sistem BPJS. Pastikan Anda telah memahami konsekuensinya atau lakukan **Resend PCare** terlebih dahulu sebelum menerima antrean.

</div>### Contoh Dialog Peringatan BPJS

Dialog akan menampilkan informasi seperti:

- **Pendaftaran PCare:** <span style="color: red;">\[pesan error dari BPJS\]</span>
- **Tambah Antrean FKTP:** <span style="color: red;">\[pesan error dari BPJS\]</span>

Disertai pertanyaan: *“Yakin ingin didaftarkan visit?”*

## Proses Setelah Penerimaan

Setelah antrean berhasil diterima, sistem melakukan beberapa proses secara berurutan:

<table id="bkmrk-noprosesketerangan1b"><thead><tr><th>No</th><th>Proses</th><th>Keterangan</th></tr></thead><tbody><tr><td>1</td><td>**Buat Record Kunjungan**</td><td>Sistem membuat data kunjungan baru melalui API `antrian_ruangan/terima`</td></tr><tr><td>2</td><td>**Notifikasi Sukses**</td><td>Menampilkan toast *“Antrean berhasil diterima”*</td></tr><tr><td>3</td><td>**Refresh Data Antrean**</td><td>Data antrean dimuat ulang untuk memperbarui daftar</td></tr><tr><td>4</td><td>**Simpan Operasi**</td><td>Menyimpan operasi *openKunjungan* ke state aplikasi</td></tr><tr><td>5</td><td>**Redirect ke Kunjungan**</td><td>Mengarahkan ke halaman `/pasien/[no_rm]` untuk memulai pelayanan</td></tr></tbody></table>

## Penerimaan Antrean Apotek

Untuk antrean bertipe **Apotek** (jenis kunjungan 11), proses penerimaan memiliki alur tambahan:

1. Setelah konfirmasi, sistem menerima antrean dengan parameter khusus (`bypass_antrian_ruangan`)
2. Data kunjungan ID diperbarui pada detail order antrean
3. Sistem membuka tampilan **Summary Order Obat** untuk proses dispensing farmasi

## Penanganan Error

<table id="bkmrk-kondisi-errorperilak"><thead><tr><th>Kondisi Error</th><th>Perilaku Sistem</th></tr></thead><tbody><tr><td>Gagal membuat kunjungan</td><td>Menampilkan pesan error *“Tidak dapat menerima antrean”*</td></tr><tr><td>Koneksi terputus</td><td>Tombol kembali aktif, petugas dapat mencoba ulang</td></tr><tr><td>Response tidak valid</td><td>Proses dibatalkan, tidak ada redirect</td></tr></tbody></table>

# Batalkan Antrean

## Pengantar

Fitur **Batalkan Antrean** memungkinkan petugas membatalkan antrean pasien yang sudah terdaftar dalam daftar tunggu. Pembatalan antrean biasanya dilakukan ketika pasien tidak hadir, mendaftar ulang, atau terdapat kesalahan pada data pendaftaran.

Untuk pasien BPJS, pembatalan juga disinkronisasikan ke sistem BPJS secara otomatis.

## Persyaratan

<table id="bkmrk-persyaratanketeranga"><thead><tr><th>Persyaratan</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Permission**</td><td>Pengguna harus memiliki permission `cancel antrean`</td></tr><tr><td>**Status Antrean**</td><td>Antrean harus dalam status menunggu (belum diterima/selesai)</td></tr></tbody></table>

## Cara Membatalkan Antrean

1. Temukan kartu antrean pasien yang ingin dibatalkan
2. Klik tombol **Batalkan** (ikon X berwarna merah) pada kartu antrean
3. Sistem akan menampilkan **dialog konfirmasi**:  
    *“Apakah anda yakin membatalkan antrean nomor tiket #\[nomor\]?”*
4. Klik **“Ya”** untuk mengonfirmasi pembatalan atau **“Tidak”** untuk membatalkan aksi
5. Jika dikonfirmasi, sistem akan memproses pembatalan

## Proses Pembatalan

Setelah konfirmasi, sistem menjalankan proses berikut:

<table id="bkmrk-noprosesketerangan1n"><thead><tr><th>No</th><th>Proses</th><th>Keterangan</th></tr></thead><tbody><tr><td>1</td><td>**Notifikasi Proses**</td><td>Menampilkan toast *“Sedang membatalkan antrean, harap tunggu...”*</td></tr><tr><td>2</td><td>**Request Pembatalan**</td><td>Mengirim request ke API `antrian_ruangan/batal/[id]`</td></tr><tr><td>3</td><td>**Sinkronisasi BPJS**</td><td>Untuk pasien BPJS, secara otomatis membatalkan data di sistem BPJS</td></tr><tr><td>4</td><td>**Hapus dari Daftar**</td><td>Kartu antrean dihapus dari daftar tampilan</td></tr><tr><td>5</td><td>**Notifikasi Sukses**</td><td>Menampilkan toast *“Antrean berhasil dibatalkan”*</td></tr></tbody></table>

## Sinkronisasi Pembatalan ke BPJS

Untuk antrean pasien dengan penjamin **BPJS**, pembatalan antrean juga dikirimkan ke sistem BPJS. Berikut skenario yang mungkin terjadi:

### Pembatalan Berhasil Sepenuhnya

Antrean berhasil dibatalkan di Dekacare *dan* di sistem BPJS. Petugas akan menerima notifikasi sukses.

### Pembatalan Berhasil dengan Peringatan BPJS

Antrean berhasil dibatalkan di Dekacare, **namun** terjadi kendala saat sinkronisasi ke BPJS. Dalam kasus ini, sistem menampilkan **dua notifikasi**:

1. **Notifikasi sukses** — Konfirmasi pembatalan lokal berhasil
2. **Notifikasi peringatan** — *“Pembatalan berhasil, namun terjadi masalah sinkronisasi dengan BPJS. Silakan hubungi administrator jika diperlukan.”*

<div class="callout warning" id="bkmrk-peringatan%3A-jika-mun">**Peringatan:** Jika muncul peringatan sinkronisasi BPJS, artinya data pembatalan *belum* tercatat di sistem BPJS. Petugas perlu menghubungi administrator untuk menindaklanjuti pembatalan secara manual di portal BPJS jika diperlukan.

</div>## Penanganan Error

<table id="bkmrk-kondisi-errorperilak"><thead><tr><th>Kondisi Error</th><th>Perilaku Sistem</th></tr></thead><tbody><tr><td>Gagal membatalkan antrean</td><td>Menampilkan pesan error *“Tidak dapat membatalkan antrean”*. Antrean tetap dalam daftar.</td></tr><tr><td>Koneksi terputus</td><td>Loading overlay dihilangkan, petugas dapat mencoba ulang</td></tr><tr><td>BPJS sinkronisasi gagal</td><td>Pembatalan lokal tetap berhasil, peringatan BPJS ditampilkan</td></tr></tbody></table>

## Hal yang Perlu Diperhatikan

<div class="callout info" id="bkmrk-tips-untuk-petugas%3Ap">**Tips untuk Petugas:**

- Pastikan Anda memverifikasi identitas pasien sebelum membatalkan antrean
- Pembatalan bersifat **permanen** — antrean yang sudah dibatalkan tidak dapat dikembalikan
- Jika pasien ingin mendaftar ulang setelah pembatalan, proses pendaftaran harus dilakukan dari awal
- Untuk pasien BPJS, perhatikan notifikasi peringatan sinkronisasi dan tindak lanjuti jika diperlukan

</div>

# Antrean Per Jenis Layanan

Panduan antrean berdasarkan jenis layanan khusus: Apotek (Farmasi), Laboratorium, dan Radiologi. Masing-masing memiliki tampilan ringkasan dan fitur yang disesuaikan.

# Antrean Apotek

## Pengantar

Antrean Apotek merupakan tampilan khusus untuk mengelola antrean pasien yang memerlukan pelayanan **farmasi/apotek**. Antrean ini secara otomatis teridentifikasi berdasarkan jenis kunjungan **11 (Farmasi)** pada data ruangan.

Ketika petugas mengklik kartu antrean bertipe apotek, sistem akan menampilkan **modal ringkasan order obat** yang memuat detail lengkap resep pasien, berbeda dengan tampilan detail pendaftaran untuk jenis kunjungan lainnya.

## Identifikasi Antrean Apotek

Sistem mengidentifikasi antrean apotek secara otomatis berdasarkan nilai `jenis_kunjungan` pada data ruangan:

<table id="bkmrk-parameternilaiketera"><thead><tr><th>Parameter</th><th>Nilai</th><th>Keterangan</th></tr></thead><tbody><tr><td>`ruangan.jenis_kunjungan`</td><td>`11`</td><td>Menandakan antrean bertipe Farmasi/Apotek</td></tr></tbody></table>

## Ringkasan Pesanan Obat

Saat kartu antrean apotek diklik, sistem menampilkan modal **“Summary Order Obat”** yang memuat informasi lengkap pesanan resep pasien.

### Flag Kondisi Pasien

Di bagian atas modal, ditampilkan **empat flag kondisi pasien** dalam bentuk switch (toggle) yang bersifat read-only:

<table id="bkmrk-flagketeranganganggu"><thead><tr><th>Flag</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Gangguan Fungsi Ginjal**</td><td>Menandakan pasien memiliki gangguan fungsi ginjal yang memerlukan perhatian khusus dalam peracikan obat</td></tr><tr><td>**Menyusui**</td><td>Menandakan pasien sedang dalam masa menyusui</td></tr><tr><td>**Hamil**</td><td>Menandakan pasien sedang hamil, memerlukan penyesuaian obat</td></tr><tr><td>**CITO**</td><td>Menandakan pesanan obat bersifat *urgent*/darurat dan harus diprioritaskan</td></tr></tbody></table>

<div class="callout warning" id="bkmrk-perhatian%3A-perhatika">**Perhatian:** Perhatikan flag-flag ini dengan seksama sebelum memproses obat. Kondisi **Gangguan Ginjal**, **Hamil**, dan **Menyusui** dapat mempengaruhi jenis dan dosis obat yang diberikan.

</div>### Mode Tampilan Resep

Ringkasan order obat mendukung tiga mode tampilan resep:

<table id="bkmrk-modeketeranganmanual"><thead><tr><th>Mode</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Manual**</td><td>Menampilkan tabel detail obat dengan kolom nama, jumlah, harga, dan total</td></tr><tr><td>**Draw**</td><td>Menampilkan gambar resep yang ditulis tangan secara digital</td></tr><tr><td>**Text**</td><td>Menampilkan resep dalam format teks bebas</td></tr></tbody></table>

### Detail Obat (Mode Manual)

Untuk resep mode manual, tabel menampilkan informasi detail per item obat:

<table id="bkmrk-kolomketerangannama-"><thead><tr><th>Kolom</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Nama Obat/Racik**</td><td>Nama produk obat beserta ukuran kemasan. Obat racikan ditandai badge hijau “Racikan” disertai nama grup racikan</td></tr><tr><td>**Jumlah**</td><td>Jumlah unit yang diresepkan</td></tr><tr><td>**Harga**</td><td>Harga satuan per unit obat. Untuk obat racikan menampilkan “Rp. -”</td></tr><tr><td>**Total**</td><td>Total harga (harga satuan x jumlah). Untuk obat racikan menampilkan total harga racikan</td></tr></tbody></table>

### Obat Racikan vs Non-Racikan

#### Obat Non-Racikan

- Menampilkan nama obat lengkap dengan ukuran kemasan
- Harga satuan dan total dihitung secara langsung
- Ditampilkan sebagai baris tunggal dalam tabel

#### Obat Racikan

- Ditandai dengan badge hijau bertuliskan **“Racikan”** disertai nama grup racikan
- Total harga ditampilkan pada baris utama
- Detail komposisi racikan (bahan-bahan) ditampilkan sebagai sub-baris (expandable) yang mencakup:
    - Nama bahan dan ukuran kemasan
    - Harga satuan per bahan (`@[harga] x [jumlah]`)
    - Subtotal per bahan

<div class="callout info" id="bkmrk-catatan%3A-detail-raci">**Catatan:** Detail racikan secara otomatis ditampilkan (expanded) untuk memudahkan verifikasi komposisi obat oleh petugas farmasi.

</div>## Penerimaan Antrean Apotek

Proses penerimaan antrean apotek memiliki alur yang sedikit berbeda dari antrean umum:

1. Klik tombol **Terima** pada kartu antrean apotek
2. Konfirmasi penerimaan melalui dialog
3. Sistem membuat record kunjungan dengan parameter khusus
4. Data kunjungan ID diperbarui pada order antrean
5. Modal **Summary Order Obat** terbuka secara otomatis untuk memulai proses dispensing

<div class="callout info" id="bkmrk-tips%3A-periksa-flag-k">**Tips:** Periksa flag kondisi pasien dan verifikasi detail obat sebelum memulai proses penyiapan obat untuk memastikan keamanan dan ketepatan pelayanan farmasi.

</div>

# Antrean Laboratorium

## Pengantar

Antrean Laboratorium merupakan tampilan khusus untuk mengelola antrean pasien yang memerlukan pemeriksaan **laboratorium**. Antrean ini teridentifikasi berdasarkan jenis kunjungan **4 (Laboratorium)** pada data ruangan.

Ketika petugas mengklik kartu antrean bertipe laboratorium, sistem akan menampilkan **modal ringkasan laboratorium** yang memuat informasi diagnosis, dokter pengirim, serta daftar tindakan lab yang diminta.

## Identifikasi Antrean Laboratorium

Sistem mengidentifikasi antrean laboratorium secara otomatis:

<table id="bkmrk-parameternilaiketera"><thead><tr><th>Parameter</th><th>Nilai</th><th>Keterangan</th></tr></thead><tbody><tr><td>`ruangan.jenis_kunjungan`</td><td>`4`</td><td>Menandakan antrean bertipe Laboratorium</td></tr></tbody></table>

## Ringkasan Laboratorium

Saat kartu antrean laboratorium diklik, sistem menampilkan modal **“Summary Laboratorium”** yang memuat informasi permintaan pemeriksaan lab.

### Informasi Diagnosis

Di bagian atas modal ditampilkan **diagnosis pasien** yang menjadi dasar permintaan pemeriksaan laboratorium.

- **Diagnosa** — Diagnosis klinis pasien yang ditetapkan oleh dokter pengirim. Jika belum diisi, ditampilkan teks *“Diagnosa tidak diisi”* dalam warna abu-abu

### Dokter Pengirim

Informasi **dokter perujuk/pengirim** yang meminta pemeriksaan laboratorium:

- Ditampilkan dengan format lengkap: *\[gelar depan\]. \[nama\] , \[gelar belakang\]*
- Contoh: *dr. Ahmad Susanto, Sp.PD*
- Jika tidak tersedia, ditampilkan teks *“Dokter Perujuk tidak diisi”*

### Flag Kondisi Pemeriksaan

Dua flag penting ditampilkan sebagai switch (toggle) read-only:

<table id="bkmrk-flagketerangancitome"><thead><tr><th>Flag</th><th>Keterangan</th></tr></thead><tbody><tr><td>**CITO**</td><td>Menandakan pemeriksaan bersifat *urgent*/darurat dan harus diprioritaskan dalam pelayanan laboratorium</td></tr><tr><td>**Puasa**</td><td>Menandakan pasien harus dalam kondisi puasa untuk pemeriksaan tertentu (misalnya: gula darah puasa, profil lipid)</td></tr></tbody></table>

<div class="callout warning" id="bkmrk-perhatian%3A-pastikan-">**Perhatian:** Pastikan status **CITO** dan **Puasa** sudah diverifikasi sebelum melakukan pengambilan sampel. Pemeriksaan CITO harus didahulukan, dan status puasa mempengaruhi validitas hasil pemeriksaan tertentu.

</div>### Daftar Tindakan Laboratorium

Bagian utama modal menampilkan **tabel daftar tindakan** yang diminta:

<table id="bkmrk-kolomketerangantinda"><thead><tr><th>Kolom</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Tindakan**</td><td>Nama pemeriksaan laboratorium yang diminta (contoh: Darah Lengkap, GDS, Profil Lipid, dll.)</td></tr></tbody></table>

Tabel ditampilkan dalam area scrollable dengan tinggi maksimum yang memungkinkan petugas melihat seluruh daftar tindakan meski jumlahnya banyak.

### Informasi Pembuat

Di bagian bawah modal ditampilkan informasi **“Dibuat oleh”** yang menunjukkan petugas yang membuat permintaan pemeriksaan, lengkap dengan gelar profesi.

## Alur Kerja Petugas Lab

1. Buka halaman Antrean dan pilih loket yang sesuai
2. Identifikasi kartu antrean bertipe Laboratorium (ditandai badge ruangan laboratorium)
3. Klik kartu untuk melihat **ringkasan pemeriksaan**
4. Verifikasi:
    - Diagnosis pasien
    - Dokter pengirim
    - Status CITO dan Puasa
    - Daftar tindakan yang diminta
5. Klik tombol **Terima** untuk menerima antrean dan memulai proses pemeriksaan

<div class="callout info" id="bkmrk-tips%3A-untuk-pemeriks">**Tips:** Untuk pemeriksaan dengan flag **CITO** aktif, prioritaskan penerimaan antrean tersebut agar pasien segera mendapatkan pelayanan laboratorium.

</div>

# Antrean Radiologi

## Pengantar

Antrean Radiologi merupakan tampilan khusus untuk mengelola antrean pasien yang memerlukan pemeriksaan **radiologi** (rontgen, USG, CT-Scan, MRI, dll.). Antrean ini teridentifikasi berdasarkan jenis kunjungan **5 (Radiologi)** pada data ruangan.

Ketika petugas mengklik kartu antrean bertipe radiologi, sistem akan menampilkan **modal ringkasan radiologi** yang memuat informasi diagnosis, dokter pengirim, flag kondisi pasien, serta daftar prosedur radiologi yang diminta.

## Identifikasi Antrean Radiologi

Sistem mengidentifikasi antrean radiologi secara otomatis:

<table id="bkmrk-parameternilaiketera"><thead><tr><th>Parameter</th><th>Nilai</th><th>Keterangan</th></tr></thead><tbody><tr><td>`ruangan.jenis_kunjungan`</td><td>`5`</td><td>Menandakan antrean bertipe Radiologi</td></tr></tbody></table>

## Ringkasan Radiologi

Saat kartu antrean radiologi diklik, sistem menampilkan modal **“Summary Radiologi”** yang memuat informasi permintaan pemeriksaan radiologi.

### Informasi Diagnosis

Di bagian atas modal ditampilkan **diagnosis pasien** yang menjadi dasar permintaan pemeriksaan radiologi.

- **Diagnosa** — Diagnosis klinis pasien. Jika belum diisi, ditampilkan teks *“Diagnosa tidak diisi”* dalam warna abu-abu

### Dokter Pengirim

Informasi **dokter perujuk/pengirim** yang meminta pemeriksaan radiologi:

- Ditampilkan dengan format lengkap: *\[gelar depan\]. \[nama\] , \[gelar belakang\]*
- Contoh: *dr. Siti Aminah, Sp.Rad*
- Jika tidak tersedia, ditampilkan teks *“Dokter Perujuk tidak diisi”*

### Flag Kondisi Pasien

Empat flag penting ditampilkan sebagai switch (toggle) read-only:

<table id="bkmrk-flagketeranganpentin"><thead><tr><th>Flag</th><th>Keterangan</th><th>Pentingnya</th></tr></thead><tbody><tr><td>**CITO**</td><td>Menandakan pemeriksaan bersifat *urgent*/darurat</td><td>Pemeriksaan harus diprioritaskan</td></tr><tr><td>**Puasa**</td><td>Menandakan pasien harus dalam kondisi puasa</td><td>Relevan untuk pemeriksaan tertentu</td></tr><tr><td>**Alergi Kontras**</td><td>Menandakan pasien memiliki riwayat alergi terhadap zat kontras</td><td>**Kritis** — Memerlukan perhatian khusus jika prosedur membutuhkan kontras</td></tr><tr><td>**Hamil**</td><td>Menandakan pasien sedang hamil</td><td>**Kritis** — Paparan radiasi harus diminimalkan atau prosedur perlu dievaluasi ulang</td></tr></tbody></table>

<div class="callout warning" id="bkmrk-penting-%E2%80%94-keselamata">**PENTING — Keselamatan Pasien:**

- **Alergi Kontras:** Jika flag ini aktif, pastikan untuk melakukan protokol pencegahan alergi atau menghindari penggunaan zat kontras sebelum prosedur
- **Hamil:** Jika flag ini aktif, evaluasi ulang kebutuhan pemeriksaan radiologi. Paparan radiasi pada ibu hamil memerlukan justifikasi medis yang kuat dan persetujuan dokter pengirim

</div>### Daftar Tindakan Radiologi

Bagian utama modal menampilkan **tabel daftar prosedur** yang diminta:

<table id="bkmrk-kolomketerangantinda"><thead><tr><th>Kolom</th><th>Keterangan</th></tr></thead><tbody><tr><td>**Tindakan**</td><td>Nama prosedur radiologi yang diminta (contoh: Foto Thorax PA, USG Abdomen, CT-Scan Kepala, dll.)</td></tr></tbody></table>

Tabel ditampilkan dalam area scrollable untuk mengakomodasi daftar prosedur yang panjang.

### Informasi Pembuat

Di bagian bawah modal ditampilkan informasi **“Dibuat oleh”** yang menunjukkan petugas yang membuat permintaan pemeriksaan radiologi.

## Perbedaan dengan Antrean Laboratorium

Meskipun tampilan ringkasan radiologi mirip dengan laboratorium, terdapat perbedaan penting:

<table id="bkmrk-aspeklaboratoriumrad"><thead><tr><th>Aspek</th><th>Laboratorium</th><th>Radiologi</th></tr></thead><tbody><tr><td>**Flag Kondisi**</td><td>CITO, Puasa</td><td>CITO, Puasa, **Alergi Kontras**, **Hamil**</td></tr><tr><td>**Jenis Kunjungan**</td><td>4</td><td>5</td></tr><tr><td>**Judul Modal**</td><td>Summary Laboratorium</td><td>Summary Radiologi</td></tr><tr><td>**Pertimbangan Keselamatan**</td><td>Verifikasi puasa</td><td>Verifikasi alergi kontras dan status kehamilan</td></tr></tbody></table>

## Alur Kerja Petugas Radiologi

1. Buka halaman Antrean dan pilih loket yang sesuai
2. Identifikasi kartu antrean bertipe Radiologi
3. Klik kartu untuk melihat **ringkasan pemeriksaan**
4. Verifikasi dengan teliti:
    - Diagnosis pasien dan kesesuaian prosedur
    - Dokter pengirim
    - **Flag Alergi Kontras** — Lakukan protokol pencegahan jika aktif
    - **Flag Hamil** — Konsultasikan dengan dokter pengirim jika aktif
    - Status CITO untuk prioritas pelayanan
    - Daftar prosedur yang diminta
5. Klik tombol **Terima** untuk menerima antrean dan memulai proses pemeriksaan

<div class="callout info" id="bkmrk-tips%3A-selalu-lakukan">**Tips:** Selalu lakukan verifikasi ganda (double-check) terhadap flag **Alergi Kontras** dan **Hamil** sebelum memulai prosedur radiologi. Keselamatan pasien adalah prioritas utama.

</div>

# 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>