修改患者详情康复计划。
This commit is contained in:
parent
fd1f709db5
commit
36954498c9
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 患者详情--查询患者手动创建的任务节点列表
|
* 患者详情--查询患者手动创建的任务节点列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
/**
|
/**
|
||||||
* 新增签约患者管理任务路径节点
|
* 新增签约患者管理任务路径节点
|
||||||
*
|
*
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增签约患者管理任务路径节点
|
* 新增签约患者管理任务路径节点
|
||||||
*
|
*
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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());
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user