Bedakan status sebelum merancang tombol

Permintaan booking berarti pasien memilih dokter, tanggal, dan slot, tetapi belum tentu hadir. Appointment adalah jadwal yang telah diterima. Registrasi menghubungkan appointment dengan pasien yang akan dilayani. Antrean menandai pasien sudah masuk proses pelayanan pada hari tersebut.

Pemisahan ini mencegah pasien online otomatis masuk rekam medis sebelum identitas diperiksa. Data pasien baru sebaiknya dibuat ketika admin menekan registrasi, meninjau informasi, dan mengonfirmasi pendaftaran ke antrean.

Bangun slot dari jadwal dokter

Jadwal perlu menyimpan waktu mulai, waktu akhir, serta jumlah slot. Jika rentang 11.00–13.00 memiliki dua slot, sistem dapat membaginya menjadi dua unit pelayanan tanpa mengubah label rentang utama. Slot yang terisi tetap tampil, tetapi tidak dapat dipilih.

  • Hijau untuk slot yang masih tersedia.
  • Merah untuk slot yang sudah terisi.
  • Abu-abu untuk waktu yang telah lewat atau tidak dapat dipesan.
  • Override admin menyimpan waktu mulai dan akhir secara eksplisit.
  • Konflik waktu memberi peringatan sebelum appointment dibuat.

Cegah booking ganda secara atomik

Pengecekan ketersediaan di frontend tidak cukup. Backend harus mengunci atau memvalidasi slot saat transaksi disimpan. Dua pasien yang memilih kotak sama dalam waktu berdekatan tidak boleh sama-sama menerima konfirmasi.

Ketika appointment dibatalkan atau dipindahkan, slot lama harus kembali tersedia dalam transaksi yang sama. Audit mencatat siapa yang membatalkan, kapan, dan alasan bila diperlukan.

Kenali pasien lama tanpa mengubah data secara sembarang

NIK dapat digunakan sebagai pencocokan kuat apabila pasien memasukkannya dengan benar. Jika nama atau nomor telepon yang dikirim berbeda dengan data lama, jangan langsung menimpa rekam medis. Tampilkan data lama kepada admin saat registrasi dan minta konfirmasi perubahan.

Untuk pencarian manual, tampilkan beberapa pasien terbaru terlebih dahulu. Pasien lain dicari setelah pengguna memasukkan minimal tiga karakter dan hasil dipaginasi dari server. Cara ini lebih cepat dan lebih aman daripada memuat seluruh database pasien ke browser.

Gunakan WhatsApp sebagai kanal, bukan sumber kebenaran

Agent WhatsApp dapat membaca ketersediaan, membantu memilih slot, dan meminta konfirmasi. Namun penyimpanan appointment harus memakai API booking yang sama dengan halaman publik dan admin. Dengan demikian aturan bentrok, reschedule, serta pembatalan tetap konsisten.

Reminder sebaiknya menyebut identitas klinik, dokter, tanggal, jam, dan cara mengubah jadwal. Hindari mengirim detail klinis sensitif. Pesan harus menghormati persetujuan kontak pasien dan pilihan kanal komunikasi.

Kontrol spam dan konfirmasi pasien

Form publik perlu rate limit per IP dan perangkat, challenge sederhana, serta validasi server. Halaman konfirmasi harus memiliki ID yang sulit ditebak dan hanya menampilkan informasi yang diperlukan. Jika bukti disimpan sebagai gambar, jangan memasukkan data lebih banyak daripada yang dibutuhkan pasien.