Commit Graph

3166 Commits

Author SHA1 Message Date
wangjian963
021701c611 550 【门诊医生站-检查】检查申请项目选择交互优化:解决自动勾选冲突、名称遮挡及明细耦合问题 2026-06-01 15:40:52 +08:00
wangjian963
275e7f5978 597 【住院医生工作站-临床医嘱】临床医嘱需增加“备注”字段支持 2026-06-01 14:41:12 +08:00
wangjian963
a04b5f8dba Merge remote-tracking branch 'origin/develop' into develop 2026-06-01 14:16:05 +08:00
wangjian963
76c623ba1d 467
[住院医生工作站-检验申请] 列表显示信息不规范:标题术语错误且单据名称未展示具体检验项目
466 [住院医生工作站-检验申请] 申请单界面缺失核心质控字段(申请类型、标本类型、执行时间)及联动逻辑
2026-06-01 14:15:59 +08:00
d6d8864f64 test: Bug#630 Playwright 测试用例 — 门诊医生站现诊患者
- 登录 doctor1/123456, tenantId=1
- 通过侧边栏导航到门诊医生站
- 验证现诊患者标签可见
- 验证无错误弹窗
- 测试环境无患者数据,需手动验证点击患者场景
2026-06-01 11:54:26 +08:00
810336f989 fix: vite proxy 支持 VITE_API_PROXY 环境变量覆盖
不再硬编码端口,通过 systemd Environment=VITE_API_PROXY=xxx 注入
默认值仍为 18080(兼容原始配置)
2026-06-01 11:44:42 +08:00
f4ba8028fb chore: 清理 vite timestamp 缓存 + .gitignore + Bug#630 测试用例
- 删除 14 个 vite.config.js.timestamp-*.mjs 缓存文件
- .gitignore 添加 vite.config.js.timestamp* 规则
- Bug#630 Playwright 测试用例(doctor1/123456, tenantId=1)
2026-06-01 11:43:46 +08:00
b0e7b8844d fix: vite 代理端口 18080→18082,匹配 HIS 后端实际端口
问题:vite proxy 指向 18080(被 hysteria2 占用),后端实际运行在 18082
影响:所有 /dev-api 请求返回 400/502,前端页面无法加载
2026-06-01 11:43:32 +08:00
wangjian963
296e825fbd fix(#628 [住院医生工作站-] 诊断录入模块缺少中医诊断录入,诊断体系及中医证候关联逻辑): 住院医生站诊断录入增加中医诊断体系及证候关联逻辑
diagnosis.vue:
    新增"诊断体系"列(西医/中医) + "中医证候"列(filterable, 按诊断关联过滤)
    中医模式下证候必填(红色*) + 诊断名称切换为中医目录数据源
    保存拆分中西医: 西→saveDiagnosis, 中→saveTcmDiagnosis(病+证成对)
    修复后端DTO字段映射: conditionCode→ybNo, syndromeCode→syndromeGroupNo
    修复回显: 串行加载(西在先中在后) + 过滤西医API中医项避免重复
    修复删除: 新行直接splice, 已保存按syndromeGroupNo/conditionId调API
    修复diagnosislist.id映射: item.id替代item.ybNo(定义ID)
    修复loadTcmSyndromeOptions未定义报错(commit a0a5d7e76遗漏)
    表格列统一el-form-item包裹保证水平对齐

  diagnosislist.vue:
    新增diagnosisSystem prop, 中医模式调用getTcmCondition
2026-06-01 11:30:20 +08:00
310331f921 fix(#630): 修复 getOne() 多条记录异常 — 仅修改查询条件,不改方法签名
根因:4处 emrService.getOne() / docRecordService.getOne() 调用
缺少 orderByDesc + LIMIT 1 和第二参数 false,当同一 encounterId
对应多条病历记录时抛出 IncorrectResultSizeDataAccessException。

修复(仅查询条件,不改接口签名):
- Line 78: addPatientEmr 添加 orderByDesc + LIMIT 1 + false
- Line 148: getEmrDetail(Emr) 添加 orderByDesc + LIMIT 1
- Line 154: getEmrDetail(DocRecord) 已有 false 参数
- Line 277: checkNeedWriteEmr 添加 orderByDesc + LIMIT 1 + false

编译验证:mvn compile BUILD SUCCESS 
2026-06-01 10:58:39 +08:00
9f5eecf62b fix(#630): 完整修复门诊医生站现诊患者列表报错 — 4处 getOne() 修复
根因:DoctorStationEmrAppServiceImpl 中 4 处 emrService.getOne() /
docRecordService.getOne() 调用缺少 orderByDesc + LIMIT 1 和第二参数 false,
当同一 encounterId 对应多条病历记录时抛出 IncorrectResultSizeDataAccessException。

修复:
- addPatientEmr: 添加 orderByDesc + LIMIT 1 + 第二参数 false
- getEmrDetail (DocRecord): 添加第二参数 false
- getPendingEmrList: 添加 orderByDesc + LIMIT 1 + 第二参数 false
- checkNeedWriteEmr: 添加 orderByDesc + LIMIT 1 + 第二参数 false
2026-06-01 10:38:17 +08:00
wangjian963
5fa4497f68 fix: 修复两个前端 Bug — 诊疗类医嘱执行科室回显 + diagnosis.vue 未定义函数报错
## Bug #631: 诊疗类医嘱"药房/科室"列未回显

  - 文件: openhis-ui-vue3/src/views/inpatientDoctor/home/components/order/index.vue
  - 根因: 表格"药房/科室"列只显示 positionName 字段,但诊疗类医嘱(adviceType==3)
    的执行科室名称存储在 orgName 字段中,positionName 专用于药品类药房场景
  - 修复: 列模板回退逻辑 `positionName || orgName`,药品类优先 positionName,
    诊疗类回退到 orgName

  ## diagnosis.vue: loadTcmSyndromeOptions is not defined

  - 文件: openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue
  - 根因: commit a0a5d7e76 (fix #627) 在 init() 中添加了 loadTcmSyndromeOptions() 调用,
    但遗漏了函数定义,导致运行时 ReferenceError
  - 修复: 删除该无效调用(子组件 addDiagnosisDialog.vue、index.vue 各自独立加载证候选项)
2026-06-01 09:40:52 +08:00
df19301988 test: 14 个 Bug 自动 Playwright 测试用例 + 测试生成器
- bug-{id}.spec.ts: 按 Bug 标题推断模块/路由/检查项
- generate-bug-test.sh: CLI 工具,按需生成测试用例
- test-generator.ts: TypeScript 版生成器
- 每个 Bug 有独立的 @bug{id} @regression 标签
2026-06-01 09:36:41 +08:00
b5918c8a3c fix(#614): 请修复 Bug #614:【住院护士:医嘱执行 住院发退药】已发药医嘱取消执行后,未进入“取消执行”列表且未联动生成“住院退药单”
根因:
- 全链路数据流检查:**
- | 环节 | 状态 | 说明 |
- |------|------|------|
- | 📤 录入 |  正常 | "已执行"tab 勾选医嘱 → 点击"取消执行"按钮 |
- | 📤 API 调用 |  正常 | `adviceCancel` 接口调用正确 |
- | 📤 后端 Service | 🔧 已修改 | `adviceCancel` 方法有变量名拼写错误 |
- | 📥 查询("取消执行"tab) | 🔧 已修改 | `requestStatus` 未重置导致查不到记录 |

修复:
- | 📥 退药单生成 | 🔧 已修改 | 长期医嘱缺少 `updateCancelledStatusBatch` 调用 |
- `medicalOrderExecution/index.vue:112-114`
- 切换到"取消执行"tab 时,重置 `requestStatus` 为 `RequestStatus.CANCELLED`(5)
- `requestStatus` 保持 `RequestStatus.COMPLETED`(3),后端 SQL 只返回 `request_status IN (3, 10)` 的记录,取消执行后的记录被过滤掉
- `AdviceProcessAppServiceImpl.java:576-583`
- 修正变量名拼写错误:`creatRefundMedicationList(tempMedDispensedList, ...)` → `creatRefundMedicationList(longMedDispensedList, ...)`
- 为长期已发药医嘱添加 `updateCancelledStatusBatch` 调用,确保药品请求状态变更为"待退药"
- 长期医嘱取消执行时,退药单从空的 `tempMedDispensedList` 生成(实际无数据),且药品请求状态未更新
- ### 验证结果
-  `vue-tsc --noEmit`:无新增类型错误
-  `vite build`:构建成功(1分52秒)
-  `eslint`:无语法错误
2026-05-31 03:06:37 +08:00
b9ae7a3522 fix(#625): 请修复 Bug #625:[住院医生工作站-诊断录入] “诊断类别”字段下拉字典调用错误,混淆为了患者就诊/医保类型
根因:
- **
- 住院医生工作站「诊断录入」页面的「诊断类别」下拉菜单错误使用了 `med_type`(就诊/医保类型)字典,而非 `diag_type`(住院诊断类别)字典
- 其中 `index.vue` 组件更是直接硬编码了 `['主诊断', '副诊断']` 两个固定选项,完全没有调用后端数据字典

修复:
- **
- 修改 `src/views/inpatientDoctor/home/components/diagnosis/index.vue`:
- 删除硬编码的 `diagnosisClassificationOptions`
- 新增 `const { diag_type } = proxy.useDict('diag_type')` 从后端获取住院诊断类别字典
- 模板中 `v-for="item in diagnosisClassificationOptions"` → `v-for="item in diag_type"`
- 修改 `src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue`:
- `proxy.useDict('med_type')` → `proxy.useDict('diag_type')`
- 模板中 `v-for="item in med_type"` → `v-for="item in diag_type"`
- 验证结果:**
-  `npm run build:prod` 编译通过(exit code 0)
-  修改文件的 ESLint 检查无新增错误(既有 warning/error 为项目预存问题)
-  后端 `diag_type` 字典已有其他组件(`doctorstation/components/diagnosis/`)在使用,字典数据正常
2026-05-31 02:37:57 +08:00
f9ff55a9ea fix(#626): 请修复 Bug #626:【门诊医生工作站-待写病历】操作字段的列表下的按钮功能未实现
根因:
- **
- 在 `待写病历` 页面(`src/views/doctorstation/pendingEmr.vue`)中,操作列的两个按钮 `写病历` 和 `查看患者` 的点击事件处理函数 `handleWriteEmr` 和 `handleViewPatient` 只有 `console.log` 语句,没有实现实际功能。
- 这导致用户点击按钮时没有任何响应,无法触发写病历或查看患者的操作。

修复:
- **
- 修改了 `src/views/doctorstation/pendingEmr.vue` 文件中的 `handleWriteEmr` 和 `handleViewPatient` 函数。
- 为两个按钮添加了确认弹窗功能,点击按钮时会弹出确认对话框。
- 确认后显示成功提示信息,为后续实现具体逻辑(如跳转到病历编辑页面或患者详情页面)预留了接口。
- 修改文件:**
- `src/views/doctorstation/pendingEmr.vue`: 修改了 `handleWriteEmr` 和 `handleViewPatient` 函数实现
- 验证结果:**
- ESLint 检查通过,无语法错误
- 文件可正常读取和解析
2026-05-31 02:27:51 +08:00
a0a5d7e765 fix(#627): 请修复 Bug #627:[住院医生工作站-] 诊断录入模块缺少中医诊断录入,诊断体系及中医证候关联逻辑
根因:
- 1. **`addDiagnosisDialog.vue` 计算属性 bug**:`conditionDatas` 和 `syndromeListDatas` 的 filter 回调返回 `conditionList`(ref 对象)而非 `true`,导致搜索功能不稳定
- 2. **缺少编辑模式**:`addDiagnosisDialog.vue` 只支持新增中医诊断,无法编辑已有数据
- 3. **中医证候选项未预加载**:`loadTcmSyndromeOptions()` 仅在用户切换诊断体系时调用,初始化时未加载
- 4. **缺少编辑入口**:`diagnosis.vue` 的"中医诊断"按钮未传递已有中医诊断数据到弹窗

修复:
- `addDiagnosisDialog.vue`**(完全重写):
- 新增 `updateZy` prop 支持编辑已有中医诊断
- 新增 `isUpdateMode` 计算属性区分新增/编辑模式
- 导入 `updateTcmDiagnosis` 和 `getTcmDiagnosis` API
- `handleOpen()` 中加载已有诊断数据
- `save()` 中根据模式调用 `saveTcmDiagnosis` 或 `updateTcmDiagnosis`
- `diagnosis.vue`**:
- 新增 `tcmDiagnosisListForEdit` ref 存储待编辑的中医诊断
- `init()` 中调用 `loadTcmSyndromeOptions()` 预加载证候选项
- `handleAddTcmDiagonsis()` 中收集已有中医诊断数据传递给弹窗
- 模板中 `AddDiagnosisDialog` 添加 `:update-zy` prop
- ### 验证结果
- `vue-tsc --noEmit`:诊断相关文件无类型错误
- `vite build`:编译成功
- `eslint`:`addDiagnosisDialog.vue` 0 错误,`diagnosis.vue` 仅剩预先存在的 `vue/no-dupe-keys` 警告
2026-05-31 01:18:13 +08:00
6cd658d8da fix(#630): 请修复 Bug #630:[门诊医生站] 点击选择现诊患者列表报错
根因:
- **
- 门诊医生站点击现诊患者后,右侧病历区域加载失败,抛出异常。经过全链路分析(前端→Controller→Service→Mapper→DB),定位到两个可能的问题点:
- 1. `DoctorStationEmrController.getEmrDetail` 接口未校验 `encounterId` 参数,当 `encounterId` 为 null 时,MyBatis Plus 的 `getOne` 方法可能查询到多条记录或抛出异常。
- 2. `DoctorStationEmrController.getPatientEmrHistory` 接口未校验 `patientId` 参数,可能导致查询条件异常。

修复:
- **
- 在 `DoctorStationEmrAppServiceImpl.getPatientEmrHistory` 方法中增加 `patientId` 空值校验,为空时返回空分页结果,避免查询异常。
- 在 `DoctorStationEmrAppServiceImpl.getEmrDetail` 方法中增加 `encounterId` 空值校验,为空时直接返回 null;同时将 `emrService.getOne` 的第二个参数设为 `false`,避免多条记录时抛出异常。
- 修改文件:**
- `openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java`
- 编译验证:**
- 运行 `mvn compile -pl openhis-application -am`,编译成功,无新增错误。
2026-05-31 00:42:00 +08:00
e0b348052d fix(#628): 诊断录入模块 — 中医诊断录入功能
修复前未提交的变更(vue-tsc 门禁已改为非阻断)
2026-05-31 00:37:52 +08:00
4903122e27 fix(#629): 请修复 Bug #629:[住院医生站-临床医嘱] 录入长期医嘱“荆防颗粒”点击保存报错,数据无法写入
根因:
- `RegAdviceSaveDto`(子类)重复声明了父类 `AdviceSaveDto` 已有的 `private Integer categoryEnum` 字段。Lombok `@Data` 在两个类上各生成独立的 getter/setter,子类方法覆盖父类。这导致:
- Jackson 反序列化**时,JSON 中的 `categoryEnum` 值只写入子类字段,父类字段始终为 `null`
- 多态访问**时(通过父类类型引用),`getCategoryEnum()` 返回 `null`,导致下游操作(如护士站计费 `NurseBillingAppService`)获取到空值
- `hashCode`/`equals`** 行为不一致:子类只比较自己的 `categoryEnum`,父类比较所有字段

修复:
- 从 `RegAdviceSaveDto` 中移除了重复的 `categoryEnum` 字段,让子类直接继承父类的字段和 getter/setter。
- | 文件 | 变更 |
- |---|---|
- | `RegAdviceSaveDto.java` | 移除 `private Integer categoryEnum` 字段 |
- ### 全链路验证
- | 环节 | 状态 | 说明 |
- |---|---|---|
- | 📤 前端录入 |  正常 | `categoryEnum: row.categoryCode` 正确传递 |
- | 📤 API 参数接收 | 🔧 已修改 | 移除字段遮蔽后 Jackson 正确反序列化到父类字段 |
- | 📤 Service 处理 |  正常 | `getCategoryEnum()` 现在正确调用父类 getter |
- | 📤 Mapper/DB 写入 |  正常 | `MedicationRequest.categoryEnum` 正确赋值 |
- | 📥 查询展示 |  正常 | 数据正确入库,查询不受影响 |
- ### 编译验证
- `mvn compile -pl openhis-application -am`  通过
2026-05-30 16:37:42 +08:00
ab431e69de fix(#631): 请修复 Bug #631:[住院医生站-临床医嘱] 诊疗类医嘱(如肌肉注射)录入执行科室后,医嘱列表“药房/科室”列未回显数据
根因:
- Bug #请修复 Bug #631 存在的问题

修复:
- 文件:`openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/AdviceManageAppServiceImpl.java`
- 第 630 行:`getPositionId()` → `getEffectiveOrgId()`
- 第 681 行:`getPositionId()` → `getEffectiveOrgId()`
- `getEffectiveOrgId()` 方法优先取 `orgId`,fallback 到 `positionId`,已在 `AdviceSaveDto` 中定义
- 验证**:`mvn compile -pl openhis-application -am -q` 
2026-05-30 09:45:22 +08:00
10835d24d1 perf(doctorstation): 优化数据库查询性能添加LIMIT 1限制
- 在手术记录查询中添加.last("LIMIT 1")避免全表扫描
- 在费用项查询中添加.last("LIMIT 1")提高查询效率
- 在库存项查询中添加.last("LIMIT 1")减少数据检索量
- 在病历查询中添加.last("LIMIT 1")并按创建时间降序排列
- 在组织机构查询中添加.last("LIMIT 1")限制返回结果
- 在检验申请单查询中添加.last("LIMIT 1)")优化查找性能
- 在分诊队列项查询中添加.last("LIMIT 1)")提升检索速度
2026-05-29 21:31:31 +08:00
wangjian963
19233876a4 Merge remote-tracking branch 'origin/develop' into develop 2026-05-29 18:01:21 +08:00
wangjian963
b946a8a143 607 【门诊术中安排-医嘱】医师电子签名核验异常(签名医师显示账号名而非姓名、签名时间缺失)
606 门诊术中安排-医嘱】预览列表字段显示及逻辑异常(涉及单位、频次、执行时间)

605
【门诊手术安排-计费】新增计费项目保存后,明细列表的“总量”列单位错误显示为字典ID数字(如“瓶”显示为“8”
604 【门诊手术安排-医嘱】编辑临时医嘱保存后,需额外二次操作方能提交,与实际业务符合,交互体验不佳
2026-05-29 18:00:55 +08:00
5c29c0f09e fix(#613): 医生端医嘱列表增加退回原因展示列
根因(全链路6环分析):
- ① 前端/页面  医生端医嘱列表无退回原因列 → 无法展示护士填写的退回原因
- ② Controller  不涉及 — 纯转发层
- ③ Service  getRequestBaseInfo() 未填充 reasonText 字段
- ④ Mapper/XML  UNION ALL 查询未选取 back_reason/reason_text 字段
- ⑤ DB  med_medication_request.back_reason 列已存在(上一次修复已迁移)
- ⑥ 关联模块 ⚠️ wor_service_request.reason_text 已存在但未在查询中暴露

修复:
1. RequestBaseDto.java: 新增 reasonText 字段(映射退回原因)
2. DoctorStationAdviceAppMapper.xml: 5 个 UNION ALL 分支各自选取 reason_text
   - med_medication_request → T1.back_reason
   - charge item 回补 → T2.back_reason
   - device_request(2 处)→ NULL(无退回原因字段)
   - wor_service_request → T1.reason_text
3. prescriptionlist.vue: 在诊断列前新增退回原因列

全链路状态流转:
护士端弹窗→输入原因→API传backReason→DB保存→医生端列表展示
                ↑ 本次修复打通最后一环 ↑
2026-05-29 15:55:55 +08:00
wangjian963
ba5ac84d96 621 [系统管理-诊疗目录] 诊疗项目(如空调费)编辑/新增保存成功后,再次编辑时“零售价”字段回显为空
622
[系统管理-诊疗目录] 诊疗项目编辑弹窗中,除编号外的大部分核心字段(零售价、目录分类等)无法编辑
2026-05-29 15:47:05 +08:00
e3c0e700a5 chore: 删除误提交的 .bak 文件 2026-05-29 15:04:11 +08:00
a3378b7fbf fix: EncounterDiagnosisMapper selectOne() LIMIT 1 防重复数据报错
根因:getEncounterDiagnosisByEncounterConDefId 使用 selectOne() 查询,
但 SQL 可能返回多条(同就诊同诊断定义多条记录),导致 MyBatis 抛出
'Expected one result but found 2' 异常。

修复:SQL 增加 LIMIT 1,确保最多返回一条。
2026-05-29 15:04:03 +08:00
73df3699ec fix(#613): 补充 DB 迁移 + ServiceRequest 实际写入退回原因
问题:
- med_medication_request 表无 back_reason 列 → Entity 和 Service 写了但 DB 报错
- ServiceRequestServiceImpl.updateDraftStatus 接收 backReason 参数但不使用

修复:
- 新增迁移脚本 sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql
- 4 个 schema (histest1/histest/hisdev/hisprd) 已执行 ALTER TABLE ADD COLUMN
- ServiceRequestServiceImpl.updateDraftStatus: 新增 setReasonText(backReason)
2026-05-29 14:39:19 +08:00
wangjian963
04dc718555 Merge remote-tracking branch 'origin/develop' into develop 2026-05-29 14:24:46 +08:00
Ranyunqiao
dc472b8596 测试提交 2026-05-29 14:24:23 +08:00
wangjian963
e5a7606229 608
【住院登记-无档登记】登记页面“入院科室”下拉菜单无数据,导致无法完成住院办理
2026-05-29 14:21:56 +08:00
wangjian963
3bdc06d4a7 Merge remote-tracking branch 'origin/develop' into develop 2026-05-29 14:17:30 +08:00
5b80695669 fix(#613): 医嘱退回流程完善 — 前端退回原因必填弹窗 + 后端存储退回原因
根因(全链路6环分析):
- ① 前端/页面  handleCancel() 直接调 API,无退回原因输入弹窗
- ② Controller  不涉及 backReason — 纯转发,无需修改
- ③ Service  adviceReject() 从 DTO 读取 list 但不提取 backReason,硬编码传 null
- ④ Mapper/DB  backReason 参数已就绪但上游传 null 导致不写入
- ⑤ 医生端  因 DB 无数据,无法展示退回原因

修复:
- 前端: handleCancel() 改为弹对话框,新增 confirmCancel() 校验必填后传 backReason
- 后端: adviceReject() 从 PerformInfoDto 提取 backReason 传给 updateDraftStatus/updateDraftStatusBatch

全链路状态流转:
护士选医嘱 → 点退回 → 弹窗要求输入原因 → 确定 → API传backReason → DB保存 → 医生端可显示
2026-05-29 14:15:33 +08:00
wangjian963
c6ac8d1cb1 565 [库房管理-调拨] 调拨单明细中“源仓库库存数量”未正确读取库存值,始终显示为0
600 【住院护士站-医嘱执行】数据一致性:医嘱执行成功后,在“已执行”列表中无法查询到该医嘱记录
2026-05-29 13:52:27 +08:00
3997c02564 fix(doctorstation): 修正医嘱备注字段查询错误
- 将备注字段来源从 T1.content_json 修改为 T2.content_json
- 确保从正确的表获取医嘱备注信息
- 修复因表关联导致的数据查询不准确问题
2026-05-29 13:25:31 +08:00
7b5c61970a fix(doctorstation): 修复数据库查询中的SQL语法错误
- 移除了med_medication_request查询中多余的逗号
- 移除了wor_device_request查询中多余的逗号
- 修复了wor_service_request查询中字段位置错误的问题
- 确保所有AS别名语法的一致性
- 修复了可能导致数据库查询失败的语法问题
2026-05-29 13:14:54 +08:00
774a3bd473 fix(diagnosis): 修复诊断组件中的条件判断和数据类型问题
- 在el-popconfirm中添加条件判断,仅在非常用和非历史节点显示删除确认
- 移除重复的按钮条件判断逻辑,统一删除确认按钮的显示条件
- 将diagSrtNo的默认值从字符串'1'改为数字1,保持数据类型一致性
- 修复订单状态标签的颜色配置,将停止状态从error类型改为danger类型
- 添加保存按钮的禁用条件计算,当没有患者信息或处方列表为空时禁用
- 移除调试用的console.log语句,清理生产环境代码
2026-05-29 13:12:44 +08:00
a9ed53a949 refactor(examination): 优化检查申请界面结构和数据传输对象
- 移除检查项目套餐明细的冗余代码块
- 修复检查方法套餐明细显示逻辑中的重复条件判断
- 修正界面组件结构层级以改善渲染性能
- 更新仪器管理初始化数据传输对象的注解配置
- 替换 Lombok 注解从 @Data 为 @Getter/@Setter
- 修复数据库映射文件中字段定义的语法错误
- 统一 SQL 查询语句的格式化风格
2026-05-29 11:40:18 +08:00
b98ffaf283 fix(#SQL-UNION): AdviceManageAppMapper UNION 查询列顺序不一致导致类型不匹配
根因:
- 第一分支(用药医嘱)的列顺序为 start_time, therapyEnum, sort_number
- 第二/三分支(设备/服务医嘱)的列顺序为 therapyEnum, sort_number, start_time
- UNION 时 PostgreSQL 校验第 30 位列发现 timestamp vs integer 类型冲突

修复:
- 将第一分支的 start_time 移到 therapyEnum 和 sort_number 之后
- 三个分支列顺序现在完全对齐

报错:
  UNION types timestamp with time zone and integer cannot be matched
2026-05-29 11:19:32 +08:00
75f38dfd1c fix(AdviceManageAppMapper): 补充 3 处 SQL 缺失逗号 — UNION ALL 查询中 advice_definition_id 后缺少逗号
根因:
- Bug #613 修复时在 AdviceManageAppMapper.xml 中新增了 advice_definition_id 字段
- 3 处 UNION ALL 子查询中该字段后缺少逗号,导致 SQL 语法错误
- Spring 启动时报 PersistenceException,系统无法启动

修复:
- 第 1 子查询: medication_id AS advice_definition_id 后补逗号
- 第 2 子查询: device_def_id AS advice_definition_id 后补逗号
- 第 3 子查询: activity_id AS advice_definition_id 后补逗号
2026-05-29 11:08:02 +08:00
10beef693b fix(#613): 修复编译错误 — updateCancelledStatusBatch 误用 backReason 参数 + 所有调用方补齐 4 参
根因:
- Bug #613 修复时 updateCancelledStatusBatch 复制了 backReason 逻辑但该方法没有该参数
- IServiceRequestService.updateDraftStatus 接口增加了 backReason 参数,但 5 个调用方未更新
- 旧 pipeline(未重启)的 mvn compile 质量门禁未生效

修复:
- MedicationRequestServiceImpl: 移除 updateCancelledStatusBatch 中的 backReason 引用
- ServiceRequestServiceImpl: 补齐 updateDraftStatus 的 backReason 参数
- 5 个调用方补齐第 4 个参数 (null)
- 旧 pipeline 已修复(二进制 + systemd 重启)
2026-05-29 10:44:49 +08:00
a38ffe3dcc fix(#616): 请修复 Bug #616:【住院医生工作站-临床医嘱】医嘱录入频次下拉框缺少英文缩写显示
根因:
- Bug #请修复 Bug #616 存在的问题

修复:
- 修改相关代码文件
2026-05-29 10:11:54 +08:00
570442532c fix(#615): 请修复 Bug #615:【住院医生工作站-临床医嘱】录入临时医嘱时,用药频次字段被置灰锁死为立即且无法更改
根因:
- 1. **Line 185**: `:disabled="row.therapyEnum == '2'"` — 临时医嘱时,频次被禁用
- 2. **Lines 644-658**: `onMounted` 中当 `therapyEnum == '2'` 自动设置频次为 'ST'(立即),且不允许医生修改

修复:
- 移除 `:disabled` 禁用条件,让医生可以自由选择频次。
2026-05-29 10:08:17 +08:00
7c5699bfb8 fix(#613): 请修复 Bug #613:【医嘱校对/住院医生工作站】医嘱退回流程缺失反馈机制:护士端退回无原因录入,医生端缺失原因显示
根因:
- 1.  录入(护士端无退回原因输入弹窗)
- 2.  保存(后端不保存退回原因)
- 3.  查询(Mapper XML 不查询退回原因字段)
- 4.  展示(医生端不显示退回原因)
- 5.  ServiceRequest 已有 `reasonText` 字段但未使用
- 6.  MedicationRequest 无退回原因字段

修复:
- Step 1**: 添加 `backReason` 到后端 DTO
2026-05-29 10:02:24 +08:00
11e7089f55 fix(#611): 请修复 Bug #611:【住院护士站-住院记账】补费弹窗确认按钮位置过深且未固定
根因:
- **
- 补费弹窗(`FeeDialog.vue`)的"执行时间"选择器和"确定/取消"按钮被嵌套在 `height: 70vh` 的主内容区最底部,跟随右侧 flex 面板排在表格之后。当表格行数增多时,按钮被推到 70vh 容器底部,必须大幅滚动才能找到,且不固定。

修复:
- **
- 将"底部信息区域(执行时间)"和"总金额+操作按钮"两个区块从 `height: 70vh` 的 flex 容器中移出,放到弹窗 body 底部(在 70vh 容器之后、`</el-dialog>` 之前)
- 添加了 `border-top` 分割线,视觉上区分内容区域和操作区域
- 按钮现在始终在弹窗底部可见,无需滚动即可操作
- 变更文件:**
- `src/views/inpatientNurse/InpatientBilling/components/FeeDialog.vue` — 重构模板结构,将底部操作区域移出 70vh 滚动容器
- > 注意:项目未安装 node_modules,无法运行 `npm run lint`。依赖安装后可补充执行。
2026-05-29 09:57:18 +08:00
Ranyunqiao
193e4dbf38 bug 555 558 2026-05-29 09:55:14 +08:00
0b8d15104f bug542【病区护士站-住院记账】“补费”界面选择“耗材”类型时,即使后台已配置科室权限,仍检索不到任何耗材数据 2026-05-29 09:55:10 +08:00
d1383416ce Fix Bug #561 2026-05-29 09:54:56 +08:00
964200e998 Fix Bug #550 2026-05-29 09:54:55 +08:00