feat(diagnosis): 完善诊断模块功能并优化病历数据获取

- 添加isSaving状态控制保存过程
- 监听患者信息变化自动获取病历详情和诊断列表
- 增强getDetail方法添加错误处理和日志输出
- 重构handleAddDiagnosis方法分离验证逻辑到独立函数
- 优化病历详情获取接口同时查询门诊和住院病历数据
- 添加文档定义树形列表按使用范围筛选功能
- 修复历史病历数据加载错误处理机制
This commit is contained in:
2026-03-12 23:21:34 +08:00
parent bc12cc1b08
commit 6af7720470
5 changed files with 114 additions and 27 deletions

View File

@@ -16,10 +16,12 @@ import java.util.Date;
import java.sql.Timestamp;
import com.openhis.common.enums.BindingType;
import com.openhis.common.enums.EncounterStatus;
import com.openhis.document.domain.DocRecord;
import com.openhis.document.domain.Emr;
import com.openhis.document.domain.EmrDetail;
import com.openhis.document.domain.EmrDict;
import com.openhis.document.domain.EmrTemplate;
import com.openhis.document.service.IDocRecordService;
import com.openhis.document.service.IEmrDetailService;
import com.openhis.document.service.IEmrDictService;
import com.openhis.document.service.IEmrService;
@@ -54,6 +56,9 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi
@Resource
IEmrDictService emrDictService;
@Resource
IDocRecordService docRecordService;
@Resource
private EncounterMapper encounterMapper;
@@ -128,14 +133,33 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi
/**
* 获取病历详情
* 同时检查门诊病历(emr表)和住院病历(doc_record表)
*
* @param encounterId 就诊id
* @return 病历详情
*/
@Override
public R<?> getEmrDetail(Long encounterId) {
// 先查询门诊病历(emr表)
Emr emrDetail = emrService.getOne(new LambdaQueryWrapper<Emr>().eq(Emr::getEncounterId, encounterId));
return R.ok(emrDetail);
if (emrDetail != null) {
return R.ok(emrDetail);
}
// 如果门诊病历为空,检查住院病历(doc_record表)
DocRecord docRecord = docRecordService.getOne(
new LambdaQueryWrapper<DocRecord>()
.eq(DocRecord::getEncounterId, encounterId)
.orderByDesc(DocRecord::getCreateTime)
.last("LIMIT 1")
);
if (docRecord != null) {
// 住院病历存在,也返回数据
return R.ok(docRecord);
}
// 都没有病历
return R.ok(null);
}
/**

View File

@@ -106,7 +106,9 @@ public class DocDefinitionController {
* @return
*/
@GetMapping("/treeList")
public R<?> getTreeList(DocDefinitonParam docDefinitonParam) {
public R<?> getTreeList(DocDefinitonParam docDefinitonParam,
@RequestParam(value = "useRanges", required = false) List<Integer> useRanges) {
docDefinitonParam.setUseRanges(useRanges);
return iDocDefinitionAppService.getTreeList(docDefinitonParam);
}