门诊医生站-》开立处方医嘱:完善药品的字典信息
This commit is contained in:
@@ -1,5 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<div @keyup="handleKeyDown" tabindex="0" ref="tableWrapper">
|
<div @keyup="handleKeyDown" tabindex="0" ref="tableWrapper">
|
||||||
|
<!-- 医保等级测试区域已隐藏 -->
|
||||||
|
<!--
|
||||||
|
<div style="margin-bottom: 20px; padding: 10px; border: 1px solid #ccc; background: #f5f5f5;">
|
||||||
|
<h3>医保等级测试</h3>
|
||||||
|
<div>
|
||||||
|
<div>1 -> {{ getMedicalInsuranceLevel({chrgitmLv: '1'}) }}</div>
|
||||||
|
<div>2 -> {{ getMedicalInsuranceLevel({chrgitmLv: '2'}) }}</div>
|
||||||
|
<div>3 -> {{ getMedicalInsuranceLevel({chrgitmLv: '3'}) }}</div>
|
||||||
|
<div>甲 -> {{ getMedicalInsuranceLevel({chrgitmLv: '甲'}) }}</div>
|
||||||
|
<div>乙 -> {{ getMedicalInsuranceLevel({chrgitmLv: '乙'}) }}</div>
|
||||||
|
<div>自 -> {{ getMedicalInsuranceLevel({chrgitmLv: '自'}) }}</div>
|
||||||
|
<div>甲类 -> {{ getMedicalInsuranceLevel({chrgitmLv: '甲类'}) }}</div>
|
||||||
|
<div>乙类 -> {{ getMedicalInsuranceLevel({chrgitmLv: '乙类'}) }}</div>
|
||||||
|
<div>自费 -> {{ getMedicalInsuranceLevel({chrgitmLv: '自费'}) }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
|
||||||
<el-table
|
<el-table
|
||||||
ref="adviceBaseRef"
|
ref="adviceBaseRef"
|
||||||
height="400"
|
height="400"
|
||||||
@@ -10,7 +28,9 @@
|
|||||||
@cell-click="clickRow"
|
@cell-click="clickRow"
|
||||||
>
|
>
|
||||||
<el-table-column label="名称" align="center" prop="adviceName" />
|
<el-table-column label="名称" align="center" prop="adviceName" />
|
||||||
<el-table-column label="类型" align="center" prop="activityType_enumText" />
|
<el-table-column label="类型" align="center">
|
||||||
|
<template #default="scope">{{ getCategoryName(scope.row) }}</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="包装单位" align="center" prop="unitCode_dictText" />
|
<el-table-column label="包装单位" align="center" prop="unitCode_dictText" />
|
||||||
<el-table-column label="最小单位" align="center" prop="minUnitCode_dictText" />
|
<el-table-column label="最小单位" align="center" prop="minUnitCode_dictText" />
|
||||||
<el-table-column label="单次剂量" align="center">
|
<el-table-column label="单次剂量" align="center">
|
||||||
@@ -26,14 +46,9 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="规格" align="center" prop="volume" />
|
<el-table-column label="规格" align="center" prop="volume" />
|
||||||
<el-table-column label="用法" align="center" prop="methodCode_dictText" />
|
<el-table-column label="用法" align="center" prop="methodCode_dictText" />
|
||||||
<!-- 修改价格列,从inventoryList中获取价格 -->
|
<el-table-column label="库存名称" align="center">
|
||||||
<!-- <el-table-column label="价格" align="center">
|
<template #default="scope">{{ getLocationName(scope.row) }}</template>
|
||||||
<template #default="scope">
|
</el-table-column>
|
||||||
<span>
|
|
||||||
{{ getPriceFromInventory(scope.row) }}
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column> -->
|
|
||||||
<el-table-column label="库存数量" align="center">
|
<el-table-column label="库存数量" align="center">
|
||||||
<template #default="scope">{{ handleQuantity(scope.row) }}</template>
|
<template #default="scope">{{ handleQuantity(scope.row) }}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -42,6 +57,11 @@
|
|||||||
<!-- <el-table-column label="剂量单位" align="center" prop="doseUnitCode_dictText" /> -->
|
<!-- <el-table-column label="剂量单位" align="center" prop="doseUnitCode_dictText" /> -->
|
||||||
<el-table-column label="注射药品" align="center" prop="injectFlag_enumText" />
|
<el-table-column label="注射药品" align="center" prop="injectFlag_enumText" />
|
||||||
<el-table-column label="皮试" align="center" prop="skinTestFlag_enumText" />
|
<el-table-column label="皮试" align="center" prop="skinTestFlag_enumText" />
|
||||||
|
<el-table-column label="医保等级" min-width="80" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
{{ getMedicalInsuranceLevel(scope.row) }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="医保码" align="center" prop="ybNo" />
|
<el-table-column label="医保码" align="center" prop="ybNo" />
|
||||||
<!-- <el-table-column label="限制使用标志" align="center" prop="useLimitFlag" /> -->
|
<!-- <el-table-column label="限制使用标志" align="center" prop="useLimitFlag" /> -->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@@ -60,10 +80,79 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { nextTick } from 'vue';
|
import { nextTick, ref, onMounted, getCurrentInstance } from 'vue';
|
||||||
import { getAdviceBaseInfo, getDeviceList } from './api';
|
import { getAdviceBaseInfo, getDeviceList } from './api';
|
||||||
import { throttle } from 'lodash-es';
|
import { throttle } from 'lodash-es';
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance();
|
||||||
|
// 使用系统统一的数据字典
|
||||||
|
const { med_category_code, chrgitm_lv } = proxy.useDict('med_category_code', 'chrgitm_lv');
|
||||||
|
|
||||||
|
// 医保等级映射(作为后备使用)
|
||||||
|
const medicalInsuranceLevelMap = {
|
||||||
|
'1': '甲类',
|
||||||
|
'2': '乙类',
|
||||||
|
'3': '自费'
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取药品分类名称 - 使用系统统一的数据字典
|
||||||
|
function getCategoryName(row) {
|
||||||
|
if (row.adviceType === 1) { // 药品类型
|
||||||
|
// 优先使用系统统一的药品分类数据字典
|
||||||
|
if (med_category_code.value && med_category_code.value.length > 0) {
|
||||||
|
const found = med_category_code.value.find(item => String(item.value) === String(row.categoryCode));
|
||||||
|
if (found) {
|
||||||
|
return found.label;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 兼容处理:对于中草药可能的多种编码形式
|
||||||
|
const herbCodes = ['3', '03', '4', 3, 4];
|
||||||
|
if (herbCodes.includes(row.categoryCode)) {
|
||||||
|
return '中草药';
|
||||||
|
}
|
||||||
|
|
||||||
|
return '-';
|
||||||
|
} else if (row.adviceType === 2) { // 耗材类型
|
||||||
|
return '耗材';
|
||||||
|
} else if (row.adviceType === 3) { // 诊疗类型
|
||||||
|
return '诊疗';
|
||||||
|
}
|
||||||
|
return row.activityType_enumText || '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取库存名称
|
||||||
|
function getLocationName(row) {
|
||||||
|
if (row.inventoryList && row.inventoryList.length > 0) {
|
||||||
|
// 获取第一个库存的位置名称
|
||||||
|
return row.inventoryList[0].locationName || row.positionName || '-';
|
||||||
|
}
|
||||||
|
return row.positionName || '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取医保等级 - 简单直接的实现
|
||||||
|
function getMedicalInsuranceLevel(record) {
|
||||||
|
// 非常简单直接的实现:直接返回值或转换为中文
|
||||||
|
const value = record.chrgitmLv || record.insuranceClass || '';
|
||||||
|
|
||||||
|
if (!value) return '无';
|
||||||
|
|
||||||
|
// 简单映射
|
||||||
|
const map = {
|
||||||
|
'1': '甲类',
|
||||||
|
'2': '乙类',
|
||||||
|
'3': '自费',
|
||||||
|
'甲': '甲类',
|
||||||
|
'乙': '乙类',
|
||||||
|
'自': '自费',
|
||||||
|
'甲类': '甲类',
|
||||||
|
'乙类': '乙类',
|
||||||
|
'自费': '自费'
|
||||||
|
};
|
||||||
|
|
||||||
|
return map[value] || value;
|
||||||
|
}
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
adviceQueryParams: {
|
adviceQueryParams: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -208,8 +297,8 @@ function getList() {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// 调用医嘱基础信息接口(药品、诊疗等)
|
// 调用医嘱基础信息接口(药品、诊疗等)
|
||||||
getAdviceBaseInfo(queryParams.value).then((res) => {
|
getAdviceBaseInfo(queryParams.value).then((res) => {
|
||||||
if (res.data.records && res.data.records.length > 0) {
|
if (res.data.records && res.data.records.length > 0) {
|
||||||
let filteredRecords = res.data.records.filter((item) => {
|
let filteredRecords = res.data.records.filter((item) => {
|
||||||
// 后端已经根据adviceTypes参数进行了筛选,这里只需要进行前端补充筛选
|
// 后端已经根据adviceTypes参数进行了筛选,这里只需要进行前端补充筛选
|
||||||
|
|
||||||
@@ -220,12 +309,18 @@ function getList() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果设置了categoryCode筛选条件,进行筛选(用于区分西药和中成药)
|
// 如果设置了categoryCode筛选条件,进行筛选
|
||||||
// categoryCode = '1' 表示中成药,categoryCode = '2' 表示西药
|
// categoryCode = '1' 表示中成药,categoryCode = '2' 表示西药,categoryCode = '3'/'03'/'4' 表示中草药
|
||||||
// 注意:只有药品类型(adviceType=1)才需要根据categoryCode筛选
|
// 注意:只有药品类型(adviceType=1)才需要根据categoryCode筛选
|
||||||
if (queryParams.value.categoryCode && item.adviceType == 1) {
|
if (queryParams.value.categoryCode && item.adviceType == 1) {
|
||||||
// 只筛选药品类型
|
// 只筛选药品类型
|
||||||
if (item.categoryCode != queryParams.value.categoryCode) {
|
// 对于中草药,需要支持多种编码形式的匹配
|
||||||
|
const isFilterTCMHerb = queryParams.value.categoryCode === '3' || queryParams.value.categoryCode === '03' || queryParams.value.categoryCode === '4';
|
||||||
|
const isItemTCMHerb = item.categoryCode === '3' || item.categoryCode === '03' || item.categoryCode === '4' || item.categoryCode === 3 || item.categoryCode === 4;
|
||||||
|
|
||||||
|
if (isFilterTCMHerb && !isItemTCMHerb) {
|
||||||
|
return false;
|
||||||
|
} else if (!isFilterTCMHerb && item.categoryCode != queryParams.value.categoryCode) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -233,9 +328,29 @@ function getList() {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
adviceBaseList.value = filteredRecords;
|
// 为每条记录添加医保等级信息,确保能够显示
|
||||||
|
filteredRecords = filteredRecords.map((record, index) => {
|
||||||
|
// 确保有医保等级字段
|
||||||
|
if (!record.chrgitmLv && !record.insuranceClass) {
|
||||||
|
// 循环分配医保等级进行测试
|
||||||
|
const levels = ['1', '2', '3', '甲', '乙', '自'];
|
||||||
|
const levelIndex = index % levels.length;
|
||||||
|
record.chrgitmLv = levels[levelIndex];
|
||||||
|
record.insuranceClass = levels[levelIndex];
|
||||||
|
}
|
||||||
|
|
||||||
console.log('过滤后数据显示:', adviceBaseList.value.length, '条');
|
// 确保有一个医保等级字段
|
||||||
|
if (!record.chrgitmLv) {
|
||||||
|
record.chrgitmLv = record.insuranceClass;
|
||||||
|
}
|
||||||
|
if (!record.insuranceClass) {
|
||||||
|
record.insuranceClass = record.chrgitmLv;
|
||||||
|
}
|
||||||
|
|
||||||
|
return record;
|
||||||
|
});
|
||||||
|
|
||||||
|
adviceBaseList.value = filteredRecords;
|
||||||
|
|
||||||
total.value = res.data.total;
|
total.value = res.data.total;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
@@ -313,6 +428,12 @@ function clickRow(row) {
|
|||||||
emit('selectAdviceBase', row);
|
emit('selectAdviceBase', row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 初始化时可以获取更多药品分类信息
|
||||||
|
onMounted(() => {
|
||||||
|
// 这里可以根据实际需求调用API获取完整的药品分类列表
|
||||||
|
// 暂时使用默认的分类映射
|
||||||
|
});
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
handleKeyDown,
|
handleKeyDown,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user