Kategori 01
01. Dashboard & Ringkasan
Dashboard Owner
Ringkasan kinerja klinik dalam satu layar: pasien hari ini, appointment masuk, pendapatan minggu ini, dan grafik tren. Cocok untuk pemilik klinik yang ingin cek kondisi operasi tanpa harus buka 5 menu berbeda.
- Stat card: appointment hari ini, pasien baru bulan ini, pendapatan, recall pending
- Grafik appointment harian + utilisasi dental chair
- Top treatments minggu ini (paling banyak dipesan)
- Notifikasi reminder yang gagal kirim
- Filter per klinik (multi-clinic)
Kategori 02
02. Akuisisi & Marketing — A1 / PRD §17
Landing Page Klinik
Halaman publik klinik dengan hero, layanan, dokter, testimoni, FAQ, gallery, dan booking CTA. SEO-optimized dengan JSON-LD Dentist schema.
- Hero dengan CTA "Booking Online"
- Showcase layanan + harga indikatif
- Profil dokter + spesialisasi
- Testimoni pasien + rating
- FAQ dengan FAQPage schema
- JSON-LD Dentist + LocalBusiness
- OG meta + canonical
Online Booking (No Login)
Pasien booking appointment tanpa akun via wizard 5-step: pilih klinik → kategori layanan → dokter & tanggal → slot waktu → konfirmasi dengan data diri.
- Wizard 5-step (clinic → service → doctor+date → slot → confirm)
- Available slot real-time (filter working hours + booked slot)
- Triage level + pain score
- Booking number untuk pasien
- WA confirmation otomatis
Dokumentasi Publik
Halaman dokumentasi yang bisa di-edit dari admin — untuk artikel edukasi pasien (cara sikat gigi, kapan harus ke dokter, FAQ scaling, dll.). SEO-indexable.
- Listing semua artikel terbit
- Per-artikel SEO meta + canonical
- Markdown rendering
- Cross-link antar artikel
- Included di sitemap
Kategori 03
03. Multi-Klinik & Staff — PRD §1 & §11
Doctor Management
Profil dokter — STR, SIP, spesialisasi, pengalaman, working hours per klinik, fee split, dan public-availability untuk online booking.
- STR & SIP tracking (expiry alert)
- Spesialisasi & sub-spesialisasi
- Working hours per hari per klinik
- Fee split (% ke klinik vs ke dokter)
- Public profile (foto, bio, layanan) untuk landing
Multi-Klinik (Cabang)
Manajemen multi-cabang klinik dengan clinic switcher di topbar, data segregation per klinik, dan konsolidasi report.
- CRUD cabang (nama, alamat, kontak)
- Clinic switcher di topbar (real-time switch)
- Data segregation per role (assigned clinics)
- Konsolidasi report cross-cabang (super_admin)
- Dental chair per cabang
User & Role Management
Staf klinik dengan role-based access (super_admin, owner, doctor, nurse, front_office, cashier) via Spatie Permission. 2FA + Passkey support.
- Multi-role (Spatie permission)
- Per-clinic assignment (multi-clinic staff)
- 2FA TOTP + Passkey (FIDO2/WebAuthn)
- Activity log per user
- Soft-disable (suspend tanpa hapus)
Shift Schedule Staff
Jadwal shift staf (dokter, perawat, FO, kasir). 6 tipe shift: regular, morning, afternoon, evening, on_call, off.
- Per-user per-tanggal
- Multi-shift (morning + evening hari yang sama)
- On-call & off-day tracking
- Linked ke Attendance untuk verify hadir
- Multi-clinic scoped
Attendance / Absensi
Catat kehadiran staf — clock in/out, status (present/late/absent/sick/leave/half_day), terlambat berapa menit, lembur berapa menit.
- Clock in + clock out
- 6 status: present, late, absent, sick, leave, half_day
- Auto-calculate late_minutes vs shift start
- Overtime tracking
- Linked ke Shift (verify shift attendance)
- Unique per-user per-tanggal
Kategori 04
04. Registrasi Pasien — A2 / PRD §2
CRM Pasien Lengkap
Database pasien dengan riwayat medis, alergi, dokumen, keluarga, vital signs, dan referensi rujukan — terintegrasi dengan odontogram, treatment plan, dan invoice.
- Profil pasien dengan foto, NIK, BPJS, alamat lengkap
- Riwayat medis & dental history (multi-record)
- Alergi obat & material — flag warning otomatis di prescription
- Dokumen pasien (informed consent, KTP, rujukan)
- Riwayat keluarga (genetik) + relasi antar-pasien
- Vital signs (tensi, nadi, suhu) — chart trend
Family Account Linking
Hubungkan beberapa pasien sebagai satu keluarga (suami/istri/anak/wali). Useful untuk family package, billing terpusat, dan history medis genetik.
- Relasi: pasangan / orang tua / anak / saudara / wali
- Kepala keluarga sebagai primary contact
- Foundation untuk family package & shared deposit
- History medis lintas anggota (untuk faktor genetik)
Dokumen Pasien
Upload & manage dokumen pasien — KTP, kartu BPJS, kartu asuransi, surat rujukan, informed consent lama, rekam medis lama dari klinik sebelumnya.
- 7 tipe dokumen (KTP, BPJS, Asuransi, Rujukan, Consent, RM lama, Lainnya)
- Multi-file per pasien
- Preview & download
- Linked ke pasien (one-to-many)
- Audit trail siapa yang upload
Riwayat Medis Pasien
Riwayat penyakit sistemik (kardio, diabetes, hipertensi, hemofili, kanker, kehamilan, dll). Critical untuk drug interaction & risiko tindakan.
- 10 kategori kondisi (kardiovaskular, endokrin, hematologi, autoimun, dll.)
- Field obat yang dikonsumsi → drug interaction screen
- Flag "masih diderita" untuk warning saat tindakan
- Tanggal diagnosis untuk timeline
- Foundation untuk auto-warning di odontogram & prescription
Riwayat Dental Pasien
Tindakan dental sebelumnya — di klinik kita ATAU di klinik lain. Penting untuk continuity of care & treatment planning.
- Tindakan + nomor gigi (FDI) + tanggal
- Catatan klinik asal (kalau dari luar)
- Timeline lengkap per pasien
- Linked ke odontogram untuk kontekstual
Alergi Pasien
CRITICAL field — alergi obat (penisilin, NSAID, lidocaine, dll.) dan material (latex, nikel). Auto-warning di prescription & anesthesia log.
- Severity: mild / moderate / severe / anaphylaxis
- Detail reaksi yang pernah terjadi
- Multi-allergen per pasien
- Auto-warning di Prescription Manager & Anesthesia Log
- High severity → prominent flag di patient card
Rujukan Pasien
Rujukan masuk (pasien dirujuk ke kami) atau rujukan keluar (kami rujuk ke spesialis lain). Tracking lengkap dengan workflow status.
- Direction: incoming (masuk) / outgoing (keluar)
- Klinik asal/tujuan + dokter perujuk
- Workflow status (pending / in_progress / completed / cancelled)
- Alasan rujukan + diagnosis
- Foundation untuk referral commission program
Kategori 05
05. Appointment & Scheduling — A3-A4 / PRD §3
Appointment Management
Manajemen jadwal pasien dengan triage urgensi, multi-dokter, multi-chair, dan workflow status (booked → confirmed → arrived → in-treatment → done → no-show).
- Slot booking per dokter + dental chair
- Triage level: routine, urgent, emergency
- Workflow status lengkap dengan timestamp
- Confirmation reminder otomatis (WA / email)
- No-show tracking + auto-recall ke pasien
Kalender Multi-Dokter
Visual kalender bulan/minggu/hari untuk lihat utilisasi semua dokter dan chair sekaligus. Drag-drop reschedule, color-coded per status.
- View: month / week / day
- Color per status & per dokter
- Klik slot kosong → quick-create appointment
- Tampil working hours per dokter (overlay)
- Print harian (jadwal dokter)
Dental Chair Management
CRUD dental unit / chair — kode, lokasi ruangan, dan status real-time (available / in_use / maintenance / broken). Dipakai oleh booking wizard untuk filter slot.
- Multi-chair per klinik
- Status real-time: available / in_use / maintenance / broken
- Lokasi ruangan (untuk wayfinding pasien)
- Soft-disable chair sedang rusak panjang
- Linked ke Appointment slot booking
Jam Kerja Dokter
Editor jam kerja per dokter per hari — start/end time, durasi slot booking, dan flag hari libur. Slot booking publik otomatis ngikut.
- Per-dokter per-hari (7 hari/minggu)
- Durasi slot custom (5-240 menit)
- Flag hari libur (dokter off)
- Auto-generate available slots di booking wizard
- Filter per dokter untuk lihat schedule lengkap
Block Time (Cuti/Meeting)
Block jadwal dokter untuk cuti, meeting, sakit, training, atau istirahat. Booking publik otomatis skip slot yang ke-block.
- 6 tipe: vacation, meeting, sick_leave, training, lunch, other
- Range datetime per blocking
- Per-dokter atau klinik-wide
- Auto-block dari booking slot generation
- Soft delete untuk audit
Waiting List / Antrian Real-Time
Manajemen antrian ruang tunggu dengan nomor antrian, triage level, dan workflow status. Foundation untuk queue display TV.
- Nomor antrian + arrived_at
- Triage level (routine / urgent / emergency)
- Status workflow: waiting → called → in_treatment → completed
- Chief complaint per pasien
- Foundation untuk queue display TV monitor ruang tunggu
Kategori 06
06. Examination & EDR — A5 / PRD §4
Odontogram Interaktif
Charting kondisi gigi per pasien dengan layout standar 32 gigi dewasa + 20 gigi sulung. Klik per-permukaan (oklusal, mesial, distal, bukal, lingual) untuk catat caries, restorasi, missing, prosthesis, atau planned treatment.
- Penomoran FDI / Universal / Palmer
- Per-surface annotation (5 permukaan)
- History snapshot — bandingkan kondisi antar kunjungan
- Cetak PDF odontogram (sertakan di rekam medis)
- Auto-sync ke treatment plan & SOAP notes
SOAP Notes Elektronik
Catatan klinis format SOAP (Subjective, Objective, Assessment, Plan) dengan template per treatment, tanda tangan elektronik dokter, dan history lengkap per visit.
- Template SOAP per jenis treatment (otomatis prefill)
- Diagnosis dengan kode ICD-10
- Tanda tangan elektronik dokter (immutable setelah signed)
- Append-only (audit trail) — tidak bisa edit setelah lock
- Searchable per pasien + keyword
Caries Risk Assessment (CRA)
Penilaian risiko karies per pasien menggunakan protokol CAMBRA / ICDAS — kombinasi indicator: lesi aktif, plak, saliva flow, fluoride exposure, dietary habit.
- Risk indicators (10+ checklist items)
- Risk level: low / moderate / high / extreme
- Recall interval recommendation otomatis (3 / 6 / 12 bulan)
- Preventive plan: fluoride application, sealant, edukasi
- Re-assessment timeline
Pediatric Eruption Chart
Khusus pasien anak — track erupsi gigi sulung dan permanen, timing (early/normal/delayed), dan referensi ke chart standar pediatrik.
- Gigi sulung (20 gigi) + permanen (32 gigi)
- Timing per gigi: actual eruption date vs expected
- Status: erupted / partial / unerupted / extracted
- Auto-flag: delayed eruption (perlu rujukan)
- Tracking shedding gigi sulung
Oral Hygiene Index / BPE
Skoring kebersihan mulut (OHI-S, PHP) dan Basic Periodontal Examination (BPE) per sextant. Trend over time per pasien.
- OHI-S (Debris Index + Calculus Index)
- BPE per sextant (6 area mulut)
- Plaque Index (PI) Silness-Loe
- Gingival Index (GI) Loe-Silness
- Trend chart kunjungan-ke-kunjungan
Visit Log
Kunjungan terstruktur per appointment — track status workflow (scheduled → arrived → in_treatment → completed/no_show), linked ke odontogram, SOAP, prescription, dan invoice.
- Linked ke Appointment + Patient + Doctor
- Status workflow lengkap dengan timestamp
- Multi-record per pasien (riwayat kunjungan)
- Searchable per dokter / periode
- Foundation untuk billing visit-based
Vital Signs
Tensi, nadi, suhu, SpO₂, gula darah, BMI sebelum tindakan. Wajib untuk procedure bedah, sedasi, atau pasien dengan kondisi sistemik.
- 11 parameter (BP sistol/diastol, HR, RR, suhu, SpO₂, GDS, BB, TB, BMI)
- Range validation per parameter
- Linked ke visit untuk pre-op check
- Trend chart per pasien (TODO: visualization)
- Auto-flag jika di luar normal range
Pemeriksaan Ekstraoral & Intraoral
Form lengkap pemeriksaan kepala-leher (TMJ, lymph nodes, salivary) + intraoral (gingiva, periodontal, mukosa, lidah, palatum, oklusi). PRD §4.
- Ekstraoral: TMJ, lymph nodes, salivary, profil
- Intraoral: oral hygiene level, gingiva, periodontal, mukosa, lidah, palatum
- Oklusi (Klas I/II div 1/II div 2/III Angle)
- Diagnosis + prognosis (Good/Fair/Poor/Questionable)
- Foundation untuk treatment planning
Periodontal Chart
Charting kondisi periodontal 6-titik per gigi — pocket depth, gingival margin (resesi/poket), furkasi, mobility, plaque index, bleeding on probing, calculus. Wajib untuk dokter perio.
- Pocket depth — maxilla & mandibula
- Gingival margin (CEJ reference) — recession atau gingival pocket
- Furcation involvement (Grade I/II/III)
- Mobility per gigi (0-3)
- Plaque Index & BoP % numeric tracking
- Trend over time per pasien
ICD-10 Catalog (Dental)
63 kode ICD-10 dental (K00-K14) sudah ter-seed. Karies, periodontitis, kista, anomali oklusi, dll. — semua dengan nama Indonesia + English.
- K00-K14 (chapter dental) — 63 kode seeded
- Bilingual: nama Indonesia + English
- Searchable by kode atau nama
- Filter per chapter
- Linked ke Clinical Notes & Diagnosis
Kategori 07
07. Imaging & Radiography — PRD §5
Radiograph / X-Ray Library
Upload & manage radiograph per pasien — periapical, bitewing, panoramic, cephalometric, CBCT, occlusal. Filter per tipe, tag gigi, dan temuan klinis.
- Tipe lengkap: PA / BWX / OPG / Ceph / CBCT / Occlusal
- Tag nomor gigi (FDI notation)
- Findings field (kesimpulan klinis)
- Image preview di list
- Support JPG/PNG/DICOM format
- Linked ke pasien + visit untuk timeline radiografik
Foto Intra/Ekstraoral
Library foto intraoral (frontal, lateral, occlusal) dan ekstraoral (smile, profile, full face). Plus before/after untuk bleaching, orthodontic, dan estetik — marketing emas.
- 9 tipe foto: frontal/lateral/occlusal (intra) + smile/profile/full-face (ekstra) + before/after
- Tag nomor gigi (jika fokus)
- Timeline foto pasien lintas kunjungan
- Image preview di list
- Linked ke visit untuk reference rekam medis
Kategori 08
08. Treatment Planning — A6-A7 / PRD §6
Katalog Treatment
Master data layanan klinik dengan kategori, kode ICD-10, durasi standar, harga base + harga per dokter, paket bundling, dan deskripsi konsumer-friendly untuk landing page.
- Multi-kategori (Konservasi, Bedah, Ortho, Estetik, dll.)
- Kode ICD-10 untuk klaim asuransi
- Durasi standar per treatment (untuk auto-block slot)
- Harga base + override per dokter / per klinik
- Paket bundling (mis. scaling + bleaching = paket bright smile)
Treatment Plan Multi-Tahap
Rancangan perawatan jangka panjang per pasien — bagi treatment ke beberapa visit, dengan estimasi total biaya, opsi cicilan, dan acceptance signature pasien.
- Multi-stage plan (visit 1, 2, 3, ...)
- Estimasi durasi & biaya total
- Opsi cicilan (linked ke Installment Schedule)
- Persetujuan pasien (informed consent + tanda tangan)
- Status: draft → presented → accepted → in-progress → completed
Informed Consent
Workflow persetujuan tindakan dengan e-signature pasien & saksi. Wajib untuk tindakan bedah, RCT, implant, sedasi, dan pemakaian foto/data — proteksi hukum klinik.
- Template per tipe tindakan (general/surgery/RCT/implant/sedation/minor/photo)
- Pernyataan pasien (acknowledgment) di-record verbatim
- TTD pasien + saksi sebagai image upload
- Append-only (immutable setelah signed)
- Withdrawal workflow (mark is_valid = false dengan jejak)
Harga Treatment Bertingkat
Atur harga per-treatment per-klinik dengan periode berlaku. Support harga default global atau override per cabang. Margin tracking via cost_price.
- Per-treatment per-klinik (multi-branch)
- Effective from/to untuk masa berlaku
- Cost price → calculate margin
- Default flag untuk fallback price
- Foundation untuk price history & member pricing
Paket Treatment
Bundling beberapa treatment dengan harga paket (e.g. "Bright Smile Package" = scaling + bleaching + polish). Diskon vs harga per-item, masa berlaku per paket.
- Multi-treatment per paket (PackageItem)
- Harga total + diskon bundling
- Durasi berlaku (mis. paket ortho 24 bulan)
- Aktivasi paket per pasien
- Linked ke Invoice auto-breakdown
Kategori 09
09. Treatment Execution — A8 / PRD §10a-g
Endodontic (PSA / Root Canal)
Modul khusus perawatan saluran akar — file types (K-file, H-file, Protaper), working length per kanal, obturation method, sealer, dan jumlah visit.
- Per-tooth & per-canal recording (MB, ML, DB, DL, P)
- Working length & apical size per kanal
- Obturation method: lateral, vertical, single-cone, thermafil
- Sealer type tracking
- PA radiograph attachment per tahap
Orthodontic Case Tracking
Manajemen kasus orto jangka panjang (1-3 tahun) — tipe bracket, archwire progression, adjustment per visit, foto progress, dan estimasi end-date.
- Tipe: metal, ceramic, lingual, clear aligner
- Archwire progression timeline (sequence)
- Adjustment log per visit (force vector, elastics)
- Photo intraoral + ekstraoral per tahap
- Estimasi end-date + progress %
Implant Stage Tracking
Multi-tahap pemasangan implan: planning (CBCT), surgery (fixture placement), healing, second-stage (abutment), prosthesis (crown). Track per pasien per gigi.
- Per-tooth implant record
- Brand & model implant (Straumann, Nobel, Osstem, dll.)
- Stage timeline: plan → place → heal → abutment → crown
- Torque value, length, diameter recording
- CBCT & periapical attachment per stage
Anesthesia Log
Catatan administrasi anestesi lokal — jenis (lidocaine, articaine), konsentrasi, vasokonstriktor, total cartridge, lokasi injeksi, dan reaksi pasien.
- Drug + concentration + vasoconstrictor
- Jumlah cartridge per session
- Lokasi injeksi (infiltration, IAN block, dll.)
- Reaksi pasien (allergic, syncope, lainnya)
- Time-stamped per visit
Bleaching Tracking
Riwayat bleaching per pasien — tipe (in-office, home), agent (HP/CP), konsentrasi, jumlah session, shade before/after dengan Vita shade guide.
- In-office vs at-home protocol
- Hydrogen Peroxide (HP) / Carbamide Peroxide (CP)
- Konsentrasi (10%, 16%, 22%, 35%, dll.)
- Vita Classical shade before / after
- Foto before-after per session
Resep / e-Resep
Catat resep elektronik per pasien — diagnosis, instruksi pemakaian (signa), nomor resep otomatis, dan status dispensed/cancelled. PDF print kompatibel apotek.
- Nomor resep auto-generate (RX-YYYYMMDD-XXXX)
- Diagnosis dengan kode ICD-10
- Instruksi multi-obat dengan signa lengkap
- Status workflow: draft → issued → dispensed
- PDF print via PdfController existing
- Audit trail siapa & kapan dispensed
Kategori 10
10. Recall & Follow-up — A11 / PRD §10g
Recall Schedule
Jadwal kontrol/cleaning rutin otomatis. Sistem trigger reminder WA sesuai interval (3/6/12 bulan) dari kunjungan terakhir.
- Interval otomatis dari CRA result
- Trigger reminder WA H-7, H-3, H-1
- Skip-tracking (pasien skip 2x → flag inactive)
- Bulk action: send recall ke semua pasien due
- Conversion rate: berapa % yang book setelah recall
Kategori 11
11. Billing & Payment — A9 / PRD §7
Invoice & Tagihan
Generate invoice per visit otomatis dari treatment yang dilakukan, dengan diskon, deposit, cicilan, dan integrasi PDF print + WhatsApp send.
- Auto-generate dari completed visit
- Multi-item dengan diskon per-item / total
- Deposit & cicilan (Installment Schedule)
- PDF print profesional (dompdf)
- Kirim invoice via WhatsApp 1-klik
- Payment status: unpaid / partial / paid / overdue
Cicilan / Installment
Bagi invoice jadi beberapa kali pembayaran dengan jadwal jatuh tempo. Cocok untuk treatment mahal (ortho, implant, prosthetic) yang dibayar bertahap.
- DP + jumlah termin + nominal per termin
- Bunga opsional
- Status: active / completed / overdue / cancelled
- Linked ke InstallmentSchedule (per-termin tracking)
- Auto-overdue detection
Ledger Pembayaran
Catatan setiap transaksi pembayaran pasien — cash, transfer, QRIS, e-wallet, card, asuransi. Linked ke invoice + receipt + reconciliation harian.
- Multi-metode: cash / transfer / QRIS / e-wallet / card / insurance
- Reference number per metode
- Status: pending / success / failed / refunded
- Linked ke Invoice (auto-update balance)
- Filter per metode untuk reconciliation
- Nomor pembayaran otomatis (PAY-YYYYMMDD-XXXX)
Deposit Pasien
Manajemen uang muka pasien — dipakai untuk treatment plan multi-visit, ortho jangka panjang, atau prosedur mahal yang dicicil sebelum tindakan dimulai.
- Saldo deposit per pasien
- Status: active / partial_used / depleted / refunded
- Riwayat pemakaian deposit (allocate ke invoice)
- Refund workflow dengan audit trail
- Filter per pasien — quick lookup saldo
Diskon & Promo
Master diskon — persentase atau nominal tetap, dengan kode voucher, batas min/max, masa berlaku, dan usage limit. Bisa apply ke treatment, kategori, atau paket.
- Tipe: percentage (%) atau fixed (Rp)
- Kode voucher unik (e.g. NEWPATIENT2026)
- Min. pembelian + max. potongan
- Usage limit (kuota promo)
- Masa berlaku (valid_from → valid_to)
- Apply scope: all / category / treatment / package
Refund / Pengembalian
Workflow refund formal — pending → approved → completed. Tracking metode refund (cash/transfer/credit ke deposit), alasan, dan approval.
- Auto-number REF-YYYYMMDD-XXXX
- Linked ke Invoice + Payment asal
- Approval workflow (pending → approved → completed)
- 4 metode: cash, transfer, original_method, deposit_credit
- Audit trail (siapa approve, kapan)
Tax Rules (PPN, dll.)
Master pajak — PPN 11%, PPh withholding, dll. Bisa multiple rate dengan masa berlaku, applies_to (treatment/produk/service), inclusive/exclusive.
- PPN 11%/12% inclusive atau exclusive
- Withholding PPh 2%/2.5% untuk dokter
- Effective date range
- Applies-to scope (all/treatment/product/service)
- Default flag untuk auto-apply di invoice
Doctor Commission Payout
Workflow pembayaran komisi dokter — period range, total revenue, rate, deductions, net payout. Auto-number + audit trail.
- Auto-number PAY-DR-YYYYMMDD-XXXX
- Period: start - end date
- Rate dari Doctor.fee_split (% komisi)
- Total revenue + komisi + deductions = net
- Status workflow (pending → approved → paid)
- JSON breakdown per-treatment (opsional)
Kategori 12
12. Insurance Claims — A10 / PRD §8
Klaim Asuransi
Multi-payer insurance: BPJS, Mandiri Inhealth, Allianz, Prudential, dll. Track klaim dari submit sampai paid + breakdown coverage per plan.
- Multi-provider (10+ default + custom)
- Per-plan coverage rule (50%, 80%, capped, exclusion)
- Submission tracking (submitted, approved, rejected, paid)
- Pre-authorization workflow
- Reconciliation otomatis (expected vs received)
Klaim Asuransi (Workflow Lengkap)
Workflow klaim asuransi end-to-end — draft → submitted → under_review → approved/rejected → paid. Tracking nominal diajukan vs disetujui.
- Nomor klaim auto-generate (CLM-YYYYMMDD-XXXX)
- Linked ke Invoice + Patient Insurance polis
- Nominal: diajukan / disetujui / ditolak
- Status workflow lengkap
- Alasan ditolak ter-record (untuk re-submission)
- Foundation untuk reconciliation report
Kategori 13
13. Inventory, Lab & Sterilisasi — PRD §9-10
Inventori Material
Stock material klinik — composite, anestesi, alat habis pakai, dengan reorder point, supplier link, dan purchase order workflow.
- Kategori: konsumabel, instrumen, obat, alat
- Stock per klinik (multi-warehouse)
- Reorder point + auto-alert
- Stock transaction log (in/out + treatment usage)
- Linked ke Purchase Order
Lab Case Tracking
Workflow pengiriman prosthesis ke lab eksternal — track per case dari impression dikirim sampai prosthesis kembali siap pasang.
- Lab partner database (multi-lab)
- Stage: sent → received → in-progress → ready → delivered → tried-in
- Estimasi due date + alert overdue
- Cost tracking per case (lab fee)
- Photo attachment (impression, prosthesis)
Supplier Material
Database vendor pemasok material dental — kontak PIC, alamat, NPWP, rekening bank, riwayat PO, dan rating supplier.
- Kontak lengkap + PIC per supplier
- NPWP + bank account untuk transfer
- Linked ke Purchase Order
- Search per kota / nama / PIC
- Soft-disable supplier non-aktif
Purchase Order
Workflow pemesanan material ke supplier — draft → sent → partial_received → fully_received. Auto-number, estimasi datang, dan linked ke StockTransaction saat barang tiba.
- Nomor PO otomatis (PO-YYYYMMDD-XXXX)
- Multi-item per PO (TODO: nested editor v2)
- Status workflow lengkap
- Estimasi tanggal datang + alert overdue
- Total amount auto-calc dari items
- Linked ke Supplier + StockTransaction
Mutasi Stok
Log detail setiap pergerakan stok material — in (restock dari PO), out (manual), adjustment (koreksi), usage (terpakai treatment), expired, damaged.
- 6 tipe transaksi: in/out/adjustment/usage/expired/damaged
- Batch number + expiry date per stock
- Unit cost untuk inventory valuation (FIFO/LIFO)
- Reference type (link ke PO / Visit / manual)
- Filter per material untuk audit stock
Kategori Material
Taksonomi material klinik — composite, anestesi, endodontic file, orthodontic bracket, dll. Dipakai untuk grouping di inventory + report.
- Slug untuk URL inventory filter
- Soft-disable kategori usang
- Foundation untuk inventory valuation per kategori
Lab Eksternal
Database lab partner — alamat, spesialisasi (crown/bridge/removable/implant), price list, dan PIC. Linked ke LabCase tracking.
- Multi-spesialisasi per lab
- Price list link (Google Drive / PDF)
- Linked ke Lab Cases workflow
- Filter per kota / spesialisasi
Log Sterilisasi (Autoklaf)
Catatan setiap siklus autoklaf — suhu, tekanan, indikator kimia & biologi. WAJIB untuk akreditasi klinik (Permenkes 14/2021 standar PPI).
- Multi-metode: autoclave / dry heat / chemical / UV / ozone
- Suhu + tekanan + cycle number recording
- Indikator kimia + biologi (pass/fail/pending)
- Hasil final: PASS (alat boleh dipakai) / FAIL (rerun) / pending (incubation)
- Operator yang menjalankan ter-record
- Wajib audit dengan retensi 3 tahun min
Stock Opname (Fisik vs Sistem)
Inventory count tool — input stok fisik, sistem auto-compute selisih dan generate adjustment transaction sekaligus. Wajib opname bulanan.
- Per-material: stok sistem vs stok fisik
- Auto-calc selisih (+/-)
- Auto-create adjustment transaction saat submit
- Notes untuk audit trail (mis. "opname bulanan Mei 2026")
- Multi-clinic scoped
Kategori 14
14. Komunikasi & Reminder — PRD §13
WA Reminder Otomatis
Sistem reminder WhatsApp otomatis untuk appointment confirmation, recall, dan follow-up. Provider generik (Fonnte, Wablas, Wati, Twilio-compat, REST custom) — pilih sendiri di Settings.
- Appointment confirmation H-1 + H-2 jam
- Recall reminder H-7 + H-1 dari due date
- Follow-up post-treatment H+3
- Birthday greeting otomatis
- Delivery log + retry queue
- BYOK provider (no vendor lock-in)
Message Templates & Inbox
Library template message per event (confirmation, recall, payment due, dll.) dengan variable substitution. Plus inbox terpusat reply WA dari pasien.
- Template per event dengan placeholder {pasien}, {tanggal}, {dokter}
- Multi-bahasa (ID + EN)
- Inbox terpusat (semua channel)
- Quick-reply template
- Conversation history per pasien
Birthday Auto-Greeting
Template ucapan ulang tahun pasien — kirim otomatis via WA/Email/SMS pada jam yang ditentukan, dengan opsi diskon promo birthday.
- Template body dengan placeholder ({pasien_nama}, {umur}, {kode_promo})
- Multi-channel: WhatsApp / Email / SMS
- Jam kirim configurable (0-23)
- Include diskon promo (opsional)
- Multi-template (e.g. beda untuk pasien VIP)
Tele-Dentistry (Video Consultation)
Konsultasi video pasien-dokter via Jitsi Meet (gratis, open-source). Bisa public Jitsi atau self-host. Cocok untuk konsultasi awal, follow-up, triage emergency.
- Generate room name auto + copy link untuk WA pasien
- No install needed di pasien (browser-based)
- Screen share untuk tunjukkan odontogram & rontgen
- Self-host option (Jitsi di VPS sendiri)
- Linked ke Appointment dengan source=tele
Kategori 15
15. AI-Powered Features — PRD §15
AI Clinical Assistant
AI helper untuk clinical summary, treatment suggestion dari odontogram, draft SOAP notes, dan jawab pertanyaan pasien. BYOK — pilih provider sendiri.
- Clinical summary dari riwayat pasien
- Treatment suggestion based on odontogram
- Draft SOAP notes (dokter tinggal review + sign)
- Translate medical terms ke bahasa pasien
- Patient FAQ auto-answer (chatbot)
AI Feature Assignment
Mapping per-fitur ke provider AI mana yang dipakai (clinical summary, treatment suggestion, translate medical term, dll.). Owner bisa override default + monitor cost per fitur.
- Per-feature → pilih provider + model dari dropdown
- Empty by default — owner harus pilih sendiri (BYOK)
- Cost tracking per fitur (tokens × pricing input)
- Fallback chain (provider primary → backup jika fail)
- Disable per fitur (e.g. matikan auto-translate)
AI Providers (BYOK)
Konfigurasi provider AI — input sendiri vendor, model, API key. Adapter format-based (OpenAI-compatible, Anthropic, Gemini, Image) — kompatibel dengan 20+ vendor termasuk self-hosted (Ollama).
- Format-based: OpenAI-compatible, Anthropic, Gemini, Image
- BYOK — user input API key sendiri (encrypted at rest)
- Auto-fetch /v1/models endpoint
- Pricing input manual (untuk tracking cost)
- Per-feature provider assignment
AI Radiograph Analysis
AI deteksi karies, bone loss, periapical lesion dari radiograph (BWX/PA/OPG). BYOK — pakai Pearl/Overjet/Diagnocat atau custom Roboflow model.
- Upload baru atau pilih dari library Radiograph
- Provider AI image-capable (BYOK)
- Output: temuan + rekomendasi klinis
- AI sebagai ASSIST, diagnosis final tetap dokter
- Compatible: Pearl, Overjet, Diagnocat, Roboflow, OpenAI/Claude/Gemini Vision
AI Predictive Analytics
Prediksi no-show 7 hari ke depan, proyeksi revenue 30/90 hari, dan kapan stok material habis. Rule-based sekarang, upgrade-able ke AI.
- No-show risk score (per-pasien, berdasarkan riwayat)
- Revenue projection 30d & 90d (linear trend)
- Patient acquisition growth rate
- Stock-out prediction per-material (< 30 hari)
- Action rekomendasi (WA reminder, PO supplier)
Kategori 16
16. Laporan & Analitik — PRD §16
Laporan & Analitik
Dashboard analitik per periode — pendapatan, jumlah treatment, dokter top, recall conversion, insurance reconciliation, dan export Excel.
- Pendapatan harian/mingguan/bulanan
- Treatment count + revenue per kategori
- Doctor performance (jumlah pasien + rating)
- Recall conversion rate
- Aging report (invoice belum dibayar)
- Export Excel (maatwebsite/excel)
No-Show Dashboard
Analisis pasien tidak datang appointment — rate, trend harian, repeat offenders. Auto-rekomendasi action jika rate > 15%.
- Stats card: total, no-show, cancelled, completed
- No-show rate % dengan threshold warning
- Trend harian chart (last 14/30 hari)
- Top 10 repeat offenders
- Action rekomendasi otomatis (kalau rate tinggi)
Doctor Performance Dashboard
Performa dokter per periode — total visit, completed, no-show, revenue, komisi, rating. Sort by revenue untuk top performers.
- Per-dokter card (visit, revenue, komisi, rating)
- Period filter (7d / 30d / 90d / 1 tahun)
- Multi-clinic scoped
- Komisi auto-calc dari fee_split
- Avg rating dari Review (approved only)
Kategori 17
17. Content Management
Landing Page CMS
Edit landing page klinik tanpa coding — hero, fitur, testimoni, FAQ, gallery, dokter, layanan, kontak. Perubahan langsung tampil di / publik.
- Hero (judul, sub-copy, image, CTA)
- Fitur (icon, judul, deskripsi)
- Testimoni pasien (foto, rating, quote)
- FAQ (Q&A dengan FAQPage schema)
- Gallery klinik
- Setting kontak (telp, WA, alamat, jam buka, social)
Dokumentasi CMS
Editor dokumentasi publik di /docs — markdown dengan section, slug per halaman, dan auto-included di sitemap untuk SEO.
- Markdown + heading hierarchy
- Per-page slug (SEO-friendly URL)
- Order + parent-child structure
- Auto-publish ke /docs/{slug}
- Include di sitemap.xml
Moderasi Review
Moderation queue review dari pasien sebelum tampil di landing. Filter per rating, approve/hide per review, link ke dokter spesifik untuk profile rating.
- Review pasien dengan rating 1-5 bintang
- Approval workflow (approve/hide)
- Public/private visibility toggle
- Linked ke dokter untuk doctor profile rating
- Auto-include di JSON-LD Dentist schema
Testimoni Landing
CRUD testimoni untuk landing page — kontrol siapa muncul, urutan, foto pasien, dan featured flag. Berbeda dengan Reviews (yang dari pasien): testimoni di-curate manual.
- CRUD testimoni dengan foto pasien
- Featured flag untuk highlight di landing utama
- Sort order custom (drag-drop reorder)
- Rating 1-5 bintang
- Aktif/nonaktif toggle (tanpa hapus)
Kategori 18
18. Programmatic SEO — PRD §17
SEO — Kota Target
Master kota untuk pSEO — slug, provinsi, populasi. Setiap kota auto-generate halaman /best-dentist/{slug} + /dental-clinic-{slug} dan masuk sitemap.
- CRUD kota target (Jakarta, Bandung, Surabaya, dst.)
- Slug URL otomatis
- Auto-include di /best-dentist/* + /dental-clinic-* + sitemap
- Populasi tracking (untuk prioritas SEO)
- Aktif/nonaktif tanpa hapus data
SEO Landing Pages
Editor halaman SEO custom — best dentist per kota, city directory, alternatives, service, comparison. Konten markdown 300+ kata + meta + JSON-LD custom.
- 5 tipe halaman: best_dentist / city_directory / alternative / service / comparison
- Linked ke kota (SeoCity)
- Meta description 120-160 char
- Custom JSON-LD schema markup
- Publish/draft workflow
Service Pages
Halaman SEO per service — "Tambal Gigi", "Pasang Kawat Gigi", "Cabut Gigi Bungsu", dll. Tiap halaman target 1-2 keyword utama dengan konten edukatif 500+ kata.
- Per-service URL: /dental-services/{slug}
- Meta title + description optimal 50-60 / 120-160 char
- Konten markdown panjang (SEO-friendly)
- JSON-LD MedicalProcedure / Service schema
- Publish workflow
Comparison Pages
Head-to-head comparison page — "Veneer vs Bleaching", "Ortho Kawat vs Aligner", dll. Format JSON table + konten naratif, JSON-LD Article schema.
- Entity A vs Entity B comparison
- Comparison table format JSON ({"feature","a","b"})
- URL pattern: /compare/{a}-vs-{b}
- Konten naratif markdown
- Auto-include di sitemap
Kategori 19
19. Media & Notifications
Media Library
Library file terpusat — logo, hero image, foto dokter, gallery klinik, dokumen. Re-use file di multiple tempat tanpa re-upload.
- Koleksi terpisah: logo / hero / gallery / doctor / testimonial / dokumen
- Mime type auto-detect
- Linked ke model (polymorphic via model_type + model_id)
- Filter per koleksi
- Preview thumbnail di list
Notification Center
Pusat notifikasi sistem untuk admin — appointment, invoice, recall, reminder, system events. Read-only viewer dengan filter per tipe + status dibaca.
- Read-only viewer (notifikasi otomatis dari system events)
- Filter per tipe: appointment / invoice / recall / system / reminder
- Read/unread status
- JSON data payload per notifikasi (untuk konteks)
- Per-user inbox
Kategori 20
20. System & Compliance — PRD §18
Activity Log
Log semua aksi user — login, logout, create, update, delete, view, export. Read-only audit trail dengan IP address untuk forensik.
- Auto-tracking semua aksi user
- IP address recording (untuk forensik)
- Filter per tipe aktivitas
- Read-only — tidak bisa di-edit/hapus
- Retensi sesuai kebijakan UU PDP 27/2022
Audit Log (Data Changes)
Log perubahan data — siapa yang ubah, kapan, model apa, dari nilai apa ke apa (diff). WAJIB untuk akreditasi klinik dan compliance UU PDP.
- Created / Updated / Deleted / Restored events
- Old values vs new values (diff lengkap)
- Model type + ID untuk drill-down
- IP address + user agent untuk forensik
- Append-only (tidak bisa di-edit)
- Wajib akreditasi klinik gigi
GDPR / UU PDP Compliance Dashboard
Dashboard compliance UU PDP 27/2022 + Permenkes 269/2008 — audit log stats, suspicious activity detection, data retention warnings.
- Stats audit: created/updated/deleted/restored 30 hari
- Suspicious activity (user delete > 10× dalam 7 hari)
- Data retention warning (pasien tidak aktif > 5 tahun)
- Recent activity log (20 latest)
- Siap untuk audit eksternal
Backup Manager
Backup database (mysqldump/sqlite copy) + files tarball — manual run dari UI atau auto via artisan schedule. Auto-rotate file > 30 hari.
- Manual run dari UI
- Schedule otomatis via Laravel Scheduler
- mysqldump SQL + tar.gz untuk public storage
- Auto-rotate retention (default 30 hari)
- List file + delete individual
- Artisan command: php artisan backup:run
Settings Klinik
Konfigurasi global — nama klinik, logo, jam buka, kebijakan booking, mata uang, format invoice, integration keys.
- Identity (nama, logo, favicon, tagline)
- Working hours default + libur
- Booking policy (advance days, cancellation window)
- Currency & invoice format
- WhatsApp provider config (BYOK)
- Email SMTP