Files
his/openhis-ui-vue3/src/utils/medicalConstants.js

165 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 医疗常量配置
* 从字典动态获取常量值,避免硬编码
*
* 使用方式:
* 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' // 停用
};