264 lines
8.1 KiB
TypeScript
264 lines
8.1 KiB
TypeScript
// types/simrs-roles.ts
|
|
|
|
interface Roles {
|
|
nama_role: string;
|
|
deskripsi: string;
|
|
tanggung_jawab: string[];
|
|
}
|
|
|
|
interface KonfigurasiKeamanan {
|
|
autentikasi: string;
|
|
enkripsi: string;
|
|
audit_trail: boolean;
|
|
session_timeout: number;
|
|
}
|
|
|
|
interface KonfigurasiSistem {
|
|
level_akses: string[];
|
|
modul_utama: string[];
|
|
keamanan: KonfigurasiKeamanan;
|
|
}
|
|
|
|
interface SIMRSRoles {
|
|
role_administratif: Roles[];
|
|
role_klinis: Roles[];
|
|
role_penunjang_medis: Roles[];
|
|
role_manajemen: Roles[];
|
|
role_teknis: Roles[];
|
|
konfigurasi_sistem: KonfigurasiSistem;
|
|
}
|
|
|
|
// Enum untuk level akses
|
|
enum LevelAkses {
|
|
SUPER_ADMIN = "Super Admin",
|
|
ADMIN_DEPARTEMEN = "Admin Departemen",
|
|
USER_KLINIS = "User Klinis",
|
|
USER_ADMINISTRATIF = "User Administratif",
|
|
GUEST_READ_ONLY = "Guest/Read Only"
|
|
}
|
|
|
|
// Enum untuk modul utama
|
|
enum ModulUtama {
|
|
PENDAFTARAN_PASIEN = "Pendaftaran Pasien",
|
|
REKAM_MEDIS_ELEKTRONIK = "Rekam Medis Elektronik",
|
|
FARMASI = "Farmasi",
|
|
LABORATORIUM = "Laboratorium",
|
|
RADIOLOGI = "Radiologi",
|
|
KEUANGAN = "Keuangan",
|
|
INVENTORY = "Inventory",
|
|
REPORTING = "Reporting"
|
|
}
|
|
|
|
// Data konstanta untuk SIMRS roles
|
|
const simrsRoles: SIMRSRoles = {
|
|
role_administratif: [
|
|
{
|
|
nama_role: "Administrator Pendaftaran",
|
|
deskripsi: "Mengelola proses pendaftaran pasien dan penjadwalan dalam sistem SIMRS",
|
|
tanggung_jawab: [
|
|
"Mengelola pendaftaran pasien dan penjadwalan dokter",
|
|
"Mengatur penjadwalan operasi atau pemeriksaan",
|
|
"Mengelola antrian dan mengurangi waktu tunggu pasien",
|
|
"Memastikan data pasien terinput dengan benar"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Staff Administrasi Keuangan",
|
|
deskripsi: "Mengelola aspek keuangan dan penagihan dalam sistem rumah sakit",
|
|
tanggung_jawab: [
|
|
"Mengelola penagihan dan klaim asuransi",
|
|
"Mengintegrasikan sistem dengan BPJS Kesehatan",
|
|
"Mengelola administrasi keuangan rumah sakit",
|
|
"Memproses pembayaran dan verifikasi biaya"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Petugas Rekam Medis",
|
|
deskripsi: "Mengelola dan memelihara rekam medis elektronik pasien",
|
|
tanggung_jawab: [
|
|
"Mengelola Electronic Medical Records (EMR)",
|
|
"Memastikan dokumentasi pasien yang akurat",
|
|
"Menjaga keamanan dan kerahasiaan data pasien",
|
|
"Melakukan backup dan archiving data medis"
|
|
]
|
|
}
|
|
],
|
|
role_klinis: [
|
|
{
|
|
nama_role: "Dokter/Tenaga Medis",
|
|
deskripsi: "Profesional medis yang menggunakan sistem untuk diagnosis dan pengobatan",
|
|
tanggung_jawab: [
|
|
"Mengakses riwayat medis, alergi, dan catatan pengobatan pasien",
|
|
"Menggunakan modul pendukung pengambilan keputusan klinis",
|
|
"Melakukan pemantauan pasien secara berkelanjutan",
|
|
"Menginput diagnosis dan resep obat ke sistem"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Perawat",
|
|
deskripsi: "Tenaga keperawatan yang melakukan perawatan langsung kepada pasien",
|
|
tanggung_jawab: [
|
|
"Mencatat parameter vital dan perkembangan pasien",
|
|
"Mengakses informasi terintegrasi dari berbagai departemen",
|
|
"Melakukan pemantauan pasien rawat inap",
|
|
"Mengelola jadwal pemberian obat dan tindakan keperawatan"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Apoteker/Staff Farmasi",
|
|
deskripsi: "Mengelola obat-obatan dan memastikan keamanan farmasi",
|
|
tanggung_jawab: [
|
|
"Mengelola persediaan obat dan bahan medis",
|
|
"Memastikan ketersediaan obat yang sesuai",
|
|
"Mencegah risiko kekurangan atau kelebihan stok",
|
|
"Melakukan verifikasi resep dan dispensing obat"
|
|
]
|
|
}
|
|
],
|
|
role_penunjang_medis: [
|
|
{
|
|
nama_role: "Petugas Laboratorium",
|
|
deskripsi: "Mengelola pemeriksaan laboratorium dan hasilnya",
|
|
tanggung_jawab: [
|
|
"Menginput hasil tes laboratorium ke sistem",
|
|
"Mengintegrasikan data laboratorium dengan rekam medis",
|
|
"Melakukan quality control hasil laboratorium",
|
|
"Mengelola sampel dan alat laboratorium"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Petugas Radiologi",
|
|
deskripsi: "Mengelola pemeriksaan radiologi dan imaging",
|
|
tanggung_jawab: [
|
|
"Mengelola hasil pemeriksaan radiologi",
|
|
"Mengintegrasikan data radiologi dengan sistem",
|
|
"Melakukan penjadwalan pemeriksaan radiologi",
|
|
"Memastikan kualitas gambar dan interpretasi"
|
|
]
|
|
}
|
|
],
|
|
role_manajemen: [
|
|
{
|
|
nama_role: "Manajer Rumah Sakit",
|
|
deskripsi: "Mengelola operasional rumah sakit secara keseluruhan",
|
|
tanggung_jawab: [
|
|
"Mengakses laporan dan analisis kinerja",
|
|
"Melakukan monitoring operasional rumah sakit",
|
|
"Menggunakan modul prediktif untuk perencanaan sumber daya",
|
|
"Membuat keputusan strategis berdasarkan data sistem"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Supervisor Departemen",
|
|
deskripsi: "Mengawasi dan mengoordinasikan departemen spesifik",
|
|
tanggung_jawab: [
|
|
"Mengelola koordinasi antar-departemen",
|
|
"Memastikan integrasi berbagai aspek operasional",
|
|
"Monitoring kinerja staff departemen",
|
|
"Melakukan evaluasi dan pelaporan departemen"
|
|
]
|
|
}
|
|
],
|
|
role_teknis: [
|
|
{
|
|
nama_role: "Administrator Sistem SIMRS",
|
|
deskripsi: "Mengelola infrastruktur dan keamanan sistem SIMRS",
|
|
tanggung_jawab: [
|
|
"Mengelola keamanan sistem dan data terenkripsi",
|
|
"Melakukan maintenance dan troubleshooting sistem",
|
|
"Menangani masalah infrastruktur teknologi",
|
|
"Mengatur hak akses user dan permission"
|
|
]
|
|
},
|
|
{
|
|
nama_role: "Staff IT Support",
|
|
deskripsi: "Memberikan dukungan teknis kepada pengguna sistem",
|
|
tanggung_jawab: [
|
|
"Memberikan pelatihan teknologi kepada pengguna",
|
|
"Menangani masalah teknis harian",
|
|
"Melakukan monitoring sistem dan evaluasi",
|
|
"Membantu troubleshooting masalah user"
|
|
]
|
|
}
|
|
],
|
|
konfigurasi_sistem: {
|
|
level_akses: [
|
|
LevelAkses.SUPER_ADMIN,
|
|
LevelAkses.ADMIN_DEPARTEMEN,
|
|
LevelAkses.USER_KLINIS,
|
|
LevelAkses.USER_ADMINISTRATIF,
|
|
LevelAkses.GUEST_READ_ONLY
|
|
],
|
|
modul_utama: [
|
|
ModulUtama.PENDAFTARAN_PASIEN,
|
|
ModulUtama.REKAM_MEDIS_ELEKTRONIK,
|
|
ModulUtama.FARMASI,
|
|
ModulUtama.LABORATORIUM,
|
|
ModulUtama.RADIOLOGI,
|
|
ModulUtama.KEUANGAN,
|
|
ModulUtama.INVENTORY,
|
|
ModulUtama.REPORTING
|
|
],
|
|
keamanan: {
|
|
autentikasi: "Multi-factor Authentication",
|
|
enkripsi: "AES-256",
|
|
audit_trail: true,
|
|
session_timeout: 30
|
|
}
|
|
}
|
|
};
|
|
|
|
// Utility functions
|
|
class SIMRSRoleManager {
|
|
private roles: SIMRSRoles;
|
|
|
|
constructor(roles: SIMRSRoles) {
|
|
this.roles = roles;
|
|
}
|
|
|
|
// Mendapatkan semua role berdasarkan kategori
|
|
getRolesByCategory(category: keyof Omit<SIMRSRoles, 'konfigurasi_sistem'>): Roles[] {
|
|
return this.roles[category];
|
|
}
|
|
|
|
// Mencari role berdasarkan nama
|
|
findRoleByName(name: string): Roles | undefined {
|
|
const allCategories = [
|
|
...this.roles.role_administratif,
|
|
...this.roles.role_klinis,
|
|
...this.roles.role_penunjang_medis,
|
|
...this.roles.role_manajemen,
|
|
...this.roles.role_teknis
|
|
];
|
|
|
|
return allCategories.find(role => role.nama_role === name);
|
|
}
|
|
|
|
// Mendapatkan konfigurasi keamanan
|
|
getSecurityConfig(): KonfigurasiKeamanan {
|
|
return this.roles.konfigurasi_sistem.keamanan;
|
|
}
|
|
|
|
// Mendapatkan semua level akses
|
|
getAccessLevels(): string[] {
|
|
return this.roles.konfigurasi_sistem.level_akses;
|
|
}
|
|
}
|
|
|
|
export type {
|
|
Roles,
|
|
KonfigurasiKeamanan,
|
|
KonfigurasiSistem,
|
|
SIMRSRoles,
|
|
};
|
|
|
|
export {
|
|
LevelAkses,
|
|
ModulUtama,
|
|
SIMRSRoleManager,
|
|
simrsRoles as default,
|
|
};
|
|
|
|
// Contoh penggunaan
|
|
export const roleManager = new SIMRSRoleManager(simrsRoles);
|
|
|