Lewati ke isi

Sentra Healthcare — Role & Permission Matrix

Kepatuhan perlindungan data pribadi (UU PDP No. 27/2022) memprioritaskan kontrol akses yang ketat. Prinsip least privilege diterapkan: setiap role hanya mendapatkan akses minimum yang dibutuhkan untuk menjalankan tugasnya.

RBAC Matrix

Module Action Owner Clinic Manager Doctor Nurse Pharmacist Cashier Lab Tech Auditor
View Patient Profile
Modify Patient Bio
Record Vital Signs
Write SOAP Note
Sign & Lock SOAP (BSrE) ✓ (2FA)
Amend SOAP (Addendum) ✓ (Audit+BSrE)
Create e-Prescription
Dispense Medication
Process Billing & Cash
Void/Discount Billing ✓ (PIN)
Order Lab Test
Input Lab Results
Access Audit Logs
View Financial Reports
Manage Doctor Payroll
View Payroll Slip (Own)
BPJS Claim Submit
SatuSehat Sync Monitor
Emergency Bypass
Merge Medical Record

Catatan Khusus

  • Sign & Lock SOAP (BSrE): Hanya Dokter yang berwenang, dan memerlukan 2FA (PIN khusus BSrE) terpisah dari password login. PIN ini teregister ke BSrE dan terikat pada identitas dokter (NIK + SIP dokter).

  • Amend SOAP (Addendum): SOAP yang sudah terkunci hanya bisa diamendemen melalui mekanisme Addendum dengan penulisan riwayat koreksi lengkap, tanpa menghapus data SOAP lama, dan dicatat langsung ke dalam database log audit dengan log tingkat tinggi.

  • Void/Discount Billing: Kuitansi/Faktur billing kasir yang sudah terbit dikunci secara absolut. Segala bentuk pembatalan (void) atau pemberian diskon manual wajib memasukkan PIN Supervisor (Klinik Manager) dan dicatat ke audit_logs secara permanen.

  • Emergency Bypass: Dapat digunakan oleh Nurse, Dokter, Clinic Manager, dan Cashier dalam kondisi darurat untuk melewati prosedur pendaftaran lengkap dan langsung membuka RME darurat.

Implementasi RBAC

RBAC diimplementasikan menggunakan Keycloak sebagai Identity Broker:

  • Setiap role dipetakan ke Keycloak Realm Role.
  • Token JWT yang diterbitkan oleh Keycloak memuat klaim roles[] yang divalidasi oleh NestJS Guards pada setiap request.
  • Role ditambahkan ke user oleh Admin/Owner melalui Keycloak Admin Console.
  • Perubahan role berlaku secara instan tanpa perlu restart aplikasi (token refresh cycle < 5 menit).
// NestJS RBAC Guard contoh
@Roles(Role.DOCTOR)
@UseGuards(JwtAuthGuard, RolesGuard)
@Put('/encounters/:id/soap')
async submitSoap(@Param('id') id: string, @Body() dto: SoapDto) {
  // Hanya Doctor yang bisa mengakses endpoint ini
  return this.clinicalService.submitSoap(id, dto);
}

Audit Trail untuk Setiap Akses RME

Sesuai UU PDP No. 27/2022 dan Permenkes 24/2022, setiap aksi berikut dilog ke audit_logs:

  • READ_EMR: Dokter/Nurse membuka halaman riwayat rekam medis pasien.
  • INSERT: Vital sign, SOAP notes, prescription baru dibuat.
  • UPDATE: Modifikasi data (sebelum lock) — termasuk old_values dan new_values sebagai JSON diff.
  • DELETE: Tidak diperbolehkan untuk entitas klinis. Hanya soft-delete yang diizinkan untuk data non-klinis.

Log mencatat: user_id, action_time, ip_address, user_agent, record_id, dan diff nilai lama vs baru.