Compare commits
3 Commits
cd523cced0
...
4e9c1a9716
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e9c1a9716 | |||
| 2aa8b88b3a | |||
| 1a51508e78 |
@@ -251,18 +251,16 @@ public class DoctorStationLabApplyServiceImpl implements IDoctorStationInspectio
|
||||
|
||||
// 遍历检验申请单明细,为每个检验项目创建对应的门诊医嘱记录
|
||||
for (DoctorStationLabApplyItemDto labApplyItemDto : doctorStationLabApplyDto.getLabApplyItemList()) {
|
||||
// 1. 根据检验项目名称查询诊疗定义(检验项目)
|
||||
// 1. Bug #764: 使用 lab_activity_definition 表的 activityId 查询检验项目定义
|
||||
// 检验项目存储在 lab_activity_definition 独立表中,不走 wor_activity_definition
|
||||
String itemName = labApplyItemDto.getItemName();
|
||||
Long activityDefinitionId = activityDefinitionService.getAppointActivityDefinitionId(itemName);
|
||||
|
||||
if (activityDefinitionId == null) {
|
||||
throw new RuntimeException("未找到检验项目 '" + itemName + "' 对应的诊疗定义");
|
||||
Long labActivityId = labApplyItemDto.getActivityId();
|
||||
if (labActivityId == null) {
|
||||
throw new RuntimeException("检验项目 '" + itemName + "' 未传入 activityId,请重新选择检验项目");
|
||||
}
|
||||
|
||||
// 2. 获取诊疗定义详情
|
||||
ActivityDefinition activityDefinition = activityDefinitionService.getById(activityDefinitionId);
|
||||
if (activityDefinition == null) {
|
||||
throw new RuntimeException("诊疗定义不存在");
|
||||
LabActivityDefinition labActivityDef = labActivityDefinitionService.getById(labActivityId);
|
||||
if (labActivityDef == null) {
|
||||
throw new RuntimeException("检验项目 '" + itemName + "' 对应的检验项目定义不存在(ID: " + labActivityId + ")");
|
||||
}
|
||||
|
||||
// 3. 根据执行科室代码获取科室 ID(positionId)
|
||||
@@ -297,17 +295,17 @@ public class DoctorStationLabApplyServiceImpl implements IDoctorStationInspectio
|
||||
|
||||
// 设置检验项目相关信息
|
||||
// 医嘱定义 ID(诊疗定义 ID)
|
||||
adviceSaveDto.setAdviceDefinitionId(activityDefinitionId);
|
||||
adviceSaveDto.setAdviceDefinitionId(labActivityId);
|
||||
// 费用定价主表 ID(对应 adm_charge_item 表的 definition_id 字段)
|
||||
adviceSaveDto.setDefinitionId(activityDefinitionId);
|
||||
adviceSaveDto.setDefinitionId(labActivityId);
|
||||
// 医嘱名称
|
||||
adviceSaveDto.setAdviceName(itemName);
|
||||
// 医嘱详细分类
|
||||
adviceSaveDto.setCategoryCode(activityDefinition.getCategoryCode());
|
||||
adviceSaveDto.setCategoryCode(labActivityDef.getCategoryCode());
|
||||
// 活动 ID(诊疗定义 ID)
|
||||
adviceSaveDto.setActivityId(activityDefinitionId);
|
||||
adviceSaveDto.setActivityId(labActivityId);
|
||||
// 医嘱定义对应表名
|
||||
adviceSaveDto.setAdviceTableName("wor_activity_definition");
|
||||
adviceSaveDto.setAdviceTableName("lab_activity_definition");
|
||||
// 执行科室 ID
|
||||
adviceSaveDto.setPositionId(positionId);
|
||||
|
||||
@@ -346,13 +344,13 @@ public class DoctorStationLabApplyServiceImpl implements IDoctorStationInspectio
|
||||
// 请求数量
|
||||
adviceSaveDto.setQuantity(labApplyItemDto.getItemQty() != null ? labApplyItemDto.getItemQty() : java.math.BigDecimal.ONE);
|
||||
// 请求单位编码(使用诊疗定义的使用单位)
|
||||
adviceSaveDto.setUnitCode(activityDefinition.getPermittedUnitCode());
|
||||
adviceSaveDto.setUnitCode(labActivityDef.getPermittedUnitCode());
|
||||
|
||||
// 单价处理(BugFix#CodeReview: 根据套餐ID从正确的数据源获取价格)
|
||||
// 套餐项目:从 inspection_basic_information 表获取 package_amount
|
||||
// 普通项目:使用前端传入的 itemPrice(已从诊疗项目获取)
|
||||
java.math.BigDecimal unitPrice;
|
||||
Long feePackageId = activityDefinition.getFeePackageId();
|
||||
Long feePackageId = labActivityDef.getFeePackageId();
|
||||
|
||||
if (feePackageId != null) {
|
||||
// 套餐项目:查询套餐价格
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<collection property="medicineSummaryParamList" ofType="com.healthlink.his.web.inhospitalnursestation.dto.MedicineSummaryParam">
|
||||
<result property="procedureId" column="procedure_id"/>
|
||||
<result property="dispenseId" column="dispense_id"/>
|
||||
<result property="dispenseTime" column="planned_dispense_time"/>
|
||||
<result property="dispenseTime" column="execution_time"/>
|
||||
<result property="dispenseStatus" column="dispense_status"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
@@ -75,7 +75,7 @@
|
||||
ii.admitting_doctor_name,
|
||||
ii.balance_amount,
|
||||
ii.dispense_id,
|
||||
ii.planned_dispense_time,
|
||||
ii.execution_time,
|
||||
ii.procedure_id,
|
||||
ii.dispense_status
|
||||
FROM (( SELECT T1.encounter_id,
|
||||
@@ -113,7 +113,7 @@
|
||||
pra."name" AS admitting_doctor_name,
|
||||
personal_account.balance_amount,
|
||||
mmd.id AS dispense_id,
|
||||
mmd.planned_dispense_time,
|
||||
cp.occurrence_time AS execution_time,
|
||||
mmd.procedure_id,
|
||||
mmd.status_enum AS dispense_status
|
||||
FROM med_medication_request AS T1
|
||||
@@ -121,6 +121,9 @@
|
||||
ON T1.id = mmd.med_req_id
|
||||
AND mmd.delete_flag = '0'
|
||||
AND mmd.status_enum != #{summarized}
|
||||
LEFT JOIN cli_procedure cp
|
||||
ON cp.id = mmd.procedure_id
|
||||
AND cp.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition AS T2
|
||||
ON T2.id = T1.medication_id
|
||||
AND T2.delete_flag = '0'
|
||||
@@ -200,7 +203,7 @@
|
||||
AND T1.status_enum = #{completed}
|
||||
AND T1.refund_medicine_id IS NULL
|
||||
AND mmd.procedure_id IS NOT NULL
|
||||
ORDER BY mmd.planned_dispense_time )) AS ii
|
||||
ORDER BY cp.occurrence_time )) AS ii
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
<select id="selectMedicineSummaryFormPage"
|
||||
|
||||
@@ -2236,6 +2236,7 @@ function selsectPatient(row) {
|
||||
form.value.firstEnum_enumText = row.firstEnum_enumText;
|
||||
form.value.age = row.age;
|
||||
form.value.identifierNo = row.identifierNo;
|
||||
showPopover.value = false;
|
||||
}
|
||||
|
||||
// 设置新增参数
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="领药时间"
|
||||
title="执行时间"
|
||||
field="times"
|
||||
>
|
||||
<template #default="scope">
|
||||
|
||||
Reference in New Issue
Block a user