修改患者详情康复计划。

This commit is contained in:
haown 2024-05-28 17:20:17 +08:00
parent fd1f709db5
commit 36954498c9
11 changed files with 205 additions and 66 deletions

View File

@ -5,9 +5,12 @@ import com.xinelu.common.core.domain.R;
import com.xinelu.common.core.page.TableDataInfo; import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.exception.ServiceException; import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.StringUtils; import com.xinelu.common.utils.StringUtils;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto; import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.RouteNodeCheckDto; import com.xinelu.manage.dto.signpatientmanageroutenode.RouteNodeCheckDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService; import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo; import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo; import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo;
import com.xinelu.manage.vo.specialdiseasenode.PatientSpecialDiseaseNodeVo; import com.xinelu.manage.vo.specialdiseasenode.PatientSpecialDiseaseNodeVo;
@ -16,6 +19,7 @@ import io.swagger.annotations.ApiOperation;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -45,6 +49,26 @@ public class SignPatientManageRouteNodeController extends BaseController {
return getDataTable(list); return getDataTable(list);
} }
/**
* 查询节点列表
*/
@ApiOperation("患者任务列表查询")
@GetMapping("/getList")
public R<List<PatientManageNodeListVo>> getList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto) {
List<PatientManageNodeListVo> list = signNodeService.selectPatientManageNodeList(signPatientManageRouteNodeDto);
return R.ok(list);
}
/**
* 查询节点详情
*/
@ApiOperation("查询节点详情")
@GetMapping("/getById/{id}")
public R<SignPatientManageRouteNode> getById(@PathVariable("id") Long id) {
return R.ok(signNodeService.selectSignPatientManageRouteNodeById(id));
}
/** /**
* 患者详情--查询患者手动创建的任务节点列表 * 患者详情--查询患者手动创建的任务节点列表
*/ */

View File

