新增任务列表查询接口、修改宣教库统计查询接口。

This commit is contained in:
haown 2024-04-03 11:44:05 +08:00
parent 1a99ff2754
commit 478a003684
25 changed files with 688 additions and 195 deletions

View File

@ -0,0 +1,18 @@
package com.xinelu.common.enums;
/**
* 节点执行状态枚举类
*
* @author haown
* @date 2024-04-01
*/
public enum NodeExecuteStatusEnum {
/**
* 已执行
*/
EXECUTED,
/**
* 未执行
*/
UNEXECUTED
}

View File

@ -0,0 +1,19 @@
package com.xinelu.common.enums;
/**
* 节点审核状态枚举类
*
* @author haown
* @date 2024-04-01
*/
public enum RouteCheckStatusEnum {
/**
* 同意
*/
AGREE,
/**
* 不同意
*/
DISAGREE
}

View File

@ -8,7 +8,6 @@ import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.propagandainfo.PropagandaInfo;
import com.xinelu.manage.dto.department.DepartmentDTO;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoDto;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoSaveDto;
import com.xinelu.manage.dto.propagandainfo.PropagandaUpdateDto;
@ -138,8 +137,8 @@ public class PropagandaInfoController extends BaseController {
*/
@ApiOperation("查询科室信息列表及包含宣教库数量")
@GetMapping("/selectNumByDept")
public R<List<DepartmentVO>> selectNumByDept(DepartmentDTO departmentDto) {
List<DepartmentVO> list = propagandaInfoService.selectNumByDept(departmentDto);
public R<List<DepartmentVO>> selectNumByDept(PropagandaInfoDto propagandaInfoDto) {
List<DepartmentVO> list = propagandaInfoService.selectNumByDept(propagandaInfoDto);
return R.ok(list);
}
}

View File

@ -33,11 +33,11 @@ public class SignPatientManageRouteController extends BaseController {
@Resource
private ISignPatientManageRouteService signPatientManageRouteService;
/**
* 查询签约患者管理任务路径列表
*/
@PreAuthorize("@ss.hasPermi('manage:signroute:list')")
@GetMapping("/list")
/**
* 查询签约患者管理任务路径列表
*/
@PreAuthorize("@ss.hasPermi('manage:signroute:list')")
@GetMapping("/list")
public TableDataInfo list(SignPatientManageRoute signPatientManageRoute) {
startPage();
List<SignPatientManageRoute> list = signPatientManageRouteService.selectSignPatientManageRouteList(signPatientManageRoute);
@ -94,4 +94,6 @@ public class SignPatientManageRouteController extends BaseController {
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(signPatientManageRouteService.deleteSignPatientManageRouteByIds(ids));
}
}

View File

@ -0,0 +1,52 @@
package com.xinelu.manage.controller.signpatientmanageroutenode;
import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.R;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import io.swagger.annotations.Api;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 签约患者管理任务路径节点控制器
* @author: haown
* @create: 2024-04-02 15:08
**/
@Api(tags = "签约患者管理任务路径节点控制器")
@RestController
@RequestMapping("/manage/signnode")
public class SignPatientManageRouteNodeController extends BaseController {
@Resource
private ISignPatientManageRouteNodeService signNodeService;
/**
* 根据患者主键查询签约路径及节点
*/
@ApiOperation("患者任务列表查询")
@GetMapping("/tasklist")
public TableDataInfo tasklist(PatientTaskDto patientTaskDto) {
startPage();
List<PatientTaskVo> list = signNodeService.selectPatientTaskList(patientTaskDto);
return getDataTable(list);
}
/**
* 根据患者主键查询签约路径及节点
*/
@ApiOperation("根据患者主键查询患者管理路径节点")
@GetMapping("/getNodesByPatient/{patientId}")
public R<List<SignPatientManageRouteNode>> getNodesByPatient(@PathVariable("patientId") Long patientId) {
List<SignPatientManageRouteNode> list = signNodeService.getNodesByPatient(patientId);
return R.ok(list);
}
}

View File

@ -205,6 +205,11 @@ public class PatientInfo extends BaseEntity {
@Excel(name = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
private String patientSource;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
@Excel(name = "手术名称")
private String surgicalName;
/** 删除标识0未删除1已删除 */
private Integer delFlag;

View File

@ -24,6 +24,12 @@ public class PropagandaInfoDto {
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/**
* 科室名称
*/
@ApiModelProperty(value = "科室名称")
private String departmentName;
/** 宣教标题(宣教名称) */
@ApiModelProperty(value = "宣教标题")
@Excel(name = "宣教标题", readConverterExp = "宣=教名称")

View File

@ -0,0 +1,56 @@
package com.xinelu.manage.dto.signpatientmanageroutenode;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import lombok.Data;
/**
* @description: 患者任务查询传输对象
* @author: haown
* @create: 2024-04-02 17:06
**/
@ApiModel("患者任务查询传输对象")
@Data
public class PatientTaskDto {
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@ApiModelProperty(value = "就诊时间开始格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime visitDateStart;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@ApiModelProperty(value = "就诊时间结束格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime visitDateEnd;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
/** 所属院区id */
@ApiModelProperty(value = "所属院区id")
private Long campusAgencyId;
/** 所属科室id */
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/** 所属病区id */
@ApiModelProperty(value = "所属病区id")
private Long wardId;
/** 节点审核状态同意AGREE不同意DISAGREE */
@ApiModelProperty(value = "节点审核状态同意AGREE不同意DISAGREE")
private String routeCheckStatus;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
/** 患者姓名 */
@ApiModelProperty(value = "患者姓名")
private String patientName;
}

View File

@ -1,7 +1,6 @@
package com.xinelu.manage.mapper.propagandainfo;
import com.xinelu.manage.domain.propagandainfo.PropagandaInfo;
import com.xinelu.manage.dto.department.DepartmentDTO;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoDto;
import com.xinelu.manage.vo.department.DepartmentVO;
import com.xinelu.manage.vo.propagandainfo.PropagandaMaterialsVo;
@ -73,9 +72,9 @@ public interface PropagandaInfoMapper {
/**
* 查询科室信息列表及包含宣教库数量
*
* @param departmentDto
* @param propagandaInfoDto 宣教库查询传输对象
* @return
*/
List<DepartmentVO> selectNumByDept(DepartmentDTO departmentDto);
List<DepartmentVO> selectNumByDept(PropagandaInfoDto propagandaInfoDto);
}

View File

@ -1,6 +1,8 @@
package com.xinelu.manage.mapper.signpatientmanageroutenode;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import java.util.List;
import org.apache.ibatis.annotations.Param;
@ -60,4 +62,11 @@ public interface SignPatientManageRouteNodeMapper {
* @return 结果
*/
public int deleteSignPatientManageRouteNodeByIds(Long[] ids);
/**
* 查询患者任务列表
* @param patientTaskDto 患者任务列表查询传输对象
* @return 患者任务列表
*/
List<PatientTaskVo> selectPatientTaskList(PatientTaskDto patientTaskDto);
}

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.service.materialsinfo.impl;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.manage.domain.materialsinfo.MaterialsInfo;
import com.xinelu.manage.domain.propagandamaterials.PropagandaMaterials;
import com.xinelu.manage.dto.materialsinfo.MaterialsInfoDto;
@ -56,6 +57,8 @@ public class MaterialsInfoServiceImpl implements IMaterialsInfoService {
*/
@Override
public int insertMaterialsInfo(MaterialsInfo materialsInfo) {
materialsInfo.setDelFlag(0);
materialsInfo.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
materialsInfo.setCreateTime(LocalDateTime.now());
return materialsInfoMapper.insertMaterialsInfo(materialsInfo);
}
@ -68,6 +71,7 @@ public class MaterialsInfoServiceImpl implements IMaterialsInfoService {
*/
@Override
public int updateMaterialsInfo(MaterialsInfo materialsInfo) {
materialsInfo.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
materialsInfo.setUpdateTime(LocalDateTime.now());
return materialsInfoMapper.updateMaterialsInfo(materialsInfo);
}

View File

@ -412,11 +412,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
patientVisitRecord.setVisitDate(patientVisitRecord.getDischargeTime());
} else if (StringUtils.equals(VisitMethodConstants.BE_IN_HOSPITAL, patientVisitRecord.getVisitMethod())) {
// 住院时间出院时间-入院时间
if (patientVisitRecord.getDischargeTime() != null) {
if (patientVisitRecord.getAdmissionTime() != null && patientVisitRecord.getDischargeTime() != null) {
long daysBetween = ChronoUnit.DAYS.between(patientVisitRecord.getAdmissionTime(), patientVisitRecord.getDischargeTime());
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
}
patientVisitRecord.setVisitDate(patientVisitRecord.getAdmissionTime());
patientVisitRecord.setVisitDate(patientVisitRecord.getDischargeTime());
}
}
}

View File

@ -1,7 +1,6 @@
package com.xinelu.manage.service.propagandainfo;
import com.xinelu.manage.domain.propagandainfo.PropagandaInfo;
import com.xinelu.manage.dto.department.DepartmentDTO;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoDto;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoSaveDto;
import com.xinelu.manage.dto.propagandainfo.PropagandaUpdateDto;
@ -83,8 +82,8 @@ public interface IPropagandaInfoService {
/**
* 查询科室信息列表及包含宣教信息数量
*
* @param departmentDto
* @param propagandaInfoDto 宣教库查询传输对象
* @return
*/
List<DepartmentVO> selectNumByDept(DepartmentDTO departmentDto);
List<DepartmentVO> selectNumByDept(PropagandaInfoDto propagandaInfoDto);
}

View File

@ -5,7 +5,6 @@ import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.manage.domain.materialsinfo.MaterialsInfo;
import com.xinelu.manage.domain.propagandainfo.PropagandaInfo;
import com.xinelu.manage.domain.propagandamaterials.PropagandaMaterials;
import com.xinelu.manage.dto.department.DepartmentDTO;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoDto;
import com.xinelu.manage.dto.propagandainfo.PropagandaInfoSaveDto;
import com.xinelu.manage.dto.propagandainfo.PropagandaUpdateDto;
@ -191,7 +190,7 @@ public class PropagandaInfoServiceImpl implements IPropagandaInfoService {
}
@Override
public List<DepartmentVO> selectNumByDept(DepartmentDTO departmentDto) {
return propagandaInfoMapper.selectNumByDept(departmentDto);
public List<DepartmentVO> selectNumByDept(PropagandaInfoDto propagandaInfoDto) {
return propagandaInfoMapper.selectNumByDept(propagandaInfoDto);
}
}

View File

@ -3,7 +3,6 @@ package com.xinelu.manage.service.signpatientmanageroute;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import java.util.List;
/**
* 签约患者管理任务路径Service接口
*
@ -58,4 +57,5 @@ public interface ISignPatientManageRouteService {
* @return 结果
*/
public int deleteSignPatientManageRouteById(Long id);
}

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.service.signpatientmanageroute.impl;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
import java.time.LocalDateTime;
@ -18,6 +19,8 @@ import org.springframework.stereotype.Service;
public class SignPatientManageRouteServiceImpl implements ISignPatientManageRouteService {
@Resource
private SignPatientManageRouteMapper signPatientManageRouteMapper;
@Resource
private PatientInfoMapper patientInfoMapper;
/**
* 查询签约患者管理任务路径

View File

@ -1,6 +1,8 @@
package com.xinelu.manage.service.signpatientmanageroutenode;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import java.util.List;
@ -19,6 +21,14 @@ public interface ISignPatientManageRouteNodeService {
*/
public SignPatientManageRouteNode selectSignPatientManageRouteNodeById(Long id);
/**
* 根据患者主键查询患者管理路径节点
*
* @param patientId 患者主键
* @return 签约患者管理任务路径节点
*/
List<SignPatientManageRouteNode> getNodesByPatient(Long patientId);
/**
* 查询签约患者管理任务路径节点列表
*
@ -58,4 +68,11 @@ public interface ISignPatientManageRouteNodeService {
* @return 结果
*/
public int deleteSignPatientManageRouteNodeById(Long id);
/**
* 查询患者任务列表
* @param patientTaskDto 患者任务列表查询传输对象
* @return 患者任务列表
*/
List<PatientTaskVo> selectPatientTaskList(PatientTaskDto patientTaskDto);
}

View File

@ -1,11 +1,19 @@
package com.xinelu.manage.service.signpatientmanageroutenode.impl;
import com.xinelu.manage.domain.patientinfo.PatientInfo;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
/**
@ -18,6 +26,10 @@ import org.springframework.stereotype.Service;
public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManageRouteNodeService {
@Resource
private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper;
@Resource
private PatientInfoMapper patientInfoMapper;
@Resource
private SignPatientManageRouteMapper signRouteMapper;
/**
* 查询签约患者管理任务路径节点
@ -30,7 +42,25 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
return signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeById(id);
}
/**
@Override public List<SignPatientManageRouteNode> getNodesByPatient(Long patientId) {
List<SignPatientManageRouteNode> nodeList = new ArrayList<>();
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId);
if (patientInfo.getSignPatientRecordId() != null) {
// 查询签约路径
SignPatientManageRoute signPatientManageRoute = new SignPatientManageRoute();
signPatientManageRoute.setSignPatientRecordId(patientInfo.getSignPatientRecordId());
List<SignPatientManageRoute> signRoutes = signRouteMapper.selectSignPatientManageRouteList(signPatientManageRoute);
if (CollectionUtils.isNotEmpty(signRoutes)) {
SignPatientManageRoute signRoute = signRoutes.get(0);
SignPatientManageRouteNode nddeQuery = new SignPatientManageRouteNode();
nddeQuery.setManageRouteId(signRoute.getId());
nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nddeQuery);
}
}
return nodeList;
}
/**
* 查询签约患者管理任务路径节点列表
*
* @param signPatientManageRouteNode 签约患者管理任务路径节点
@ -49,8 +79,8 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
*/
@Override
public int insertSignPatientManageRouteNode(SignPatientManageRouteNode signPatientManageRouteNode) {
signPatientManageRouteNode.setCreateTime(LocalDateTime.now());
return signPatientManageRouteNodeMapper.insertSignPatientManageRouteNode(signPatientManageRouteNode);
signPatientManageRouteNode.setCreateTime(LocalDateTime.now());
return signPatientManageRouteNodeMapper.insertSignPatientManageRouteNode(signPatientManageRouteNode);
}
/**
@ -61,7 +91,7 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
*/
@Override
public int updateSignPatientManageRouteNode(SignPatientManageRouteNode signPatientManageRouteNode) {
signPatientManageRouteNode.setUpdateTime(LocalDateTime.now());
signPatientManageRouteNode.setUpdateTime(LocalDateTime.now());
return signPatientManageRouteNodeMapper.updateSignPatientManageRouteNode(signPatientManageRouteNode);
}
@ -86,4 +116,8 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
public int deleteSignPatientManageRouteNodeById(Long id) {
return signPatientManageRouteNodeMapper.deleteSignPatientManageRouteNodeById(id);
}
@Override public List<PatientTaskVo> selectPatientTaskList(PatientTaskDto patientTaskDto) {
return signPatientManageRouteNodeMapper.selectPatientTaskList(patientTaskDto);
}
}

View File

@ -2,6 +2,8 @@ package com.xinelu.manage.service.signpatientrecord.impl;
import com.xinelu.common.constant.SignRecordServiceStatusConstants;
import com.xinelu.common.constant.TaskCreateTypeConstant;
import com.xinelu.common.enums.NodeExecuteStatusEnum;
import com.xinelu.common.enums.RouteCheckStatusEnum;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.StringUtils;
@ -184,6 +186,10 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService {
BeanUtils.copyBeanProp(manageRouteNode, node);
manageRouteNode.setManageRouteId(body.getRouteId());
manageRouteNode.setId(null);
manageRouteNode.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.name());
manageRouteNode.setRouteCheckDate(LocalDateTime.now());
manageRouteNode.setRouteCheckRemark("签约自动审核通过");
manageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.UNEXECUTED.name());
manageRouteNode.setCreateTime(LocalDateTime.now());
manageRouteNode.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
return manageRouteNode;

View File

@ -0,0 +1,211 @@
package com.xinelu.manage.vo.signpatientmanageroute;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalTime;
import lombok.Data;
/**
* @description: 居民管理路径查询返回视图类
* @author: haown
* @create: 2024-04-02 08:58
**/
@ApiModel("居民管理路径查询返回视图类")
@Data
public class SignPatientManageRouteNodeVo {
/** 签约记录表id */
@ApiModelProperty(value = "签约记录表id")
private Long signPatientRecordId;
/** 路径主键 */
@ApiModelProperty(value = "路径主键")
private Long routeId;
/** 路径名称(任务名称) */
@ApiModelProperty(value = "路径名称")
private String routeName;
/** 管理路径节点名称出院后AFTER_DISCHARGE入院后AFTER_ADMISSION就诊后AFTER_CONSULTATION就诊/出院后AFTER_VISIT_DISCHARGE术前PREOPERATIVE术后POSTOPERATIVE*/
@ApiModelProperty(value = "管理路径节点名称出院后AFTER_DISCHARGE入院后AFTER_ADMISSION就诊后AFTER_CONSULTATION"
+ "就诊/出院后AFTER_VISIT_DISCHARGE术前PREOPERATIVE术后POSTOPERATIVE")
private String routeNodeName;
/** 管理路径节点时间,时间单位为:天 */
@ApiModelProperty(value = "管理路径节点时间,时间单位为:天")
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")
private String taskType;
/** 任务状态 */
@ApiModelProperty(value = "任务状态")
private String taskStatus;
/** 任务细分 */
@ApiModelProperty(value = "任务细分")
private String taskSubdivision;
/** 二级分类描述 */
@ApiModelProperty(value = "二级分类描述")
private String secondClassifyDescribe;
/** 执行时间格式HH:mm */
@ApiModelProperty(value = "执行时间格式HH:mm")
@JsonFormat(pattern = "HH:mm")
private LocalTime executeTime;
/** 电话推送标识0未开启1已开启 */
@ApiModelProperty(value = "电话推送标识0未开启1已开启")
private Integer phonePushSign;
/** 电话话术表id */
@ApiModelProperty(value = "电话话术表id")
private Long phoneId;
/** 电话模板ID */
@ApiModelProperty(value = "电话模板ID")
private String phoneTemplateId;
/** 电话模板名称 */
@ApiModelProperty(value = "电话模板名称")
private String phoneTemplateName;
/** 电话内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "电话内容")
private String phoneNodeContent;
/** 电话重拨次数重拨一次REDIAL_ONCE重拨二次REDIAL_TWICE不重播NOT_REPLAY */
@ApiModelProperty(value = "电话重拨次数重拨一次REDIAL_ONCE重拨二次REDIAL_TWICE不重播NOT_REPLAY")
private String phoneRedialTimes;
/** 电话时间间隔,单位为:分钟 */
@ApiModelProperty(value = "电话时间间隔,单位为:分钟")
private Integer phoneTimeInterval;
/** 电话短信提醒不发送短信NOT_SEND_MESSAGE未接通发短信NOT_CONNECTED_SEND_MESSAGE接通后发短信CONNECTED_SEND_MESSAGE所有人发短信EVERYONE_SEND_MESSAGE */
@ApiModelProperty(value = "电话短信提醒不发送短信NOT_SEND_MESSAGE未接通发短信NOT_CONNECTED_SEND_MESSAGE接通后发短信CONNECTED_SEND_MESSAGE所有人发短信EVERYONE_SEND_MESSAGE")
private String phoneMessageRemind;
/** 电话短信模板表id */
@ApiModelProperty(value = "电话短信模板表id")
private Long phoneMessageTemplateId;
/** 电话短信模板名称 */
@ApiModelProperty(value = "电话短信模板名称")
private String phoneMessageTemplateName;
/** 问卷表id */
@ApiModelProperty(value = "问卷表id")
private Long questionInfoId;
/** 问卷模板名称 */
@ApiModelProperty(value = "问卷模板名称")
private String questionnaireName;
/** 问卷模板内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "问卷模板内容")
private String questionnaireContent;
/** 问卷有效期,单位:天 */
@ApiModelProperty(value = "问卷有效期,单位:天")
private Integer questionExpirationDate;
/** 宣教文章表id */
@ApiModelProperty(value = "宣教文章表id")
private Long propagandaInfoId;
/** 宣教文章模板标题(宣教模板名称) */
@ApiModelProperty(value = "宣教文章模板标题")
private String propagandaTitle;
/** 宣教文章内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "宣教文章内容")
private String propagandaContent;
/** 短信推送标识0未开启1已开启 */
@ApiModelProperty(value = "短信推送标识0未开启1已开启")
private Integer messagePushSign;
/** 短信模板表id */
@ApiModelProperty(value = "短信模板表id")
private Long messageTemplateId;
/** 短信模板名称 */
@ApiModelProperty(value = "短信模板名称")
private String messageTemplateName;
/** 短信预览 */
@ApiModelProperty(value = "短信预览")
private String messagePreview;
/** 短信节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "短信节点内容")
private String messageNodeContent;
/** 公众号推送标识0未开启1已开启 */
@ApiModelProperty(value = "公众号推送标识0未开启1已开启")
private Integer officialPushSign;
/** 公众号模板表id */
@ApiModelProperty(value = "公众号模板表id")
private Long officialTemplateId;
/** 公众号模板名称 */
@ApiModelProperty(value = "公众号模板名称")
private String officialTemplateName;
/** 公众号提醒内容 */
@ApiModelProperty(value = "公众号提醒内容")
private String officialRemindContent;
/** 公众号节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "公众号节点内容")
private String officialNodeContent;
/** 小程序推送标识0未开启1已开启 */
@ApiModelProperty(value = "小程序推送标识0未开启1已开启")
private Integer appletPushSign;
/** 小程序模板表id */
@ApiModelProperty(value = "小程序模板表id")
private Long appletTemplateId;
/** 小程序模板名称 */
@ApiModelProperty(value = "小程序模板名称")
private String appletTemplateName;
/** 小程序提醒内容 */
@ApiModelProperty(value = "小程序提醒内容")
private String appletRemindContent;
/** 小程序提示说明 */
@ApiModelProperty(value = "小程序提示说明")
private String appletPromptDescription;
/** 小程序节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "小程序节点内容")
private String appletNodeContent;
/** 人工随访模板表id */
@ApiModelProperty(value = "人工随访模板表id")
private Long followTemplateId;
/** 人工随访模板名称 */
@ApiModelProperty(value = "人工随访模板名称")
private String followTemplateName;
/** 人工随访模板内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "人工随访模板内容")
private String followContent;
/** 节点审核状态同意AGREE不同意DISAGREE */
@ApiModelProperty(value = "节点审核状态同意AGREE不同意DISAGREE")
private String routeCheckStatus;
/** 节点任务执行状态已执行EXECUTED未执行UNEXECUTED */
@ApiModelProperty(value = "节点任务执行状态已执行EXECUTED未执行UNEXECUTED")
private String nodeExecuteStatus;
}

View File

@ -0,0 +1,143 @@
package com.xinelu.manage.vo.signpatientmanageroutenode;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Data;
/**
* @description: 患者任务列表查询返回视图类
* @author: haown
* @create: 2024-04-02 17:14
**/
@ApiModel("患者任务列表查询返回视图类")
@Data
public class PatientTaskVo {
/** 患者id */
private Long patientId;
/** 居民信息表id */
@ApiModelProperty(value = "居民信息表id")
private Long residentId;
/** 患者姓名 */
@ApiModelProperty(value = "患者姓名")
@Excel(name = "患者姓名")
private String patientName;
/** 患者电话 */
@ApiModelProperty(value = "患者电话")
@Excel(name = "患者电话")
private String patientPhone;
/** 家属电话 */
@ApiModelProperty(value = "家属电话")
private String familyMemberPhone;
/** 出生日期格式yyyy-MM-dd */
@ApiModelProperty(value = "出生日期格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
/** 身份证号 */
@ApiModelProperty(value = "身份证号")
private String cardNo;
/** 性别MALEFEMALE */
@ApiModelProperty(value = "性别MALEFEMALE")
@Excel(name = "性别MALEFEMALE")
private String sex;
/** 住址 */
@ApiModelProperty(value = "住址")
@Excel(name = "住址")
private String address;
/** 患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT
签约患者CONTRACTED_PATIENT */
@ApiModelProperty(value = "患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT签约患者CONTRACTED_PATIENT")
private String patientType;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
@Excel(name = "主治医生id")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
@Excel(name = "主治医生姓名")
private String attendingPhysicianName;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
/** 所属医院名称 */
@ApiModelProperty(value = "所属医院名称")
@Excel(name = "所属医院名称")
private String hospitalAgencyName;
/** 所属院区id */
@ApiModelProperty(value = "所属院区id")
private Long campusAgencyId;
/** 所属院区名称 */
@ApiModelProperty(value = "所属院区名称")
@Excel(name = "所属院区名称")
private String campusAgencyName;
/** 所属科室id */
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/** 所属科室名称 */
@ApiModelProperty(value = "所属科室名称")
@Excel(name = "所属科室名称")
private String departmentName;
/** 所属病区id */
@ApiModelProperty(value = "所属病区id")
private Long wardId;
/** 所属病区名称 */
@ApiModelProperty(value = "所属病区名称")
@Excel(name = "所属病区名称")
private String wardName;
/** 门诊/住院号 */
@ApiModelProperty(value = "门诊/住院号 ")
private String inHospitalNumber;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@ApiModelProperty(value = "就诊时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime visitDate;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
private String surgicalName;
/** 签约患者管理任务路径节点id */
@ApiModelProperty(value = "签约患者管理任务路径节点id")
private Long manageRouteNodeId;
/** 签约患者管理任务路径id */
@ApiModelProperty(value = "签约患者管理任务路径id")
private Long manageRouteId;
/** 签约患者管理任务路径名称 */
@ApiModelProperty(value = "签约患者管理任务路径名称")
private String manageRouteName;
/** 节点审核状态同意AGREE不同意DISAGREE */
@ApiModelProperty(value = "节点审核状态同意AGREE不同意DISAGREE")
private String routeCheckStatus;
}

View File

@ -49,12 +49,13 @@
and materials_type = #{materialsType}
</if>
<if test="createTimeStart != null">
and create_time >= #{createTimeStart}
and date_format(create_time,'%y%m%d') >= date_format(#{createTimeStart},'%y%m%d')
</if>
<if test="createTimeEnd != null">
and create_time &lt;= #{createTimeEnd}
and date_format(create_time,'%y%m%d') &lt;= date_format(#{createTimeEnd},'%y%m%d')
</if>
</where>
order by create_time desc
</select>
<select id="selectMaterialsInfoById" parameterType="Long"

View File

@ -43,6 +43,7 @@
<result property="visitDate" column="visit_date" />
<result property="dischargeMethod" column="discharge_method" />
<result property="patientSource" column="patient_source" />
<result property="surgicalName" column="surgical_name" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@ -67,7 +68,7 @@
responsible_nurse, patient_visit_record_id, visit_serial_number,
admission_time, discharge_time, appointment_treatment_group,
registration_no, registration_date, appointment_date, in_hospital_number, visit_date, discharge_method,
patient_source, del_flag, create_by, create_time, update_by, update_time
patient_source, surgical_name, del_flag, create_by, create_time, update_by, update_time
from patient_info
</sql>
@ -148,6 +149,9 @@
<if test="patientSource != null and patientSource != ''">
and patient_source = #{patientSource}
</if>
<if test="surgicalName != null and surgicalName != ''">
and surgical_name = #{surgicalName}
</if>
</where>
</select>
@ -249,6 +253,8 @@
</if>
<if test="patientSource != null">patient_source,
</if>
<if test="surgicalName != null">surgical_name,
</if>
<if test="delFlag != null">del_flag,
</if>
<if test="createBy != null">create_by,
@ -337,6 +343,8 @@
</if>
<if test="patientSource != null">#{patientSource},
</if>
<if test="surgicalName != null">#{surgicalName},
</if>
<if test="delFlag != null">#{delFlag},
</if>
<if test="createBy != null">#{createBy},
@ -465,6 +473,9 @@
<if test="patientSource != null">patient_source =
#{patientSource},
</if>
<if test="surgicalName != null">surgical_name =
#{surgicalName},
</if>
<if test="delFlag != null">del_flag =
#{delFlag},
</if>

View File

@ -298,6 +298,9 @@
<if test="departmentName != null and departmentName != ''">
and d.department_name like concat('%', #{departmentName}, '%')
</if>
<if test="propagandaStatus != null and propagandaStatus != ''">
and p.propaganda_status = #{propagandaStatus}
</if>
</where>
GROUP BY d.id
order by countNum desc

View File

@ -75,174 +75,24 @@
<select id="selectSignPatientManageRouteNodeList" parameterType="SignPatientManageRouteNode" resultMap="SignPatientManageRouteNodeResult">
<include refid="selectSignPatientManageRouteNodeVo"/>
<where>
<if test="manageRouteId != null ">
and manage_route_id = #{manageRouteId}
</if>
<if test="manageRouteName != null and manageRouteName != ''">
and manage_route_name like concat('%', #{manageRouteName}, '%')
</if>
<if test="routeNodeName != null and routeNodeName != ''">
and route_node_name like concat('%', #{routeNodeName}, '%')
</if>
<if test="routeNodeDay != null ">
and route_node_day = #{routeNodeDay}
</if>
<if test="taskType != null and taskType != ''">
and task_type = #{taskType}
</if>
<if test="taskStatus != null and taskStatus != ''">
and task_status = #{taskStatus}
</if>
<if test="taskSubdivision != null and taskSubdivision != ''">
and task_subdivision = #{taskSubdivision}
</if>
<if test="secondClassifyDescribe != null and secondClassifyDescribe != ''">
and second_classify_describe = #{secondClassifyDescribe}
</if>
<if test="executeTime != null ">
and execute_time = #{executeTime}
</if>
<if test="phonePushSign != null ">
and phone_push_sign = #{phonePushSign}
</if>
<if test="phoneId != null ">
and phone_id = #{phoneId}
</if>
<if test="phoneTemplateId != null and phoneTemplateId != ''">
and phone_template_id = #{phoneTemplateId}
</if>
<if test="phoneTemplateName != null and phoneTemplateName != ''">
and phone_template_name like concat('%', #{phoneTemplateName}, '%')
</if>
<if test="phoneNodeContent != null and phoneNodeContent != ''">
and phone_node_content = #{phoneNodeContent}
</if>
<if test="phoneRedialTimes != null and phoneRedialTimes != ''">
and phone_redial_times = #{phoneRedialTimes}
</if>
<if test="phoneTimeInterval != null ">
and phone_time_interval = #{phoneTimeInterval}
</if>
<if test="phoneMessageRemind != null and phoneMessageRemind != ''">
and phone_message_remind = #{phoneMessageRemind}
</if>
<if test="phoneMessageTemplateId != null ">
and phone_message_template_id = #{phoneMessageTemplateId}
</if>
<if test="phoneMessageTemplateName != null and phoneMessageTemplateName != ''">
and phone_message_template_name like concat('%', #{phoneMessageTemplateName}, '%')
</if>
<if test="questionInfoId != null ">
and question_info_id = #{questionInfoId}
</if>
<if test="questionnaireName != null and questionnaireName != ''">
and questionnaire_name like concat('%', #{questionnaireName}, '%')
</if>
<if test="questionnaireContent != null and questionnaireContent != ''">
and questionnaire_content = #{questionnaireContent}
</if>
<if test="questionExpirationDate != null ">
and question_expiration_date = #{questionExpirationDate}
</if>
<if test="propagandaInfoId != null ">
and propaganda_info_id = #{propagandaInfoId}
</if>
<if test="propagandaTitle != null and propagandaTitle != ''">
and propaganda_title = #{propagandaTitle}
</if>
<if test="propagandaContent != null and propagandaContent != ''">
and propaganda_content = #{propagandaContent}
</if>
<if test="messagePushSign != null ">
and message_push_sign = #{messagePushSign}
</if>
<if test="messageTemplateId != null ">
and message_template__id = #{messageTemplateId}
</if>
<if test="messageTemplateName != null and messageTemplateName != ''">
and message_template_name like concat('%', #{messageTemplateName}, '%')
</if>
<if test="messagePreview != null and messagePreview != ''">
and message_preview = #{messagePreview}
</if>
<if test="messageNodeContent != null and messageNodeContent != ''">
and message_node_content = #{messageNodeContent}
</if>
<if test="officialPushSign != null ">
and official_push_sign = #{officialPushSign}
</if>
<if test="officialTemplateId != null ">
and official_template_id = #{officialTemplateId}
</if>
<if test="officialTemplateName != null and officialTemplateName != ''">
and official_template_name like concat('%', #{officialTemplateName}, '%')
</if>
<if test="officialRemindContent != null and officialRemindContent != ''">
and official_remind_content = #{officialRemindContent}
</if>
<if test="officialNodeContent != null and officialNodeContent != ''">
and official_node_content = #{officialNodeContent}
</if>
<if test="appletPushSign != null ">
and applet_push_sign = #{appletPushSign}
</if>
<if test="appletTemplateId != null ">
and applet_template_id = #{appletTemplateId}
</if>
<if test="appletTemplateName != null and appletTemplateName != ''">
and applet_template_name like concat('%', #{appletTemplateName}, '%')
</if>
<if test="appletRemindContent != null and appletRemindContent != ''">
and applet_remind_content = #{appletRemindContent}
</if>
<if test="appletPromptDescription != null and appletPromptDescription != ''">
and applet_prompt_description = #{appletPromptDescription}
</if>
<if test="appletNodeContent != null and appletNodeContent != ''">
and applet_node_content = #{appletNodeContent}
</if>
<if test="followTemplateId != null ">
and follow_template_id = #{followTemplateId}
</if>
<if test="followTemplateName != null and followTemplateName != ''">
and follow_template_name like concat('%', #{followTemplateName}, '%')
</if>
<if test="followContent != null and followContent != ''">
and follow_content = #{followContent}
</if>
<if test="routeCheckStatus != null and routeCheckStatus != ''">
and route_check_status = #{routeCheckStatus}
</if>
<if test="routeCheckPerson != null and routeCheckPerson != ''">
and route_check_person = #{routeCheckPerson}
</if>
<if test="routeCheckDate != null ">
and route_check_date = #{routeCheckDate}
</if>
<if test="routeCheckRemark != null and routeCheckRemark != ''">
and route_check_remark = #{routeCheckRemark}
</if>
<if test="routeNodeRemark != null and routeNodeRemark != ''">
and route_node_remark = #{routeNodeRemark}
</if>
<if test="nodeExecuteStatus != null and nodeExecuteStatus != ''">
and node_execute_status = #{nodeExecuteStatus}
</if>
<if test="routeHandleRemark != null and routeHandleRemark != ''">
and route_handle_remark = #{routeHandleRemark}
</if>
<if test="routeHandleId != null ">
and route_handle_id = #{routeHandleId}
</if>
<if test="routeHandlePerson != null and routeHandlePerson != ''">
and route_handle_person = #{routeHandlePerson}
</if>
<if test="routeLink != null and routeLink != ''">
and route_link = #{routeLink}
</if>
<if test="textRemindContent != null and textRemindContent != ''">
and text_remind_content = #{textRemindContent}
</if>
<if test="manageRouteId != null ">
and manage_route_id = #{manageRouteId}
</if>
<if test="manageRouteName != null and manageRouteName != ''">
and manage_route_name like concat('%', #{manageRouteName}, '%')
</if>
<if test="routeNodeName != null and routeNodeName != ''">
and route_node_name like concat('%', #{routeNodeName}, '%')
</if>
<if test="routeNodeDay != null ">
and route_node_day = #{routeNodeDay}
</if>
<if test="taskType != null and taskType != ''">
and task_type = #{taskType}
</if>
<if test="taskStatus != null and taskStatus != ''">
and task_status = #{taskStatus}
</if>
</where>
</select>
@ -716,4 +566,51 @@
#{id}
</foreach>
</delete>
<select id="selectPatientTaskList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto" resultType="com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo">
select patient.id as patientId, patient.patient_name,
patient.patient_phone,
patient.family_member_phone,
patient.birth_date,
patient.card_no,
patient.sex,
patient.address,
patient.patient_type, patient.visit_method, patient.attending_physician_id, patient.attending_physician_name, patient.main_diagnosis,
patient.hospital_agency_id, patient.hospital_agency_name, patient.campus_agency_id, patient.campus_agency_name,
patient.department_id, patient.department_name,patient.ward_id, patient.ward_name, patient.in_hospital_number, patient.visit_date,
patient.surgical_name, node.id as manageRouteNodeId, node.manage_route_id, node.manage_route_name,node.route_check_status
from sign_patient_manage_route_node node
left join sign_patient_manage_route route on node.manage_route_id = route.id
left join patient_info patient on route.patient_id = patient.id
<where>
<if test="patientName != null and patientName != ''">
and patient.patient_name = #{patientName}
</if>
<if test="mainDiagnosis != null and mainDiagnosis != ''">
and patient.main_diagnosis like concat('%', #{mainDiagnosis}, '%')
</if>
<if test="routeCheckStatus != null ">
and node.route_check_status = #{routeCheckStatus}
</if>
<if test="hospitalAgencyId != null ">
and patient.hospital_agency_id = #{hospitalAgencyId}
</if>
<if test="campusAgencyId != null ">
and patient.campus_agency_id = #{campusAgencyId}
</if>
<if test="departmentId != null ">
and patient.department_id = #{departmentId}
</if>
<if test="wardId != null ">
and patient.ward_id = #{wardId}
</if>
<if test="visitDateStart != null ">
and date_format(patient.visit_date,'%y%m%d') &gt;= date_format(#{visitDateStart},'%y%m%d')
</if>
<if test="visitDateEnd != null ">
and date_format(patient.visit_date,'%y%m%d') &lt;= date_format(#{visitDateEnd},'%y%m%d')
</if>
</where>
group by patient_id
</select>
</mapper>