165 lines
3.7 KiB
JavaScript
165 lines
3.7 KiB
JavaScript
/**
|
||
* 医疗常量配置
|
||
* 从字典动态获取常量值,避免硬编码
|
||
*
|
||
* 使用方式:
|
||
* import { DIAG_TYPE, RequestStatus } from '@/utils/medicalConstants';
|
||
* medTypeCode: DIAG_TYPE.WESTERN_MEDICINE
|
||
* serviceStatus: RequestStatus.ACTIVE
|
||
*/
|
||
|
||
import { getDicts } from '@/api/system/dict/data';
|
||
|
||
// 诊断类型字典缓存
|
||
let diagTypeCache = null;
|
||
|
||
/**
|
||
* 请求状态枚举(与后端 RequestStatus.java 保持一致)
|
||
* 用于服务申请、医嘱执行等状态管理
|
||
*/
|
||
export const RequestStatus = {
|
||
/** 待发送 */
|
||
DRAFT: 1,
|
||
/** 已发送/待执行 */
|
||
ACTIVE: 2,
|
||
/** 已完成 */
|
||
COMPLETED: 3,
|
||
/** 暂停 */
|
||
ON_HOLD: 4,
|
||
/** 取消/待退 */
|
||
CANCELLED: 5,
|
||
/** 停嘱 */
|
||
STOPPED: 6,
|
||
/** 不执行 */
|
||
ENDED: 7,
|
||
/** 未知 */
|
||
UNKNOWN: 9,
|
||
};
|
||
|
||
/**
|
||
* 请求状态枚举的说明信息
|
||
*/
|
||
export const RequestStatusDescriptions = {
|
||
1: '待发送',
|
||
2: '已发送/待执行',
|
||
3: '已完成',
|
||
4: '暂停',
|
||
5: '取消/待退',
|
||
6: '停嘱',
|
||
7: '不执行',
|
||
9: '未知',
|
||
};
|
||
|
||
/**
|
||
* 获取请求状态的说明
|
||
* @param {number} value - 请求状态值
|
||
* @returns {string} - 说明信息
|
||
*/
|
||
export function getRequestStatusDescription(value) {
|
||
return RequestStatusDescriptions[value] || '未知状态';
|
||
}
|
||
|
||
/**
|
||
* 获取诊断类型字典(异步初始化)
|
||
*/
|
||
async function initDiagType() {
|
||
if (!diagTypeCache) {
|
||
try {
|
||
const res = await getDicts('diag_type');
|
||
diagTypeCache = res.data || [];
|
||
} catch (error) {
|
||
console.error('获取诊断类型字典失败:', error);
|
||
diagTypeCache = [];
|
||
}
|
||
}
|
||
return diagTypeCache;
|
||
}
|
||
|
||
/**
|
||
* 根据标签获取诊断类型的值
|
||
* @param {string} label - 诊断类型标签,如 '西医诊断'
|
||
* @returns {string|null} - 诊断类型的值,如 '1'
|
||
*/
|
||
export async function getDiagTypeValue(label) {
|
||
const dictList = await initDiagType();
|
||
const item = dictList.find(d => d.dictLabel === label);
|
||
return item ? item.dictValue : null;
|
||
}
|
||
|
||
/**
|
||
* 根据值获取诊断类型的标签
|
||
* @param {string} value - 诊断类型的值,如 '1'
|
||
* @returns {string|null} - 诊断类型的标签,如 '西医诊断'
|
||
*/
|
||
export async function getDiagTypeLabel(value) {
|
||
const dictList = await initDiagType();
|
||
const item = dictList.find(d => d.dictValue === value);
|
||
return item ? item.dictLabel : null;
|
||
}
|
||
|
||
/**
|
||
* 获取完整的诊断类型字典列表
|
||
* @returns {Array} - 诊断类型字典列表
|
||
*/
|
||
export async function getDiagTypeList() {
|
||
return await initDiagType();
|
||
}
|
||
|
||
/**
|
||
* 诊断类型常量(同步使用,需要先初始化字典)
|
||
* 注意:这些值在字典加载后才有效
|
||
*/
|
||
export const DIAG_TYPE = {
|
||
/** 西医诊断 */
|
||
WESTERN_MEDICINE: '1',
|
||
/** 中医主病诊断 */
|
||
TCM_MAIN_DISEASE: '2',
|
||
/** 中医主证诊断 */
|
||
TCM_MAIN_SYNDROME: '3',
|
||
/** 初诊诊断 */
|
||
INITIAL: '4',
|
||
/** 修正诊断 */
|
||
REVISED: '5',
|
||
/** 补充诊断 */
|
||
SUPPLEMENTARY: '6',
|
||
};
|
||
|
||
/**
|
||
* 诊断类型常量的说明信息
|
||
*/
|
||
export const DIAG_TYPE_DESCRIPTIONS = {
|
||
'1': '西医诊断',
|
||
'2': '中医主病诊断',
|
||
'3': '中医主证诊断',
|
||
'4': '初诊诊断',
|
||
'5': '修正诊断',
|
||
'6': '补充诊断',
|
||
};
|
||
|
||
/**
|
||
* 获取诊断类型的说明
|
||
* @param {string} value - 诊断类型的值
|
||
* @returns {string} - 说明信息
|
||
*/
|
||
export function getDiagTypeDescription(value) {
|
||
return DIAG_TYPE_DESCRIPTIONS[value] || '未知类型';
|
||
}
|
||
|
||
// 默认导出
|
||
export default {
|
||
DIAG_TYPE,
|
||
DIAG_TYPE_DESCRIPTIONS,
|
||
getDiagTypeValue,
|
||
getDiagTypeLabel,
|
||
getDiagTypeList,
|
||
getDiagTypeDescription,
|
||
};
|
||
|
||
/**
|
||
* 状态通用常量(与后端 status 字段保持一致:0=正常/启用,1=停用)
|
||
*/
|
||
export const STATUS = {
|
||
NORMAL: '0', // 正常/启用
|
||
DISABLE: '1' // 停用
|
||
};
|