@ -57,7 +57,7 @@ public class TaskPartitionDict extends BaseEntity {
/** /**
* 任务细分编码 * 任务细分编码
*/ */
@ApiModelProperty(value = "任务细分编码") @ApiModelProperty(value = "任务细分编码健康档案HEALTH_ARCHIVE用药指导MEDICATION_GUIDE, 运动指导SPORT_GUIDE饮食建议DIET_GUIDE居家护理NURSING_GUIDE")
@Excel(name = "任务细分编码") @Excel(name = "任务细分编码")
private String taskPartitionCode; private String taskPartitionCode;

View File

@ -40,7 +40,7 @@ public class TaskTypeDict extends BaseEntity {
/** /**
* 任务类型编码 * 任务类型编码
*/ */
@ApiModelProperty(value = "任务类型编码") @ApiModelProperty(value = "任务类型编码, 复诊提醒REVISIT_REMINDER, 药事服务PHARMACY_SERVICE")
@Excel(name = "任务类型编码") @Excel(name = "任务类型编码")
private String taskTypeCode; private String taskTypeCode;

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.mapper.signpatientmanageroutenode;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto; import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto; import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo; import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -37,6 +38,7 @@ public interface SignPatientManageRouteNodeMapper {
*/ */
public List<SignPatientManageRouteNode> selectSignPatientManageRouteNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto); public List<SignPatientManageRouteNode> selectSignPatientManageRouteNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto);
List<PatientManageNodeListVo> selectPatientManageNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto);
/** /**
* 新增签约患者管理任务路径节点 * 新增签约患者管理任务路径节点
* *

View File

@ -2,6 +2,7 @@ package com.xinelu.manage.service.patientinfo.impl;
import com.xinelu.common.annotation.DataScope; import com.xinelu.common.annotation.DataScope;
import com.xinelu.common.constant.SignRecordServiceStatusConstants; import com.xinelu.common.constant.SignRecordServiceStatusConstants;
import com.xinelu.common.enums.PatientSourceEnum;
import com.xinelu.common.exception.ServiceException; import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.BaseUtil; import com.xinelu.common.utils.BaseUtil;
import com.xinelu.common.utils.SecurityUtils; import com.xinelu.common.utils.SecurityUtils;
@ -125,6 +126,10 @@ public class PatientInfoServiceImpl implements IPatientInfoService {
residentInfoMapper.updateResidentInfo(residentInfo); residentInfoMapper.updateResidentInfo(residentInfo);
patientInfo.setResidentId(residentList.get(0).getId()); patientInfo.setResidentId(residentList.get(0).getId());
} }
// 患者来源
if (StringUtils.isBlank(patientInfo.getPatientSource())) {
patientInfo.setPatientSource(PatientSourceEnum.MANAGE_END.name());
}
if (exist) { if (exist) {
patientInfoMapper.updatePatientInfoSelective(patientInfo); patientInfoMapper.updatePatientInfoSelective(patientInfo);
} else { } else {

View File

@ -7,6 +7,7 @@ import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.RouteNodeCheckDto; import com.xinelu.manage.dto.signpatientmanageroutenode.RouteNodeCheckDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto; import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
import com.xinelu.manage.vo.signpatientmanageroutenode.AppletRouteNodeListVo; import com.xinelu.manage.vo.signpatientmanageroutenode.AppletRouteNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo; import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo; import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo;
import com.xinelu.manage.vo.specialdiseasenode.PatientSpecialDiseaseNodeVo; import com.xinelu.manage.vo.specialdiseasenode.PatientSpecialDiseaseNodeVo;
@ -51,6 +52,14 @@ public interface ISignPatientManageRouteNodeService {
*/ */
List<SignPatientManageRouteNode> selectSignPatientManageRouteNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto); List<SignPatientManageRouteNode> selectSignPatientManageRouteNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto);
/**
* 查询患者任务节点
*
* @param signPatientManageRouteNodeDto 签约患者管理任务路径节点查询传输对象
* @return 签约患者管理任务节点集合
*/
List<PatientManageNodeListVo> selectPatientManageNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto);
/** /**
* 新增签约患者管理任务路径节点 * 新增签约患者管理任务路径节点
* *

View File

@ -30,9 +30,7 @@ import com.xinelu.manage.mapper.scriptInfo.ScriptInfoMapper;
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper; import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper;
import com.xinelu.manage.mapper.signroutetriggercondition.SignRouteTriggerConditionMapper;
import com.xinelu.manage.mapper.specialdiseasenode.SpecialDiseaseNodeMapper; import com.xinelu.manage.mapper.specialdiseasenode.SpecialDiseaseNodeMapper;
import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper;
import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService; import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService;
import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService; import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
@ -40,6 +38,7 @@ import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService
import com.xinelu.manage.vo.propagandainfo.PropagandaMaterialsVo; import com.xinelu.manage.vo.propagandainfo.PropagandaMaterialsVo;
import com.xinelu.manage.vo.questionInfo.QuestionVO; import com.xinelu.manage.vo.questionInfo.QuestionVO;
import com.xinelu.manage.vo.signpatientmanageroutenode.AppletRouteNodeListVo; import com.xinelu.manage.vo.signpatientmanageroutenode.AppletRouteNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo; import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeInfoVo; import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeInfoVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo; import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo;
@ -91,10 +90,6 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
private PatientVisitRecordMapper patientVisitRecordMapper; private PatientVisitRecordMapper patientVisitRecordMapper;
@Resource @Resource
private SpecialDiseaseNodeMapper specialDiseaseNodeMapper; private SpecialDiseaseNodeMapper specialDiseaseNodeMapper;
@Resource
private SpecialDiseaseTriggerConditionMapper triggerConditionMapper;
@Resource
private SignRouteTriggerConditionMapper signRouteTriggerConditionMapper;
/** /**
* 查询签约患者管理任务路径节点 * 查询签约患者管理任务路径节点
@ -198,10 +193,15 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
*/ */
@Override @Override
public List<SignPatientManageRouteNode> selectSignPatientManageRouteNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto) { public List<SignPatientManageRouteNode> selectSignPatientManageRouteNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto) {
return signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto); return signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(signPatientManageRouteNodeDto);
} }
/** @Override public List<PatientManageNodeListVo> selectPatientManageNodeList(SignPatientManageRouteNodeDto signPatientManageRouteNodeDto) {
List<PatientManageNodeListVo> nodeList = signPatientManageRouteNodeMapper.selectPatientManageNodeList(signPatientManageRouteNodeDto);
return nodeList;
}
/**
* 新增签约患者管理任务路径节点 * 新增签约患者管理任务路径节点
* *
* @param signPatientManageRouteNode 签约患者管理任务路径节点 * @param signPatientManageRouteNode 签约患者管理任务路径节点
@ -314,36 +314,9 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
nodeQuery.setTaskTypeList(Arrays.asList(appletPatientTaskDto.getTaskTypeList().split(","))); nodeQuery.setTaskTypeList(Arrays.asList(appletPatientTaskDto.getTaskTypeList().split(",")));
List<SignPatientManageRouteNode> signNodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery); List<SignPatientManageRouteNode> signNodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery);
for (SignPatientManageRouteNode node : signNodeList) { for (SignPatientManageRouteNode node : signNodeList) {
LocalDateTime executeTime = null; // 任务执行时间
LocalDateTime executeTime = getExecuteTime(node, patientVisitRecord);
LocalTime et = LocalTime.of(8,0,0);
if (node.getExecuteTime() != null) {
et = node.getExecuteTime();
}
switch(node.getRouteNodeName()) {
case RouteNodeNameConstants.AFTER_DISCHARGE: // 出院后
case RouteNodeNameConstants.AFTER_VISIT_DISCHARGE: // 就诊/出院后
// 判断是门诊/住院
if (StringUtils.equals(VisitMethodConstants.BE_IN_HOSPITAL, patientVisitRecord.getVisitMethod())) {
executeTime = LocalDateTime.of(patientVisitRecord.getDischargeTime().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
} else {
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
}
break;
case RouteNodeNameConstants.AFTER_ADMISSION: // 入院后
if (StringUtils.equals(VisitMethodConstants.BE_IN_HOSPITAL, patientVisitRecord.getVisitMethod())) {
executeTime = LocalDateTime.of(patientVisitRecord.getAdmissionTime().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
} else {
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
}
break;
case RouteNodeNameConstants.AFTER_CONSULTATION: // 就诊后
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
break;
default:
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
break;
}
retList.add(AppletRouteNodeListVo.builder() retList.add(AppletRouteNodeListVo.builder()
.id(node.getId()) .id(node.getId())
.patientName(patientInfo.getPatientName()) .patientName(patientInfo.getPatientName())
@ -404,6 +377,7 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo()); manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
// 替换文本 // 替换文本
manageRouteNode.setNodeContent(replaceNodeContent(specialDiseaseNode.getNodeContent(), paramsCurrentList)); manageRouteNode.setNodeContent(replaceNodeContent(specialDiseaseNode.getNodeContent(), paramsCurrentList));
manageRouteNode.setExecuteTime(specialDiseaseNode.getExecutionTime());
manageRouteNode.setCreateTime(LocalDateTime.now()); manageRouteNode.setCreateTime(LocalDateTime.now());
manageRouteNode.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); manageRouteNode.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
@ -452,6 +426,40 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
} }
} }
private LocalDateTime getExecuteTime(SignPatientManageRouteNode node, PatientVisitRecord patientVisitRecord) {
LocalDateTime executeTime = null;
LocalTime et = LocalTime.of(8,0,0);
if (node.getExecuteTime() != null) {
et = node.getExecuteTime();
}
switch(node.getRouteNodeName()) {
case RouteNodeNameConstants.AFTER_DISCHARGE: // 出院后
case RouteNodeNameConstants.AFTER_VISIT_DISCHARGE: // 就诊/出院后
// 判断是门诊/住院
if (StringUtils.equals(VisitMethodConstants.BE_IN_HOSPITAL, patientVisitRecord.getVisitMethod())) {
executeTime = LocalDateTime.of(patientVisitRecord.getDischargeTime().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
} else {
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
}
break;
case RouteNodeNameConstants.AFTER_ADMISSION: // 入院后
if (StringUtils.equals(VisitMethodConstants.BE_IN_HOSPITAL, patientVisitRecord.getVisitMethod())) {
executeTime = LocalDateTime.of(patientVisitRecord.getAdmissionTime().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
} else {
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
}
break;
case RouteNodeNameConstants.AFTER_CONSULTATION: // 就诊后
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
break;
default:
executeTime = LocalDateTime.of(patientVisitRecord.getVisitDate().plusDays(node.getRouteNodeDay()).toLocalDate(), et);
break;
}
return executeTime;
}
private String replaceNodeContent(String nodeContent, List<PatientNodeParamsCurrent> paramsList) { private String replaceNodeContent(String nodeContent, List<PatientNodeParamsCurrent> paramsList) {
Map<String, String> map = paramsList.stream().collect(Collectors.toMap(PatientNodeParamsCurrent::getParamKey,PatientNodeParamsCurrent::getParamValue,(key1,key2)->key2)); Map<String, String> map = paramsList.stream().collect(Collectors.toMap(PatientNodeParamsCurrent::getParamKey,PatientNodeParamsCurrent::getParamValue,(key1,key2)->key2));
Document document = Jsoup.parse(nodeContent); Document document = Jsoup.parse(nodeContent);

View File

@ -206,6 +206,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService {
manageRouteNode.setRouteCheckRemark("签约自动审核通过"); manageRouteNode.setRouteCheckRemark("签约自动审核通过");
manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo()); manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
manageRouteNode.setRouteNodeId(node.getId()); manageRouteNode.setRouteNodeId(node.getId());
manageRouteNode.setExecuteTime(node.getExecutionTime());
manageRouteNode.setDelFlag(0); manageRouteNode.setDelFlag(0);
manageRouteNode.setCreateTime(LocalDateTime.now()); manageRouteNode.setCreateTime(LocalDateTime.now());
manageRouteNode.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); manageRouteNode.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());

View File

@ -19,9 +19,18 @@ import com.xinelu.manage.mapper.specialdiseaseroute.SpecialDiseaseRouteMapper;
import com.xinelu.manage.service.specialdiseasenode.ISpecialDiseaseNodeService; import com.xinelu.manage.service.specialdiseasenode.ISpecialDiseaseNodeService;
import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeVO; import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeVO;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO; import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.TreeSet;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
@ -30,12 +39,6 @@ import org.jsoup.select.Elements;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* 专病路径-管理节点信息Service业务层处理 * 专病路径-管理节点信息Service业务层处理
* *
@ -244,21 +247,21 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
Map<String, List<PatientNodeParamsCurrent>> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn)); Map<String, List<PatientNodeParamsCurrent>> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn));
for (String sn : groupBySn.keySet()) { for (String sn : groupBySn.keySet()) {
List<PatientNodeParamsCurrent> oldParams = groupBySn.get(sn); List<PatientNodeParamsCurrent> oldParams = groupBySn.get(sn);
List<String> paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); //List<String> paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
List<String> newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); //List<String> newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
if (ListUtils.isEqualList(paramKeys, newKeys)) { //if (ListUtils.isEqualList(paramKeys, newKeys)) {
// retList.add(oldParams);
//} else {
// for(PatientNodeParamsCurrent nodeParam : diseaseNodeParams) {
// if (!paramKeys.contains(nodeParam.getParamKey())) {
// oldParams.add(nodeParam);
// }
// if (!newKeys.contains(nodeParam.getParamKey())) {
// oldParams.remove(nodeParam);
// }
// }
retList.add(oldParams); retList.add(oldParams);
} else { //}
for(PatientNodeParamsCurrent nodeParam : diseaseNodeParams) {
if (!paramKeys.contains(nodeParam.getParamKey())) {
oldParams.add(nodeParam);
}
if (!newKeys.contains(nodeParam.getParamKey())) {
oldParams.remove(nodeParam);
}
}
retList.add(oldParams);
}
} }
} }
return retList; return retList;
@ -275,17 +278,16 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId); PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId);
switch (taskSubdivision) { switch (taskSubdivision) {
// 健康档案 // 健康档案
case "TPC202405200001": case "HEALTH_ARCHIVE":
retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo)); retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo));
// 性别转换成中文 // 性别转换成中文计算年龄
retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo()); retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo())
//年龄 .fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate()));
retObj.fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate()));
break; break;
default: default:
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
retObj.fluentPut("patientName", patientInfo.getPatientName()) retObj.fluentPut("patientName", patientInfo.getPatientName())
.fluentPut("dischargeTime", patientInfo.getDischargeTime().format(df)) .fluentPut("dischargeTime", patientInfo.getDischargeTime() == null ? "" : patientInfo.getDischargeTime().format(df))
.fluentPut("visitDate", patientInfo.getVisitDate().format(df)); .fluentPut("visitDate", patientInfo.getVisitDate().format(df));
break; break;
} }

View File

@ -0,0 +1,66 @@
package com.xinelu.manage.vo.signpatientmanageroutenode;
import com.xinelu.common.annotation.Excel;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description: 查询患者管理节点返回视图类
* @author: haown
* @create: 2024-05-28 11:08
**/
@ApiModel("查询患者管理节点返回视图类")
@Data
public class PatientManageNodeListVo extends SignPatientManageRouteNode {
/** 主键id */
private Long id;
/** 签约患者管理任务表id */
@ApiModelProperty(value = "签约患者管理任务表id")
@Excel(name = "签约患者管理任务表id")
private Long manageRouteId;
/** 路径名称(任务名称) */
@ApiModelProperty(value = "路径名称")
@Excel(name = "路径名称", readConverterExp = "任务名称")
private String manageRouteName;
/** 管理路径节点id */
@ApiModelProperty(value = "管理路径节点id")
@Excel(name = "管理路径节点id")
private Long routeNodeId;
/** 管理路径节点名称 */
@ApiModelProperty(value = "管理路径节点名称")
@Excel(name = "管理路径节点名称")
private String routeNodeName;
/** 管理路径节点时间,时间单位为:天 */
@ApiModelProperty(value = "管理路径节点时间,时间单位为:天")
@Excel(name = "管理路径节点时间,时间单位为:天")
private Integer routeNodeDay;
/** 任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP */
@ApiModelProperty(value = "任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP")
@Excel(name = "任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP")
private String taskType;
/** 任务细分 */
@ApiModelProperty(value = "任务细分")
@Excel(name = "任务细分")
private String taskSubdivision;
/** 节点任务执行状态已执行EXECUTED未执行UNEXECUTED */
@ApiModelProperty(value = "节点任务执行状态已执行EXECUTED未执行UNEXECUTED")
private String nodeExecuteStatus;
/** 任务类型名称 */
@ApiModelProperty(value = "任务类型名称")
private String taskTypeName;
/** 任务细分名称 */
@ApiModelProperty(value = "任务细分名称")
private String taskPartitionDictName;
}

