first commit

This commit is contained in:
2025-11-26 07:49:54 +00:00
commit d8685ccf10
468 changed files with 41346 additions and 0 deletions

21
types/auth.ts Executable file
View 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
View 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
View 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
View 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
View 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
View 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;
};
};