关羽
fb987ba901
Fix Bug #455 : 门诊医生站-医嘱:开立诊疗医嘱时执行科室默认获取逻辑有误且显示为原始ID
...
根因分析:
- setValue函数对所有类型统一设置orgId=row.positionId
- 诊疗项目(adviceType=3)的positionId来自adm_organization_location配置表
- 当配置ID不在当前机构树中时,findOrgNameById返回空,el-tree-select显示原始ID
- 后续if(!orgId)判断因已有值而不触发回退到患者就诊科室
修复方案:
- 诊疗类型(adviceType=3)跳过positionId赋值,使用患者就诊科室作为默认执行科室
- 同时修复syncGroupFields中会覆盖orgId的问题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 17:13:00 +08:00
关羽
63a3f63380
Fix Bug #454 : 门诊医生站-医嘱页签:删除"待签发"状态的检验项目时,错误触发"执行科室"校验导致删除失败
...
在handService的执行科室校验中增加dbOpType DELETE跳过条件,作为BugFix#454过滤器的第二层防御。
同时修复handMedication和handService中重复声明requestId变量导致的编译错误。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 16:12:23 +08:00
赵云
8c03559c87
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
修复三个根因问题:
1. handleCollapseChange 从 filteredCategoryList(计算属性映射副本)查找分类,
改为从 categoryList(原始响应式数组)查找,确保 handleCategoryExpand 对
cat.methods 的赋值能正确触发 Vue 响应式更新,分类展开后检查方法列表正常渲染
2. handleMethodSelect 跨分类检查中 cat.typeCode 与 newItem.checkType(cat.typeName)
类型不匹配,改为统一使用 cat.typeName 比较
3. handleItemSelect 同样存在 typeCode vs typeName 不匹配问题,一并修复
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 16:12:23 +08:00
关羽
51dcc8eabf
Fix Bug #442 : 手术计费:点击"删除"待签发耗材时异常报错,导致操作失败
...
根因:手术计费场景中"待签发"耗材的 requestId 来自 adm_charge_item.service_id,
当 service_id 为 null 或对应的 wor_device_request 记录不存在时,
后端 removeById(null) 或 removeById(不存在ID) 会抛出异常导致删除失败。
修复策略:
- 前端(prescriptionlist.vue): handleDelete 中增加 requestId 有效性校验,
过滤掉 requestId 为 null/undefined/空的项,避免发送无效删除请求
- 后端(DoctorStationAdviceAppServiceImpl.java): handMedication/handDevice/handService
三个删除路径增加 requestId null check,跳过无效记录而非抛出异常
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 15:16:29 +08:00
赵云
3f41f897c5
Fix Bug #441 : 门诊手术安排:手术室护士角色进入页面提示"无权限"且"获取卫生机构列表失败"
...
根因:HTTP 响应拦截器(request.js)会对所有非 200 响应自动弹出错误通知。
手术室护士角色调用 /system/tenant/page 接口返回 403 时,拦截器先于组件的
.catch() 处理程序弹出"当前操作没有权限"通知,阻断页面体验。
修复:新增 getTenantPageSilent 包装函数,通过 skipErrorMsg: true 配置跳过
拦截器的自动错误提示,让 .catch() 中的 console.warn 静默降级处理。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 15:08:55 +08:00
关羽
c082a272c1
Fix Bug #426 : 门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细(项目/数量/单价)
...
根因:CheckPart 实体只有 packageName 字段,没有 packageId 字段。
前端 loadCategoryList 中 packageId 永远为 null,导致 loadPackageDetailsForItem
的 guard 条件 (!item.packageId) 永远提前返回,套餐明细无法加载。
修复策略:
1. handleItemSelect 中添加 packageName 到 selectedItems 数据对象
2. loadPackageDetailsForItem 改为优先使用 packageId,若无则通过 packageName
调用 listCheckPackage API 查找 packageId(复用 loadMethodPackageDetails 已有的模式)
2026-05-13 15:05:42 +08:00
关羽
c1f6e4e1ea
Fix Bug #412 : 门诊医生站:传染病报告卡保存失败,提示报错
...
根因:getNextCardNo API 返回失败或异常时,infectiousDiseaseReportDialog.vue
将 cardNo 保持为空字符串。后端 DTO 对 cardNo 有 @NotBlank 校验,
空字符串导致保存请求被拒绝。
修复:
1. getNextCardNo API 失败时生成 TEMP_+timestamp 临时卡号
2. validateFormManually 放行 TEMP_ 开头的临时卡号
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 15:05:42 +08:00
荀彧
76c38cce39
Fix Bug #408 : 门诊医生站:检查标签页:选中检查申请记录后,"检查明细"标签页显示"暂无数据"
...
根因:handleRowClick 中从 API 响应提取 items 时,const resp = res.data || res 将 resp
设为 ExamApply 对象(res.data 有值),导致 resp.items 为 undefined(ExamApply 对象没有 items
字段),items 实际位于 AjaxResult 顶层(res.items)。
修复:防御性提取 items,优先取 res.items(AjaxResult 顶层),兼容 resp.items 和
resp.data.items 的嵌套情况,确保明细数据能正确加载到 selectedItems 中。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:33:56 +08:00
赵云
7f7d28e10b
Fix Bug #403 : 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格
...
修复 handleSaveGroup 中 mergedDetail 和 newRow 构建时的空值处理问题:
1. mergedDetail 中 dose/doseQuantity/dispensePerDuration 使用严格 null 检查,
避免组套中值为 null 时错误回退到 orderDetailInfos
2. newRow 中关键字段增加 mergedDetail 回退(?? 操作符),
确保当 item 中字段为 null/undefined 时能从 setValue 填充的完整数据中获取
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:14:03 +08:00
关羽
e98901096e
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
根因:DoctorStationMainAppServiceImpl.completeEncounter() 中获取 pool_id/slot_id 的逻辑有两处缺陷:
1. 当 queueItem 存在但 poolId 或 slotId 为 null 时,else if 分支因 queueItem != null 而跳过,
导致未进入回退链路,最终 divPoolId 和 divSlotId 均为 null。
修复:将 else if 拆为独立的 if 判断,确保 queueItem 值缺失时能正确回退。
2. 回退路径中先将 order.getSlotId() 赋给 divSlotId,再查询 ScheduleSlot 获取 poolId。
若 Slot 查询失败(返回 null),则 divSlotId 有值但 divPoolId 为 null,产生不完整审计记录。
修复:先查 Slot,成功后同时用 slot.getId() 和 slot.getPoolId() 赋值,保证数据一致性。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:14:03 +08:00
赵云
da5e1704cf
Fix Bug #400 : 门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
...
根因分析:
triage_queue_item.status 字段在 DDL 中定义为 VARCHAR(50),但 Java 实体
TriageQueueItem.status 为 Integer 类型,应用层使用 TriageQueueStatus 枚举值
(0/10/20/30/40) 进行读写。数据类型不匹配导致 MyBatis-Plus 无法正确映射 status 字段,
完诊时使用 LambdaUpdateWrapper 更新 status=30 操作失败。
修复方案:
1. 修正 DDL:将 status 字段类型从 VARCHAR(50) 改为 INTEGER
2. 新增迁移 SQL:修改已有数据库表的 status 字段类型为 INTEGER
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:00:18 +08:00
关羽
deb145e84f
Fix Bug #405 : 住院医生工作站:临床医嘱保存成功后,医嘱条目仍处于可编辑状态(未锁定展示)
...
- handleSaveSign: 新增行点击确定后调用savePrescription持久化到后端,而非仅设置isEdit=false后调用handleAddPrescription
- handleSaveBatch: 修复nextId.value == 1 为赋值操作(=)
- handleSaveBatch: catch块增加错误提示,保存失败时用户可感知
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 14:00:18 +08:00
赵云
1f985004d9
Fix Bug #408 : 门诊医生站检查明细标签页显示暂无数据 - 修复handleRowClick中resp.items被d.data覆盖后丢失的问题
...
根因:后端 getInfo 返回 { data: ExamApply, items: ExamApplyItem[] },
前端先将 resp 赋值给 d,随后又执行 d = resp.data,导致 d 变成 ExamApply 对象,
后续 d.items 永远为 undefined,明细列表无法加载。
修复:提前保存 resp.items 到 rawItems 变量,后续使用 rawItems 而非 d.items。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
Ranyunqiao
a1ed8eafb3
bug 362 428 436
2026-05-13 13:23:53 +08:00
陈琳
03b84bcc40
Fix Bug #496 : 【住院医生工作站-检查申请】检查申请列表字段命名不规范及单号生成规则不符合医疗行业标准
...
1. 前端列标题:处方号 → 申请单号(表格列 + 详情弹窗)
2. 后端单号生成:原用 PAR 处方号前缀 → 改为 JCZ + yyMMdd + 5位顺序号
3. 新增 AssignSeqEnum.CHECK_APPLY_NO 枚举项(JCZ 前缀)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
关羽
1759036d5c
Fix Bug #496 : 【住院医生工作站-检查申请】检查申请列表字段命名不规范及单号生成规则不符合医疗行业标准
...
1. 前端 examineApplication.vue:列表表头和详情弹窗中"处方号"改为"申请单号"
2. 后端 RequestFormManageAppServiceImpl:检查申请单单号生成规则由 PAR+流水号 改为 JCZ+yyMMdd+5位顺序号(如:JCZ26051300001),其他类型申请单保持原有PAR规则不变
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
关羽
ae8c7ffe5e
Fix Bug #400 : 门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
...
根因:完诊时使用 triageQueueItemService.updateById(queueItem) 更新队列状态,
依赖 MyBatis Plus 的实体级更新策略,可能因字段级更新策略导致 status 字段未实际写入数据库。
修复策略:改用 LambdaUpdateWrapper 直接生成 UPDATE SQL,明确指定 SET status=30,
绕过实体级更新策略,确保 status 字段必定写入数据库。同时增加更新失败日志。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
荀彧
138f8ba5ca
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
调整完诊时 div_log 的 pool_id/slot_id 获取优先级:优先使用 triage_queue_item
(挂号时录入的号源信息,为权威来源),队列项不存在或值缺失时回退使用
encounter → order → slot → pool 链路
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:53 +08:00
fe44e6efac
bug471 手术管理-门诊手术安排:手术申请查询结果中混入住院检验申请单数据(脏数据)
2026-05-13 13:23:52 +08:00
赵云
cb939fdf87
Fix Bug #412 : 门诊医生站:传染病报告卡保存失败,提示报错
...
根因分析:
- 前端在 buildSubmitData() 中使用 formData.diagnosisId || null 将空字符串转为 null
- 后端 InfectiousDiseaseReportDto.diagId 有 @NotNull 校验,导致 null 值被拒绝
- diagnosisId 来源于 show() 中 diagnosisData?.conditionId || diagnosisData?.definitionId
使用 || 运算符会将 0 等假值跳过,可能导致 ID 丢失
修复内容:
1. show() 函数:使用显式 null/空字符串检查替代 || 运算符,确保 conditionId/definitionId 正确映射
2. handleSubmit():提交前增加 diagnosisId 非空校验,提前拦截并给出友好提示
3. buildSubmitData():diagId 使用 Number() 显式转换,确保发送正确的 Long 值
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 13:23:52 +08:00
赵云
2123d222eb
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
根本原因:
1. 分类联动加载检查方法时,未提取后端返回的 packageId 字段
2. 勾选检查方法后,未从方法中获取套餐信息(isPackage/packageId)
3. 选中带套餐的检查方法后,未调用 loadPackageDetailsForItem 预加载套餐明细
修复内容(4处手术式修改):
- handleCategoryExpand:方法映射增加 packageId 字段
- handleRowClick:回充已有申请单时,从匹配的方法中获取套餐信息
- handleMethodSelect:从方法获取套餐信息并预加载套餐明细
- handleItemSelect:方法映射增加 packageId 字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:11:25 +08:00
张飞
4f6ad79527
Fix Bug #362 : 住院护士站:入出转管理双击查看详情时,"入科时间"字段显示当前系统时间而非实际入科时间
...
在 selectAdmissionPatientInfo SQL 中,startTime 原取自 bed.start_time(床位级别的位置记录),
当该 LEFT JOIN 无匹配记录时返回 NULL,前端 fallback 到当前系统时间。
改为 COALESCE(bed.start_time, ae.start_time),无床位记录时回退到 encounter 的入院时间。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:05 +08:00
关羽
1b6f52907d
Fix Bug #492 : 【门诊手术安排】关闭"手术计费"主弹窗后,项目字典选择列表依然残留悬浮在界面上
...
根因:el-popover 使用 :visible 受控模式,closeAllPopovers() 将 showPopover 设为 false
后,Vue 尚未完成 DOM 更新时 showChargeDialog 已被设为 false,导致弹窗组件被销毁
而 popover 的 visible 状态变更未传播到 DOM,弹窗消失但 popover 残留。
修复:在 closeChargeDialog 中使用 nextTick 等待 Vue 完成 popover 关闭的 DOM 更新后,
再设置 showChargeDialog = false 关闭主弹窗。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:05 +08:00
赵云
13d3d7a98d
Fix Bug #493 : 【住院医生工作站-临床医嘱-检验申请】项目未维护执行科室时,医生手动选择发往科室后仍报错且数据被清空
...
根因:projectWithDepartment 函数定义时遗漏了 type 参数,导致函数体内引用 type 变量时报 ReferenceError(未定义),type === 2 的判断永远无法正确执行。用户在提交时手动选择的发往科室被清空且无法提交。
修复:在函数签名中添加 type 参数,与 working 版本 medicalExaminations.vue 保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:05 +08:00
刘备
852a2a83b0
Fix Bug #489 : 【医嘱闭环】医生站签发单条长期药品医嘱,护士校对界面生成重复(两条)待校对记录
...
在住院医生站签发流程的 handMedication() 方法中增加去重逻辑,
与门诊医生站保持一致,使用 patientId+encounterId+adviceDefinitionId+dose+methodCode+rateCode
作为唯一键,防止前端重复提交导致数据库产生重复医嘱记录。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:05 +08:00
诸葛亮
b127fd93e4
Fix Bug #494 : 住院医生工作站-检查申请:"申请单名称"字段显示为通用名称,未展示具体检查项目名称
...
根因:medicalExaminations.vue 保存检查申请单时,name 字段硬编码为 "检查申请单",
导致列表页所有记录的申请单名称均显示为固定字符串,无法区分具体检查项目。
修复:将 name 从硬编码改为从已选项目集合中提取 adviceName 并用顿号连接,
如选择 CT、超声两项则显示为 "CT、超声"。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:15:09 +08:00
刘备
4a6f0e61d4
Fix Bug #491 : 【执行科室配置】保存配置时系统报错 - 修复Organization.getName()空指针异常
...
根因分析:
1. organizationLocationInit() 中 Organization.getName() 未做空值过滤,若数据库存在name为null的科室记录会NPE
2. addOrEditOrgLoc() 中 activityDefinitionMapper.selectById().getName() 未对selectById返回null做防护
3. addOrEditOrgLoc() 缺少organizationId前置校验,空值传入可能导致后续流程异常
修复内容:
- 第74行:stream中增加 .filter(organization -> organization != null && organization.getName() != null)
- 第136-138行:增加organizationId为null时的校验,返回友好错误提示
- 第145-147行:将activityDefinitionMapper.selectById结果先赋值再判空,避免NPE
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:12:31 +08:00
赵云
5f3370ef7f
Fix Bug #488 : 【临床医嘱】双击编辑待签发医嘱,医嘱类型回显为数字且点击确认报接口错误
...
修复 clickRowDb 函数中编辑条件过于严格的问题:原条件 `row.statusEnum == 1 && !row.requestId`
只允许"待保存"(无requestId)的医嘱进入编辑,导致"待签发"(有requestId)的医嘱无法编辑。
改为 `row.statusEnum == 1`,允许所有待签发状态的医嘱编辑。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:11:36 +08:00
张飞
4092abfce9
Fix Bug #477 : 住院医生工作站-住院检查申请详情弹窗中"发往科室"字段显示为短横线(-),未正常获取数据
...
根因分析:
1. 前端组件使用了错误的API获取科室列表:表单使用getDepartmentList(/app-common/department-list)
保存的targetDepartment ID,但详情弹窗使用getOrgList(/base-data-manage/organization/organization)
查询,两个接口返回的数据结构和ID不同,导致recursionFun无法匹配到科室名称
2. recursionFun中obj.children可能为null/undefined,直接遍历会抛TypeError
3. getLocationInfo是异步调用,handleViewDetail可能在科室数据加载完成前被调用
修复:
- 统一使用getDepartmentList(@/api/public.js)获取科室数据,与表单组件保持一致
- recursionFun增加children空值保护
- handleViewDetail改为async,打开详情前确保科室数据已加载
2026-05-13 00:05:17 +08:00
刘备
0600bbecbc
Fix Bug #468 : [住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度
...
前后端完整链路修复:
- 后端 Mapper: LEFT JOIN wor_service_request 表,通过 CASE MIN(status_enum) 映射单据状态
- 后端 Mapper: 新增状态筛选和关键字搜索(申请单号/检验项目模糊匹配)
- 后端 Service/Controller: 新增 status 和 keyword 参数传递
- 前端 Vue: 列表页添加【单据状态】列,绑定 status 字段
- 前端 Vue: 移除中间状态选项(已采集/已收样),与后端 CASE 映射保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:02:47 +08:00
荀彧
ac57ac21e9
Fix Bug #464 : [目录管理-诊疗目录] 新增项目时"零售价"未与"诊疗子项"合计总价自动同步
...
根本原因: calculateTotalPrice() 中同步零售价的条件只检查了第一个子项 (treatmentItems.value[0]),当第一个子项被清空但其他子项有效时,零售价不会同步。submitForm() 中存在相同问题。
修复内容:
1. calculateTotalPrice(): 使用 Array.some() 检查是否有任何有效子项,而非只检查第一个
2. 当无有效子项时,将 retailPrice 重置为 undefined 避免残留旧值
3. submitForm(): childrenJson 序列化和零售价同步同样改用 some() 检查
4. addItem(): 补充缺失的 name 字段,与初始值结构保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:35:49 +08:00
荀彧
d38efd15b3
Fix Bug #457 : 门诊收费:已签发的手术类医嘱在门诊收费列表中不显示项目名称
...
根因分析:门诊医生站处方列表查询(DoctorStationAdviceAppMapper.xml)中,
手术类医嘱(category_enum=4)的 advice_table_name 固定返回 'wor_activity_definition',
而非 'cli_surgery'。当医生通过"签发"按钮处理手术医嘱时,handService() 据此创建
ChargeItem,导致 product_table = 'wor_activity_definition',但 product_id 实际指向
cli_surgery 表中的手术记录。
门诊收费SQL查询的CASE语句仅匹配 product_table = 'cli_surgery' 的手术项,
因此这些手术医嘱无法匹配,item_name 返回 NULL。
修复方案:在 selectEncounterPatientPrescription 和 selectEncounterPatientPrescriptionWithPrice
的 item_name CASE 表达式中新增兜底分支:
WHEN context_enum = #{activity} AND service_table = 'wor_service_request'
THEN COALESCE(T9.surgery_name, wsr.content_json->>'surgeryName',
wsr.content_json->>'adviceName', T2."name")
按优先级回退获取手术名称:cli_surgery表 → content_json手术名称 → content_json医嘱名称 → 诊疗定义名称
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:34:36 +08:00
刘备
c7404e9d3f
Fix Bug #458 : 门诊医生站:诊疗类医嘱保存成功后,列表"医嘱类型"列显示为空值
...
根因:mapAdviceTypeLabel 函数依赖 drord_doctor_type 字典数据进行类型映射,
当字典中缺少 value=3(诊疗)的条目时,find() 返回 undefined,函数返回空字符串,
导致保存后刷新列表时"医嘱类型"列显示为空白。
修复:在 mapAdviceTypeLabel 中为诊疗/手术类医嘱(wor_activity_definition 表)
添加兜底映射逻辑:type 3→诊疗, 6→手术, 4→手术, 1→检验, 2→检查, 5→其他,
确保即使字典缺失对应条目也能正确显示类型标签。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:29:57 +08:00
赵云
69b28c59f6
Fix Bug #448 : 门诊划价模块-项目分类过滤失效,选择"耗材"类型时仍能检索出药品
...
根因: adviceBaseList.vue 中 adviceQueryParams 的 watch 在 popoverVisible=false 时
直接 return,未将参数同步到 queryParams。当 handleFocus 同时修改 adviceQueryParams
和 showPopover 时,Vue 的 watch 触发顺序不确定:
- 若 adviceQueryParams watch 先触发(popoverVisible 仍为 false),则 queryParams 保持旧值
- 随后 popoverVisible watch 触发时虽然会同步参数,但存在时序竞态导致查询参数不正确
修复: 将参数同步逻辑移至 early return 之前,确保 queryParams 始终与 adviceQueryParams
保持一致,API 请求仍在 popoverVisible=true 时才触发。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:20:44 +08:00
华佗
4e71b861ab
Fix Bug #442 : 手术计费:点击"删除"待签发耗材时异常报错,导致操作失败
...
根因:DoctorStationAdviceAppMapper.xml 中 getRequestBaseInfo SQL 的第二个 UNION 查询(手术计费耗材从 adm_charge_item 关联 wor_device_request)中,biz_request_flag 和 requester_id 使用了 CI.enterer_id(计费录入人),而非 DR.requester_id(设备申请创建人)。当录入人与当前操作人不一致时,biz_request_flag 为 '0',导致删除操作被后端拒绝。
修复:将 CI.enterer_id 改为 COALESCE(DR.requester_id, CI.enterer_id),优先使用 DeviceRequest 的 requester_id,确保 biz_request_flag 基于正确的创建人计算。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:08:08 +08:00
陈琳
7c471205a3
Fix Bug #428 : 门诊医生站-检查申请:未实现分类联动检查方法及套餐明细展示与勾选逻辑
...
根因分析:
1. handleCategoryExpand 加载了 cat.methods 但模板从未渲染,用户展开分类后看不到检查方法
2. 缺少 isMethodSelected/handleMethodSelect 函数,无法通过勾选检查方法来联动添加到已选择列表
3. 套餐明细展示缺少 CSS 样式(package-details-list/detail-row/detail-name/detail-info)
修复内容:
- 模板: 在分类折叠区域添加 cat.methods 的渲染(检查方法列表 + 勾选框 + 价格)
- 逻辑: 新增 isMethodSelected 和 handleMethodSelect 函数,支持直接勾选检查方法添加到已选择列表
- 样式: 添加套餐明细列表样式 + 检查方法区域样式
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:02:12 +08:00
刘备
dc8661c3d0
Fix Bug #413 : 医生个人报卡编辑/查看界面字段映射与后端DTO不一致导致数据不显示
...
后端 InfectiousCardDto 字段名与前端 showReport 映射不匹配:
- caseClass 应从 diseaseType 映射 (后端 diseaseType=病例分类)
- diseaseType 应从 diseaseSubtype 映射 (后端 diseaseSubtype=疾病分型)
- correctName 应从 revisedDiseaseName 映射
- withdrawReason 应从 returnReason 映射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 22:44:31 +08:00
赵云
c634551fdb
Fix Bug #509 : [门诊医生站-手术申请] 提交申请后列表未实时刷新展示数据,且提示语需优化
...
1. 优化提示语:将"新增成功"/"修改成功"改为"手术申请提交成功!"/"手术申请修改成功!"
2. 优化执行顺序:先emit('saved')通知父组件刷新医嘱列表,再调用getList()刷新手术申请列表,确保数据刷新时序正确
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 22:15:26 +08:00
赵云
c556d51eaf
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目耗时过长,影响医生开单效率
...
策略A-前端优化:为手术项目穿梭框添加 v-loading 加载状态指示器,
解决API查询期间用户看到空白/卡住界面的问题。
同时暴露 getList 方法供父组件调用(之前未暴露但已被父组件调用)。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 22:05:40 +08:00
赵云
9280065c5b
Fix Bug #455 : 门诊医生站-医嘱:开立诊疗医嘱时执行科室默认获取逻辑有误且显示为原始ID
...
根因修复:
1. 默认科室逻辑错误:row.orgId来自wor_activity_definition.org_id(项目所属科室),不是执行科室。
改为优先使用positionId(adm_organization_location配置的执行科室),回退到患者就诊科室。
2. 显示为原始ID:getOrgList()为异步调用但未await,导致findOrgNameById执行时organization树未加载。
将setValue改为async函数并await getOrgList(),确保科室名称解析时数据已就绪。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 18:39:23 +08:00
Ranyunqiao
220982fa34
Merge remote-tracking branch 'origin/develop' into develop
2026-05-12 17:27:36 +08:00
Ranyunqiao
460890e3c2
413 460 513 514
2026-05-12 17:27:25 +08:00
华佗
6a0a2ca711
Fix Bug #469 : [住院医生工作站-检验申请] 完善【操作】列临床业务逻辑:支持按状态动态切换修改、删除、撤回等功能
...
根据单据状态动态显示操作按钮:
- 待签发(状态0):显示修改、删除、详情
- 已签发(状态1):显示撤回、详情
- 其他状态:仅显示详情
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 17:27:24 +08:00
赵云
fbbe0e9248
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目耗时过长,影响医生开单效率
...
根因:getAdviceBaseInfo 后端接口在查询手术项目时,仍会执行与手术无关的库存查询
(getAdviceInventory)、全表扫描待发放记录(getAdviceDraftInventory)以及药房科室
配置查询(getMedLocationConfig),其中 getAdviceDraftInventory 对
med_medication_dispense 和 wor_device_dispense 做全表扫描,无任何过滤条件,
导致手术/诊疗场景下的额外数据库开销。
修复:在 DoctorStationAdviceAppServiceImpl.getAdviceBaseInfo() 中增加类型判断,
当 adviceTypes 不包含药品(1)或耗材(2)时跳过所有库存相关查询,因为这些查询对手术/
诊疗(3,6)项目无意义,且下游代码仅在药品/耗材处理分支中使用这些变量。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 17:22:23 +08:00
赵云
b6df124e1b
Fix Bug #400 : 门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
...
完诊API后端要求同时传递 encounterId 和 firstEnum 两个参数:
1. DoctorCallDialog.vue:已有修复只传了 encounterId,缺少 firstEnum,导致后端校验失败
2. patientList.vue:仍传递原始值而非对象,且同样缺少 firstEnum
修复:两处调用均改为传递 { encounterId, firstEnum } 对象,firstEnum 默认值为1
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 17:05:32 +08:00
赵云
a0162686f4
Fix Bug #400 : 门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
...
队列弹窗【完成】按钮调用完诊API时,传递了原始 Long 值而非对象参数,
导致后端 @RequestBody 反序列化时 encounterId 为 null,队列项状态无法更新。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 13:06:21 +08:00
赵云
23561cc9b1
Fix Bug #492 : 【门诊手术安排】关闭"手术计费"主弹窗后,项目字典选择列表依然残留悬浮在界面上
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 12:31:37 +08:00
Ranyunqiao
cdb676c859
Merge remote-tracking branch 'origin/develop' into develop
2026-05-12 12:21:46 +08:00
Ranyunqiao
1b159cdfab
429 433 438 476 477 478
2026-05-12 12:21:25 +08:00
关羽
01d48c75a5
Fix Bug #480 : [住院护士站-医嘱执行] 非耗材类医嘱执行报"耗材库存"错误且全选逻辑联动异常
...
Root cause analysis:
1. 非耗材类医嘱(如口服药"荆防颗粒")执行后,前端调用lotNumberMatch时传入所有患者
encounterId。该后端函数会查询所有DeviceDispense记录并校验耗材库存,若任一患者存
在耗材记录但无库存则报错"发耗材单生成失败,请检查耗材库存"。原代码的hasMedOrDevice检
查包含了med_medication_request(药品医嘱),导致纯药品执行也触发耗材校验。
2. 执行成功后调用handleGetPrescription()刷新列表,触发defaultSelectAllRows()自动全选
所有行,导致用户看到复选框全部选中的联动异常。
Fix:
1. hasMedOrDevice改为hasDevice,仅当选中医嘱包含device类型时才调用lotNumberMatch
2. handleGetPrescription新增skipAutoSelectAll参数,执行/不执行/取消执行后刷新时不自动全选
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 12:19:11 +08:00