157 lines
3.5 KiB
JavaScript
157 lines
3.5 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,
|
|
};
|