emr-types
Version:
Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation
85 lines • 2.19 kB
JavaScript
/**
* Priority Enum
*
* Common priority values used across domains
*
* @enum Priority
* @description Priority enum for domain entities
*/
export var Priority;
(function (Priority) {
Priority["LOW"] = "low";
Priority["NORMAL"] = "normal";
Priority["HIGH"] = "high";
Priority["URGENT"] = "urgent";
Priority["CRITICAL"] = "critical";
})(Priority || (Priority = {}));
/**
* Priority Levels
*
* Numeric values for priority comparison
*/
export const PriorityLevels = {
[Priority.LOW]: 1,
[Priority.NORMAL]: 2,
[Priority.HIGH]: 3,
[Priority.URGENT]: 4,
[Priority.CRITICAL]: 5
};
/**
* Priority Utility Functions
*/
export const PriorityUtils = {
/**
* Check if priority1 is higher than priority2
*/
isHigher: (priority1, priority2) => {
return PriorityLevels[priority1] > PriorityLevels[priority2];
},
/**
* Check if priority1 is lower than priority2
*/
isLower: (priority1, priority2) => {
return PriorityLevels[priority1] < PriorityLevels[priority2];
},
/**
* Check if priority1 is equal to priority2
*/
isEqual: (priority1, priority2) => {
return PriorityLevels[priority1] === PriorityLevels[priority2];
},
/**
* Get priority display name
*/
getDisplayName: (priority) => {
return priority.charAt(0).toUpperCase() + priority.slice(1);
},
/**
* Get priority color (for UI)
*/
getColor: (priority) => {
switch (priority) {
case Priority.LOW:
return 'gray';
case Priority.NORMAL:
return 'blue';
case Priority.HIGH:
return 'orange';
case Priority.URGENT:
return 'red';
case Priority.CRITICAL:
return 'purple';
default:
return 'default';
}
},
/**
* Get all priorities sorted by level (highest first)
*/
getAllSorted: () => {
return Object.entries(PriorityLevels)
.sort(([, a], [, b]) => b - a)
.map(([priority]) => priority);
}
};
//# sourceMappingURL=Priority.js.map