high · 已确认 · 已计入完成分次日透析单可被提前写入签到体征
当天的签到体重或血压可能被写入次日透析记录,并在后续回传到云端,造成未来治疗记录提前签到和体征错误,影响护士对患者当次治疗的判断。
证据:src/main/java/com/data/hemodialysis/service/edge/EdgeSignService.java:149 if (record == null || !hospital.equals(record.getClientCode())
|| !patient.getCode().equals(record.getPatientCode())
|| record.getMedState() == null || record.getMedState() >= 4d
|| record.getScheduleDate() == null
|| new DateTime(record.getScheduleDate()).isAfter(
DateTime.now().withTimeAtStartOfDay().plusDays(1).minusMillis(1))) {
throw new EdgeSignError.Rejected(EdgeSignError.EDGE_SIGN_RECORD_INVALID);
}
建议:将允许的日期上限改为今日结束,或直接校验排班日期不得晚于今日,并补充次日及更晚排班均被拒绝的接口和集成测试。
medium · 已确认 · 已计入完成分下行激活会无界锁定全部未确认签到事件
离线积压或云端长期拒绝事件较多时,院端数据同步可能明显变慢并扩大事务锁定范围,影响签到数据回传和最新临床资料下发。
证据:src/main/java/com/data/hemodialysis/service/edge/EdgeSignSnapshotProtection.java:51 List<Map<String, Object>> events = jdbc.queryForList("SELECT id, record_code, status, payload_json, "
+ "cloud_result_json FROM edge_event_outbox WHERE client_code=? AND event_kind='SIGN' "
+ "AND snapshot_confirmed=0 ORDER BY id FOR UPDATE", hospital);
建议:按事件主键或透析单分批处理待确认事件,限制单次读取和锁定量;在与生产结构及代表性积压量相当的环境使用 EXPLAIN 或 EXPLAIN ANALYZE 核对索引、扫描行数、锁等待和同步耗时。