Merge branch '3.11_院后第二增量' of http://182.92.166.109:3000/jihan/PostDischargePatientManage into 3.11_院后第二增量

This commit is contained in:
haown 2024-04-07 17:30:29 +08:00
commit b357b669cd
38 changed files with 783 additions and 69 deletions

View File

@ -223,4 +223,9 @@ public class Constants {
* 字段内容编码前缀
*/
public static final String CONTENT_ENCODING = "CE";
/**
* 路径编码
*/
public static final String ROUTE_CODE = "RC";
}

View File

@ -0,0 +1,44 @@
package com.xinelu.common.enums;
import lombok.Getter;
/**
* @Description 任务内容
* @Author zh
* @Date 2024-04-07
*/
@Getter
public enum TaskContentEnum {
/**
* 电话外呼
*/
PHONE_OUTBOUND("PHONE_OUTBOUND"),
/**
* 问卷量表
*/
QUESTIONNAIRE_SCALE("QUESTIONNAIRE_SCALE"),
/**
* 宣教文章
*/
PROPAGANDA_ARTICLE("PROPAGANDA_ARTICLE"),
/**
* 文字提醒
*/
TEXT_REMIND("TEXT_REMIND"),
/**
* 人工随访
*/
ARTIFICIAL_FOLLOW_UP("ARTIFICIAL_FOLLOW_UP"),
;
final private String info;
TaskContentEnum(String info) {
this.info = info;
}
}

View File

@ -8,6 +8,7 @@ import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
@ -102,4 +103,21 @@ public class SignPatientManageRouteController extends BaseController {
return getDataTable(list);
}
/**
* 查询人工随访患者基本信息
*/
@GetMapping("/selectFollowPatientInfo/{id}")
public AjaxResult selectFollowPatientInfo(@PathVariable Long id) {
return signPatientManageRouteService.selectFollowPatientInfo(id);
}
/**
* 人工随访代办处理
*/
@PostMapping("/addPatientQuestionResult")
public AjaxResult addPatientQuestionResult(@RequestBody PatientQuestionSubmitResultDTO dto) {
return signPatientManageRouteService.addPatientQuestionResult(dto);
}
}

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Objects;
/**
* 专病路径-管理节点信息Controller
@ -95,6 +96,9 @@ public class SpecialDiseaseNodeController extends BaseController {
*/
@GetMapping("/selectSpecialDisease")
public AjaxResult selectSpecialDisease(Long specialDiseaseRouteId) {
if (Objects.isNull(specialDiseaseRouteId)) {
return AjaxResult.error("请选择查询的专病路径信息!");
}
return specialDiseaseNodeService.selectSpecialDisease(specialDiseaseRouteId);
}
}

View File

