emr-types
Version:
Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation
473 lines • 20 kB
JavaScript
/**
* User Role Enums
*
* Predefined user roles for EMR system
*/
/**
* System User Roles
*
* Core roles for EMR system functionality
*/
export var UserRole;
(function (UserRole) {
// System Administration
UserRole["SYSTEM_ADMIN"] = "system_admin";
UserRole["TENANT_ADMIN"] = "tenant_admin";
UserRole["SUPER_ADMIN"] = "super_admin";
// Medical Staff
UserRole["DOCTOR"] = "doctor";
UserRole["NURSE"] = "nurse";
UserRole["SPECIALIST"] = "specialist";
UserRole["RESIDENT"] = "resident";
UserRole["INTERN"] = "intern";
// Support Staff
UserRole["RECEPTIONIST"] = "receptionist";
UserRole["MEDICAL_ASSISTANT"] = "medical_assistant";
UserRole["LAB_TECHNICIAN"] = "lab_technician";
UserRole["PHARMACIST"] = "pharmacist";
// Administrative Staff
UserRole["ADMINISTRATOR"] = "administrator";
UserRole["BILLING_SPECIALIST"] = "billing_specialist";
UserRole["IT_SUPPORT"] = "it_support";
UserRole["HR_MANAGER"] = "hr_manager";
// Patient Roles
UserRole["PATIENT"] = "patient";
UserRole["GUARDIAN"] = "guardian";
UserRole["FAMILY_MEMBER"] = "family_member";
// External Roles
UserRole["CONSULTANT"] = "consultant";
UserRole["VENDOR"] = "vendor";
UserRole["INSURANCE_PROVIDER"] = "insurance_provider";
})(UserRole || (UserRole = {}));
/**
* User Role Categories
*/
export var UserRoleCategory;
(function (UserRoleCategory) {
UserRoleCategory["SYSTEM"] = "system";
UserRoleCategory["MEDICAL"] = "medical";
UserRoleCategory["SUPPORT"] = "support";
UserRoleCategory["ADMINISTRATIVE"] = "administrative";
UserRoleCategory["PATIENT"] = "patient";
UserRoleCategory["EXTERNAL"] = "external";
})(UserRoleCategory || (UserRoleCategory = {}));
/**
* User Role Priority Levels
*/
export var UserRolePriority;
(function (UserRolePriority) {
UserRolePriority["CRITICAL"] = "critical";
UserRolePriority["HIGH"] = "high";
UserRolePriority["MEDIUM"] = "medium";
UserRolePriority["LOW"] = "low";
UserRolePriority["MINIMAL"] = "minimal";
})(UserRolePriority || (UserRolePriority = {}));
/**
* User Role Permissions
*/
export var UserPermission;
(function (UserPermission) {
// System Permissions
UserPermission["SYSTEM_ACCESS"] = "system_access";
UserPermission["TENANT_MANAGEMENT"] = "tenant_management";
UserPermission["USER_MANAGEMENT"] = "user_management";
UserPermission["ROLE_MANAGEMENT"] = "role_management";
// Patient Management
UserPermission["PATIENT_READ"] = "patient_read";
UserPermission["PATIENT_CREATE"] = "patient_create";
UserPermission["PATIENT_UPDATE"] = "patient_update";
UserPermission["PATIENT_DELETE"] = "patient_delete";
UserPermission["PATIENT_SEARCH"] = "patient_search";
// Medical Records
UserPermission["MEDICAL_RECORD_READ"] = "medical_record_read";
UserPermission["MEDICAL_RECORD_CREATE"] = "medical_record_create";
UserPermission["MEDICAL_RECORD_UPDATE"] = "medical_record_update";
UserPermission["MEDICAL_RECORD_DELETE"] = "medical_record_delete";
// Appointments
UserPermission["APPOINTMENT_READ"] = "appointment_read";
UserPermission["APPOINTMENT_CREATE"] = "appointment_create";
UserPermission["APPOINTMENT_UPDATE"] = "appointment_update";
UserPermission["APPOINTMENT_DELETE"] = "appointment_delete";
UserPermission["APPOINTMENT_SCHEDULE"] = "appointment_schedule";
// Billing
UserPermission["BILLING_READ"] = "billing_read";
UserPermission["BILLING_CREATE"] = "billing_create";
UserPermission["BILLING_UPDATE"] = "billing_update";
UserPermission["BILLING_DELETE"] = "billing_delete";
// Reports
UserPermission["REPORT_READ"] = "report_read";
UserPermission["REPORT_CREATE"] = "report_create";
UserPermission["REPORT_EXPORT"] = "report_export";
// Settings
UserPermission["SETTINGS_READ"] = "settings_read";
UserPermission["SETTINGS_UPDATE"] = "settings_update";
// Audit
UserPermission["AUDIT_READ"] = "audit_read";
UserPermission["AUDIT_EXPORT"] = "audit_export";
})(UserPermission || (UserPermission = {}));
/**
* User Role Utilities
*/
export const UserRoleUtils = {
/**
* Get role category
*/
getCategory(role) {
const roleCategories = {
// System roles
[]: UserRoleCategory.SYSTEM,
[]: UserRoleCategory.SYSTEM,
[]: UserRoleCategory.SYSTEM,
// Medical roles
[]: UserRoleCategory.MEDICAL,
[]: UserRoleCategory.MEDICAL,
[]: UserRoleCategory.MEDICAL,
[]: UserRoleCategory.MEDICAL,
[]: UserRoleCategory.MEDICAL,
// Support roles
[]: UserRoleCategory.SUPPORT,
[]: UserRoleCategory.SUPPORT,
[]: UserRoleCategory.SUPPORT,
[]: UserRoleCategory.SUPPORT,
// Administrative roles
[]: UserRoleCategory.ADMINISTRATIVE,
[]: UserRoleCategory.ADMINISTRATIVE,
[]: UserRoleCategory.ADMINISTRATIVE,
[]: UserRoleCategory.ADMINISTRATIVE,
// Patient roles
[]: UserRoleCategory.PATIENT,
[]: UserRoleCategory.PATIENT,
[]: UserRoleCategory.PATIENT,
// External roles
[]: UserRoleCategory.EXTERNAL,
[]: UserRoleCategory.EXTERNAL,
[]: UserRoleCategory.EXTERNAL
};
return roleCategories[role];
},
/**
* Get role priority
*/
getPriority(role) {
const rolePriorities = {
// Critical roles
[]: UserRolePriority.CRITICAL,
[]: UserRolePriority.CRITICAL,
// High priority roles
[]: UserRolePriority.HIGH,
[]: UserRolePriority.HIGH,
[]: UserRolePriority.HIGH,
// Medium priority roles
[]: UserRolePriority.MEDIUM,
[]: UserRolePriority.MEDIUM,
[]: UserRolePriority.MEDIUM,
[]: UserRolePriority.MEDIUM,
// Low priority roles
[]: UserRolePriority.LOW,
[]: UserRolePriority.LOW,
[]: UserRolePriority.LOW,
[]: UserRolePriority.LOW,
[]: UserRolePriority.LOW,
[]: UserRolePriority.LOW,
[]: UserRolePriority.LOW,
// Minimal priority roles
[]: UserRolePriority.MINIMAL,
[]: UserRolePriority.MINIMAL,
[]: UserRolePriority.MINIMAL,
[]: UserRolePriority.MINIMAL,
[]: UserRolePriority.MINIMAL,
[]: UserRolePriority.MINIMAL
};
return rolePriorities[role];
},
/**
* Get default permissions for role
*/
getDefaultPermissions(role) {
const rolePermissions = {
[]: [
UserPermission.SYSTEM_ACCESS,
UserPermission.TENANT_MANAGEMENT,
UserPermission.USER_MANAGEMENT,
UserPermission.ROLE_MANAGEMENT,
UserPermission.AUDIT_READ,
UserPermission.AUDIT_EXPORT
],
[]: [
UserPermission.USER_MANAGEMENT,
UserPermission.ROLE_MANAGEMENT,
UserPermission.PATIENT_READ,
UserPermission.PATIENT_CREATE,
UserPermission.PATIENT_UPDATE,
UserPermission.PATIENT_DELETE,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE,
UserPermission.MEDICAL_RECORD_UPDATE,
UserPermission.MEDICAL_RECORD_DELETE,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE,
UserPermission.APPOINTMENT_DELETE,
UserPermission.APPOINTMENT_SCHEDULE,
UserPermission.BILLING_READ,
UserPermission.BILLING_CREATE,
UserPermission.BILLING_UPDATE,
UserPermission.BILLING_DELETE,
UserPermission.REPORT_READ,
UserPermission.REPORT_CREATE,
UserPermission.REPORT_EXPORT,
UserPermission.SETTINGS_READ,
UserPermission.SETTINGS_UPDATE,
UserPermission.AUDIT_READ
],
[]: [
UserPermission.SYSTEM_ACCESS,
UserPermission.TENANT_MANAGEMENT,
UserPermission.USER_MANAGEMENT,
UserPermission.ROLE_MANAGEMENT,
UserPermission.AUDIT_READ,
UserPermission.AUDIT_EXPORT
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE,
UserPermission.MEDICAL_RECORD_UPDATE,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE,
UserPermission.APPOINTMENT_SCHEDULE,
UserPermission.REPORT_READ,
UserPermission.REPORT_CREATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE,
UserPermission.MEDICAL_RECORD_UPDATE,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE,
UserPermission.MEDICAL_RECORD_UPDATE,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE,
UserPermission.APPOINTMENT_SCHEDULE,
UserPermission.REPORT_READ,
UserPermission.REPORT_CREATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE,
UserPermission.MEDICAL_RECORD_UPDATE,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.APPOINTMENT_READ
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_CREATE,
UserPermission.PATIENT_UPDATE,
UserPermission.PATIENT_SEARCH,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE,
UserPermission.APPOINTMENT_SCHEDULE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ,
UserPermission.MEDICAL_RECORD_CREATE
],
[]: [
UserPermission.USER_MANAGEMENT,
UserPermission.PATIENT_READ,
UserPermission.PATIENT_CREATE,
UserPermission.PATIENT_UPDATE,
UserPermission.PATIENT_DELETE,
UserPermission.PATIENT_SEARCH,
UserPermission.APPOINTMENT_READ,
UserPermission.APPOINTMENT_CREATE,
UserPermission.APPOINTMENT_UPDATE,
UserPermission.APPOINTMENT_DELETE,
UserPermission.APPOINTMENT_SCHEDULE,
UserPermission.BILLING_READ,
UserPermission.BILLING_CREATE,
UserPermission.BILLING_UPDATE,
UserPermission.BILLING_DELETE,
UserPermission.REPORT_READ,
UserPermission.REPORT_CREATE,
UserPermission.REPORT_EXPORT,
UserPermission.SETTINGS_READ,
UserPermission.SETTINGS_UPDATE
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.BILLING_READ,
UserPermission.BILLING_CREATE,
UserPermission.BILLING_UPDATE,
UserPermission.BILLING_DELETE,
UserPermission.REPORT_READ,
UserPermission.REPORT_CREATE
],
[]: [
UserPermission.SETTINGS_READ,
UserPermission.SETTINGS_UPDATE
],
[]: [
UserPermission.USER_MANAGEMENT,
UserPermission.ROLE_MANAGEMENT,
UserPermission.REPORT_READ,
UserPermission.REPORT_CREATE
],
[]: [
UserPermission.PATIENT_READ
],
[]: [
UserPermission.PATIENT_READ
],
[]: [
UserPermission.PATIENT_READ
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.PATIENT_SEARCH,
UserPermission.MEDICAL_RECORD_READ
],
[]: [
UserPermission.PATIENT_READ
],
[]: [
UserPermission.PATIENT_READ,
UserPermission.BILLING_READ
]
};
return rolePermissions[role] || [];
},
/**
* Check if role is system role
*/
isSystemRole(role) {
return this.getCategory(role) === UserRoleCategory.SYSTEM;
},
/**
* Check if role is medical role
*/
isMedicalRole(role) {
return this.getCategory(role) === UserRoleCategory.MEDICAL;
},
/**
* Check if role is administrative role
*/
isAdministrativeRole(role) {
return this.getCategory(role) === UserRoleCategory.ADMINISTRATIVE;
},
/**
* Check if role is patient role
*/
isPatientRole(role) {
return this.getCategory(role) === UserRoleCategory.PATIENT;
},
/**
* Check if role has high priority
*/
isHighPriority(role) {
const priority = this.getPriority(role);
return priority === UserRolePriority.CRITICAL || priority === UserRolePriority.HIGH;
},
/**
* Get role display name
*/
getDisplayName(role) {
const displayNames = {
[]: 'System Administrator',
[]: 'Tenant Administrator',
[]: 'Super Administrator',
[]: 'Doctor',
[]: 'Nurse',
[]: 'Specialist',
[]: 'Resident',
[]: 'Intern',
[]: 'Receptionist',
[]: 'Medical Assistant',
[]: 'Lab Technician',
[]: 'Pharmacist',
[]: 'Administrator',
[]: 'Billing Specialist',
[]: 'IT Support',
[]: 'HR Manager',
[]: 'Patient',
[]: 'Guardian',
[]: 'Family Member',
[]: 'Consultant',
[]: 'Vendor',
[]: 'Insurance Provider'
};
return displayNames[role] || role;
},
/**
* Get role description
*/
getDescription(role) {
const descriptions = {
[]: 'Full system access and administration capabilities',
[]: 'Tenant-level administration and management',
[]: 'Super administrator with all privileges',
[]: 'Medical doctor with patient care responsibilities',
[]: 'Registered nurse with patient care duties',
[]: 'Medical specialist in specific fields',
[]: 'Medical resident in training',
[]: 'Medical intern in training',
[]: 'Front desk and patient coordination',
[]: 'Assists medical staff with patient care',
[]: 'Laboratory testing and analysis',
[]: 'Medication dispensing and consultation',
[]: 'General administrative duties',
[]: 'Medical billing and insurance',
[]: 'Technical support and maintenance',
[]: 'Human resources management',
[]: 'Patient with limited access to own records',
[]: 'Legal guardian for patient',
[]: 'Family member with patient access',
[]: 'External medical consultant',
[]: 'External vendor or supplier',
[]: 'Insurance company representative'
};
return descriptions[role] || 'No description available';
}
};
//# sourceMappingURL=UserRole.js.map