|
@@ -86,6 +86,9 @@ public class ClinicalPathwayPatientService {
|
|
|
if (ClinicalPathwayPatientState.入径.getCode().equals(patient.getState())) {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者还在路径中请先选择,退出路径才能选择。");
|
|
|
}
|
|
|
+ if (patient.getTemplateId().equals(req.getTemplateId())) {
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "患者入径不能和上次一样,请勿重复选择。");
|
|
|
+ }
|
|
|
}
|
|
|
ClinicalPathwayPatient build = ClinicalPathwayPatient.builder()
|
|
|
.id(SnowFlakeId.instance().nextId())
|
|
@@ -118,43 +121,57 @@ public class ClinicalPathwayPatientService {
|
|
|
/**
|
|
|
* 获取患者每天的执行日志
|
|
|
*
|
|
|
- * @param patNo
|
|
|
- * @param times
|
|
|
- * @return
|
|
|
+ * @param patNo 患者编号
|
|
|
+ * @param times 时间
|
|
|
+ * @return 患者每天的执行日志
|
|
|
*/
|
|
|
public List<PatientDayWorkVo> getClinicalPathwayDayLog(String patNo, Integer times) {
|
|
|
+ // 根据患者编号和时间获取患者每天的执行日志
|
|
|
List<PatientDayWorkVo> dayLogByPatientNo = dao.getDayLogByPatientNo(patNo, times);
|
|
|
|
|
|
+ // 如果获取到的日志为空,则返回一个空列表
|
|
|
if (ListUtil.isBlank(dayLogByPatientNo)) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
|
|
|
+ // 根据患者编号和时间获取患者的工作日志
|
|
|
List<ClinicalPathwayPatientWorkLogVo> patientWorkLogByPatientNo = dao.getPatientWorkLogByPatientNo(patNo, times);
|
|
|
|
|
|
+ // 如果获取到的工作日志为空,则将每天的执行日志设置为空
|
|
|
if (ListUtil.isBlank(patientWorkLogByPatientNo)) {
|
|
|
for (PatientDayWorkVo item : dayLogByPatientNo) {
|
|
|
item.setExecute(getEmptyMap());
|
|
|
}
|
|
|
} else {
|
|
|
+ // 将工作日志按照天分组
|
|
|
Map<String, List<ClinicalPathwayPatientWorkLogVo>> workMap = patientWorkLogByPatientNo.stream().collect(
|
|
|
Collectors.groupingBy(
|
|
|
ClinicalPathwayPatientWorkLogVo::getDayId
|
|
|
)
|
|
|
);
|
|
|
|
|
|
+ // 遍历每天的执行日志
|
|
|
dayLogByPatientNo.forEach(day -> {
|
|
|
+ // 创建一个空的临时Map
|
|
|
Map<String, List<ClinicalPathwayPatientWorkLogVo>> tmpMap = getEmptyMap();
|
|
|
+ // 获取当天的工作日志
|
|
|
List<ClinicalPathwayPatientWorkLogVo> clinicalPathwayWorks = workMap.get(day.getId());
|
|
|
+ // 如果当天有工作日志
|
|
|
if (clinicalPathwayWorks != null) {
|
|
|
+ // 遍历工作日志
|
|
|
for (ClinicalPathwayPatientWorkLogVo item : clinicalPathwayWorks) {
|
|
|
+ // 获取工作日志的类型
|
|
|
List<ClinicalPathwayPatientWorkLogVo> compute = tmpMap.get(ClinicalPathwayService.workTYpe[item.getType()]);
|
|
|
+ // 将工作日志添加到临时Map中
|
|
|
compute.add(item);
|
|
|
}
|
|
|
}
|
|
|
+ // 将临时Map设置到每天的执行日志中
|
|
|
day.setExecute(tmpMap);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ // 返回每天的执行日志
|
|
|
return dayLogByPatientNo;
|
|
|
}
|
|
|
|
|
@@ -186,11 +203,14 @@ public class ClinicalPathwayPatientService {
|
|
|
* @return ok
|
|
|
*/
|
|
|
public ResultVo<String> generatePath(String patNo, Integer times) {
|
|
|
+ // 根据住院号和住院次数查询患者临床路径信息
|
|
|
ClinicalPathwayPatient patient = dao.selectPatientClinicalPathway(patNo, times);
|
|
|
+ // 如果患者临床路径信息为空,则返回失败信息
|
|
|
if (patient == null) {
|
|
|
- return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "患者为入经无法进入下一个日期。");
|
|
|
+ return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "患者未入经无法进入下一个日期。");
|
|
|
}
|
|
|
|
|
|
+ // 如果患者临床路径状态为完成,则返回成功信息
|
|
|
if (ClinicalPathwayPatientState.完成.getCode().equals(patient.getState())) {
|
|
|
return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_EL_NOTIFICATION, "患者完成了全部的路径");
|
|
|
}
|
|
@@ -234,12 +254,17 @@ public class ClinicalPathwayPatientService {
|
|
|
}
|
|
|
|
|
|
public void checkPatientPathway(String patNo, Integer times) {
|
|
|
+ // 根据patNo和times查询患者信息
|
|
|
List<ClinicalPathwayPatient> patients = dao.selectPatientCount(patNo, times);
|
|
|
+ // 如果患者信息只有一个,则直接返回
|
|
|
if (patients.size() == 1) {
|
|
|
return;
|
|
|
}
|
|
|
+ // 获取患者信息
|
|
|
ClinicalPathwayPatient patient = patients.get(0);
|
|
|
+ // 获取患者创建时间
|
|
|
Date createTime = patient.getCreateTime();
|
|
|
+ // 获取当前时间
|
|
|
Date now = new Date();
|
|
|
// 执行几天了
|
|
|
long betweenDay = DateUtil.betweenDay(createTime, now, true);
|
|
@@ -292,24 +317,39 @@ public class ClinicalPathwayPatientService {
|
|
|
* @param params
|
|
|
*/
|
|
|
public void generateWorks(TemplateDayVo value, GenerateParams params, String id) {
|
|
|
+ // 创建一个ClinicalPathwayPatientWorkLog的列表
|
|
|
List<ClinicalPathwayPatientWorkLog> insertData = new ArrayList<>();
|
|
|
+ // 遍历value的execute属性
|
|
|
for (Map.Entry<String, List<ClinicalPathwayWork>> item : value.getExecute().entrySet()) {
|
|
|
+ // 获取execute属性的值
|
|
|
List<ClinicalPathwayWork> value1 = item.getValue();
|
|
|
+ // 遍历execute属性的值
|
|
|
for (ClinicalPathwayWork clinicalPathwayWork : value1) {
|
|
|
+ // 创建一个ClinicalPathwayPatientWorkLog对象
|
|
|
ClinicalPathwayPatientWorkLog work = new ClinicalPathwayPatientWorkLog();
|
|
|
+ // 设置id
|
|
|
work.setId(SnowFlakeId.instance().nextId());
|
|
|
+ // 设置dayId
|
|
|
work.setDayId(id);
|
|
|
+ // 判断key是否为huli或zhenliao
|
|
|
if (item.getKey().equals("huli") || item.getKey().equals("zhenliao")) {
|
|
|
+ // 设置complete为1
|
|
|
work.setComplete(1);
|
|
|
} else {
|
|
|
+ // 设置complete为0
|
|
|
work.setComplete(0);
|
|
|
}
|
|
|
+ // 设置patNo
|
|
|
work.setPatNo(params.getPatNo());
|
|
|
+ // 设置times
|
|
|
work.setTimes(params.getTimes());
|
|
|
+ // 设置contentId
|
|
|
work.setContentId(clinicalPathwayWork.getId());
|
|
|
+ // 将work对象添加到insertData列表中
|
|
|
insertData.add(work);
|
|
|
}
|
|
|
}
|
|
|
+ // 批量插入insertData列表中的数据
|
|
|
ListUtil.batchList(insertData, ClinicalPathwayPatientWorkLogDao.class, BaseMapper::insert);
|
|
|
}
|
|
|
|