@ -5,14 +5,13 @@ import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
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.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@ -34,22 +33,10 @@ public class SpecialDiseaseRouteController extends BaseController {
@GetMapping("/list")
public TableDataInfo list(SpecialDiseaseRoute specialDiseaseRoute) {
startPage();
List<SpecialDiseaseRoute> list = specialDiseaseRouteService.selectSpecialDiseaseRouteList(specialDiseaseRoute);
List<SpecialDiseaseRouteVO> list = specialDiseaseRouteService.selectSpecialDiseaseRouteList(specialDiseaseRoute);
return getDataTable(list);
}
/**
* 导出专病路径信息列表
*/
@PreAuthorize("@ss.hasPermi('system:specialDiseaseRoute:export')")
@Log(title = "专病路径信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SpecialDiseaseRoute specialDiseaseRoute) {
List<SpecialDiseaseRoute> list = specialDiseaseRouteService.selectSpecialDiseaseRouteList(specialDiseaseRoute);
ExcelUtil<SpecialDiseaseRoute> util = new ExcelUtil<SpecialDiseaseRoute>(SpecialDiseaseRoute.class);
util.exportExcel(response, list, "专病路径信息数据");
}
/**
* 获取专病路径信息详细信息
*/
@ -84,9 +71,9 @@ public class SpecialDiseaseRouteController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('system:specialDiseaseRoute:remove')")
@Log(title = "专病路径信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(specialDiseaseRouteService.deleteSpecialDiseaseRouteByIds(ids));
@DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) {
return specialDiseaseRouteService.deleteSpecialDiseaseRouteById(id);
}
/**

View File

@ -12,7 +12,7 @@ import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.time.LocalDateTime;
/**
@ -89,7 +89,7 @@ public class PatientTaskExecuteRecord extends BaseEntity {
@ApiModelProperty(value = "任务执行时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "任务执行时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd")
private Date executeTime;
private LocalDateTime executeTime;
/**
* 执行人姓名手动执行时记录

View File

@ -40,6 +40,16 @@ public class DepartmentDTO extends BaseEntity {
@ApiModelProperty(value = "科室代码")
private String departmentCode;
/**
* 短信上下架
*/
private String textMessageStatus;
/**
* 微信状态
*/
private String templateSource;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

View File

@ -3,8 +3,9 @@ package com.xinelu.manage.dto.manualfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.time.LocalDate;
/**
* 人工随访查询DTO
@ -15,14 +16,15 @@ import java.time.LocalDateTime;
@Data
public class ManualFollowUpDTO {
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "随访开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime followStartTime;
private LocalDate followStartTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "随访结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime followEndTime;
private LocalDate followEndTime;
@ApiModelProperty(value = "患者姓名")
private String patientName;
@ -42,35 +44,41 @@ public class ManualFollowUpDTO {
@ApiModelProperty(value = "所属病区id")
private Long wardId;
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
@ApiModelProperty(value = "患者类型在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT")
private String patientType;
@ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "入院开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime admissionStartTime;
private LocalDate admissionStartTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "入院结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime admissionEndTime;
private LocalDate admissionEndTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "门诊(门诊患者)开始时间")
private LocalDateTime clinicalStartTime;
private LocalDate clinicalStartTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "门诊(门诊患者)结束时间")
private LocalDateTime clinicalEndTime;
private LocalDate clinicalEndTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "出院时间(出院患者)开始时间")
private LocalDateTime dischargeStartTime;
private LocalDate dischargeStartTime;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "出院时间(出院患者)结束时间")
private LocalDateTime dischargeEndTime;
private LocalDate dischargeEndTime;
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;

View File

@ -0,0 +1,21 @@
package com.xinelu.manage.dto.patientquestionoptionresult;
import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult;
import lombok.Data;
import java.math.BigDecimal;
/**
* 患者问卷题目选项提交结果DTO
*
* @author : youxilong
* @date : 2024/4/7 14:52
*/
@Data
public class PatientQuestionOptionResultDTO extends PatientQuestionOptionResult {
/**
* 题目序号
*/
private BigDecimal questionNumber;
}

View File

@ -0,0 +1,22 @@
package com.xinelu.manage.dto.patientquestionsubjectresult;
import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult;
import com.xinelu.manage.dto.patientquestionoptionresult.PatientQuestionOptionResultDTO;
import lombok.Data;
import java.util.List;
/**
* 患者问卷题目提交结果信息DTO
*
* @author : youxilong
* @date : 2024/4/7 13:54
*/
@Data
public class PatientQuestionSubjectResultDTO extends PatientQuestionSubjectResult {
/**
* 患者问卷题目选项提交结果信息
*/
private List<PatientQuestionOptionResultDTO> optionResultList;
}

View File

@ -0,0 +1,35 @@
package com.xinelu.manage.dto.patientquestionsubmitresult;
import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmitResult;
import com.xinelu.manage.dto.patientquestionsubjectresult.PatientQuestionSubjectResultDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* 患者问卷提交结果信息表DTO
*
* @author : youxilong
* @date : 2024/4/7 13:48
*/
@Data
public class PatientQuestionSubmitResultDTO extends PatientQuestionSubmitResult {
@ApiModelProperty(value = "任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE人工随访ARTIFICIAL_FOLLOW_UP")
private String taskType;
@ApiModelProperty(value = "任务处理人id")
private Long routeHandleId;
@ApiModelProperty(value = "任务处理人姓名")
private String routeHandlePerson;
@ApiModelProperty(value = "任务处理信息")
private String routeHandleRemark;
/**
* 患者问卷题目提交结果信息
*/
private List<PatientQuestionSubjectResultDTO> subjectResultDTOList;
}

View File

@ -58,4 +58,10 @@ public interface PatientQuestionOptionResultMapper {
* @return 结果
*/
int deletePatientQuestionOptionResultByIds(Long[] ids);
/**
*批量新增问卷题目选项提交结果
*/
int saveQuestionOptionList(List<PatientQuestionOptionResult> saveQuestionSubjectOptions);
}

View File

@ -58,4 +58,10 @@ public interface PatientQuestionSubjectResultMapper {
* @return 结果
*/
int deletePatientQuestionSubjectResultByIds(Long[] ids);
/**
* 批量新增患者问卷题目提交结果信息
*/
int saveQuestionSubjectList(List<PatientQuestionSubjectResult> patientQuestionSubjectResults);
}

View File

@ -1,7 +1,7 @@
package com.xinelu.manage.mapper.patientquestionsubmitresult;
import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmitResult;
import com.xinelu.manage.vo.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.vo.patientquestionsubmitresult.PatientQuestionSubmitResultVO;
import java.util.List;
@ -64,7 +64,7 @@ public interface PatientQuestionSubmitResultMapper {
* 根据任务执行记录查询患者问卷信息
*
* @param taskExecuteRecordId 患者管理任务执行记录表id
* @return PatientQuestionSubmitResultDTO
* @return PatientQuestionSubmitResultVO
*/
PatientQuestionSubmitResultDTO selectResultByTaskExecuteRecordId(Long taskExecuteRecordId);
PatientQuestionSubmitResultVO selectResultByTaskExecuteRecordId(Long taskExecuteRecordId);
}

View File

@ -2,6 +2,7 @@ package com.xinelu.manage.mapper.signpatientmanageroute;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.vo.manualfollowup.ManualFollowPatientVO;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
import java.util.List;
@ -69,4 +70,10 @@ public interface SignPatientManageRouteMapper {
*/
List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO);
/**
* 查询人工随访患者基本信息
* @param id 签约患者管理任务表id
* @return ManualFollowPatientVO 人工随访基本信息VO
*/
ManualFollowPatientVO selectFollowPatientInfo(Long id);
}

View File

