修改患者详情康复计划。

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.exception.ServiceException;
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.RouteNodeCheckDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
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.SignPatientManageRouteNodeVo;
import com.xinelu.manage.vo.specialdiseasenode.PatientSpecialDiseaseNodeVo;
@ -16,6 +19,7 @@ import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -45,6 +49,26 @@ public class SignPatientManageRouteNodeController extends BaseController {
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 = "任务细分编码")
private String taskPartitionCode;

View File

@ -40,7 +40,7 @@ public class TaskTypeDict extends BaseEntity {
/**
* 任务类型编码
*/
@ApiModelProperty(value = "任务类型编码")
@ApiModelProperty(value = "任务类型编码, 复诊提醒REVISIT_REMINDER, 药事服务PHARMACY_SERVICE")
@Excel(name = "任务类型编码")
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.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import java.util.List;
import org.apache.ibatis.annotations.Param;
@ -37,6 +38,7 @@ public interface SignPatientManageRouteNodeMapper {
*/
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.constant.SignRecordServiceStatusConstants;
import com.xinelu.common.enums.PatientSourceEnum;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.BaseUtil;
import com.xinelu.common.utils.SecurityUtils;
@ -125,6 +126,10 @@ public class PatientInfoServiceImpl implements IPatientInfoService {
residentInfoMapper.updateResidentInfo(residentInfo);
patientInfo.setResidentId(residentList.get(0).getId());
}
// 患者来源
if (StringUtils.isBlank(patientInfo.getPatientSource())) {
patientInfo.setPatientSource(PatientSourceEnum.MANAGE_END.name());
}
if (exist) {
patientInfoMapper.updatePatientInfoSelective(patientInfo);
} 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.SignPatientManageRouteNodeDto;
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.SignPatientManageRouteNodeVo;
import com.xinelu.manage.vo.specialdiseasenode.PatientSpecialDiseaseNodeVo;
@ -51,6 +52,14 @@ public interface ISignPatientManageRouteNodeService {
*/
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.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
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.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper;
import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService;
import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
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.questionInfo.QuestionVO;
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.SignPatientManageRouteNodeInfoVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo;
@ -91,10 +90,6 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
private PatientVisitRecordMapper patientVisitRecordMapper;
@Resource
private SpecialDiseaseNodeMapper specialDiseaseNodeMapper;
@Resource
private SpecialDiseaseTriggerConditionMapper triggerConditionMapper;
@Resource
private SignRouteTriggerConditionMapper signRouteTriggerConditionMapper;
/**
* 查询签约患者管理任务路径节点
@ -198,10 +193,15 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
*/
@Override
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 签约患者管理任务路径节点
@ -314,36 +314,9 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
nodeQuery.setTaskTypeList(Arrays.asList(appletPatientTaskDto.getTaskTypeList().split(",")));
List<SignPatientManageRouteNode> signNodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery);
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()
.id(node.getId())
.patientName(patientInfo.getPatientName())
@ -404,6 +377,7 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
// 替换文本
manageRouteNode.setNodeContent(replaceNodeContent(specialDiseaseNode.getNodeContent(), paramsCurrentList));
manageRouteNode.setExecuteTime(specialDiseaseNode.getExecutionTime());
manageRouteNode.setCreateTime(LocalDateTime.now());
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) {
Map<String, String> map = paramsList.stream().collect(Collectors.toMap(PatientNodeParamsCurrent::getParamKey,PatientNodeParamsCurrent::getParamValue,(key1,key2)->key2));
Document document = Jsoup.parse(nodeContent);

View File

@ -206,6 +206,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService {
manageRouteNode.setRouteCheckRemark("签约自动审核通过");
manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.getInfo());
manageRouteNode.setRouteNodeId(node.getId());
manageRouteNode.setExecuteTime(node.getExecutionTime());
manageRouteNode.setDelFlag(0);
manageRouteNode.setCreateTime(LocalDateTime.now());
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.vo.specialdiseasenode.SpecialDiseaseNodeVO;
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 org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@ -30,12 +39,6 @@ import org.jsoup.select.Elements;
import org.springframework.stereotype.Service;
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业务层处理
*
@ -244,21 +247,21 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
Map<String, List<PatientNodeParamsCurrent>> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn));
for (String sn : groupBySn.keySet()) {
List<PatientNodeParamsCurrent> oldParams = groupBySn.get(sn);
List<String> paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
List<String> newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
if (ListUtils.isEqualList(paramKeys, newKeys)) {
//List<String> paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
//List<String> newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
//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);
} 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;
@ -275,17 +278,16 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId);
switch (taskSubdivision) {
// 健康档案
case "TPC202405200001":
case "HEALTH_ARCHIVE":
retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo));
// 性别转换成中文
retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo());
//年龄
retObj.fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate()));
// 性别转换成中文计算年龄
retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo())
.fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate()));
break;
default:
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
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));
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>
</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">
<include refid="selectSignPatientManageRouteNodeVo"/>
where id = #{id}