b4bcb0898f
Fix Bug #571 : 根因+修复方案摘要
2026-05-22 12:15:00 +08:00
67a7f17abd
Fix Bug #571 : 根因+修复方案摘要
2026-05-22 11:54:34 +08:00
1f653ed729
Fix Bug #571 : 修复检验申请撤回操作状态校验逻辑不一致
...
根因:SQL查询使用EXISTS判断(任一ServiceRequest为ACTIVE即显示已签发),
但后端撤回校验使用allMatch(要求所有ServiceRequest均为ACTIVE)。
当多项申请单中部分为待签发时,前端显示已签发但后端拒绝撤回,导致报错。
修复:
1. 将allMatch改为anyMatch,与SQL的EXISTS逻辑保持一致
2. 仅更新ACTIVE状态的ServiceRequest为DRAFT,避免影响其他状态
3. 增加update返回值校验,处理并发场景下的状态变更
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-22 11:40:55 +08:00
e5c13f6e30
Fix Bug #571 : 修复检验申请撤回操作状态校验逻辑不一致
...
根因:SQL查询使用EXISTS判断(任一ServiceRequest为ACTIVE即显示已签发),
但后端撤回校验使用allMatch(要求所有ServiceRequest均为ACTIVE)。
当多项申请单中部分为待签发时,前端显示已签发但后端拒绝撤回,导致报错。
修复:将allMatch改为anyMatch,与SQL的EXISTS逻辑保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-22 11:32:56 +08:00
03e47be0d8
Fix Bug #571 : 修复检验申请撤回操作状态校验逻辑不一致
...
根因:SQL查询使用EXISTS判断(任一ServiceRequest为ACTIVE即显示已签发),
但后端撤回校验使用allMatch(要求所有ServiceRequest均为ACTIVE)。
当多项申请单中部分为待签发时,前端显示已签发但后端拒绝撤回,导致报错。
修复:将allMatch改为anyMatch,与SQL的EXISTS逻辑保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-22 11:00:13 +08:00
bcc2f490a0
bug550\556569
2026-05-21 17:40:26 +08:00
Ranyunqiao
966e4f6544
497【住院医生工作站-检查申请】检查申请列表缺失“申请单状态”列及全流程闭环状态流转逻辑
...
523 [住院医生站-临床医嘱] 待保存医嘱总金额显示缺失且编辑态单位选择框变为数字控件
560 [住院医生站-检验申请] “已签发”状态的申请单在操作列缺失“详情”查看按钮
563 [住院医生站-临床医嘱-手术] 打开手术申请单弹窗时出现异常,功能无法使用
2026-05-21 17:06:09 +08:00
wangjian963
8c81c52f4e
Merge remote-tracking branch 'origin/develop' into develop
2026-05-20 18:13:22 +08:00
wangjian963
b97a3ad598
562 [门诊医生工作站-待写病历]数据加载时间超过2秒一直加载
...
561 [门诊医生站-医嘱] 医嘱录入后,总量单位显示异常,显示为“null”而非诊疗目录配置值
544 【智能分诊】排队队列列表无法显示“完诊”状态患者且缺失历史队列查询功能
505 【业务逻辑缺陷】药品医嘱已由药房发药,护士仍能在“医嘱校对”模块执行“退回”操作
2026-05-20 18:12:58 +08:00
ed7e4bbeb3
bug469
2026-05-20 13:47:36 +08:00
Ranyunqiao
62c5674233
bug 555 558
2026-05-20 11:04:33 +08:00
31d9098b37
Fix Bug #547 : 执行科室配置保存时时间冲突检测范围错误 — 根因:addOrEditOrgLoc 方法使用 getOrgLocListByActivityDefinitionId 跨科室查询同一诊疗的所有配置,导致不同科室间的正常时间重叠被误判为冲突;修复:改为 getOrgLocListByOrgIdAndActivityDefinitionId(orgId, activityDefId) 限定同科室范围;同时优化软删除科室处理,当冲突记录关联的科室已被删除时,使用"科室[ID]已删除"替代静默跳过
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-20 10:17:06 +08:00
wangjian963
232a0db810
Merge remote-tracking branch 'origin/develop' into develop
2026-05-20 09:46:29 +08:00
wangjian963
3394aa54d7
549【住院医生站-临床医嘱-检验】打开“检验申请单”弹窗获取项目列表响应极其缓慢
...
546 【患者管理】-【患者列表】-【新增患者】,新增患者,保存成功,但没有数据
536 [门诊手术安排]“手术申请查询”弹窗底部,分页组件与界底部元素重叠,影响操作。
2026-05-20 09:45:33 +08:00
7743bb5df4
Fix Bug #547 : 执行科室配置保存时,冲突检测应跳过已被软删除科室的孤脏记录 — 根因:时间冲突校验未排除科室已删除的 OrganizationLocation 记录,导致已不存在的科室仍会阻断新配置保存
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-19 16:02:58 +08:00
Ranyunqiao
c28b322e91
bug 443 444 445 478 494 521
2026-05-19 14:22:40 +08:00
efc1c100aa
Fix Bug #547 : 根因+修复方案摘要
2026-05-19 13:01:36 +08:00
wangjian963
cbad13bddc
Fix: 门诊预约挂号→签到→退号 slot/pool 状态流转对齐需求
...
- 枚举重排: SlotStatus LOCKED=4→2, CANCELLED=2→4,匹配需求编号
- 预约: lockSlotForBooking 写入 LOCKED(2) 替代 BOOKED(1),pool locked_num+1 原子递增
- 签到: LOCKED(2)→BOOKED(1) 替代 CHECKED_IN(3),加前置状态校验
- 退号: 加 BOOKED(1) 前置校验
- 池计数: refreshPoolStats booked_num=COUNT(1), locked_num=COUNT(2)
- SQL 状态值全部由 SlotStatus 枚举传入,消除硬编码
- 查询/显示: 加 locked 筛选分支,BOOKED→已取号, LOCKED→已锁定
- 前端常量同步,签到列表查询 book→locked
2026-05-19 12:12:16 +08:00
871e2de574
fix: same idCard substring fix for top-level copy
2026-05-19 11:40:20 +08:00
e13e328627
Fix Bug #547 : 执行科室配置保存时时间冲突检查未限定当前科室,导致误报"与未知科室时间冲突" — getOrgLocListByOrgIdAndActivityDefinitionId 方法签名仅含 activityDefinitionId 参数,实际 SQL 查询缺少 organizationId 过滤,时间重叠校验跨科室比对,已修复接口签名和实现同时过滤 activityDefinitionId 和 organizationId
2026-05-18 21:08:14 +08:00
Ranyunqiao
0e974129eb
bug 514 537 538 540 543
2026-05-18 17:44:15 +08:00
ea5da8d2bc
fix bug529
2026-05-18 16:02:40 +08:00
5bdedd84e0
Fix Bug #545 : [门诊医生站-诊断-报卡] 长效诊断标识设置保存就清空 — 根因:getEncounterDiagnosis查询SQL(DoctorStationDiagnosisAppMapper.xml)未包含long_term_flag字段且DiagnosisQueryDto缺少对应属性,导致保存成功后刷新列表时后端不返回longTermFlag值,前端接收后下拉框清空;修复:1) SQL新增T1.long_term_flag AS longTermField; 2) DTO新增longTermFlag属性
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-18 15:02:27 +08:00
0228cba94e
Fix Bug #401 : 门诊完诊审计日志 div_log pool_id/slot_id 优先级修复
...
根因:完诊时获取 pool_id/slot_id 的逻辑优先使用 triage_queue_item,
回退使用 order_main → adm_schedule_slot。但 order_main.slot_id 才是
挂号时实际锁定的号源(权威来源),queueItem 值可能不准确或缺失。
修复:反转优先级,优先通过 encounter.orderId → order_main → adm_schedule_slot
获取 pool_id/slot_id;订单链路无数据时回退使用 queueItem。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-18 13:31:59 +08:00
ad85e4d284
Fix Bug #538 : [门诊医生站-医嘱/手术申请] 手术申请单删除后级联删除关联医嘱、收费项目、申请单
...
根因:deleteSurgery 仅删除 cli_surgery 表记录,未级联删除关联的
wor_service_request(手术医嘱)、fin_charge_item(收费项目)、
doc_request_form(申请单),导致手术删除后医嘱列表仍存在对应记录。
修复:在 deleteSurgery 中先删除三张关联表数据,再删除手术记录,
所有操作在同一事务内保证一致性。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-18 11:05:28 +08:00
Ranyunqiao
58e391bd2c
bug 443 522 523
2026-05-18 10:16:57 +08:00
ce1161caea
Fix Bug #517 : [库房管理-领用管理] 业务逻辑校验缺失:允许保存并提交领用数量大于库存数量(零库存领用)的单据
...
根因分析:
- 前端 handleSubmitApproval(提交审批)未做库存校验,直接调用后端 API
- 后端 submitApproval 也未做库存校验,仅在保存时(addOrEditIssueReceipt)有 validateRequisitionStock
- 用户可绕过前端保存校验(如编辑已有草稿后直接提交审批),将超库存单据提交审批流
修复方案:
1. 后端:在 submitApproval 方法中增加 validateRequisitionStockByBusNo,通过单据详情查询已保存明细,逐行校验领用数量是否超过源仓库库存
2. 前端:在 handleSubmitApproval 提交前逐行调用 validateRequisitionQtyVsStock 校验库存,超库存时拦截并提示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 21:31:42 +08:00
046a3e4703
Fix Bug #514 : [库房管理-调拨管理-调拨] 调拨单保存与提交校验缺失 - 前端增加数量>0和库存校验,后端批量保存接口补充@Validated注解
...
根因:批量调拨页面handleSave仅校验单价未校验数量,submitApproval未校验数据完整性即提交审批;后端批量保存接口缺少@Validated导致DTO层@Min(1)未生效
修复:
1. batchTransfer/index.vue handleSave() 增加调拨数量>0和不超过源库存的前端校验
2. batchTransfer/index.vue handleSubmitApproval() 增加数量>0校验后再提交审批
3. ProductTransferController.java 批量保存接口添加@Validated注解启用DTO校验
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 21:19:12 +08:00
8bfe4f2c23
Fix Bug #524 : 报卡详情日期字段回显为空 - 添加@JsonFormat注解确保Jackson正确序列化日期
...
根因:InfectiousCardDto和DoctorCardListDto中的LocalDate/LocalDateTime字段缺少@JsonFormat注解,
Jackson默认将日期序列化为数组格式[2026,5,15],前端normalizeDate函数无法解析导致字段显示为空。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 21:09:02 +08:00
2d43b1cddc
Fix Bug #504 : 护士退回药品医嘱后医生修改保存时"未匹配到库存信息" - 增加两阶段库存匹配逻辑和空值保护
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 20:24:42 +08:00
eee65a4517
Fix Bug #470 : 手术项目查询去除MyBatis Plus COUNT开销,改用直接LIMIT查询
...
根因:MyBatis Plus分页拦截器在执行手术项目查询时,先做COUNT全表扫描
(10,102条记录,~4ms)再查数据(~0.3ms)。前端el-transfer不需要精确total,
COUNT查询纯属多余开销。
修复:Mapper返回值改为List,XML添加LIMIT/OFFSET,Service手动构造Page。
数据库层面从~5ms降至~0.3ms。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 19:23:24 +08:00
关羽
7af922684a
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目添加Redis缓存+修复loading状态
...
根因:getSurgeryPage接口缺少Redis缓存层,每次弹窗打开都直接查数据库。
修复:1. 后端getSurgeryPage添加Redis缓存(24h过期),与getAdviceBaseInfo保持一致
2. 前端getList()命中内存缓存时显式清除loading状态,防止加载动画卡住
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 14:18:55 +08:00
关羽
be334f8f53
Fix Bug #461 : [系统管理-执行科室配置] 保存项目配置后,项目名称回显为ID码,未显示正确名称
...
**后端开发重点**:优先搜索 Java/Spring 后端代码。
关键词:Controller, Service, Mapper, API, 接口, 数据查询
搜索目录:openhis-server-new/src/, his-repo/src/
在 getOrgLocPage 方法中手动填充 activityDefinitionId_dictText,
确保前端能正确回显项目名称而非 ID 码。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 14:16:27 +08:00
关羽
a7ea08f075
Fix Bug #432 : 门诊手术安排:新增手术安排保存时报错 - 根因+修复方案
...
根因:OpCreateScheduleDto缺少@JsonIgnoreProperties注解,Jackson默认
FAIL_ON_UNKNOWN_PROPERTIES=true,前端提交的表单包含DTO中不存在的字段
(identifierNo、patientName、gender、age、birthDay等)导致反序列化失败
修复:在OpCreateScheduleDto类上添加@JsonIgnoreProperties(ignoreUnknown = true)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 12:20:06 +08:00
关羽
d2cb02eeef
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
根因:queueWasAlreadyCompleted 条件限制导致队列已由分诊台完诊时,
医生站完诊不写 div_log 审计日志,造成审计记录缺失。
数据库12条COMPLETE记录中6条pool_id/slot_id为NULL(50%)。
修复:移除 queueWasAlreadyCompleted 条件限制,确保每次完诊操作
都生成审计日志;保留 queueWasAlreadyCompleted 日志用于排查。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 12:11:01 +08:00
51ae3aad29
bug524 [门诊/医生个人报卡管理] 传染病报告卡保存后数据回显失败:病例分类、日期及分型字段为空
2026-05-15 18:16:12 +08:00
wangjian963
b9aabd53ce
Fix Bug 505505 【业务逻辑缺陷】药品医嘱已由药房发药,护士仍能在“医嘱校对”模块执行“退回”操作
...
[门诊手术安排]“手术申请查询”弹窗底部,分页组件与界底部元素重叠,影响操作。
2026-05-15 17:34:29 +08:00
荀彧
0930fbae93
Fix Bug #535 : 【住院护士站-医嘱校对】已校验过的医嘱错误显示于"未校对"列表中,导致数据状态联动失效
...
根因:后端 getInpatientAdvicePage 方法中将 requestStatus 置为 null,
未按前端 tab 传入的状态值过滤,导致无论切换哪个 tab 都返回全部医嘱。
SQL 中的 CASE 条件仅处理 DRAFT 状态的 performer_check_id 校验,
并未按 request_status 字段过滤。
修复:保存 requestStatus 后,在查询结果集上按 requestStatus 手动过滤,
与 exeStatus 的过滤方式保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-15 16:26:17 +08:00
关羽
cace025d14
Fix Bug #533 : 【门诊手术安排-计费】添加药品费用项目保存提示成功,但列表页未同步显示计费药品项目
...
根因:DoctorStationAdviceAppServiceImpl 中 handMedication/handDevice/handService 方法
硬编码 generateSourceEnum=1(医生开立),但前端手术计费传入 generateSourceEnum=6,
查询时按 6 过滤导致找不到记录。
修复:1. GenerateSource 枚举新增 SURGERY_BILLING(6)
2. 8处 setGenerateSourceEnum 改为优先使用 DTO 的 generateSourceEnum,
空时回退到 DOCTOR_PRESCRIPTION
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-15 16:09:29 +08:00
Ranyunqiao
e65f12125b
403 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格 521 [住院医生站-临床医嘱-检查申请] 手工选择执行科室后,保存仍提示“未找到项目执行的科室” 528 [住院医生工作站-检查申请] 修改申请单成功后,弹窗未自动关闭且列表数据未自动刷新 531 [住院医生站-临床医嘱-检查] 检查申请单打开数据没有正常加载
2026-05-15 14:20:30 +08:00
Ranyunqiao
12d0733c0c
Merge remote-tracking branch 'origin/develop' into develop
2026-05-15 09:44:38 +08:00
Ranyunqiao
610fff704a
bug 470 494
2026-05-15 09:44:26 +08:00
wangjian963
0aa7dd9b82
Revert "Merge remote-tracking branch 'origin/develop' into develop"
...
This reverts commit 5946c1ea4b , reversing
changes made to 8d905c9844 .
2026-05-15 09:33:35 +08:00
wangjian963
5946c1ea4b
Merge remote-tracking branch 'origin/develop' into develop
2026-05-15 09:26:51 +08:00
wangjian963
8d905c9844
Reapply "Fix Bug #489-regression: [住院护士站-医嘱处理] UNION加SELECT DISTINCT后NULL列类型推断失败导致接口异常"
...
This reverts commit 49fc905316 .
2026-05-15 09:23:13 +08:00
wangjian963
49fc905316
Revert "Fix Bug #489-regression: [住院护士站-医嘱处理] UNION加SELECT DISTINCT后NULL列类型推断失败导致接口异常"
...
This reverts commit 4e7e79d9c0 .
2026-05-15 09:19:02 +08:00
关羽
4138dc39f6
Fix Bug #495 : 【医嘱闭环】已校对医嘱无法流转至"医嘱执行"界面,导致费用无法提交执行
...
后端SQL查询未过滤requestStatus(医嘱请求状态),导致医嘱执行页面的"待执行"tab
返回所有状态医嘱而非仅返回已校对(status=3)的医嘱。修复方式:
1. AdviceProcessAppMapper.java: 新增requestStatus参数
2. AdviceProcessAppMapper.xml: 在med_medication_request和wor_service_request子查询的
WHERE条件中增加 AND T1.status_enum = #{requestStatus} 过滤
3. AdviceProcessAppServiceImpl.java: 保存requestStatus并传递给mapper,
替代原注释"后端SQL已通过CASE条件处理"的错误假设
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-15 00:21:55 +08:00
关羽
1124b1010d
Fix Bug #480 : [住院护士站-医嘱执行] 非耗材类医嘱执行报"耗材库存"错误且全选逻辑联动异常
...
根因分析:
1. 耗材库存报错:lotNumberMatch() 按 encounterId 查询 ALL 待发放 DeviceDispense,
不区分是否为本次执行的医嘱。若该就诊存在其他未执行的耗材记录且库存为零,
整个调用就会失败,导致非耗材类医嘱执行也被拦截。
2. 全选联动异常:toggleRowSelection() 程序化选中会触发 @select 事件,
handleRowSelect 中调用 selectAllCheckboxesInRow 导致级联全选。
修复方案:
- 后端:lotNumberMatch 新增 requestIdList 可选参数,当传入时通过 DeviceRequest.basedOnId
过滤仅校验与本次执行医嘱关联的耗材记录,避免其他未执行医嘱干扰
- 前端:handleExecute 传入 selectedRequestIds(仅诊疗类医嘱的 requestId)
- 前端:新增 skipSelectCascade 标志,程序化 toggleRowSelection 时阻止 handleRowSelect
触发 selectAllCheckboxesInRow,消除级联反馈环
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 22:22:01 +08:00
关羽
1dbf7859ea
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错"请先配置当前时间段的执行科室"后,系统仍生成申请记录
...
合并验证逻辑:移除独立的"配置列表是否为空"检查,改为在遍历 activityList
时统一验证每个项目的执行科室配置。所有验证在任何数据库操作之前完成,
确保验证失败时不会产生脏数据。同时增加 activityList 为空时的明确提示。
2026-05-14 22:09:06 +08:00
荀彧
270475adb9
Fix Bug #444 : 门诊手术医嘱界面"已引用计费药品"列表未正常显示药品名称
...
根因分析:
1. 前端 handleMedicalAdvice 调用 getPrescriptionList 时只传 encounterId,
未传 generateSourceEnum=6 和 sourceBillNo(手术单号),
后端默认查询 generateSourceEnum=1(医生开立),漏掉了手术计费创建的药品记录
2. 后端 getRequestBaseInfo 在 sourceBillNo 存在时会过滤掉药品(adviceType=1),
进一步阻断了手术计费药品的返回
修复方案:
- 前端:handleMedicalAdvice 传参 (visitId, 6, operCode) 匹配手术计费记录
- 后端:移除手术计费场景的药品过滤,前端各组件已按 adviceType 自行过滤
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 20:10:17 +08:00