@ -62,6 +62,13 @@ public interface SpecialDiseaseNodeMapper {
*/
int deleteSpecialDiseaseNodeByIds(Long[] ids);
/**
* 批量新增专病路径
*
* @param specialDiseaseNodeList 数据集合
* @return int
*/
int insertSpecialDiseaseNodeList(List<SpecialDiseaseNodeVO> specialDiseaseNodeList);
/**

View File

@ -29,6 +29,14 @@ public interface SpecialDiseaseRouteMapper {
*/
List<SpecialDiseaseRoute> selectSpecialDiseaseRouteList(SpecialDiseaseRoute specialDiseaseRoute);
/**
* 查询专病路径信息列表
*
* @param specialDiseaseRoute 专病路径信息
* @return 专病路径信息集合
*/
List<SpecialDiseaseRouteVO> selectDiseaseRouteList(SpecialDiseaseRoute specialDiseaseRoute);
/**
* 新增专病路径信息
*

View File

@ -12,6 +12,7 @@ import com.xinelu.manage.mapper.labelfieldcontent.LabelFieldContentMapper;
import com.xinelu.manage.service.labelfieldcontent.ILabelFieldContentService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
@ -72,6 +73,7 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService {
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int updateLabelFieldContent(LabelFieldContent labelFieldContent) {
if (ObjectUtils.isEmpty(labelFieldContentMapper.selectLabelFieldContentById(labelFieldContent.getId()))) {
throw new ServiceException("当前字段内容不存在,无法修改,请联系管理员");
@ -112,6 +114,7 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService {
* 批量新增标签字段内容信息
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int insertLabelFieldContents(LabelFieldContentAddDTO labelFieldContentAddDTO) {
// 获取到标签字段内容信息集合
List<LabelFieldContentDTO> fieldContentList = labelFieldContentAddDTO.getFieldContentList();

View File

@ -111,7 +111,7 @@ public class PatientTaskExecuteRecordServiceImpl implements IPatientTaskExecuteR
* 根据任务执行记录查询患者问卷信息
*
* @param taskExecuteRecordId 患者管理任务执行记录表id
* @return PatientQuestionSubmitResultDTO
* @return PatientQuestionSubmitResultVO
*/
@Override
public AjaxResult selectPatientQuestionSubmit(Long taskExecuteRecordId) {

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.service.signpatientmanageroute;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
@ -71,4 +72,17 @@ public interface ISignPatientManageRouteService {
*/
List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO);
/**
* 查询人工随访患者基本信息
* @param id 签约患者管理任务表id
* @return 人工随访患者基本信息
*/
AjaxResult selectFollowPatientInfo(Long id);
/**
* 人工随访代办处理
* @param dto 患者问卷提交结果信息表DTO
* @return 结果
*/
AjaxResult addPatientQuestionResult(PatientQuestionSubmitResultDTO dto);
}

View File

@ -1,19 +1,42 @@
package com.xinelu.manage.service.signpatientmanageroute.impl;
import com.xinelu.common.constant.TaskCreateTypeConstant;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.enums.NodeExecuteStatusEnum;
import com.xinelu.common.enums.TaskContentEnum;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.AgeUtil;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult;
import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult;
import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmitResult;
import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.dto.patientquestionoptionresult.PatientQuestionOptionResultDTO;
import com.xinelu.manage.dto.patientquestionsubjectresult.PatientQuestionSubjectResultDTO;
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper;
import com.xinelu.manage.mapper.patientquestionsubjectresult.PatientQuestionSubjectResultMapper;
import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper;
import com.xinelu.manage.mapper.patienttaskexecuterecord.PatientTaskExecuteRecordMapper;
import com.xinelu.manage.mapper.signpatientmanageroute.SignPatientManageRouteMapper;
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
import com.xinelu.manage.vo.manualfollowup.ManualFollowPatientVO;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
import java.time.LocalDateTime;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
@ -28,6 +51,14 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
private SignPatientManageRouteMapper signPatientManageRouteMapper;
@Resource
private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper;
@Resource
private PatientTaskExecuteRecordMapper patientTaskExecuteRecordMapper;
@Resource
private PatientQuestionSubmitResultMapper patientQuestionSubmitResultMapper;
@Resource
private PatientQuestionSubjectResultMapper patientQuestionSubjectResultMapper;
@Resource
private PatientQuestionOptionResultMapper patientQuestionOptionResultMapper;
/**
* 查询签约患者管理任务路径
@ -141,4 +172,130 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
public List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO) {
return signPatientManageRouteMapper.selectManualFollowUpList(manualFollowUpDTO);
}
/**
* 查询人工随访患者基本信息
*
* @param id 签约患者管理任务表id
* @return 人工随访患者基本信息VO
*/
@Override
public AjaxResult selectFollowPatientInfo(Long id) {
ManualFollowPatientVO patientVO = signPatientManageRouteMapper.selectFollowPatientInfo(id);
// 设置年龄
patientVO.setAge(AgeUtil.getAgeMonth(patientVO.getBirthDate().toString()));
if (ObjectUtils.isEmpty(patientVO)) {
return AjaxResult.error("患者信息不存在!");
}
return AjaxResult.success(patientVO);
}
/**
* 人工随访代办处理
*
* @param dto 患者问卷提交结果信息表DTO
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult addPatientQuestionResult(PatientQuestionSubmitResultDTO dto) {
String routeHandlePerson = dto.getRouteHandlePerson();
LocalDateTime time = LocalDateTime.now();
// 如果任务类型是电话外呼更新节点任务表新增患者管理任务执行记录
if (dto.getTaskType().equals(TaskContentEnum.PHONE_OUTBOUND.getInfo())) {
// 更新节点任务表
updateSignPatientManageRouteNode(dto, routeHandlePerson, time);
// 新增患者管理任务执行记录
insertPatientTaskExecuteRecord(dto, routeHandlePerson, time);
} else {
// 如果任务类型不是电话外呼(人工随访问卷量表)新增问卷提交结果表(题目选项表)更新节点任务表新增患者管理任务执行记录
PatientQuestionSubmitResult patientQuestionSubmitResult = new PatientQuestionSubmitResult();
BeanUtils.copyBeanProp(patientQuestionSubmitResult, dto);
patientQuestionSubmitResult.setCreateBy(routeHandlePerson);
patientQuestionSubmitResult.setCreateTime(time);
// 新增患者问卷提交结果
if (patientQuestionSubmitResultMapper.insertPatientQuestionSubmitResult(patientQuestionSubmitResult) <= 0) {
throw new ServiceException("新增患者问卷提交结果失败");
}
// 获取到患者问卷题目提交结果信息DTO
List<PatientQuestionSubjectResultDTO> subjectResultList = dto.getSubjectResultDTOList();
// 初始化患者问卷题目提交结果信息
List<PatientQuestionSubjectResult> patientQuestionSubjectResults = new ArrayList<>();
// 获取到患者问卷题目选项提交结果DTO
List<PatientQuestionOptionResultDTO> patientQuestionOptionResults = new ArrayList<>();
for (PatientQuestionSubjectResultDTO questionSubjectResult : subjectResultList) {
PatientQuestionSubjectResult saveQuestionSubject = new PatientQuestionSubjectResult();
BeanUtils.copyBeanProp(saveQuestionSubject, questionSubjectResult);
saveQuestionSubject.setQuestionSubmitResultId(patientQuestionSubmitResult.getId());
saveQuestionSubject.setCreateBy(routeHandlePerson);
saveQuestionSubject.setCreateTime(time);
patientQuestionSubjectResults.add(saveQuestionSubject);
patientQuestionOptionResults.addAll(questionSubjectResult.getOptionResultList());
}
// 新增患者问卷题目提交结果
if (patientQuestionSubjectResultMapper.saveQuestionSubjectList(patientQuestionSubjectResults) <= 0) {
throw new ServiceException("新增患者问卷题目提交结果失败");
}
// 初始化患者问卷题目选项提交结果
List<PatientQuestionOptionResult> saveQuestionSubjectOptions = new ArrayList<>();
for (PatientQuestionOptionResultDTO patientQuestionOptionResult : patientQuestionOptionResults) {
PatientQuestionOptionResult saveQuestionOption = new PatientQuestionOptionResult();
BeanUtils.copyBeanProp(saveQuestionOption, patientQuestionOptionResult);
// 从已保存的患者问卷题目结果列表中查找当前选项所对应的题目结果
PatientQuestionSubjectResult patientQuestionSubjectResult = patientQuestionSubjectResults.stream().
filter(Objects::nonNull).
filter(item -> Objects.nonNull(item.getQuestionNumber()) && patientQuestionOptionResult.getQuestionNumber().
compareTo(item.getQuestionNumber()) == 0).findFirst().orElse(new PatientQuestionSubjectResult());
saveQuestionOption.setQuestionSubjectResultId(patientQuestionSubjectResult.getId());
saveQuestionOption.setCreateTime(time);
saveQuestionOption.setCreateBy(routeHandlePerson);
saveQuestionSubjectOptions.add(saveQuestionOption);
}
// 新增患者问卷题目选项提交结果
if (patientQuestionOptionResultMapper.saveQuestionOptionList(saveQuestionSubjectOptions) <= 0) {
throw new ServiceException("新增患者问卷题目选项提交结果失败");
}
// 更新节点任务表
updateSignPatientManageRouteNode(dto, routeHandlePerson, time);
// 新增患者管理任务执行记录
insertPatientTaskExecuteRecord(dto, routeHandlePerson, time);
}
return AjaxResult.success();
}
/**
* 新增患者管理任务执行记录
*/
private void insertPatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto, String routeHandlePerson, LocalDateTime time) {
PatientTaskExecuteRecord patientTaskExecuteRecord = new PatientTaskExecuteRecord();
BeanUtils.copyProperties(dto, patientTaskExecuteRecord);
patientTaskExecuteRecord.setTaskContent(dto.getTaskType());
patientTaskExecuteRecord.setExecuteTime(time);
patientTaskExecuteRecord.setExecutePerson(routeHandlePerson);
patientTaskExecuteRecord.setExecuteType(TaskCreateTypeConstant.MANUAL_CREATE);
patientTaskExecuteRecord.setCreateBy(routeHandlePerson);
patientTaskExecuteRecord.setCreateTime(time);
if (patientTaskExecuteRecordMapper.insertPatientTaskExecuteRecord(patientTaskExecuteRecord) <= 0) {
throw new ServiceException("新增患者管理任务记录失败");
}
}
/**
* 更新节点任务表
*/
private void updateSignPatientManageRouteNode(PatientQuestionSubmitResultDTO dto, String routeHandlePerson, LocalDateTime time) {
SignPatientManageRouteNode signPatientManageRouteNode = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeById(dto.getManageRouteNodeId());
signPatientManageRouteNode.setNodeExecuteStatus(NodeExecuteStatusEnum.EXECUTED.toString());
signPatientManageRouteNode.setRouteHandleRemark(dto.getRouteHandleRemark());
signPatientManageRouteNode.setRouteHandleId(dto.getRouteHandleId());
signPatientManageRouteNode.setRouteHandlePerson(routeHandlePerson);
signPatientManageRouteNode.setCreateBy(routeHandlePerson);
signPatientManageRouteNode.setCreateTime(time);
// 更新节点任务表
if (signPatientManageRouteNodeMapper.updateSignPatientManageRouteNode(signPatientManageRouteNode) <= 0) {
throw new ServiceException("更新节点任务表失败");
}
}
}