View File

@ -112,6 +112,28 @@
</where> </where>
</select> </select>
<select id="selectPatientManageNodeList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto"
resultType="com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo">
select node.id, node.manage_route_id, node.manage_route_name, node.route_node_id, node.route_node_name, node.route_node_day,
node.task_type, node.task_subdivision, node.execute_time,
node.node_execute_status, type.task_type_name as taskTypeName, part.task_partition_name as taskPartitionDictName
from sign_patient_manage_route_node node
left join task_type_dict type on node.task_type = type.task_type_code
left join task_partition_dict part on part.task_partition_code = node.task_subdivision
<where>
node.del_flag = 0
<if test="manageRouteId != null ">
and node.manage_route_id = #{manageRouteId}
</if>
<if test="taskStatus != null and taskStatus != ''">
and node.task_status = #{taskStatus}
</if>
<if test="nodeExecuteStatus != null and nodeExecuteStatus != ''">
and node.node_execute_status = #{nodeExecuteStatus}
</if>
</where>
</select>
<select id="selectSignPatientManageRouteNodeById" parameterType="Long" resultMap="SignPatientManageRouteNodeResult"> <select id="selectSignPatientManageRouteNodeById" parameterType="Long" resultMap="SignPatientManageRouteNodeResult">
<include refid="selectSignPatientManageRouteNodeVo"/> <include refid="selectSignPatientManageRouteNodeVo"/>
where id = #{id} where id = #{id}