emr-types
Version:
Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation
106 lines • 2.98 kB
JavaScript
/**
* Status Enum
*
* Common status values used across domains
*
* @enum Status
* @description Generic status enum for domain entities
*/
export var Status;
(function (Status) {
Status["ACTIVE"] = "active";
Status["INACTIVE"] = "inactive";
Status["PENDING"] = "pending";
Status["APPROVED"] = "approved";
Status["REJECTED"] = "rejected";
Status["SUSPENDED"] = "suspended";
Status["DELETED"] = "deleted";
Status["ARCHIVED"] = "archived";
Status["DRAFT"] = "draft";
Status["PUBLISHED"] = "published";
Status["EXPIRED"] = "expired";
Status["CANCELLED"] = "cancelled";
Status["COMPLETED"] = "completed";
Status["IN_PROGRESS"] = "in_progress";
Status["ON_HOLD"] = "on_hold";
Status["FAILED"] = "failed";
Status["SUCCESS"] = "success";
Status["ERROR"] = "error";
Status["WARNING"] = "warning";
Status["INFO"] = "info";
})(Status || (Status = {}));
/**
* Status Categories
*
* Group statuses by their meaning
*/
export const StatusCategories = {
/** Active states */
ACTIVE: [Status.ACTIVE, Status.APPROVED, Status.PUBLISHED, Status.SUCCESS],
/** Inactive states */
INACTIVE: [Status.INACTIVE, Status.SUSPENDED, Status.DELETED, Status.ARCHIVED],
/** Pending states */
PENDING: [Status.PENDING, Status.DRAFT, Status.ON_HOLD],
/** Completed states */
COMPLETED: [Status.COMPLETED, Status.EXPIRED, Status.CANCELLED],
/** Error states */
ERROR: [Status.REJECTED, Status.FAILED, Status.ERROR]
};
/**
* Status Utility Functions
*/
export const StatusUtils = {
/**
* Check if a status is active
*/
isActive: (status) => {
return StatusCategories.ACTIVE.includes(status);
},
/**
* Check if a status is inactive
*/
isInactive: (status) => {
return StatusCategories.INACTIVE.includes(status);
},
/**
* Check if a status is pending
*/
isPending: (status) => {
return StatusCategories.PENDING.includes(status);
},
/**
* Check if a status is completed
*/
isCompleted: (status) => {
return StatusCategories.COMPLETED.includes(status);
},
/**
* Check if a status is an error
*/
isError: (status) => {
return StatusCategories.ERROR.includes(status);
},
/**
* Get status display name
*/
getDisplayName: (status) => {
return status.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
},
/**
* Get status color (for UI)
*/
getColor: (status) => {
if (StatusUtils.isActive(status))
return 'green';
if (StatusUtils.isInactive(status))
return 'gray';
if (StatusUtils.isPending(status))
return 'yellow';
if (StatusUtils.isCompleted(status))
return 'blue';
if (StatusUtils.isError(status))
return 'red';
return 'default';
}
};
//# sourceMappingURL=Status.js.map