View File

@ -6,8 +6,10 @@ import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.manage.domain.specialdiseasenode.SpecialDiseaseNode;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.domain.specialdiseasetriggercondition.SpecialDiseaseTriggerCondition;
import com.xinelu.manage.mapper.specialdiseasenode.SpecialDiseaseNodeMapper;
import com.xinelu.manage.mapper.specialdiseaseroute.SpecialDiseaseRouteMapper;
import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper;
import com.xinelu.manage.service.specialdiseasenode.ISpecialDiseaseNodeService;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import lombok.extern.slf4j.Slf4j;
@ -16,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
@ -31,6 +34,8 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
private SpecialDiseaseNodeMapper specialDiseaseNodeMapper;
@Resource
private SpecialDiseaseRouteMapper specialDiseaseRouteMapper;
@Resource
private SpecialDiseaseTriggerConditionMapper triggerConditionMapper;
/**
@ -81,6 +86,17 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
if (insertNodeCount < 0) {
throw new ServiceException("新增专病路径管理节点信息失败");
}
List<SpecialDiseaseTriggerCondition> specialDiseaseTriggerConditions = new ArrayList<>();
for (SpecialDiseaseTriggerCondition triggerCondition : specialDiseaseNode.getTriggerConditionList()) {
triggerCondition.setRouteId(specialDiseaseRoute.getId());
triggerCondition.setCreateTime(LocalDateTime.now());
triggerCondition.setCreateBy(SecurityUtils.getUsername());
specialDiseaseTriggerConditions.add(triggerCondition);
}
int triggerConditionCount = triggerConditionMapper.insertTriggerConditionList(specialDiseaseTriggerConditions);
if (triggerConditionCount < 0) {
throw new ServiceException("新增专病路径管理节点信息失败");
}
return AjaxResult.success();
}
@ -117,6 +133,22 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
log.info("新增管理节点信息失败");
throw new ServiceException("修改专病路径管理节点信息失败");
}
int deleteCondition = triggerConditionMapper.deleteSpecialDiseaseTriggerConditionByRouteId(specialDiseaseRoute.getId());
if (deleteCondition < 0) {
log.info("删除管理节点信息失败");
throw new ServiceException("修改专病路径管理节点信息失败");
}
List<SpecialDiseaseTriggerCondition> specialDiseaseTriggerConditions = new ArrayList<>();
for (SpecialDiseaseTriggerCondition triggerCondition : specialDiseaseNode.getTriggerConditionList()) {
triggerCondition.setRouteId(specialDiseaseRoute.getId());
triggerCondition.setCreateTime(LocalDateTime.now());
triggerCondition.setCreateBy(SecurityUtils.getUsername());
specialDiseaseTriggerConditions.add(triggerCondition);
}
int triggerConditionCount = triggerConditionMapper.insertTriggerConditionList(specialDiseaseTriggerConditions);
if (triggerConditionCount < 0) {
throw new ServiceException("修改专病路径管理节点信息失败");
}
return AjaxResult.success();
}

View File

@ -27,7 +27,7 @@ public interface ISpecialDiseaseRouteService {
* @param specialDiseaseRoute 专病路径信息
* @return 专病路径信息集合
*/
List<SpecialDiseaseRoute> selectSpecialDiseaseRouteList(SpecialDiseaseRoute specialDiseaseRoute);
List<SpecialDiseaseRouteVO> selectSpecialDiseaseRouteList(SpecialDiseaseRoute specialDiseaseRoute);
/**
* 新增专病路径信息
@ -59,7 +59,7 @@ public interface ISpecialDiseaseRouteService {
* @param id 专病路径信息主键
* @return 结果
*/
int deleteSpecialDiseaseRouteById(Long id);
AjaxResult deleteSpecialDiseaseRouteById(Long id);
/**
* 科室路径数量

View File

@ -1,13 +1,20 @@
package com.xinelu.manage.service.specialdiseaseroute.impl;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.codes.GenerateSystemCodeUtil;
import com.xinelu.manage.domain.specialdiseaseroute.SpecialDiseaseRoute;
import com.xinelu.manage.mapper.specialdiseasenode.SpecialDiseaseNodeMapper;
import com.xinelu.manage.mapper.specialdiseaseroute.SpecialDiseaseRouteMapper;
import com.xinelu.manage.mapper.specialdiseasetriggercondition.SpecialDiseaseTriggerConditionMapper;
import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService;
import com.xinelu.manage.vo.department.DepartmentVO;
import com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
@ -24,6 +31,13 @@ import java.util.List;
public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteService {
@Resource
private SpecialDiseaseRouteMapper specialDiseaseRouteMapper;
@Resource
private SpecialDiseaseNodeMapper specialDiseaseNodeMapper;
@Resource
private SpecialDiseaseTriggerConditionMapper triggerConditionMapper;
@Resource
private GenerateSystemCodeUtil generateSystemCodeUtil;
/**
* 查询专病路径信息
@ -43,8 +57,8 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi
* @return 专病路径信息
*/
@Override
public List<SpecialDiseaseRoute> selectSpecialDiseaseRouteList(SpecialDiseaseRoute specialDiseaseRoute) {
return specialDiseaseRouteMapper.selectSpecialDiseaseRouteList(specialDiseaseRoute);
public List<SpecialDiseaseRouteVO> selectSpecialDiseaseRouteList(SpecialDiseaseRoute specialDiseaseRoute) {
return specialDiseaseRouteMapper.selectDiseaseRouteList(specialDiseaseRoute);
}
/**
@ -56,6 +70,8 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi
@Override
public int insertSpecialDiseaseRoute(SpecialDiseaseRoute specialDiseaseRoute) {
specialDiseaseRoute.setCreateTime(LocalDateTime.now());
specialDiseaseRoute.setCreateBy(SecurityUtils.getUsername());
specialDiseaseRoute.setRouteCode(Constants.ROUTE_CODE + generateSystemCodeUtil.generateSystemCode(Constants.ROUTE_CODE));
return specialDiseaseRouteMapper.insertSpecialDiseaseRoute(specialDiseaseRoute);
}
@ -68,6 +84,7 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi
@Override
public int updateSpecialDiseaseRoute(SpecialDiseaseRoute specialDiseaseRoute) {
specialDiseaseRoute.setUpdateTime(LocalDateTime.now());
specialDiseaseRoute.setUpdateBy(SecurityUtils.getUsername());
return specialDiseaseRouteMapper.updateSpecialDiseaseRoute(specialDiseaseRoute);
}
@ -88,9 +105,22 @@ public class SpecialDiseaseRouteServiceImpl implements ISpecialDiseaseRouteServi
* @param id 专病路径信息主键
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public int deleteSpecialDiseaseRouteById(Long id) {
return specialDiseaseRouteMapper.deleteSpecialDiseaseRouteById(id);
public AjaxResult deleteSpecialDiseaseRouteById(Long id) {
int deleteRouteCount = specialDiseaseRouteMapper.deleteSpecialDiseaseRouteById(id);
if (deleteRouteCount < 0) {
throw new ServiceException("删除专病路径管理信息失败");
}
int deleteNodeCount = specialDiseaseNodeMapper.deleteSpecialDiseaseNodeByRouteId(id);
if (deleteNodeCount < 0) {
throw new ServiceException("删除专病路径管理信息失败");
}
int deleteTriggerConditionCount = triggerConditionMapper.deleteSpecialDiseaseTriggerConditionByRouteId(id);
if (deleteTriggerConditionCount < 0) {
throw new ServiceException("删除专病路径管理信息失败");
}
return AjaxResult.success();
}
/**

View File

@ -67,6 +67,7 @@ public class SpecialDiseaseTriggerConditionServiceImpl implements ISpecialDiseas
@Override
public int updateSpecialDiseaseTriggerCondition(SpecialDiseaseTriggerCondition specialDiseaseTriggerCondition) {
specialDiseaseTriggerCondition.setUpdateTime(LocalDateTime.now());
specialDiseaseTriggerCondition.setUpdateBy(SecurityUtils.getUsername());
return specialDiseaseTriggerConditionMapper.updateSpecialDiseaseTriggerCondition(specialDiseaseTriggerCondition);
}

View File

@ -0,0 +1,56 @@
package com.xinelu.manage.vo.manualfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
/**
* 人工随访患者基本信息VO
* @author : youxilong
* @date : 2024/4/7 8:52
*/
@Data
public class ManualFollowPatientVO {
/**
* 居民信息表id
*/
private Long id;
@ApiModelProperty(value = "姓名")
private String patientName;
@ApiModelProperty(value = "性别")
private String sex;
@ApiModelProperty(value = "患者年龄")
private Long age;
@ApiModelProperty(value = "身份证号")
private String cardNo;
@ApiModelProperty(value = "患者电话")
private String patientPhone;
@ApiModelProperty(value = "出生日期格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
@ApiModelProperty(value = "家属电话")
private String familyMemberPhone;
@ApiModelProperty(value = "住址")
private String address;
@ApiModelProperty(value = "患者个人头像图片路径")
private String avatarPictureUrl;
@ApiModelProperty(value = "所属服务包表id")
private String servicePackageId;
@ApiModelProperty(value = "服务包名称")
private String packageName;
}

View File

@ -1,7 +1,6 @@
package com.xinelu.manage.vo.manualfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -16,6 +15,30 @@ import java.time.LocalDateTime;
@Data
public class ManualFollowUpVO {
/**
* 患者信息表id
*/
private Long patientId;
/**
* 签约患者管理任务id
*/
private Long manageRouteId;
@ApiModelProperty(value = "路径名称(任务名称)")
private String manageRouteName;
/**
* 签约患者管理任务节点id
*/
private Long manageRouteNodeId;
@ApiModelProperty(value = "管理路径节点名称出院后AFTER_DISCHARGE入院后AFTER_ADMISSION就诊后AFTER_CONSULTATION就诊/出院后AFTER_VISIT_DISCHARGE术前PREOPERATIVE术后POSTOPERATIVE")
private String routeNodeName;
@ApiModelProperty(value = "患者就诊记录基本信息表id")
private Long visitRecordId;
@ApiModelProperty(value = "患者姓名")
private String patientName;
@ -67,8 +90,8 @@ public class ManualFollowUpVO {
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
@ApiModelProperty(value = "患者类型在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT")
private String patientType;
@ApiModelProperty(value = "入院时间")
@JsonFormat(pattern = "yyyy-MM-dd")

View File

@ -15,7 +15,7 @@ import java.util.List;
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class PatientQuestionSubjectResultDTO extends PatientQuestionSubjectResult {
public class PatientQuestionSubjectResultVO extends PatientQuestionSubjectResult {
/*
* 患者问卷题目提交结果信息对象id

View File

@ -1,7 +1,7 @@
package com.xinelu.manage.vo.patientquestionsubmitresult;
import com.xinelu.manage.vo.patientquestionsubjectresult.PatientQuestionSubjectResultDTO;
import com.xinelu.manage.vo.patientquestionsubjectresult.PatientQuestionSubjectResultVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -14,7 +14,7 @@ import java.util.List;
* @date 2024-03-28
*/
@Data
public class PatientQuestionSubmitResultDTO {
public class PatientQuestionSubmitResultVO {
private Long submitResulId;
/**
@ -29,5 +29,5 @@ public class PatientQuestionSubmitResultDTO {
@ApiModelProperty(value = "问卷说明")
private String questionnaireDescription;
List<PatientQuestionSubjectResultDTO> subjectResultList;
List<PatientQuestionSubjectResultVO> subjectResultList;
}

View File

@ -7,6 +7,7 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
/**
@ -69,9 +70,11 @@ public class PatientTaskExecuteRecordVO extends PatientTaskExecuteRecord {
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate startDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate endDate;

View File

@ -218,14 +218,13 @@
from department d left join wechat_template wt on d.id = wt.department_id
<where>
<if test="departmentCode != null and departmentCode != ''">
and d.department_code =
#{departmentCode}
and d.department_code =#{departmentCode}
</if>
<if test="departmentName != null and departmentName != ''">
and d.department_name like concat('%',
#{departmentName},
'%'
)
and d.department_name like concat('%',#{departmentName},'%')
</if>
<if test="templateSource != null and templateSource != ''">
and wt.template_source =#{templateSource}
</if>
</where>
GROUP BY d.id,
@ -245,6 +244,9 @@
<if test="departmentName != null and departmentName != ''">
and d.department_name like concat('%',#{departmentName},'%')
</if>
<if test="textMessageStatus != null and textMessageStatus != ''">
and tm.text_message_status = #{textMessageStatus}
</if>
</where>
GROUP BY d.id,
d.department_name,

View File

@ -149,6 +149,39 @@
</trim>
</insert>
<insert id="saveQuestionOptionList">
insert into patient_question_option_result(
question_subject_result_id,
questionnaire_subject_id,
question_name,
option_name,
option_answer,
option_score,
option_choose_sign,
option_submit_answer,
option_sort,
option_remark,
create_by,
create_time
) values
<foreach item="QuestionSubjectOption" index="index" collection="list" separator=",">
(
#{QuestionSubjectOption.questionSubjectResultId},
#{QuestionSubjectOption.questionnaireSubjectId},
#{QuestionSubjectOption.questionName},
#{QuestionSubjectOption.optionName},
#{QuestionSubjectOption.optionAnswer},
#{QuestionSubjectOption.optionScore},
#{QuestionSubjectOption.optionChooseSign},
#{QuestionSubjectOption.optionSubmitAnswer},
#{QuestionSubjectOption.optionSort},
#{QuestionSubjectOption.optionRemark},
#{QuestionSubjectOption.createBy},
#{QuestionSubjectOption.createTime}
)
</foreach>
</insert>
<update id="updatePatientQuestionOptionResult" parameterType="PatientQuestionOptionResult">
update patient_question_option_result
<trim prefix="SET" suffixOverrides=",">

View File

@ -194,6 +194,50 @@
</trim>
</insert>
<insert id="saveQuestionSubjectList" useGeneratedKeys="true"
keyProperty="id">
insert into patient_question_subject_result(
question_submit_result_id,
question_info_id,
question_number,
question_type,
question_name,
question_description,
write_description,
fill_blanks_answer,
option_count,
whether_score,
scoring_method,
scoring_description,
question_score,
question_sort,
question_remark,
create_by,
create_time
) values
<foreach item="QuestionSubject" index="index" collection="list" separator=",">
(
#{QuestionSubject.questionSubmitResultId},
#{QuestionSubject.questionInfoId},
#{QuestionSubject.questionNumber},
#{QuestionSubject.questionType},
#{QuestionSubject.questionName},
#{QuestionSubject.questionDescription},
#{QuestionSubject.writeDescription},
#{QuestionSubject.fillBlanksAnswer},
#{QuestionSubject.optionCount},
#{QuestionSubject.whetherScore},
#{QuestionSubject.scoringMethod},
#{QuestionSubject.scoringDescription},
#{QuestionSubject.questionScore},
#{QuestionSubject.questionSort},
#{QuestionSubject.questionRemark},
#{QuestionSubject.createBy},
#{QuestionSubject.createTime}
)
</foreach>
</insert>
<update id="updatePatientQuestionSubjectResult" parameterType="PatientQuestionSubjectResult">
update patient_question_subject_result
<trim prefix="SET" suffixOverrides=",">

View File

@ -32,7 +32,7 @@
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.patientquestionsubmitresult.PatientQuestionSubmitResultDTO"
<resultMap type="com.xinelu.manage.vo.patientquestionsubmitresult.PatientQuestionSubmitResultVO"
id="PatientQuestionSubmitResultDTO">
<result property="submitResulId" column="submitResulId"/>
<result property="questionnaireName" column="questionnaire_name"/>
@ -40,7 +40,7 @@
<collection property="subjectResultList" javaType="java.util.List"
resultMap="PatientQuestionSubjectResultResult"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.patientquestionsubjectresult.PatientQuestionSubjectResultDTO"
<resultMap type="com.xinelu.manage.vo.patientquestionsubjectresult.PatientQuestionSubjectResultVO"
id="PatientQuestionSubjectResultResult">
<result property="subjectResultId" column="subjectResultId"/>
<result property="questionSubmitResultId" column="question_submit_result_id"/>
@ -373,7 +373,7 @@
</delete>
<select id="selectResultByTaskExecuteRecordId"
resultType="com.xinelu.manage.vo.patientquestionsubmitresult.PatientQuestionSubmitResultDTO"
resultType="com.xinelu.manage.vo.patientquestionsubmitresult.PatientQuestionSubmitResultVO"
resultMap="PatientQuestionSubmitResultDTO">
select pqsm.id submitResulId,
pqsm.questionnaire_name,

View File

@ -44,7 +44,7 @@
and department_id = #{departmentId}
</if>
<if test="propagandaTitle != null and propagandaTitle != ''">
and propaganda_title = #{propagandaTitle}
and propaganda_title like concat('%', #{propagandaTitle}, '%')
</if>
<if test="propagandaType != null and propagandaType != ''">
and propaganda_type = #{propagandaType}

View File

@ -96,6 +96,7 @@
<select id="selectManualFollowUpList"
resultType="com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO">
SELECT
pi.id AS 'patientId',
pi.patient_name,
pi.patient_phone,
pi.sex,
@ -110,13 +111,18 @@
pi.in_hospital_number,
pi.visit_serial_number,
pi.main_diagnosis,
pvr.id AS 'visitRecordId',
pvr.surgical_name,
pi.attending_physician_id,
pi.attending_physician_name,
pi.visit_method,
pi.patient_type,
IF(pi.visit_method = 'OUTPATIENT_SERVICE',NULL,pi.admission_time) AS 'admissionTime',
IF(pi.visit_method = 'OUTPATIENT_SERVICE',pi.visit_date,pi.discharge_time) AS 'visitOrDischargeTime',
pter.execute_time AS 'executeTime',
spmr.id AS 'manageRouteId',
spmrn.id AS 'manageRouteNodeId',
spmrn.manage_route_name AS 'manageRouteName',
spmrn.route_node_name AS 'routeNodeName',
spmrn.task_type,
CASE
WHEN spmrn.task_type = 'PHONE_OUTBOUND' THEN spmrn.phone_template_name
@ -135,7 +141,8 @@
LEFT JOIN patient_info pi ON spmr.patient_id = pi.id
LEFT JOIN patient_visit_record pvr ON pi.patient_visit_record_id = pvr.id
<where>
pi.del_flag = '0' AND spmrn.node_execute_status = 'UNEXECUTED'
pi.del_flag = '0' AND spmr.task_create_type = 'MANUAL_CREATE'
AND spmrn.node_execute_status = 'UNEXECUTED'
AND spmrn.task_type in ('PHONE_OUTBOUND','QUESTIONNAIRE_SCALE','ARTIFICIAL_FOLLOW_UP')
<if test="patientName != null and patientName != ''">
AND pi.patient_name LIKE concat('%', #{patientName}, '%')
@ -155,8 +162,8 @@
<if test="wardId != null">
AND pi.ward_id = #{wardId}
</if>
<if test="visitMethod != null and visitMethod != ''">
AND pi.visit_method = #{visitMethod}
<if test="patientType != null and patientType != ''">
AND pi.patient_type = #{patientType}
</if>
<if test="visitSerialNumber != null and visitSerialNumber != ''">
AND pi.visit_serial_number LIKE concat('%', #{visitSerialNumber}, '%')
@ -191,6 +198,30 @@
</where>
</select>
<select id="selectFollowPatientInfo"
resultType="com.xinelu.manage.vo.manualfollowup.ManualFollowPatientVO">
SELECT
ri.id,
ri.patient_name,
ri.patient_phone,
ri.family_member_phone,
ri.birth_date,
ri.card_no,
ri.sex,
ri.address,
ri.avatar_picture_url,
p.id AS 'patientId',
spmr.service_package_id,
spmr.package_name
FROM
sign_patient_manage_route spmr
LEFT JOIN patient_info p ON spmr.patient_id = p.id
LEFT JOIN resident_info ri ON p.resident_id = ri.id
WHERE
p.del_flag = 0
AND ri.del_flag = 0 AND spmr.id = #{id}
</select>
<insert id="insertSignPatientManageRoute" parameterType="com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute" useGeneratedKeys="true"
keyProperty="id">
insert into sign_patient_manage_route

View File

@ -20,6 +20,8 @@
<result property="routeRemark" column="route_remark"/>
<collection property="specialDiseaseNodeList" javaType="java.util.List"
resultMap="SpecialDiseaseNodeResult"/>
<collection property="triggerConditionList" javaType="java.util.List"
resultMap="SpecialDiseaseTriggerConditionResult"/>
</resultMap>
<resultMap type="SpecialDiseaseNode" id="SpecialDiseaseNodeResult">
@ -71,6 +73,18 @@
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap type="SpecialDiseaseTriggerCondition" id="SpecialDiseaseTriggerConditionResult">
<result property="id" column="triggerConditionId"/>
<result property="routeId" column="route_id"/>
<result property="routeName" column="route_name"/>
<result property="triggerConditionCode" column="trigger_condition_code"/>
<result property="triggerConditionName" column="trigger_condition_name"/>
<result property="triggerConditionOperator" column="trigger_condition_operator"/>
<result property="triggerConditionValue" column="trigger_condition_value"/>
<result property="triggerConditionSort" column="trigger_condition_sort"/>
<result property="triggerConditionRemark" column="trigger_condition_remark"/>
</resultMap>
<sql id="selectSpecialDiseaseNodeVo">
select id,
route_id,
@ -704,7 +718,7 @@
<select id="selectSpecialDiseaseByRouteId"
resultType="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO"
resultMap="SpecialDiseaseRouteResult">
select sdr.id routeId,
select sdr.id specialDiseaseRouteId,
sdr.department_id,
sdr.department_name,
sdr.disease_type_id,
@ -715,7 +729,7 @@
sdr.route_classify,
sdr.release_status,
sdr.suit_range,
sdn.id specialDiseaseNodeId,
sdn.id specialDiseaseNodeId,
sdn.route_id,
sdn.route_name,
sdn.route_node_name,
@ -756,9 +770,25 @@
sdn.route_check_person,
sdn.route_check_date,
sdn.route_check_remark,
sdn.node_content
sdn.node_content,
sdtc.id triggerConditionId,
sdtc.route_id,
sdtc.route_name,
sdtc.trigger_condition_code,
sdtc.trigger_condition_name,
sdtc.trigger_condition_operator,
sdtc.trigger_condition_value,
sdtc.trigger_condition_sort,
sdtc.trigger_condition_remark
from special_disease_route sdr
left join special_disease_node sdn ON sdn.route_id = sdr.id
LEFT JOIN special_disease_trigger_condition sdtc ON sdtc.route_id = sdr.id
where sdr.id = #{specialDiseaseRouteId}
</select>
<delete id="deleteSpecialDiseaseNodeRouteId">
</delete>
</mapper>

View File

@ -120,6 +120,73 @@
</where>
</select>
<select id="selectDiseaseRouteList"
resultType="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO">
select a.id,
department_id,
department_name,
disease_type_id,
disease_type_name,
route_name,
route_code,
version,
route_classify,
release_status,
suit_range,
route_sort,
route_remark,
create_by,
create_time,
update_by,
update_time,
(select COUNT(1)
from special_disease_node
where route_id = a.id) totalNumber,
(select COUNT(1)
from special_disease_node
where route_id = a.id
and route_check_status = 'AGREE') agreeNumber
from special_disease_route a
<where>
<if test="departmentId != null ">
and department_id = #{departmentId}
</if>
<if test="departmentName != null and departmentName != ''">
and department_name like concat('%', #{departmentName}, '%')
</if>
<if test="diseaseTypeId != null ">
and disease_type_id = #{diseaseTypeId}
</if>
<if test="diseaseTypeName != null and diseaseTypeName != ''">
and disease_type_name like concat('%', #{diseaseTypeName}, '%')
</if>
<if test="routeName != null and routeName != ''">
and route_name like concat('%', #{routeName}, '%')
</if>
<if test="routeCode != null and routeCode != ''">
and route_code = #{routeCode}
</if>
<if test="version != null and version != ''">
and version = #{version}
</if>
<if test="routeClassify != null and routeClassify != ''">
and route_classify = #{routeClassify}
</if>
<if test="releaseStatus != null and releaseStatus != ''">
and release_status = #{releaseStatus}
</if>
<if test="suitRange != null and suitRange != ''">
and suit_range = #{suitRange}
</if>
<if test="routeSort != null ">
and route_sort = #{routeSort}
</if>
<if test="routeRemark != null and routeRemark != ''">
and route_remark = #{routeRemark}
</if>
</where>
</select>
<select id="selectSpecialDiseaseRouteById" parameterType="Long"
resultMap="SpecialDiseaseRouteResult">
<include refid="selectSpecialDiseaseRouteVo"/>