Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# HealthLink-HIS 代码模块索引
|
||||
|
||||
> 供 LLM 快速定位代码。每个模块列出 Controller → Service → Mapper 关键文件。
|
||||
> 最后更新: 2026-06-18 06:00 (309 个 Controller)
|
||||
> 最后更新: 2026-06-18 12:00 (309 个 Controller)
|
||||
|
||||
## 关键词 → 模块速查
|
||||
|
||||
|
||||
@@ -67,6 +67,11 @@ public class ElepMedicationInfoDto {
|
||||
/** 诊断id */
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long conditionId;
|
||||
/** 诊断定义id */
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long conditionDefId;
|
||||
/** 慢病诊断编码 */
|
||||
private String opspDiseCode;
|
||||
/** 药品版本号 */
|
||||
private String version;
|
||||
}
|
||||
|
||||
@@ -400,6 +400,8 @@
|
||||
T1.rx_type_code, --处方类别
|
||||
T1.rx_item_type_code, --处方项目类别
|
||||
T1.condition_id, --诊断id
|
||||
T1.condition_def_id, --诊断定义id
|
||||
T1.opsp_dise_code, --慢病诊断编码
|
||||
T1.version --药品版本号
|
||||
FROM elep_medication_request AS T1
|
||||
LEFT JOIN yb_catalog_drug_info AS T2
|
||||
@@ -427,6 +429,8 @@
|
||||
T1.rx_type_code,
|
||||
T1.rx_item_type_code,
|
||||
T1.condition_id,
|
||||
T1.condition_def_id,
|
||||
T1.opsp_dise_code,
|
||||
T1.version
|
||||
</select>
|
||||
<select id="selectSaveInfo" resultType="com.healthlink.his.web.doctorstation.dto.ElepPrescriptionInfoParam">
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
<vxe-column
|
||||
title="类型"
|
||||
align="center"
|
||||
width="120"
|
||||
width="160"
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
@@ -205,7 +205,6 @@
|
||||
title="单次剂量"
|
||||
align="center"
|
||||
width="250"
|
||||
field="sortNumber"
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
@@ -214,11 +213,7 @@
|
||||
<el-input
|
||||
v-model="scope.row.doseQuantity"
|
||||
style="width: 70px; margin-right: 10px"
|
||||
@input="
|
||||
(value) => {
|
||||
scope.row.dose = value * scope.row.unitConversionRatio;
|
||||
}
|
||||
"
|
||||
@input="(value) => handleDoseQuantityChange(value, scope.row)"
|
||||
/>
|
||||
<span>
|
||||
{{
|
||||
@@ -232,11 +227,7 @@
|
||||
<el-input
|
||||
v-model="scope.row.dose"
|
||||
style="width: 70px; margin-right: 10px"
|
||||
@input="
|
||||
(value) => {
|
||||
scope.row.doseQuantity = value / scope.row.unitConversionRatio;
|
||||
}
|
||||
"
|
||||
@input="(value) => handleDoseChange(value, scope.row)"
|
||||
/>
|
||||
<span>
|
||||
{{
|
||||
@@ -260,7 +251,6 @@
|
||||
title="给药途径"
|
||||
align="center"
|
||||
width="150"
|
||||
field="sortNumber"
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
@@ -292,7 +282,6 @@
|
||||
title="用药频次"
|
||||
align="center"
|
||||
width="150"
|
||||
field="sortNumber"
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
@@ -324,7 +313,6 @@
|
||||
title="用药天数"
|
||||
align="center"
|
||||
width="100"
|
||||
field="sortNumber"
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
@@ -547,8 +535,7 @@ function openAdd(tab) {
|
||||
} else if (tab === 'department') {
|
||||
formData.organizationId = userStore.orgId;
|
||||
}
|
||||
|
||||
addEmptyRow();
|
||||
// 不再默认新增空行,用户点击"新增"按钮时才添加
|
||||
}
|
||||
|
||||
function handleRangeChange(tab) {
|
||||
@@ -680,7 +667,7 @@ function openEdit(tab, row) {
|
||||
};
|
||||
});
|
||||
nextId.value = prescriptionList.value.length + 1;
|
||||
addEmptyRow();
|
||||
// 不再默认新增空行,用户点击"新增"按钮时才添加
|
||||
});
|
||||
}
|
||||
|
||||
@@ -939,8 +926,9 @@ function selectAdviceBase(key, row) {
|
||||
JSON.stringify(row)
|
||||
).chargeItemDefinitionId;
|
||||
prescriptionList.value[rowIndex.value].therapyEnum = preservedTherapyEnum;
|
||||
addEmptyRow();
|
||||
expandOrder.value = [key];
|
||||
// 不再自动新增空行,用户点击"新增"按钮时才添加
|
||||
// 强制触发 vxe-table v4 响应式更新(v4 不响应数组元素直接索引赋值)
|
||||
prescriptionList.value = [...prescriptionList.value];
|
||||
}
|
||||
|
||||
function handleFocus(row, index) {
|
||||
@@ -972,6 +960,38 @@ function handleQuantityChange(row) {
|
||||
prescriptionList.value = [...prescriptionList.value];
|
||||
}
|
||||
|
||||
// 单次剂量数量变化 → 自动计算剂量
|
||||
function handleDoseQuantityChange(value, row) {
|
||||
if (value === '' || value === null || value === undefined) {
|
||||
row.dose = undefined;
|
||||
} else {
|
||||
const ratio = row.unitConversionRatio;
|
||||
const numValue = Number(value) || 0;
|
||||
if (ratio && Number(ratio) > 0) {
|
||||
row.dose = numValue * Number(ratio);
|
||||
} else {
|
||||
row.dose = numValue;
|
||||
}
|
||||
}
|
||||
prescriptionList.value = [...prescriptionList.value];
|
||||
}
|
||||
|
||||
// 剂量变化 → 反算单次剂量数量
|
||||
function handleDoseChange(value, row) {
|
||||
if (value === '' || value === null || value === undefined) {
|
||||
row.doseQuantity = undefined;
|
||||
} else {
|
||||
const ratio = row.unitConversionRatio;
|
||||
const numValue = Number(value) || 0;
|
||||
if (ratio && Number(ratio) > 0) {
|
||||
row.doseQuantity = numValue / Number(ratio);
|
||||
} else {
|
||||
row.doseQuantity = numValue;
|
||||
}
|
||||
}
|
||||
prescriptionList.value = [...prescriptionList.value];
|
||||
}
|
||||
|
||||
function handleUnitChange(row) {
|
||||
prescriptionList.value = [...prescriptionList.value];
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-model="props.openPrescription"
|
||||
:title="title"
|
||||
width="1840px"
|
||||
:model-value="props.openPrescription"
|
||||
:title="dialogTitle"
|
||||
width="95%"
|
||||
teleported
|
||||
destroy-on-close
|
||||
@update:model-value="$emit('update:openPrescription', $event)"
|
||||
@open="open"
|
||||
@close="close"
|
||||
>
|
||||
@@ -227,7 +228,7 @@
|
||||
title="药品名称"
|
||||
align="center"
|
||||
field="medicationName"
|
||||
width="150"
|
||||
min-width="110"
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="getRowDisabled(scope.row)">
|
||||
@@ -237,7 +238,7 @@
|
||||
placement="bottom-start"
|
||||
:visible="scope.row.showPopover"
|
||||
trigger="manual"
|
||||
:width="1200"
|
||||
:width="800"
|
||||
>
|
||||
<prescriptionMedicineList
|
||||
:search-key="medicineSearchKey"
|
||||
@@ -250,7 +251,6 @@
|
||||
@input="handleChange"
|
||||
@focus="handleFocus(scope.row, scope.rowIndex)"
|
||||
/>
|
||||
<!-- @blur="handleBlur(scope.row)" -->
|
||||
</template>
|
||||
</el-popover>
|
||||
</el-form-item>
|
||||
@@ -262,7 +262,7 @@
|
||||
title="药品规格"
|
||||
align="center"
|
||||
field=""
|
||||
width="100"
|
||||
min-width="90"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item :prop="`medicationInfoList.${scope.rowIndex}.drugSpecification`">
|
||||
@@ -282,7 +282,8 @@
|
||||
title="生产厂家"
|
||||
align="center"
|
||||
field=""
|
||||
width="220"
|
||||
min-width="120"
|
||||
:show-overflow="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item :prop="`medicationInfoList.${scope.rowIndex}.manufacturerName`">
|
||||
@@ -308,7 +309,7 @@
|
||||
title="药品剂量"
|
||||
align="center"
|
||||
field=""
|
||||
width="80"
|
||||
min-width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -331,7 +332,7 @@
|
||||
title="剂量单位"
|
||||
align="center"
|
||||
field="medDosageUnitCode"
|
||||
width="150"
|
||||
min-width="90"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -371,7 +372,7 @@
|
||||
title="使用频次"
|
||||
align="center"
|
||||
field="medFrequency"
|
||||
width="230"
|
||||
min-width="130"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -404,7 +405,7 @@
|
||||
title="服药时间(开始)"
|
||||
align="center"
|
||||
field="effectiveDoseStart"
|
||||
width="220"
|
||||
min-width="140"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -429,7 +430,7 @@
|
||||
title="每次发药供应天数"
|
||||
align="center"
|
||||
field="dispensePerDuration"
|
||||
width="130"
|
||||
min-width="140"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -450,7 +451,7 @@
|
||||
title="服药时间(结束)"
|
||||
align="center"
|
||||
field="effectiveDoseEnd"
|
||||
width="220"
|
||||
min-width="140"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item :prop="`medicationInfoList.${scope.rowIndex}.effectiveDoseEnd`">
|
||||
@@ -472,7 +473,7 @@
|
||||
title="途径"
|
||||
align="center"
|
||||
field="medRoute"
|
||||
width="140"
|
||||
min-width="90"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -502,6 +503,7 @@
|
||||
title="数量"
|
||||
align="center"
|
||||
field="quantity"
|
||||
min-width="90"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -524,7 +526,7 @@
|
||||
title="单位"
|
||||
align="center"
|
||||
field="medDosageUnitCode"
|
||||
width="150"
|
||||
min-width="90"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-form-item
|
||||
@@ -611,6 +613,7 @@ const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
medicationInfo: {
|
||||
type: Object,
|
||||
@@ -633,7 +636,7 @@ const ids = ref([]); // 存储选择的药品信息行数据
|
||||
const selectData = ref([]); // 存储选择的药品信息行数据
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const emit = defineEmits(['close']);
|
||||
const emit = defineEmits(['close', 'update:openPrescription']);
|
||||
const total = ref(0);
|
||||
const queryParams = ref({
|
||||
pageNum: 1,
|
||||
@@ -702,7 +705,7 @@ const queryMedicationParams = ref({
|
||||
|
||||
const dosageInputRefs = ref([]);
|
||||
|
||||
const title = ref('');
|
||||
const dialogTitle = ref('');
|
||||
|
||||
const unitMap = ref({
|
||||
dose: 'dose',
|
||||
@@ -720,6 +723,17 @@ function getInit(searchKey) {
|
||||
|
||||
function open() {
|
||||
conditionId.value = props.prescriptionData.conditionId;
|
||||
// 编辑/查看时回显诊断和慢病诊断
|
||||
if (dialogTitle.value !== '新增处方') {
|
||||
conditionDefId.value = props.prescriptionData.conditionDefId || '';
|
||||
speConditionId.value = props.prescriptionData.opspDiseCode || '';
|
||||
// 远程搜索诊断下拉框:加载当前已选诊断的选项,确保 label 正常显示
|
||||
if (conditionDefId.value) {
|
||||
getDiagnosisListEle('', infoForm.encounterId).then(res => {
|
||||
diagnosisListOption.value = res.data || [];
|
||||
});
|
||||
}
|
||||
}
|
||||
getDiagnosisInfo();
|
||||
}
|
||||
|
||||
@@ -728,22 +742,22 @@ function open() {
|
||||
*/
|
||||
function getPrescriptionNoInit() {
|
||||
reset();
|
||||
title.value = '';
|
||||
title.value = props.title;
|
||||
console.log(props, 'props', title.value);
|
||||
dialogTitle.value = '';
|
||||
dialogTitle.value = props.title;
|
||||
console.log(props, 'props', dialogTitle.value);
|
||||
prescriptionTypeList.value = props.prescriptionType;
|
||||
console.log(prescriptionTypeList.value, 'prescriptionTypeList');
|
||||
infoForm.patientId = props.patient.patientId;
|
||||
infoForm.encounterId = props.patient.encounterId;
|
||||
infoForm.validityDays = props.prescriptionData.validityDays;
|
||||
infoForm.extensionReason = props.prescriptionData.extensionReason;
|
||||
if (title.value != '新增处方') {
|
||||
if (dialogTitle.value != '新增处方') {
|
||||
form.rxTypeCode = props.prescriptionData.rxTypeCode;
|
||||
infoForm.prescriptionNo = props.prescriptionData.prescriptionNo;
|
||||
}
|
||||
console.log('infoForm.prescriptionNo (初始值):', infoForm.prescriptionNo, 'props.prescriptionData:', props.prescriptionData);
|
||||
// prescriptionInfo.value = props.prescriptionData;
|
||||
if (title.value === '新增处方') {
|
||||
if (dialogTitle.value === '新增处方') {
|
||||
prescriptionNoInit().then((res) => {
|
||||
infoForm.prescriptionNo = res.data;
|
||||
console.log('处方号初始化成功:', {
|
||||
@@ -767,7 +781,7 @@ function getDiagnosisInfo() {
|
||||
});
|
||||
if (diagnosisInfo.length > 0) {
|
||||
diagnosisInfo.value = diagnosisInfo[0];
|
||||
if (title.value === '新增处方') {
|
||||
if (dialogTitle.value === '新增处方') {
|
||||
conditionId.value = diagnosisInfo[0].id;
|
||||
}
|
||||
}
|
||||
@@ -973,7 +987,7 @@ function submit() {
|
||||
* 双击药品行
|
||||
*/
|
||||
function clickMedicineRowDb(row) {
|
||||
if (title.value == '查看处方') {
|
||||
if (dialogTitle.value == '查看处方') {
|
||||
row.isEdit = false;
|
||||
} else {
|
||||
row.isEdit = true;
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
title="门诊号"
|
||||
align="center"
|
||||
field="iptOtpNo"
|
||||
min-width="120"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -68,6 +69,8 @@
|
||||
title="病区"
|
||||
align="center"
|
||||
field="departmentWard"
|
||||
min-width="90"
|
||||
:show-overflow="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -79,7 +82,7 @@
|
||||
title="有效天数"
|
||||
align="center"
|
||||
field="validityDays"
|
||||
width="80"
|
||||
min-width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -138,7 +141,7 @@
|
||||
title="取药状态"
|
||||
align="center"
|
||||
field="medStatus"
|
||||
width="80"
|
||||
min-width="100"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -150,6 +153,8 @@
|
||||
title="延长原因"
|
||||
align="center"
|
||||
field="extensionReason"
|
||||
min-width="90"
|
||||
:show-overflow="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -166,6 +171,8 @@
|
||||
title="撤销原因"
|
||||
align="center"
|
||||
field="quashReason"
|
||||
min-width="90"
|
||||
:show-overflow="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -177,6 +184,8 @@
|
||||
title="诊断"
|
||||
align="center"
|
||||
field="conditionName"
|
||||
min-width="130"
|
||||
:show-overflow="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<span v-if="!scope.row.isEdit">
|
||||
@@ -435,6 +444,8 @@ function handleView(row) {
|
||||
});
|
||||
|
||||
prescriptionInfo.value.conditionId = response.data.records[0].conditionId;
|
||||
prescriptionInfo.value.conditionDefId = response.data.records[0].conditionDefId;
|
||||
prescriptionInfo.value.opspDiseCode = response.data.records[0].opspDiseCode;
|
||||
openPrescriptionDialog();
|
||||
|
||||
});
|
||||
@@ -458,6 +469,8 @@ function handleEdit(row) {
|
||||
medicationInfo.isEdit = false;
|
||||
});
|
||||
prescriptionInfo.value.conditionId = response.data.records[0].conditionId;
|
||||
prescriptionInfo.value.conditionDefId = response.data.records[0].conditionDefId;
|
||||
prescriptionInfo.value.opspDiseCode = response.data.records[0].opspDiseCode;
|
||||
openPrescriptionDialog();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user