修改任务审核。

This commit is contained in:
haown 2024-04-16 09:56:09 +08:00
parent fb9df1c0d4
commit e064c8b037
28 changed files with 729 additions and 119 deletions

View File

@ -0,0 +1,34 @@
package com.xinelu.common.constant;
/**
* @description: 任务内容常量
* @author: haown
* @create: 2024-04-12 16:50
**/
public class TaskContentConstants {
/**
* 电话外呼
*/
public static final String PHONE_OUTBOUND = "PHONE_OUTBOUND";
/**
* 问卷量表
*/
public static final String QUESTIONNAIRE_SCALE = "QUESTIONNAIRE_SCALE";
/**
* 宣教文章
*/
public static final String PROPAGANDA_ARTICLE = "PROPAGANDA_ARTICLE";
/**
* 文字提醒
*/
public static final String TEXT_REMIND = "TEXT_REMIND";
/**
* 人工随访
*/
public static final String ARTIFICIAL_FOLLOW_UP = "ARTIFICIAL_FOLLOW_UP";
}

View File

@ -10,6 +10,7 @@ import lombok.Getter;
*/
@Getter
public enum RouteCheckStatusEnum {
/**
* 同意
*/

View File

@ -13,6 +13,7 @@ import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
@ -79,6 +80,15 @@ public class PatientVisitRecordController extends BaseController {
return AjaxResult.success(patientVisitRecordService.selectPatientVisitRecordById(id));
}
/**
* 查询患者最新一次就诊记录信息
*/
@PreAuthorize("@ss.hasPermi('manage:visit:query')")
@GetMapping(value = "/getByPatientId/{patientId}")
public R<PatientVisitRecordVo> getByPatientId(@PathVariable("patientId") Long patientId) {
return R.ok(patientVisitRecordService.getByPatientId(patientId));
}
/**
* 新增患者就诊记录基本信息
*/

View File

@ -62,7 +62,7 @@ public class QuestionInfoController extends BaseController {
if (Objects.isNull(id)) {
return AjaxResult.success();
}
return questionInfoService.selectQuestionInfoById(id);
return AjaxResult.success(questionInfoService.selectQuestionInfoById(id));
}
/**

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.controller.signpatientmanageroute;
import com.xinelu.common.annotation.Log;
import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.domain.R;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil;
@ -12,12 +13,18 @@ import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitRe
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 签约患者管理任务路径Controller
@ -119,5 +126,11 @@ public class SignPatientManageRouteController extends BaseController {
return signPatientManageRouteService.addPatientQuestionResult(dto);
}
/**
* 患者详情--康复计划及记录
*/
@GetMapping("/getRouteList")
public R<List<SignPatientManageRoute>> getRouteList(SignPatientManageRoute signPatientManageRoute) {
return R.ok(signPatientManageRouteService.getRouteList(signPatientManageRoute));
}
}

View File

