first commit
This commit is contained in:
21
types/auth.ts
Executable file
21
types/auth.ts
Executable file
@@ -0,0 +1,21 @@
|
||||
// types/auth.ts
|
||||
export interface ExtendedUser {
|
||||
id: string;
|
||||
name: string;
|
||||
email: string;
|
||||
preferred_username: string;
|
||||
email_verified: boolean;
|
||||
roles: string[];
|
||||
client_roles: string[];
|
||||
permissions?: string[];
|
||||
given_name?: string;
|
||||
family_name?: string;
|
||||
username?: string;
|
||||
}
|
||||
|
||||
export interface ExtendedSession {
|
||||
user: ExtendedUser;
|
||||
accessToken: string;
|
||||
refreshToken: string;
|
||||
expiresAt: number;
|
||||
}
|
||||
37
types/dashboard/index.ts
Executable file
37
types/dashboard/index.ts
Executable file
@@ -0,0 +1,37 @@
|
||||
/*Revenue Projects*/
|
||||
type RevenueProjects={
|
||||
img: string;
|
||||
leadname: string;
|
||||
designation: string;
|
||||
projectname: string;
|
||||
statuscolor: string;
|
||||
statustext: string;
|
||||
money: string;
|
||||
};
|
||||
|
||||
// Daily Activities
|
||||
type DailyActivities = {
|
||||
title: string;
|
||||
subtitle: string;
|
||||
textcolor: string;
|
||||
boldtext: boolean;
|
||||
line: boolean;
|
||||
link: string;
|
||||
url: string;
|
||||
};
|
||||
|
||||
/*Card types*/
|
||||
type BlogCards = {
|
||||
avatar: string;
|
||||
coveravatar: string;
|
||||
read: string;
|
||||
title: string;
|
||||
link: string;
|
||||
category: string;
|
||||
name: string;
|
||||
view: string;
|
||||
comments: string;
|
||||
time: string;
|
||||
};
|
||||
|
||||
export type{RevenueProjects,DailyActivities,BlogCards}
|
||||
64
types/fhir/humanName.ts
Normal file
64
types/fhir/humanName.ts
Normal file
@@ -0,0 +1,64 @@
|
||||
// types/fhir.ts
|
||||
|
||||
export interface FhirHumanName {
|
||||
use?:
|
||||
| "usual"
|
||||
| "official"
|
||||
| "temp"
|
||||
| "nickname"
|
||||
| "anonymous"
|
||||
| "old"
|
||||
| "maiden";
|
||||
text: string;
|
||||
family?: string;
|
||||
given?: string[];
|
||||
prefix?: string[];
|
||||
suffix?: string[];
|
||||
period?: {
|
||||
start?: string;
|
||||
end?: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface FhirIdentifier {
|
||||
use?: "usual" | "official" | "temp" | "secondary" | "old";
|
||||
type?: {
|
||||
coding?: Array<{
|
||||
system?: string;
|
||||
code?: string;
|
||||
display?: string;
|
||||
}>;
|
||||
};
|
||||
system?: string;
|
||||
value?: string;
|
||||
period?: {
|
||||
start?: string;
|
||||
end?: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface FhirPatient {
|
||||
resourceType: "Patient";
|
||||
id?: string;
|
||||
identifier?: FhirIdentifier[];
|
||||
active?: boolean;
|
||||
name?: FhirHumanName[];
|
||||
telecom?: Array<{
|
||||
system?: "phone" | "fax" | "email" | "pager" | "url" | "sms" | "other";
|
||||
value?: string;
|
||||
use?: "home" | "work" | "temp" | "old" | "mobile";
|
||||
}>;
|
||||
gender?: "male" | "female" | "other" | "unknown";
|
||||
birthDate?: string;
|
||||
address?: Array<{
|
||||
use?: "home" | "work" | "temp" | "old" | "billing";
|
||||
type?: "postal" | "physical" | "both";
|
||||
text?: string;
|
||||
line?: string[];
|
||||
city?: string;
|
||||
district?: string;
|
||||
state?: string;
|
||||
postalCode?: string;
|
||||
country?: string;
|
||||
}>;
|
||||
}
|
||||
27
types/menu.ts
Normal file
27
types/menu.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
export interface MenuItem {
|
||||
id: string
|
||||
title: string
|
||||
url: string
|
||||
icon: string
|
||||
parentId?: string
|
||||
children?: MenuItem[]
|
||||
order: number
|
||||
isActive: boolean
|
||||
reference?: string
|
||||
createdAt?: string
|
||||
updatedAt?: string
|
||||
}
|
||||
|
||||
export interface MenuForm {
|
||||
titleMenu: string
|
||||
sideMenu: string
|
||||
nameMenu: string
|
||||
linkUrlMenu: string
|
||||
iconMenu: string
|
||||
}
|
||||
|
||||
export interface MenuData {
|
||||
menus: MenuItem[]
|
||||
references: string[]
|
||||
menuOptions: string[]
|
||||
}
|
||||
264
types/roles.ts
Normal file
264
types/roles.ts
Normal file
@@ -0,0 +1,264 @@
|
||||
// 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);
|
||||
|
||||
31
types/themeTypes/ThemeType.ts
Executable file
31
types/themeTypes/ThemeType.ts
Executable file
@@ -0,0 +1,31 @@
|
||||
export type ThemeTypes = {
|
||||
name: string;
|
||||
dark: boolean;
|
||||
variables?: object;
|
||||
colors: {
|
||||
primary?: string;
|
||||
secondary?: string;
|
||||
info?: string;
|
||||
success?: string;
|
||||
warning?: string;
|
||||
error?: string;
|
||||
lightprimary?: string;
|
||||
lightsecondary?: string;
|
||||
lightsuccess?: string;
|
||||
lighterror?: string;
|
||||
lightinfo?: string;
|
||||
lightwarning?: string;
|
||||
textPrimary?: string;
|
||||
textSecondary?: string;
|
||||
borderColor?: string;
|
||||
hoverColor?: string;
|
||||
containerBg?: string;
|
||||
background?: string;
|
||||
surface?: string;
|
||||
grey100?: string;
|
||||
grey200?: string;
|
||||
darkgray?: string;
|
||||
light?: string;
|
||||
muted?: string;
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user