@ -54,9 +54,9 @@ public class SignPatientManageRouteNodeController extends BaseController {
}
/**
* 查询管理任务路径及节点
* 任务审核--查询患者任务路径及节点
*/
@ApiOperation("查询管理任务路径及节点")
@ApiOperation("任务审核--查询患者任务路径及节点")
@GetMapping("/getRouteNodeList")
public R<List<SignPatientManageRouteNodeVo>> getRouteNodeList(PatientTaskDto patientTaskDto) {
List<SignPatientManageRouteNodeVo> list = signNodeService.getRouteNodeList(patientTaskDto);

View File

@ -123,6 +123,12 @@ public class SignPatientRecord extends BaseEntity {
@ApiModelProperty(value = "签约时所属病区名称")
private String wardName;
/**
* 就诊记录表主键
*/
@ApiModelProperty(value = "就诊记录表主键")
private Long patientVisitRecordId;
/**
* 就诊流水号
*/

View File

@ -14,15 +14,27 @@ import org.springframework.format.annotation.DateTimeFormat;
@Data
public class PatientVisitRecordDto {
/** 居民信息表id */
/**
* 居民信息表id
* */
@ApiModelProperty(value = "居民信息表id")
private Long residentId;
/** 患者表id */
/**
* 患者表id
* */
@ApiModelProperty(value = "患者表id")
private Long patientId;
/** 所属医院id */
/**
* 居民身份证号
* */
@ApiModelProperty(value = "居民身份证号")
private String cardNo;
/**
* 所属医院id
* */
@ApiModelProperty(value = "所属医院id")
@Excel(name = "所属医院id")
private Long hospitalAgencyId;

View File

@ -56,7 +56,7 @@ public class PatientTaskDto {
private Long wardId;
/** 节点审核状态同意AGREE不同意DISAGREE */
@ApiModelProperty(value = "节点审核状态,同意AGREE不同意DISAGREE")
@ApiModelProperty(value = "节点审核状态,未审核UNAUDITED同意AGREE不同意DISAGREE")
private String routeCheckStatus;
/** 主要诊断 */

View File

@ -2,6 +2,7 @@ package com.xinelu.manage.dto.signpatientmanageroutenode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
/**
@ -13,9 +14,9 @@ import lombok.Data;
@Data
public class RouteNodeCheckDto {
/** 签约患者管理任务表id */
@ApiModelProperty(value = "签约患者管理任务表id")
private Long manageRouteId;
/** 签约患者管理任务节点表id列表 */
@ApiModelProperty(value = "签约患者管理任务节点表id列表")
private List<Long> manageRouteNodeIds;
/** 节点审核状态同意AGREE不同意DISAGREE */
@ApiModelProperty(value = "节点审核状态同意AGREE不同意DISAGREE")

View File

@ -2,6 +2,7 @@ package com.xinelu.manage.mapper.patientvisitrecord;
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
import java.util.Collection;
import java.util.List;
import org.apache.ibatis.annotations.Param;
@ -19,7 +20,14 @@ public interface PatientVisitRecordMapper {
* @param id 患者就诊记录基本信息主键
* @return 患者就诊记录基本信息
*/
public PatientVisitRecord selectPatientVisitRecordById(Long id);
PatientVisitRecord selectPatientVisitRecordById(Long id);
/**
* 查询患者最新一条就诊记录信息
* @param patientId 患者记录表主键
* @return 患者就诊信息视图类
*/
PatientVisitRecordVo getByPatientId(Long patientId);
/**
* 查询患者就诊记录基本信息列表
@ -27,7 +35,7 @@ public interface PatientVisitRecordMapper {
* @param patientVisitRecord 患者就诊记录基本信息
* @return 患者就诊记录基本信息集合
*/
public List<PatientVisitRecord> selectPatientVisitRecordList(PatientVisitRecordDto patientVisitRecord);
List<PatientVisitRecord> selectPatientVisitRecordList(PatientVisitRecordDto patientVisitRecord);
/**
* 新增患者就诊记录基本信息
@ -35,7 +43,7 @@ public interface PatientVisitRecordMapper {
* @param patientVisitRecord 患者就诊记录基本信息
* @return 结果
*/
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
int insertBatch(@Param("patientVisitRecordList") Collection<PatientVisitRecord> patientVisitRecordList);
/**
@ -44,7 +52,7 @@ public interface PatientVisitRecordMapper {
* @param patientVisitRecord 患者就诊记录基本信息
* @return 结果
*/
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);
int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);
/**
* 删除患者就诊记录基本信息
@ -52,7 +60,7 @@ public interface PatientVisitRecordMapper {
* @param id 患者就诊记录基本信息主键
* @return 结果
*/
public int deletePatientVisitRecordById(Long id);
int deletePatientVisitRecordById(Long id);
/**
* 批量删除患者就诊记录基本信息
@ -60,16 +68,13 @@ public interface PatientVisitRecordMapper {
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deletePatientVisitRecordByIds(Long[] ids);
PatientVisitRecord judgeRepeat(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("cardNo") String cardNo,
@Param("inHospitalNumber") String inHospitalNumber);
int deletePatientVisitRecordByIds(Long[] ids);
/**
* 获取居民在当前机构最新一条就诊记录
* @param hospitalAgencyId 机构id
* @param patientId 患者id
* @return 结果
* 根据查询条件获取最新一条就诊记录
* @param patientVisitRecordDto 患者就诊记录查询传输对象
* @return 就诊记录信息
*/
PatientVisitRecord getLastRecord(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("patientId") Long patientId);
PatientVisitRecord getLastRecord(PatientVisitRecordDto patientVisitRecordDto);
}

View File

@ -144,8 +144,9 @@ public class PatientInfoServiceImpl implements IPatientInfoService {
patientVisitRecordService.deletePatientVisitRecordById(patientInfo.getPatientVisitRecordId());
// 根据患者最新一条就诊记录修改患者状态
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
patientVisitRecordDto.setHospitalAgencyId(patientInfo.getHospitalAgencyId());
patientVisitRecordDto.setPatientId(id);
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientInfo.getHospitalAgencyId(), id);
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientVisitRecordDto);
if (ObjectUtils.isEmpty(patientVisitRecord)) {
setVisitInfoNull(patientInfo);
} else {

View File

@ -14,6 +14,7 @@ import com.xinelu.manage.domain.patientinfo.PatientInfo;
import com.xinelu.manage.domain.patientprehospitalization.PatientPreHospitalization;
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.mapper.agency.AgencyMapper;
import com.xinelu.manage.mapper.department.DepartmentMapper;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
@ -120,7 +121,10 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
// 将患者状态还原为上一个状态
PatientPreHospitalization patientPreHospitalization = preHospitalizationMapper.selectByPrimaryKey(id);
PatientInfo patientInfo = patientInfoService.selectPatientInfoById(patientPreHospitalization.getPatientId());
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientPreHospitalization.getHospitalAgencyId(), patientPreHospitalization.getPatientId());
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
patientVisitRecordDto.setHospitalAgencyId(patientPreHospitalization.getHospitalAgencyId());
patientVisitRecordDto.setPatientId(patientPreHospitalization.getPatientId());
PatientVisitRecord patientVisitRecord = patientVisitRecordService.getLastRecord(patientVisitRecordDto);
if (ObjectUtils.isEmpty(patientVisitRecord)) {
// 患者的预住院信息置空
setPreHospitalizationInfoNull(patientInfo);

View File

@ -7,6 +7,7 @@ import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
@ -26,6 +27,13 @@ public interface IPatientVisitRecordService {
*/
PatientVisitRecord selectPatientVisitRecordById(Long id);
/**
* 查询患者最新一次就诊记录信息
* @param patientId 患者记录表主键
* @return 患者就诊信息视图类
*/
PatientVisitRecordVo getByPatientId(Long patientId);
/**
* 查询患者就诊记录基本信息列表
*
@ -91,5 +99,5 @@ public interface IPatientVisitRecordService {
void setPatientType(PatientInfo patientInfo, PatientVisitRecord patientVisitRecord);
PatientVisitRecord getLastRecord(Long hospitalAgencyId, Long patientId);
PatientVisitRecord getLastRecord(PatientVisitRecordDto patientVisitRecordDto);
}

View File

@ -27,6 +27,7 @@ import com.xinelu.manage.mapper.patientvisitrecord.PatientVisitRecordMapper;
import com.xinelu.manage.service.patientinfo.IPatientInfoService;
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo;
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
@ -71,7 +72,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
return patientVisitRecordMapper.selectPatientVisitRecordById(id);
}
/**
@Override public PatientVisitRecordVo getByPatientId(Long patientId) {
return patientVisitRecordMapper.getByPatientId(patientId);
}
/**
* 查询患者就诊记录基本信息列表
*
* @param patientVisitRecord 患者就诊记录基本信息
@ -92,7 +97,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
@Transactional(rollbackFor = Exception.class)
public void insertPatientVisitRecord(PatientVisitRecordSaveDto saveDto) {
// 根据机构id患者身份证号判断门诊/住院号是否重复
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.judgeRepeat(saveDto.getHospitalAgencyId(), saveDto.getCardNo(), saveDto.getInHospitalNumber());
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
patientVisitRecordDto.setHospitalAgencyId(saveDto.getHospitalAgencyId());
patientVisitRecordDto.setCardNo(saveDto.getCardNo());
patientVisitRecordDto.setInHospitalNumber(saveDto.getInHospitalNumber());
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
if (ObjectUtils.isNotEmpty(patientVisitRecord)) {
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
}
@ -158,7 +167,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
@Transactional(rollbackFor = Exception.class)
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord) {
// 根据机构id患者身份证号判断门诊/住院号是否重复
PatientVisitRecord object = patientVisitRecordMapper.judgeRepeat(patientVisitRecord.getHospitalAgencyId(), patientVisitRecord.getCardNo(), patientVisitRecord.getInHospitalNumber());
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
patientVisitRecordDto.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
patientVisitRecordDto.setCardNo(patientVisitRecord.getCardNo());
patientVisitRecordDto.setInHospitalNumber(patientVisitRecord.getInHospitalNumber());
PatientVisitRecord object = patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
if (ObjectUtils.isNotEmpty(object)) {
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
}
@ -183,7 +196,11 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
PatientBaseInfoVo patientBaseInfo = patientMapper.getPatientBaseInfo(saveDto.getPatientId());
BeanUtils.copyBeanProp(patientVisitRecord, patientBaseInfo);
// 根据机构id患者身份证号判断门诊/住院号是否重复
PatientVisitRecord object = patientVisitRecordMapper.judgeRepeat(patientVisitRecord.getHospitalAgencyId(), patientVisitRecord.getCardNo(), patientVisitRecord.getInHospitalNumber());
PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto();
patientVisitRecordDto.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
patientVisitRecordDto.setCardNo(patientVisitRecord.getCardNo());
patientVisitRecordDto.setInHospitalNumber(patientVisitRecord.getInHospitalNumber());
PatientVisitRecord object = patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
if (ObjectUtils.isNotEmpty(object)) {
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
}
@ -404,8 +421,8 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
}
}
@Override public PatientVisitRecord getLastRecord(Long hospitalAgencyId, Long patientId) {
return patientVisitRecordMapper.getLastRecord(hospitalAgencyId, patientId);
@Override public PatientVisitRecord getLastRecord(PatientVisitRecordDto patientVisitRecordDto) {
return patientVisitRecordMapper.getLastRecord(patientVisitRecordDto);
}
private void setVisitDate(PatientVisitRecord patientVisitRecord) {

View File

@ -19,7 +19,7 @@ public interface IQuestionInfoService {
* @param id 问卷基本信息主键
* @return 问卷基本信息
*/
AjaxResult selectQuestionInfoById(Long id);
QuestionVO selectQuestionInfoById(Long id);
/**
* 查询问卷基本信息列表

View File

@ -15,17 +15,16 @@ import com.xinelu.manage.vo.department.DepartmentVO;
import com.xinelu.manage.vo.questionInfo.QuestionVO;
import com.xinelu.manage.vo.questionsubject.QuestionSubjectVO;
import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO;
import lombok.extern.slf4j.Slf4j;
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;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 问卷基本信息Service业务层处理
@ -45,29 +44,32 @@ public class QuestionInfoServiceImpl implements IQuestionInfoService {
@Override
public AjaxResult selectQuestionInfoById(Long id) {
public QuestionVO selectQuestionInfoById(Long id) {
//查询问卷表
QuestionInfo questionInfo = questionInfoMapper.selectQuestionInfoById(id);
if (Objects.isNull(questionInfo)) {
return AjaxResult.error("该问卷信息已不存在!");
}
//查询题目表
QuestionVO questionVO = new QuestionVO();
BeanUtils.copyBeanProp(questionVO, questionInfo);
List<QuestionSubjectVO> questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(id);
List<Long> questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
if (questionSubjectIds.size() == 0) {
questionVO.setQuestionSubjectList(questionSubjects);
return AjaxResult.success(questionVO);
}
//查询选项表
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
for (QuestionSubjectVO questionSubject : questionSubjects) {
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
questionSubject.setQuestionSubjectOptionList(collect);
}
questionVO.setQuestionSubjectList(questionSubjects);
return AjaxResult.success(questionVO);
//if (Objects.isNull(questionInfo)) {
// throw new ServiceException("该问卷信息已不存在!");
//}
QuestionVO questionVO = new QuestionVO();
// 查询题目表
if (Objects.nonNull(questionInfo)) {
BeanUtils.copyBeanProp(questionVO, questionInfo);
List<QuestionSubjectVO> questionSubjects = questionSubjectMapper.selectQuestionSubjectBy(id);
List<Long> questionSubjectIds = questionSubjects.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(QuestionSubject::getId).collect(Collectors.toList());
if (questionSubjectIds.size() == 0) {
questionVO.setQuestionSubjectList(questionSubjects);
return questionVO;
}
// 查询选项表
List<QuestionSubjectOptionVO> questionSubjectOptions = questionSubjectOptionMapper.selectQuestionSubjectOptions(questionSubjectIds);
for (QuestionSubjectVO questionSubject : questionSubjects) {
List<QuestionSubjectOptionVO> collect = questionSubjectOptions.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getQuestionnaireSubjectId()) && questionSubject.getId().equals(item.getQuestionnaireSubjectId())).collect(Collectors.toList());
questionSubject.setQuestionSubjectOptionList(collect);
}
questionVO.setQuestionSubjectList(questionSubjects);
}
return questionVO;
}
/**

View File

@ -6,10 +6,8 @@ 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;
import java.util.List;
/**
* 签约患者管理任务路径Service接口
*
@ -85,4 +83,11 @@ public interface ISignPatientManageRouteService {
* @return 结果
*/
AjaxResult addPatientQuestionResult(PatientQuestionSubmitResultDTO dto);
/**
* 根据患者主键查询患者任务列表
* @param signPatientManageRoute 签约患者管理任务路径
* @return 任务列表
*/
List<SignPatientManageRoute> getRouteList(SignPatientManageRoute signPatientManageRoute);
}

View File

@ -8,6 +8,7 @@ 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.patientinfo.PatientInfo;
import com.xinelu.manage.domain.patientquestionoptionresult.PatientQuestionOptionResult;
import com.xinelu.manage.domain.patientquestionsubjectresult.PatientQuestionSubjectResult;
import com.xinelu.manage.domain.patientquestionsubmitresult.PatientQuestionSubmitResult;
@ -19,6 +20,7 @@ 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.patientinfo.PatientInfoMapper;
import com.xinelu.manage.mapper.patientquestionoptionresult.PatientQuestionOptionResultMapper;
import com.xinelu.manage.mapper.patientquestionsubjectresult.PatientQuestionSubjectResultMapper;
import com.xinelu.manage.mapper.patientquestionsubmitresult.PatientQuestionSubmitResultMapper;
@ -65,6 +67,8 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
private PatientQuestionOptionResultMapper patientQuestionOptionResultMapper;
@Resource
private SignRouteTriggerConditionMapper signRouteTriggerConditionMapper;
@Resource
private PatientInfoMapper patientInfoMapper;
/**
* 查询签约患者管理任务路径
@ -299,7 +303,21 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
return AjaxResult.success();
}
/**
@Override public List<SignPatientManageRoute> getRouteList(SignPatientManageRoute signPatientManageRoute) {
// 查询患者最新一条签约记录
if (signPatientManageRoute.getPatientId() == null) {
throw new ServiceException("请选择正确的患者");
}
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(signPatientManageRoute.getPatientId());
if (ObjectUtils.isEmpty(patientInfo)) {
throw new ServiceException("请选择正确的患者");
}
SignPatientManageRoute routeQuery = new SignPatientManageRoute();
routeQuery.setSignPatientRecordId(patientInfo.getSignPatientRecordId());
return signPatientManageRouteMapper.selectSignPatientManageRouteList(routeQuery);
}
/**
* 新增患者管理任务执行记录
*/
private Long insertPatientTaskExecuteRecord(PatientQuestionSubmitResultDTO dto, String routeHandlePerson, LocalDateTime time) {

View File

@ -1,21 +1,35 @@
package com.xinelu.manage.service.signpatientmanageroutenode.impl;
import com.alibaba.fastjson2.JSONObject;
import com.xinelu.common.constant.TaskContentConstants;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.manage.domain.patientinfo.PatientInfo;
import com.xinelu.manage.domain.scriptInfo.ScriptInfo;
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.dto.signpatientmanageroutenode.RouteNodeCheckDto;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
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.service.propagandainfo.IPropagandaInfoService;
import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
import com.xinelu.manage.vo.propagandainfo.PropagandaMaterialsVo;
import com.xinelu.manage.vo.questionInfo.QuestionVO;
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeInfoVo;
import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageRouteNodeVo;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -34,6 +48,12 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
private PatientInfoMapper patientInfoMapper;
@Resource
private SignPatientManageRouteMapper signRouteMapper;
@Resource
private ScriptInfoMapper scriptInfoMapper;
@Resource
private IQuestionInfoService questionInfoService;
@Resource
private IPropagandaInfoService propagandaInfoService;
/**
* 查询签约患者管理任务路径节点
@ -59,23 +79,55 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
if (patientTaskDto.getPatientId() == null || ObjectUtils.isEmpty(patientInfo)) {
throw new ServiceException("请选择患者!");
}
// 查询任务列表
SignPatientManageRoute signPatientManageRoute = new SignPatientManageRoute();
signPatientManageRoute.setSignPatientRecordId(patientTaskDto.getSignPatientRecordId());
signPatientManageRoute.setPatientId(patientTaskDto.getPatientId());
signPatientManageRoute.setTaskCreateType(patientTaskDto.getTaskCreateType());
List<SignPatientManageRoute> signRoutes = signRouteMapper.selectSignPatientManageRouteList(signPatientManageRoute);
for (SignPatientManageRoute route : signRoutes) {
SignPatientManageRouteNode nodeQuery = new SignPatientManageRouteNode();
nodeQuery.setManageRouteId(route.getId());
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery);
retList.add(SignPatientManageRouteNodeVo.builder().manageRouteId(route.getId())
.routeName(route.getRouteName())
.taskCreateType(route.getTaskCreateType())
.suitRange(route.getSuitRange())
.nodeList(nodeList).build());
if (StringUtils.isBlank(patientTaskDto.getRouteCheckStatus())) {
throw new ServiceException("请选择审核状态!");
}
if (StringUtils.isBlank(patientTaskDto.getTaskCreateType())) {
throw new ServiceException("请选择任务创建类型!");
}
// 根据任务创建类型审核状态查询节点列表
List<SignPatientManageRouteNode> allNodeList = signPatientManageRouteNodeMapper.getNodeList(patientTaskDto);
// 根据任务id进行分组
Map<Long, List<SignPatientManageRouteNode>> groupByRoute = allNodeList.stream().collect(Collectors.groupingBy(SignPatientManageRouteNode::getManageRouteId));
List<SignPatientManageRouteNodeInfoVo> nodeInfoVoList = new ArrayList<>();
for (Long manageRouteId : groupByRoute.keySet()) {
List<SignPatientManageRouteNode> nodeList = groupByRoute.get(manageRouteId);
SignPatientManageRoute manageRoute = signRouteMapper.selectSignPatientManageRouteById(manageRouteId);
// 查询模板内容
for (SignPatientManageRouteNode node : nodeList) {
SignPatientManageRouteNodeInfoVo signNodeInfo = new SignPatientManageRouteNodeInfoVo();
BeanUtils.copyBeanProp(signNodeInfo, node);
JSONObject detailInfo = new JSONObject();
switch (node.getTaskType()) {
case TaskContentConstants.PHONE_OUTBOUND: // 电话外呼-查询话术表
if (node.getPhoneId() != null) {
ScriptInfo scriptInfo = scriptInfoMapper.selectScriptInfoById(node.getPhoneId());
detailInfo = JSONObject.parseObject(JSONObject.toJSONString(scriptInfo));
}
break;
case (TaskContentConstants.QUESTIONNAIRE_SCALE): // 问卷量表-返回问卷信息
case (TaskContentConstants.ARTIFICIAL_FOLLOW_UP): // 人工随访-返回问卷信息
if (node.getQuestionInfoId() != null) {
QuestionVO questionVO = questionInfoService.selectQuestionInfoById(node.getQuestionInfoId());
detailInfo = JSONObject.parseObject(JSONObject.toJSONString(questionVO));
}
break;
case (TaskContentConstants.PROPAGANDA_ARTICLE): // 宣教文章-返回宣教库信息
if (node.getPropagandaInfoId() != null) {
PropagandaMaterialsVo propagandaMaterialsVo = propagandaInfoService.selectPropagandaInfoById(node.getPropagandaInfoId());
detailInfo = JSONObject.parseObject(JSONObject.toJSONString(propagandaMaterialsVo));
}
break;
}
signNodeInfo.setDetailInfo(detailInfo);
nodeInfoVoList.add(signNodeInfo);
}
retList.add(SignPatientManageRouteNodeVo.builder().manageRouteId(manageRouteId)
.routeName(manageRoute.getRouteName())
.taskCreateType(manageRoute.getTaskCreateType())
.suitRange(manageRoute.getSuitRange())
.nodeList(nodeInfoVoList).build());
}
return retList;
}
@ -149,11 +201,13 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
@Transactional
public int audit(RouteNodeCheckDto routeNodeCheckDto) {
int flag = 0;
if (CollectionUtils.isEmpty(routeNodeCheckDto.getManageRouteNodeIds())) {
throw new ServiceException("没有要审核的任务");
}
// 根据manageRouteId查询所有节点
SignPatientManageRouteNode nodeQuery = new SignPatientManageRouteNode();
nodeQuery.setManageRouteId(routeNodeCheckDto.getManageRouteId());
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.selectSignPatientManageRouteNodeList(nodeQuery);
for (SignPatientManageRouteNode node : nodeList) {
for (Long nodeId : routeNodeCheckDto.getManageRouteNodeIds()) {
SignPatientManageRouteNode node = new SignPatientManageRouteNode();
node.setId(nodeId);
node.setRouteCheckStatus(routeNodeCheckDto.getRouteCheckStatus());
node.setRouteCheckPerson(routeNodeCheckDto.getRouteCheckPerson());
node.setRouteCheckDate(LocalDateTime.now());

View File

@ -142,6 +142,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService {
flag = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord);
} else {
signPatientRecord.setId(null);
signPatientRecord.setPatientVisitRecordId(patient.getPatientVisitRecordId());
flag = signPatientRecordMapper.insert(signPatientRecord);
}
// 签约信息保存到患者表

View File

@ -0,0 +1,173 @@
package com.xinelu.manage.vo.patientvisitrecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Data;
/**
* @description: 患者就诊记录信息查询返回视图类
* @author: haown
* @create: 2024-04-12 13:41
**/
@Data
public class PatientVisitRecordVo {
/**
* 患者主键
*/
@ApiModelProperty(value = "患者信息表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")
private String sex;
/**
* 住址
*/
@ApiModelProperty(value = "住址")
private String address;
/**
* 所属医院id
*/
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
/**
* 所属医院名称
*/
@ApiModelProperty(value = "所属医院名称")
private String hospitalAgencyName;
/**
* 所属院区id
*/
@ApiModelProperty(value = "所属院区id")
private Long campusAgencyId;
/**
* 所属院区名称
*/
@ApiModelProperty(value = "所属院区名称")
private String campusAgencyName;
/**
* 所属科室id
*/
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/**
* 所属科室名称
*/
@ApiModelProperty(value = "所属科室名称")
private String departmentName;
/**
* 所属病区id
*/
@ApiModelProperty(value = "所属病区id")
private Long wardId;
/**
* 所属病区名称
*/
@ApiModelProperty(value = "所属病区名称")
private String wardName;
/**
* 患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END
*/
@ApiModelProperty(value = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
private String patientSource;
/**
* 就诊记录表主键
* */
@ApiModelProperty(value = "就诊记录表主键")
private Long patientVisitRecordId;
/** 就诊类型门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL */
@ApiModelProperty(value = "就诊类型门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@ApiModelProperty(value = "就诊时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime visitDate;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
/** 入院时间 */
@ApiModelProperty(value = "入院时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime admissionTime;
/** 出院时间 */
@ApiModelProperty(value = "出院时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime dischargeTime;
/** 入院病历信息,存储患者入院的整个病历信息 */
@ApiModelProperty(value = "入院病历信息,存储患者入院的整个病历信息")
private String inHospitalInfo;
/** 出院病历信息,存储患者出院的整个病历信息 */
@ApiModelProperty(value = "出院病历信息,存储患者出院的整个病历信息")
private String outHospitalInfo;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
private String surgicalName;
/** 手术记录 */
@ApiModelProperty(value = "手术记录")
private String surgicalRecord;
}

View File

@ -112,6 +112,12 @@ public class PatientTaskVo {
@Excel(name = "所属病区名称")
private String wardName;
/**
* 最新一条就诊记录id
*/
@ApiModelProperty(value = "最新一条就诊记录id")
private Long patientVisitRecordId;
/** 门诊/住院号 */
@ApiModelProperty(value = "门诊/住院号 ")
private String inHospitalNumber;
@ -128,6 +134,9 @@ public class PatientTaskVo {
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime dischargeTime;
@ApiModelProperty(value = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
private String patientSource;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
private String surgicalName;

View File

@ -0,0 +1,206 @@
package com.xinelu.manage.vo.signpatientmanageroutenode;
import com.alibaba.fastjson2.JSONObject;
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.LocalTime;
import lombok.Data;
/**
* @description: 任务节点详细信息视图类
* @author: haown
* @create: 2024-04-12 17:15
**/
@ApiModel("任务节点详细信息视图类")
@Data
public class SignPatientManageRouteNodeInfoVo {
/** 主键id */
private Long id;
/** 签约患者管理任务表id */
@ApiModelProperty(value = "签约患者管理任务表id")
@Excel(name = "签约患者管理任务表id")
private Long manageRouteId;
/** 路径名称(任务名称) */
@ApiModelProperty(value = "路径名称")
@Excel(name = "路径名称", readConverterExp = "任=务名称")
private String manageRouteName;
/** 管理路径节点名称 */
@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 taskStatus;
/** 任务细分 */
@ApiModelProperty(value = "任务细分")
@Excel(name = "任务细分")
private String taskSubdivision;
/** 二级分类描述 */
@ApiModelProperty(value = "二级分类描述")
@Excel(name = "二级分类描述")
private String secondClassifyDescribe;
/** 执行时间格式HH:mm */
@ApiModelProperty(value = "执行时间格式HH:mm")
@JsonFormat(pattern = "HH:mm")
@Excel(name = "执行时间格式HH:mm", width = 30, dateFormat = "yyyy-MM-dd")
private LocalTime executeTime;
/** 电话推送标识0未开启1已开启 */
@ApiModelProperty(value = "电话推送标识0未开启1已开启")
@Excel(name = "电话推送标识0未开启1已开启")
private Integer phonePushSign;
/** 电话话术表id */
@ApiModelProperty(value = "电话话术表id")
@Excel(name = "电话话术表id")
private Long phoneId;
/** 电话模板ID */
@ApiModelProperty(value = "电话模板ID")
@Excel(name = "电话模板ID")
private String phoneTemplateId;
/** 问卷表id */
@ApiModelProperty(value = "问卷表id")
@Excel(name = "问卷表id")
private Long questionInfoId;
/** 问卷模板名称 */
@ApiModelProperty(value = "问卷模板名称")
@Excel(name = "问卷模板名称")
private String questionnaireName;
/** 问卷模板内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "问卷模板内容")
@Excel(name = "问卷模板内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
private String questionnaireContent;
/** 问卷有效期,单位:天 */
@ApiModelProperty(value = "问卷有效期,单位:天")
@Excel(name = "问卷有效期,单位:天")
private Integer questionExpirationDate;
/** 宣教文章表id */
@ApiModelProperty(value = "宣教文章表id")
@Excel(name = "宣教文章表id")
private Long propagandaInfoId;
/** 宣教文章模板标题(宣教模板名称) */
@ApiModelProperty(value = "宣教文章模板标题")
@Excel(name = "宣教文章模板标题", readConverterExp = "宣=教模板名称")
private String propagandaTitle;
/** 宣教文章内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "宣教文章内容")
@Excel(name = "宣教文章内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
private String propagandaContent;
/** 短信推送标识0未开启1已开启 */
@ApiModelProperty(value = "短信推送标识0未开启1已开启")
@Excel(name = "短信推送标识0未开启1已开启")
private Integer messagePushSign;
/** 短信模板表id */
@ApiModelProperty(value = "短信模板表id")
@Excel(name = "短信模板表id")
private Long messageTemplateId;
/** 公众号推送标识0未开启1已开启 */
@ApiModelProperty(value = "公众号推送标识0未开启1已开启")
@Excel(name = "公众号推送标识0未开启1已开启")
private Integer officialPushSign;
/** 公众号模板表id */
@ApiModelProperty(value = "公众号模板表id")
@Excel(name = "公众号模板表id")
private Long officialTemplateId;
/** 公众号模板名称 */
@ApiModelProperty(value = "公众号模板名称")
@Excel(name = "公众号模板名称")
private String officialTemplateName;
/** 公众号提醒内容 */
@ApiModelProperty(value = "公众号提醒内容")
@Excel(name = "公众号提醒内容")
private String officialRemindContent;
/** 公众号节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "公众号节点内容")
@Excel(name = "公众号节点内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
private String officialNodeContent;
/** 小程序推送标识0未开启1已开启 */
@ApiModelProperty(value = "小程序推送标识0未开启1已开启")
@Excel(name = "小程序推送标识0未开启1已开启")
private Integer appletPushSign;
/** 小程序模板表id */
@ApiModelProperty(value = "小程序模板表id")
@Excel(name = "小程序模板表id")
private Long appletTemplateId;
/** 小程序模板名称 */
@ApiModelProperty(value = "小程序模板名称")
@Excel(name = "小程序模板名称")
private String appletTemplateName;
/** 小程序提醒内容 */
@ApiModelProperty(value = "小程序提醒内容")
@Excel(name = "小程序提醒内容")
private String appletRemindContent;
/** 小程序提示说明 */
@ApiModelProperty(value = "小程序提示说明")
@Excel(name = "小程序提示说明")
private String appletPromptDescription;
/** 小程序节点内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "小程序节点内容")
@Excel(name = "小程序节点内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
private String appletNodeContent;
/** 人工随访模板表id */
@ApiModelProperty(value = "人工随访模板表id")
@Excel(name = "人工随访模板表id")
private Long followTemplateId;
/** 人工随访模板名称 */
@ApiModelProperty(value = "人工随访模板名称")
@Excel(name = "人工随访模板名称")
private String followTemplateName;
/** 人工随访模板内容(富文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记) */
@ApiModelProperty(value = "人工随访模板内容")
@Excel(name = "人工随访模板内容", readConverterExp = "富=文本存放整个节点的信息,包含标签画像的名称以及其它,标签画像名称使用特殊符号进行标记")
private String followContent;
/** 文字提醒内容 */
@ApiModelProperty(value = "文字提醒内容")
@Excel(name = "文字提醒内容")
private String textRemindContent;
/** 详细信息 */
@ApiModelProperty(value = "详细信息")
private JSONObject detailInfo;
}

View File

@ -1,6 +1,5 @@
package com.xinelu.manage.vo.signpatientmanageroutenode;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
@ -41,5 +40,5 @@ public class SignPatientManageRouteNodeVo {
* 节点列表
*/
@ApiModelProperty(value = "节点列表")
List<SignPatientManageRouteNode> nodeList;
List<SignPatientManageRouteNodeInfoVo> nodeList;
}

View File

@ -90,11 +90,24 @@
order by visit_date desc
</select>
<select id="selectPatientVisitRecordById" parameterType="Long"
resultMap="PatientVisitRecordResult">
<include refid="selectPatientVisitRecordVo"/>
where id = #{id}
</select>
<select id="selectPatientVisitRecordById" parameterType="Long"
resultMap="PatientVisitRecordResult">
<include refid="selectPatientVisitRecordVo"/>
where id = #{id}
</select>
<select id="getByPatientId" parameterType="Long"
resultType="com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordVo">
select patient.id as patientId, patient.resident_id, patient.patient_name, patient.patient_phone, patient.family_member_phone,
patient.birth_date, patient.card_no, patient.sex, patient.address, patient.visit_method,
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.patient_source,
record.id as patientVisitRecordId, record.visit_method, record.visit_date, record.main_diagnosis,
record.admission_time, record.discharge_time, record.in_hospital_info, record.out_hospital_info, record.surgical_name, record.surgical_record
from patient_info patient
left join patient_visit_record record on patient.patient_visit_record_id = record.id
where patient.id = #{patientId}
</select>
<insert id="insertPatientVisitRecord" parameterType="PatientVisitRecord" useGeneratedKeys="true"
keyProperty="id">
@ -463,21 +476,22 @@
#{item.updateTime,jdbcType=TIMESTAMP})
</foreach>
</insert>
<select id="judgeRepeat" resultMap="PatientVisitRecordResult">
<include refid="selectPatientVisitRecordVo"/>
where del_flag = 0
and hospital_agency_id = #{hospitalAgencyId,jdbcType=BIGINT}
and in_hospital_number = #{inHospitalNumber,jdbcType=VARCHAR}
<if test="cardNo != null">
and card_no != #{cardNo,jdbcType=VARCHAR}
</if>
</select>
<select id="getLastRecord" resultMap="PatientVisitRecordResult">
<include refid="selectPatientVisitRecordVo"/>
where del_flag = 0
AND hospital_agency_id = #{hospitalAgencyId,jdbcType=BIGINT}
AND patient_id = #{patientId,jdbcType=BIGINT}
ORDER BY id desc
<where>
<if test="patientId != null">
AND patient_id = #{patientId,jdbcType=BIGINT}
</if>
<if test="hospitalAgencyId != null">
and hospital_agency_id = #{hospitalAgencyId,jdbcType=BIGINT}
</if>
<if test="inHospitalNumber != null">
and in_hospital_number = #{inHospitalNumber,jdbcType=VARCHAR}
</if>
<if test="cardNo != null">
and card_no != #{cardNo,jdbcType=VARCHAR}
</if>
</where>
</select>
</mapper>

View File

@ -124,8 +124,21 @@
<if test="taskType != null and taskType != ''">
and node.task_type = #{taskType}
</if>
<if test="taskCreateType != null and taskCreateType != ''">
and route.task_create_type = #{taskCreateType}
</if>
<choose>
<when test="routeCheckStatus != null and routeCheckStatus == 'UNAUDITED'">
and node.route_check_status is null
</when>
<when test="routeCheckStatus != null and routeCheckStatus == 'AGREE'">
and node.route_check_status = #{routeCheckStatus}
</when>
<when test="routeCheckStatus != null and routeCheckStatus == 'DISAGREE'">
and node.route_check_status = #{routeCheckStatus}
</when>
</choose>
</where>
order by node.id desc
</select>
<insert id="insertSignPatientManageRouteNode" parameterType="SignPatientManageRouteNode" useGeneratedKeys="true"
@ -609,8 +622,8 @@
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.discharge_time,
patient.surgical_name,patient.sign_patient_record_id, node.id as manageRouteNodeId, node.manage_route_id, node.manage_route_name,node.route_check_status
patient.department_id, patient.department_name,patient.ward_id, patient.ward_name, patient.patient_visit_record_id,patient.in_hospital_number, patient.visit_date, patient.discharge_time,
patient.patient_source, patient.surgical_name,route.sign_patient_record_id, 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
@ -622,12 +635,15 @@
and patient.main_diagnosis like concat('%', #{mainDiagnosis}, '%')
</if>
<choose>
<when test="routeCheckStatus != null">
<when test="routeCheckStatus != null and routeCheckStatus == 'UNAUDITED'">
and node.route_check_status is null
</when>
<when test="routeCheckStatus != null and routeCheckStatus == 'AGREE'">
and node.route_check_status = #{routeCheckStatus}
</when>
<when test="routeCheckStatus != null and routeCheckStatus == 'DISAGREE'">
and node.route_check_status = #{routeCheckStatus}
</when>
<otherwise>
and node.route_check_status is null
</otherwise>
</choose>
<if test="hospitalAgencyId != null ">
and patient.hospital_agency_id = #{hospitalAgencyId}
@ -648,6 +664,6 @@
and date_format(patient.discharge_time,'%y%m%d') &lt;= date_format(#{dischargeTimeEnd},'%y%m%d')
</if>
</where>
group by patient_id
group by patient.hospital_agency_id, patient.id
</select>
</mapper>

View File

@ -21,6 +21,7 @@
<result property="departmentName" column="department_name" jdbcType="VARCHAR"/>
<result property="wardId" column="ward_id" jdbcType="BIGINT"/>
<result property="wardName" column="ward_name" jdbcType="VARCHAR"/>
<result property="patientVisitRecordId" column="patient_visit_record_id" jdbcType="BIGINT"/>
<result property="visitSerialNumber" column="visit_serial_number" jdbcType="VARCHAR"/>
<result property="visitMethod" column="visit_method" jdbcType="VARCHAR"/>
<result property="inHospitalNumber" column="in_hospital_number" jdbcType="VARCHAR"/>
@ -48,7 +49,7 @@
patient_phone,card_no,sex,birth_date,sign_time,
hospital_agency_id,hospital_agency_name,campus_agency_id,
campus_agency_name,department_id,department_name,
ward_id,ward_name,visit_serial_number,
ward_id,ward_name,patient_visit_record_id,visit_serial_number,
visit_method,in_hospital_number,sign_diagnosis,review_diagnosis,
service_status,sign_status,intentional_source,
intentional_time,billing_doctor_id,billing_doctor_name,
@ -74,7 +75,7 @@
,patient_phone,card_no,sex,birth_date,sign_time
,hospital_agency_id,hospital_agency_name,campus_agency_id
,campus_agency_name,department_id,department_name
,ward_id,ward_name,visit_serial_number
,ward_id,ward_name,patient_visit_record_id,visit_serial_number
,visit_method,in_hospital_number,sign_diagnosis,review_diagnosis
,service_status,sign_status,intentional_source
,intentional_time,billing_doctor_id,billing_doctor_name