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

 Conflicts:
	postdischarge-manage/src/main/java/com/xinelu/manage/controller/signpatientmanageroute/SignPatientManageRouteController.java
	postdischarge-manage/src/main/java/com/xinelu/manage/domain/patientinfo/PatientInfo.java
	postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java
	postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/ISignPatientManageRouteService.java
	postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientmanageroute/impl/SignPatientManageRouteServiceImpl.java
	postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml
	postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml
This commit is contained in:
haown 2024-04-03 12:50:47 +08:00
commit 659cc4501e
32 changed files with 994 additions and 277 deletions

View File

@ -6,6 +6,7 @@ import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.utils.StringUtils;
import com.xinelu.common.utils.file.FileUploadUtils;
import com.xinelu.common.utils.file.FileUtils;
import com.xinelu.common.utils.file.MimeTypeUtils;
import com.xinelu.framework.config.ServerConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -37,6 +38,9 @@ public class CommonController {
private static final String FILE_DELIMETER = ",";
@Resource
private SystemBusinessConfig systemBusinessConfig;
/**
* 通用下载请求
*
@ -140,4 +144,23 @@ public class CommonController {
log.error("下载文件失败", e);
}
}
/**
* 通用管理端富文本上传请求单个
*/
@PostMapping("/richTextPictureUrl")
public AjaxResult richTextPictureUrl(MultipartFile file) throws Exception {
// 上传文件路径
String filePath = SystemBusinessConfig.getProfile() + systemBusinessConfig.getRichTextPictureUrl();
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file, MimeTypeUtils.IMAGE_EXTENSION);
//拼接路径
String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
}
}

View File

@ -24,6 +24,8 @@ xinelu:
captchaType: math
# 话术图片路径图片上传
script-file-url: /scriptFileUrl
# 获取管理端富文本的上传路径
rich-text-picture-url: /richTextPictureUrl
# 开发环境配置
server:
@ -179,6 +181,6 @@ xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
excludes: /system/notice,/system/specialDiseaseNode/add,/system/specialDiseaseNode/edit
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*

View File

@ -71,6 +71,11 @@ public class SystemBusinessConfig {
*/
private String scriptFileUrl;
/**
* 获取管理端富文本的上传路径
*/
private String richTextPictureUrl;
public String getName() {
return name;
}
@ -193,4 +198,12 @@ public class SystemBusinessConfig {
public void setMaterialsVideoUrl(String materialsVideoUrl) {
this.materialsVideoUrl = materialsVideoUrl;
}
public String getRichTextPictureUrl() {
return richTextPictureUrl;
}
public void setRichTextPictureUrl(String richTextPictureUrl) {
this.richTextPictureUrl = richTextPictureUrl;
}
}

View File

@ -194,25 +194,25 @@ public class Constants {
*/
public static final String TASK_STATUS_CODE = "TSC";
/**
* 门诊患者
*/
public static final String OUTPATIENT = "outpatient";
/**
* 门诊患者
*/
public static final String OUTPATIENT = "outpatient";
/**
* 预住院
*/
public static final String PRE_HOSPITALIZED = "prehospitalized";
/**
* 预住院
*/
public static final String PRE_HOSPITALIZED = "prehospitalized";
/**
* 在院
*/
public static final String IN_HOSPITAL = "inhospital";
/**
* 在院
*/
public static final String IN_HOSPITAL = "inhospital";
/**
* 出院
*/
public static final String DISCHARGED = "discharged";
/**
* 出院
*/
public static final String DISCHARGED = "discharged";
/**
* 字段信息编码前缀

View File

@ -146,6 +146,9 @@ public class AgencyController extends BaseController {
return agencyService.insertAgencyImportList(list);
}
/**
* 医院园区科室病区联动查询
*/
@GetMapping("/getAgencyList")
public AjaxResult getAgencyList(HospitalDTO hospitalDTO) {
return agencyService.getAgencyList(hospitalDTO);

View File

@ -51,6 +51,14 @@ public class LabelFieldInfoController extends BaseController {
return AjaxResult.success(labelFieldInfoService.selectLabelFieldInfoList(labelFieldInfo));
}
/**
* 查询标签字段信息列表树图
*/
@GetMapping("/labelFieldList")
public AjaxResult labelFieldList(String fieldType) {
return AjaxResult.success(labelFieldInfoService.labelFieldList(fieldType));
}
/**
* 导出标签字段信息列表
*/

View File

@ -7,19 +7,16 @@ 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.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
import java.util.List;
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 javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
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;
import java.util.List;
/**
* 签约患者管理任务路径Controller
@ -33,11 +30,11 @@ public class SignPatientManageRouteController extends BaseController {
@Resource
private ISignPatientManageRouteService signPatientManageRouteService;
/**
* 查询签约患者管理任务路径列表
*/
@PreAuthorize("@ss.hasPermi('manage:signroute:list')")
@GetMapping("/list")
/**
* 查询签约患者管理任务路径列表
*/
@PreAuthorize("@ss.hasPermi('manage:signroute:list')")
@GetMapping("/list")
public TableDataInfo list(SignPatientManageRoute signPatientManageRoute) {
startPage();
List<SignPatientManageRoute> list = signPatientManageRouteService.selectSignPatientManageRouteList(signPatientManageRoute);
@ -52,7 +49,7 @@ public class SignPatientManageRouteController extends BaseController {
@PostMapping("/export")
public void export(HttpServletResponse response, SignPatientManageRoute signPatientManageRoute) {
List<SignPatientManageRoute> list = signPatientManageRouteService.selectSignPatientManageRouteList(signPatientManageRoute);
ExcelUtil<SignPatientManageRoute> util = new ExcelUtil<SignPatientManageRoute>(SignPatientManageRoute. class);
ExcelUtil<SignPatientManageRoute> util = new ExcelUtil<SignPatientManageRoute>(SignPatientManageRoute.class);
util.exportExcel(response, list, "签约患者管理任务路径数据");
}
@ -70,9 +67,9 @@ public class SignPatientManageRouteController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('manage:signroute:add')")
@Log(title = "签约患者管理任务路径", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SignPatientManageRoute signPatientManageRoute) {
return toAjax(signPatientManageRouteService.insertSignPatientManageRoute(signPatientManageRoute));
@PostMapping("/add")
public AjaxResult add(@RequestBody SignPatientManageRouteVO signPatientManageRoute) {
return signPatientManageRouteService.insertSignPatientManageRoute(signPatientManageRoute);
}
/**
@ -80,9 +77,9 @@ public class SignPatientManageRouteController extends BaseController {
*/
@PreAuthorize("@ss.hasPermi('manage:signroute:edit')")
@Log(title = "签约患者管理任务路径", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SignPatientManageRoute signPatientManageRoute) {
return toAjax(signPatientManageRouteService.updateSignPatientManageRoute(signPatientManageRoute));
@PutMapping("/edit")
public AjaxResult edit(@RequestBody SignPatientManageRouteVO signPatientManageRoute) {
return signPatientManageRouteService.updateSignPatientManageRoute(signPatientManageRoute);
}
/**
@ -95,5 +92,14 @@ public class SignPatientManageRouteController extends BaseController {
return toAjax(signPatientManageRouteService.deleteSignPatientManageRouteByIds(ids));
}
/**
* 查询人工随访代办列表
*/
@GetMapping("/manualFollowUpList")
public TableDataInfo getManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO) {
startPage();
List<ManualFollowUpVO> list = signPatientManageRouteService.selectManualFollowUpList(manualFollowUpDTO);
return getDataTable(list);
}
}

View File

@ -25,186 +25,261 @@ import lombok.NoArgsConstructor;
@ApiModel(value = "患者信息对象", description = "patient_info")
public class PatientInfo extends BaseEntity {
private static final long serialVersionUID=1L;
private static final long serialVersionUID = 1L;
/** 主键id */
/**
* 主键id
*/
private Long id;
/** 居民信息表id */
@ApiModelProperty(value = "居民信息表id")
private Long residentId;
/**
* 居民信息表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 */
/**
* 出生日期格式yyyy-MM-dd
*/
@ApiModelProperty(value = "出生日期格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
/** 身份证号 */
/**
* 身份证号
*/
@ApiModelProperty(value = "身份证号")
private String cardNo;
/** 性别MALEFEMALE */
/**
* 性别MALEFEMALE
*/
@ApiModelProperty(value = "性别MALEFEMALE")
@Excel(name = "性别MALEFEMALE")
private String sex;
/** 住址 */
/**
* 住址
*/
@ApiModelProperty(value = "住址")
@Excel(name = "住址")
private String address;
/** 患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT
签约患者CONTRACTED_PATIENT */
/**
* 患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT
* 签约患者CONTRACTED_PATIENT
*/
@ApiModelProperty(value = "患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT签约患者CONTRACTED_PATIENT")
private String patientType;
/**
* 签约状态未签约UN_SIGN,在签IN_SIGN,解约SEPARATE_SIGN, 服务到期EXPIRE_SIGN
*/
@ApiModelProperty(value = "签约状态未签约UN_SIGN,在签IN_SIGN,解约SEPARATE_SIGN, 过期EXPIRE_SIGN")
private String signStatus;
/**
* 签约状态未签约UN_SIGN,在签IN_SIGN,解约SEPARATE_SIGN, 服务到期EXPIRE_SIGN
*/
@ApiModelProperty(value = "签约状态未签约UN_SIGN,在签IN_SIGN,解约SEPARATE_SIGN, 过期EXPIRE_SIGN")
private String signStatus;
@ApiModelProperty(value = "签约记录表id")
private Long signPatientRecordId;
@ApiModelProperty(value = "签约记录表id")
private Long signPatientRecordId;
/**
* 服务状态意向签约INTENTIONAL_SIGNING服务中SERVICE_CENTER服务结束SERVICE_END
*/
@ApiModelProperty(value = "服务状态意向签约INTENTIONAL_SIGNING服务中SERVICE_CENTER服务结束SERVICE_END")
private String serviceStatus;
/**
* 服务状态意向签约INTENTIONAL_SIGNING服务中SERVICE_CENTER服务结束SERVICE_END
*/
@ApiModelProperty(value = "服务状态意向签约INTENTIONAL_SIGNING服务中SERVICE_CENTER服务结束SERVICE_END")
private String serviceStatus;
/** 签约时间格式yyyy-MM-dd HH:mm:ss */
/**
* 签约时间格式yyyy-MM-dd HH:mm:ss
*/
@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 LocalDateTime signTime;
/** 就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL */
/**
* 就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL
*/
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
@Excel(name = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
@Excel(name = "主治医生id")
private Long attendingPhysicianId;
/**
* 主治医生id
*/
@ApiModelProperty(value = "主治医生id")
@Excel(name = "主治医生id")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
@Excel(name = "主治医生姓名")
private String attendingPhysicianName;
/**
* 主治医生姓名
*/
@ApiModelProperty(value = "主治医生姓名")
@Excel(name = "主治医生姓名")
private String attendingPhysicianName;
/** 主要诊断 */
/**
* 主要诊断
*/
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
/** 所属医院id */
/**
* 所属医院id
*/
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
/** 所属医院名称 */
/**
* 所属医院名称
*/
@ApiModelProperty(value = "所属医院名称")
@Excel(name = "所属医院名称")
private String hospitalAgencyName;
/** 所属院区id */
/**
* 所属院区id
*/
@ApiModelProperty(value = "所属院区id")
private Long campusAgencyId;
/** 所属院区名称 */
/**
* 所属院区名称
*/
@ApiModelProperty(value = "所属院区名称")
@Excel(name = "所属院区名称")
private String campusAgencyName;
/** 所属科室id */
/**
* 所属科室id
*/
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/** 所属科室名称 */
/**
* 所属科室名称
*/
@ApiModelProperty(value = "所属科室名称")
@Excel(name = "所属科室名称")
private String departmentName;
/** 所属病区id */
/**
* 所属病区id
*/
@ApiModelProperty(value = "所属病区id")
private Long wardId;
/** 所属病区名称 */
/**
* 所属病区名称
*/
@ApiModelProperty(value = "所属病区名称")
@Excel(name = "所属病区名称")
private String wardName;
/** 责任护士 */
/**
* 责任护士
*/
@ApiModelProperty(value = "责任护士")
private String responsibleNurse;
/** 最新一条就诊记录id */
@ApiModelProperty(value = "最新一条就诊记录id")
private Long patientVisitRecordId;
/**
* 最新一条就诊记录id
*/
@ApiModelProperty(value = "最新一条就诊记录id")
private Long patientVisitRecordId;
/** 就诊流水号 */
/**
* 就诊流水号
*/
@ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber;
/** 入院时间时间格式yyyy-MM-dd */
/**
* 入院时间时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "入院时间")
private LocalDateTime admissionTime;
/** 出院时间出院患者时间格式yyyy-MM-dd */
/**
* 出院时间出院患者时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "出院时间(出院患者)")
private LocalDateTime dischargeTime;
/** 预约治疗组(取值以及枚举未知?) */
/**
* 预约治疗组取值以及枚举未知
*/
@ApiModelProperty(value = "预约治疗组(取值以及枚举未知?)")
private String appointmentTreatmentGroup;
/** 登记号(预住院患者) */
/**
* 登记号预住院患者
*/
@ApiModelProperty(value = "登记号(预住院患者)")
private String registrationNo;
/** 登记日期预住院患者时间格式yyyy-MM-dd */
/**
* 登记日期预住院患者时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "登记日期预住院患者时间格式yyyy-MM-dd")
private LocalDate registrationDate;
/** 预约时间预住院患者时间格式yyyy-MM-dd */
/**
* 预约时间预住院患者时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "预约时间预住院患者时间格式yyyy-MM-dd")
private LocalDate appointmentDate;
/** 门诊/住院号 */
/**
* 门诊/住院号
*/
@ApiModelProperty(value = "门诊/住院号 ")
@Excel(name = "门诊/住院号 ", readConverterExp = "门诊/住院号 ")
private String inHospitalNumber;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@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 LocalDateTime visitDate;
/**
* 就诊时间格式yyyy-MM-dd HH:mm:ss
*/
@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 LocalDateTime visitDate;
/** 出院方式(出院患者) */
/**
* 出院方式出院患者
*/
@ApiModelProperty(value = "出院方式")
@Excel(name = "出院方式", readConverterExp = "出=院患者")
private String dischargeMethod;
/** 患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END */
/**
* 患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END
*/
@ApiModelProperty(value = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
@Excel(name = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
private String patientSource;
/**
* 删除标识0未删除1已删除
*/
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
@Excel(name = "手术名称")

View File

@ -0,0 +1,85 @@
package com.xinelu.manage.dto.manualfollowup;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 人工随访查询DTO
*
* @author : youxilong
* @date : 2024/4/2 10:36
*/
@Data
public class ManualFollowUpDTO {
@ApiModelProperty(value = "随访开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime followStartTime;
@ApiModelProperty(value = "随访结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime followEndTime;
@ApiModelProperty(value = "患者姓名")
private String patientName;
@ApiModelProperty(value = "患者电话")
private String patientPhone;
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
@ApiModelProperty(value = "所属院区id")
private Long campusAgencyId;
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
@ApiModelProperty(value = "所属病区id")
private Long wardId;
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
@ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber;
@ApiModelProperty(value = "入院开始时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime admissionStartTime;
@ApiModelProperty(value = "入院结束时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime admissionEndTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "门诊(门诊患者)开始时间")
private LocalDateTime clinicalStartTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "门诊(门诊患者)结束时间")
private LocalDateTime clinicalEndTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "出院时间(出院患者)开始时间")
private LocalDateTime dischargeStartTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "出院时间(出院患者)结束时间")
private LocalDateTime dischargeEndTime;
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
@ApiModelProperty(value = "主治医生id")
private Long attendingPhysicianId;
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
}

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.mapper.labelfieldcontent;
import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -69,4 +70,12 @@ public interface LabelFieldContentMapper {
* 检查除去当前记录外有没有重复内容名称
*/
int existCountByContentNameExcludingId(@Param("id") Long id, @Param("fieldId") Long fieldId, @Param("contentName") String contentName);
/**
* 查询标签信息根据标签字段信息表
*
* @param labelFieldIds 标签字段信息表
* @return LabelFieldContentVO
*/
List<LabelFieldContentVO> selectLabelFieldContent(@Param("labelFieldIds") List<Long> labelFieldIds);
}

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.mapper.labelfieldinfo;
import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.vo.labelfieldinfo.LabelFieldVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -28,6 +29,14 @@ public interface LabelFieldInfoMapper {
*/
public List<LabelFieldInfo> selectLabelFieldInfoList(LabelFieldInfo labelFieldInfo);
/**
* 查询标签字段信息列表
*
* @param fieldType 标签字段信息
* @return 标签字段信息集合
*/
List<LabelFieldVO> selectLabelFieldList(String fieldType);
/**
* 新增标签字段信息
*

View File

@ -3,6 +3,7 @@ package com.xinelu.manage.mapper.patientinfo;
import com.xinelu.manage.domain.patientinfo.PatientInfo;
import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo;
import java.util.List;
/**
@ -20,7 +21,13 @@ public interface PatientInfoMapper {
*/
public PatientInfo selectPatientInfoById(Long id);
public PatientBaseInfoVo getPatientBaseInfo(Long id);
/**
* 查询患者信息
*
* @param id 主键id
* @return 患者信息
*/
public PatientBaseInfoVo getPatientBaseInfo(Long id);
/**
* 查询患者信息列表

View File

@ -1,6 +1,9 @@
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.ManualFollowUpVO;
import java.util.List;
@ -58,4 +61,12 @@ public interface SignPatientManageRouteMapper {
* @return 结果
*/
public int deleteSignPatientManageRouteByIds(Long[] ids);
/**
* 查询人工随访代办列表
* @param manualFollowUpDTO 人工随访查询DTO
* @return ManualFollowUpVO 人工随访代办VO
*/
List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO);
}

View File

@ -6,6 +6,8 @@ import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 签约患者管理任务路径节点Mapper接口
*
@ -63,6 +65,14 @@ public interface SignPatientManageRouteNodeMapper {
*/
public int deleteSignPatientManageRouteNodeByIds(Long[] ids);
/**
* 批量删除签约患者管理任务路径节点
*
* @param manageRouteId 需要删除的数据
* @return 结果
*/
int deleteRouteNodeByManageRouteId(Long manageRouteId);
/**
* 查询患者任务列表
* @param patientTaskDto 患者任务列表查询传输对象

View File

@ -88,5 +88,11 @@ public interface IAgencyService {
**/
AjaxResult insertAgencyImportList(List<Agency> agencyList);
/**
* 医院园区科室病区联动查询
*
* @param hospitalDTO 信息
* @return AjaxResult
*/
AjaxResult getAgencyList(HospitalDTO hospitalDTO);
}

View File

@ -224,8 +224,15 @@ public class AgencyServiceImpl implements IAgencyService {
return AjaxResult.success();
}
/**
* 医院园区科室病区联动查询
*
* @param hospitalDTO 信息
* @return AjaxResult
*/
@Override
public AjaxResult getAgencyList(HospitalDTO hospitalDTO) {
//只选医院
HospitalVO hospitalVO = new HospitalVO();
if (StringUtils.isNotBlank(hospitalDTO.getNodeType()) && NodeTypeEnum.HOSPITAL.getInfo().equals(hospitalDTO.getNodeType()) && Objects.nonNull(hospitalDTO.getHospitalId())) {
Agency agency = new Agency();
@ -242,6 +249,7 @@ public class AgencyServiceImpl implements IAgencyService {
List<Department> wardList = departmentMapper.selectDepartmentList(department);
hospitalVO.setWardList(wardList);
}
//选到园区
if (StringUtils.isNotBlank(hospitalDTO.getNodeType()) && NodeTypeEnum.CAMPUS.getInfo().equals(hospitalDTO.getNodeType()) && Objects.nonNull(hospitalDTO.getCampusId())) {
Department department = new Department();
department.setNodeType(NodeTypeEnum.DEPARTMENT.getInfo());
@ -252,6 +260,7 @@ public class AgencyServiceImpl implements IAgencyService {
List<Department> wardList = departmentMapper.selectDepartmentList(department);
hospitalVO.setWardList(wardList);
}
//选到科室
if (StringUtils.isNotBlank(hospitalDTO.getNodeType()) && NodeTypeEnum.DEPARTMENT.getInfo().equals(hospitalDTO.getNodeType()) && Objects.nonNull(hospitalDTO.getDepartmentId())) {
Department department = new Department();
department.setNodeType(NodeTypeEnum.WARD.getInfo());

View File

@ -153,8 +153,8 @@ public class DepartmentServiceImpl implements IDepartmentService {
/**
* 查询科室信息列表及包含话术数量
*
* @param departmentDto
* @return
* @param departmentDto 科室信息
* @return 结果
*/
@Override
public List<DepartmentVO> selectDepartmentListScriptNum(DepartmentDTO departmentDto) {
@ -164,8 +164,8 @@ public class DepartmentServiceImpl implements IDepartmentService {
/**
* 查询科室信息列表及包含手术数量
*
* @param departmentDto
* @return
* @param departmentDto 科室信息
* @return 结果
*/
@Override
public List<DepartmentVO> selectDepartmentListOperationNum(DepartmentDTO departmentDto) {
@ -175,8 +175,8 @@ public class DepartmentServiceImpl implements IDepartmentService {
/**
* 查询科室信息列表及包含微信库数量
*
* @param departmentDto
* @return
* @param departmentDto 科室信息
* @return 结果
*/
@Override
public List<DepartmentVO> selectDepartmentListWechatTemplateNum(DepartmentDTO departmentDto) {
@ -186,8 +186,8 @@ public class DepartmentServiceImpl implements IDepartmentService {
/**
* 查询科室信息列表及包含短信库数量
*
* @param departmentDto
* @return
* @param departmentDto 科室信息
* @return 结果
*/
@Override
public List<DepartmentVO> selectDepartmentListMessageNum(DepartmentDTO departmentDto) {
@ -198,7 +198,7 @@ public class DepartmentServiceImpl implements IDepartmentService {
* 科室信息导入
*
* @param departmentList 科室信息
* @return
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@ -244,8 +244,8 @@ public class DepartmentServiceImpl implements IDepartmentService {
/**
* 查询科室信息列表及包含服务包数量
*
* @param departmentDto
* @return
* @param departmentDto 科室
* @return 结果
*/
@Override
public List<DepartmentVO> selectListServicePackageNum(DepartmentDTO departmentDto) {

View File

@ -1,5 +1,6 @@
package com.xinelu.manage.service.labelfieldinfo;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.dto.labelfieldinfo.LabelFieldInfoAddDTO;
@ -28,6 +29,14 @@ public interface ILabelFieldInfoService {
*/
List<LabelFieldInfo> selectLabelFieldInfoList(LabelFieldInfo labelFieldInfo);
/**
* 标签字段信息表 查询标签字段信息列表树图
*
* @param fieldType 字段类型
* @return AjaxResult
*/
AjaxResult labelFieldList(String fieldType);
/**
* 新增标签字段信息
*

View File

@ -1,13 +1,17 @@
package com.xinelu.manage.service.labelfieldinfo.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.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.dto.labelfieldinfo.LabelFieldInfoAddDTO;
import com.xinelu.manage.mapper.labelfieldcontent.LabelFieldContentMapper;
import com.xinelu.manage.mapper.labelfieldinfo.LabelFieldInfoMapper;
import com.xinelu.manage.service.labelfieldinfo.ILabelFieldInfoService;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO;
import com.xinelu.manage.vo.labelfieldinfo.LabelFieldVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
@ -17,6 +21,7 @@ import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -33,6 +38,9 @@ public class LabelFieldInfoServiceImpl implements ILabelFieldInfoService {
@Resource
private GenerateSystemCodeUtil systemCodeUtil;
@Resource
private LabelFieldContentMapper labelFieldContentMapper;
/**
* 查询标签字段信息
*
@ -55,6 +63,27 @@ public class LabelFieldInfoServiceImpl implements ILabelFieldInfoService {
return labelFieldInfoMapper.selectLabelFieldInfoList(labelFieldInfo);
}
/**
* 查询标签字段信息列表树图
*
* @param fieldType 字段类型
* @return AjaxResult
*/
@Override
public AjaxResult labelFieldList(String fieldType) {
List<LabelFieldVO> labelFieldList = labelFieldInfoMapper.selectLabelFieldList(fieldType);
List<Long> labelFieldIds = labelFieldList.stream().filter(Objects::nonNull).map(LabelFieldVO::getLabelFieldId).filter(Objects::nonNull).collect(Collectors.toList());
if (labelFieldIds.size() == 0) {
return AjaxResult.success(labelFieldList);
}
List<LabelFieldContentVO> labelFieldContentList = labelFieldContentMapper.selectLabelFieldContent(labelFieldIds);
for (LabelFieldVO labelField : labelFieldList) {
List<LabelFieldContentVO> collect = labelFieldContentList.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getFieldId()) && labelField.getLabelFieldId().equals(item.getFieldId())).collect(Collectors.toList());
labelField.setLabelFieldContentList(collect);
}
return AjaxResult.success(labelFieldList);
}
/**
* 新增标签字段信息
*

View File

@ -1,8 +1,14 @@
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.vo.manualfollowup.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
import java.util.List;
/**
* 签约患者管理任务路径Service接口
*
@ -16,7 +22,7 @@ public interface ISignPatientManageRouteService {
* @param id 签约患者管理任务路径主键
* @return 签约患者管理任务路径
*/
public SignPatientManageRoute selectSignPatientManageRouteById(Long id);
SignPatientManageRoute selectSignPatientManageRouteById(Long id);
/**
* 查询签约患者管理任务路径列表
@ -24,7 +30,7 @@ public interface ISignPatientManageRouteService {
* @param signPatientManageRoute 签约患者管理任务路径
* @return 签约患者管理任务路径集合
*/
public List<SignPatientManageRoute> selectSignPatientManageRouteList(SignPatientManageRoute signPatientManageRoute);
List<SignPatientManageRoute> selectSignPatientManageRouteList(SignPatientManageRoute signPatientManageRoute);
/**
* 新增签约患者管理任务路径
@ -32,7 +38,7 @@ public interface ISignPatientManageRouteService {
* @param signPatientManageRoute 签约患者管理任务路径
* @return 结果
*/
public int insertSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute);
AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute);
/**
* 修改签约患者管理任务路径
@ -40,7 +46,7 @@ public interface ISignPatientManageRouteService {
* @param signPatientManageRoute 签约患者管理任务路径
* @return 结果
*/
public int updateSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute);
AjaxResult updateSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute);
/**
* 批量删除签约患者管理任务路径
@ -48,7 +54,7 @@ public interface ISignPatientManageRouteService {
* @param ids 需要删除的签约患者管理任务路径主键集合
* @return 结果
*/
public int deleteSignPatientManageRouteByIds(Long[] ids);
int deleteSignPatientManageRouteByIds(Long[] ids);
/**
* 删除签约患者管理任务路径信息
@ -58,4 +64,11 @@ public interface ISignPatientManageRouteService {
*/
public int deleteSignPatientManageRouteById(Long id);
/**
* 查询人工随访代办列表
* @param manualFollowUpDTO 人工随访查询DTO
* @return ManualFollowUpVO 人工随访代办VO
*/
List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO);
}

View File

@ -1,13 +1,23 @@
package com.xinelu.manage.service.signpatientmanageroute.impl;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
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.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/**
* 签约患者管理任务路径Service业务层处理
@ -19,6 +29,8 @@ import org.springframework.stereotype.Service;
public class SignPatientManageRouteServiceImpl implements ISignPatientManageRouteService {
@Resource
private SignPatientManageRouteMapper signPatientManageRouteMapper;
@Resource
private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper;
@Resource
private PatientInfoMapper patientInfoMapper;
@ -51,9 +63,24 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
* @return 结果
*/
@Override
public int insertSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute) {
signPatientManageRoute.setCreateTime(LocalDateTime.now());
return signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute);
public AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute) {
signPatientManageRoute.setCreateBy(SecurityUtils.getUsername());
signPatientManageRoute.setCreateTime(LocalDateTime.now());
int insertRoute = signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute);
if (insertRoute < 0) {
return AjaxResult.error("新增签约患者管理任务路径失败!请联系管理员!");
}
List<SignPatientManageRouteNode> routeNodeList = signPatientManageRoute.getRouteNodeList();
for (SignPatientManageRouteNode signPatientManageRouteNode : routeNodeList) {
signPatientManageRouteNode.setManageRouteId(signPatientManageRoute.getId());
signPatientManageRouteNode.setCreateTime(LocalDateTime.now());
signPatientManageRouteNode.setCreateBy(SecurityUtils.getUsername());
}
int insertBatchCount = signPatientManageRouteNodeMapper.insertBatch(routeNodeList);
if (insertBatchCount < 0) {
return AjaxResult.error("新增签约患者管理任务路径失败!请联系管理员!");
}
return AjaxResult.success();
}
/**
@ -63,9 +90,28 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
* @return 结果
*/
@Override
public int updateSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute) {
signPatientManageRoute.setUpdateTime(LocalDateTime.now());
return signPatientManageRouteMapper.updateSignPatientManageRoute(signPatientManageRoute);
public AjaxResult updateSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute) {
signPatientManageRoute.setUpdateBy(SecurityUtils.getUsername());
signPatientManageRoute.setUpdateTime(LocalDateTime.now());
int updateCount = signPatientManageRouteMapper.updateSignPatientManageRoute(signPatientManageRoute);
if (updateCount < 0) {
return AjaxResult.error("修改签约患者管理任务路径失败!请联系管理员!");
}
int deleteCount = signPatientManageRouteNodeMapper.deleteRouteNodeByManageRouteId(signPatientManageRoute.getSignPatientManageRouteId());
if (deleteCount < 0) {
return AjaxResult.error("修改签约患者管理任务路径失败!请联系管理员!");
}
List<SignPatientManageRouteNode> routeNodeList = signPatientManageRoute.getRouteNodeList();
for (SignPatientManageRouteNode signPatientManageRouteNode : routeNodeList) {
signPatientManageRouteNode.setManageRouteId(signPatientManageRoute.getSignPatientManageRouteId());
signPatientManageRouteNode.setCreateTime(LocalDateTime.now());
signPatientManageRouteNode.setCreateBy(SecurityUtils.getUsername());
}
int insertBatchCount = signPatientManageRouteNodeMapper.insertBatch(routeNodeList);
if (insertBatchCount < 0) {
return AjaxResult.error("新增签约患者管理任务路径失败!请联系管理员!");
}
return AjaxResult.success();
}
/**
@ -89,4 +135,15 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
public int deleteSignPatientManageRouteById(Long id) {
return signPatientManageRouteMapper.deleteSignPatientManageRouteById(id);
}
/**
* 查询人工随访代办列表
*
* @param manualFollowUpDTO 人工随访查询DTO
* @return ManualFollowUpVO 人工随访代办VO
*/
@Override
public List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO) {
return signPatientManageRouteMapper.selectManualFollowUpList(manualFollowUpDTO);
}
}

View File

@ -0,0 +1,21 @@
package com.xinelu.manage.vo.labelfieldcontent;
import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 标签字段内容信息对象 label_field_content
*
* @author xinelu
* @date 2024-03-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class LabelFieldContentVO extends LabelFieldContent {
/**
* 标签内容表
*/
private Long LabelFieldContentId;
}

View File

@ -0,0 +1,29 @@
package com.xinelu.manage.vo.labelfieldinfo;
import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 标签字段信息对象 label_field_info
*
* @author xinelu
* @date 2024-03-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class LabelFieldVO extends LabelFieldInfo {
/**
* 标签字段表
*/
private Long LabelFieldId;
/**
* 标签内容
*/
private List<LabelFieldContentVO> labelFieldContentList;
}

View File

@ -0,0 +1,95 @@
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;
import java.time.LocalDateTime;
/**
* 人工随访代办VO
*
* @author : youxilong
* @date : 2024/4/2 10:36
*/
@Data
public class ManualFollowUpVO {
@ApiModelProperty(value = "患者姓名")
private String patientName;
@ApiModelProperty(value = "患者电话")
private String patientPhone;
@ApiModelProperty(value = "性别MALEFEMALE")
private String sex;
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
@ApiModelProperty(value = "所属医院名称")
private String hospitalAgencyName;
@ApiModelProperty(value = "所属院区id")
private Long campusAgencyId;
@ApiModelProperty(value = "所属院区名称")
private String campusAgencyName;
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
@ApiModelProperty(value = "所属科室名称")
private String departmentName;
@ApiModelProperty(value = "所属病区id")
private Long wardId;
@ApiModelProperty(value = "所属病区名称")
private String wardName;
@ApiModelProperty(value = "门诊/住院号 ")
private String inHospitalNumber;
@ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber;
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
@ApiModelProperty(value = "手术名称")
private String surgicalName;
@ApiModelProperty(value = "主治医生id")
private Long attendingPhysicianId;
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
@ApiModelProperty(value = "入院时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime admissionTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "门诊/出院时间")
private LocalDateTime visitOrDischargeTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "随访时间")
private LocalDateTime executeTime;
@ApiModelProperty(value = "任务类型电话外呼PHONE_OUTBOUND问卷量表QUESTIONNAIRE_SCALE宣教文章PROPAGANDA_ARTICLE文字提醒TEXT_REMIND人工随访ARTIFICIAL_FOLLOW_UP")
private String taskType;
@ApiModelProperty(value = "随访模板")
private String templateName;
@ApiModelProperty(value = "模板id")
private String templateId;
}

View File

@ -0,0 +1,30 @@
package com.xinelu.manage.vo.signpatientmanageroute;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 签约患者管理任务路径对象 sign_patient_manage_route
*
* @author haown
* @date 2024-03-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SignPatientManageRouteVO extends SignPatientManageRoute {
/**
* 患者管理任务路径id
*/
private Long SignPatientManageRouteId;
/**
* 节点信息
*/
List<SignPatientManageRouteNode> routeNodeList;
}

View File

@ -23,6 +23,15 @@ public class SpecialDiseaseRouteVO extends SpecialDiseaseRoute {
*/
private Long specialDiseaseRouteId;
/**
* 总数
*/
private Long totalNumber;
/**
* 进度
*/
private Long agreeNumber;
/**
* 节点信息
@ -30,7 +39,7 @@ public class SpecialDiseaseRouteVO extends SpecialDiseaseRoute {
List<SpecialDiseaseNodeVO> specialDiseaseNodeList;
/**
* 节点信息
* 触发条件信息
*/
List<TriggerConditionVO> triggerConditionList;
}

View File

@ -212,4 +212,26 @@
#{id}
</foreach>
</delete>
<select id="selectLabelFieldContent"
resultType="com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO">
select id LabelFieldContentId,
field_id,
field_name,
content_name,
content_code,
result_preview,
content_sort,
content_remark,
field_mark
from label_field_content
<where>
<if test="labelFieldIds != null and labelFieldIds.size() > 0">
field_id in
<foreach item="labelFieldIds" collection="labelFieldIds" open="(" separator="," close=")">
#{labelFieldIds}
</foreach>
</if>
</where>
</select>
</mapper>

View File

@ -59,6 +59,18 @@
</where>
</select>
<select id="selectLabelFieldList" resultType="com.xinelu.manage.vo.labelfieldinfo.LabelFieldVO">
select id LabelFieldId,
field_name,
field_code,
field_type,
field_sort,
field_remark
from label_field_info
where field_type = #{fieldType}
</select>
<select id="selectLabelFieldInfoById" parameterType="Long"
resultMap="LabelFieldInfoResult">
<include refid="selectLabelFieldInfoVo"/>
@ -131,31 +143,31 @@
update label_field_info
<trim prefix="SET" suffixOverrides=",">
<if test="fieldName != null">field_name =
#{fieldName},
#{fieldName},
</if>
<if test="fieldCode != null">field_code =
#{fieldCode},
#{fieldCode},
</if>
<if test="fieldType != null">field_type =
#{fieldType},
#{fieldType},
</if>
<if test="fieldSort != null">field_sort =
#{fieldSort},
#{fieldSort},
</if>
<if test="fieldRemark != null">field_remark =
#{fieldRemark},
#{fieldRemark},
</if>
<if test="createBy != null">create_by =
#{createBy},
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
#{updateTime},
</if>
</trim>
where id = #{id}

View File

@ -3,53 +3,53 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.patientinfo.PatientInfoMapper">
<resultMap type="com.xinelu.manage.domain.patientinfo.PatientInfo" id="PatientInfoResult">
<result property="id" column="id" />
<result property="residentId" column="resident_id" />
<result property="patientName" column="patient_name" />
<result property="patientPhone" column="patient_phone" />
<result property="familyMemberPhone" column="family_member_phone" />
<result property="birthDate" column="birth_date" />
<result property="cardNo" column="card_no" />
<result property="sex" column="sex" />
<result property="address" column="address" />
<result property="patientType" column="patient_type" />
<result property="signStatus" column="sign_status" />
<result property="signPatientRecordId" column="sign_patient_record_id" />
<result property="serviceStatus" column="service_status" />
<result property="signTime" column="sign_time" />
<result property="visitMethod" column="visit_method" />
<result property="attendingPhysicianId" column="attending_physician_id" />
<result property="attendingPhysicianName" column="attending_physician_name" />
<result property="mainDiagnosis" column="main_diagnosis" />
<result property="hospitalAgencyId" column="hospital_agency_id" />
<result property="hospitalAgencyName" column="hospital_agency_name" />
<result property="campusAgencyId" column="campus_agency_id" />
<result property="campusAgencyName" column="campus_agency_name" />
<result property="departmentId" column="department_id" />
<result property="departmentName" column="department_name" />
<result property="wardId" column="ward_id" />
<result property="wardName" column="ward_name" />
<result property="responsibleNurse" column="responsible_nurse" />
<result property="patientVisitRecordId" column="patient_visit_record_id" />
<result property="visitSerialNumber" column="visit_serial_number" />
<result property="admissionTime" column="admission_time" />
<result property="dischargeTime" column="discharge_time" />
<result property="appointmentTreatmentGroup" column="appointment_treatment_group" />
<result property="registrationNo" column="registration_no" />
<result property="registrationDate" column="registration_date" />
<result property="appointmentDate" column="appointment_date" />
<result property="inHospitalNumber" column="in_hospital_number" />
<result property="visitDate" column="visit_date" />
<result property="dischargeMethod" column="discharge_method" />
<result property="patientSource" column="patient_source" />
<result property="surgicalName" column="surgical_name" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<resultMap type="com.xinelu.manage.domain.patientinfo.PatientInfo" id="PatientInfoResult">
<result property="id" column="id"/>
<result property="residentId" column="resident_id"/>
<result property="patientName" column="patient_name"/>
<result property="patientPhone" column="patient_phone"/>
<result property="familyMemberPhone" column="family_member_phone"/>
<result property="birthDate" column="birth_date"/>
<result property="cardNo" column="card_no"/>
<result property="sex" column="sex"/>
<result property="address" column="address"/>
<result property="patientType" column="patient_type"/>
<result property="signStatus" column="sign_status"/>
<result property="signPatientRecordId" column="sign_patient_record_id"/>
<result property="serviceStatus" column="service_status"/>
<result property="signTime" column="sign_time"/>
<result property="visitMethod" column="visit_method"/>
<result property="attendingPhysicianId" column="attending_physician_id"/>
<result property="attendingPhysicianName" column="attending_physician_name"/>
<result property="mainDiagnosis" column="main_diagnosis"/>
<result property="hospitalAgencyId" column="hospital_agency_id"/>
<result property="hospitalAgencyName" column="hospital_agency_name"/>
<result property="campusAgencyId" column="campus_agency_id"/>
<result property="campusAgencyName" column="campus_agency_name"/>
<result property="departmentId" column="department_id"/>
<result property="departmentName" column="department_name"/>
<result property="wardId" column="ward_id"/>
<result property="wardName" column="ward_name"/>
<result property="responsibleNurse" column="responsible_nurse"/>
<result property="patientVisitRecordId" column="patient_visit_record_id"/>
<result property="visitSerialNumber" column="visit_serial_number"/>
<result property="admissionTime" column="admission_time"/>
<result property="dischargeTime" column="discharge_time"/>
<result property="appointmentTreatmentGroup" column="appointment_treatment_group"/>
<result property="registrationNo" column="registration_no"/>
<result property="registrationDate" column="registration_date"/>
<result property="appointmentDate" column="appointment_date"/>
<result property="inHospitalNumber" column="in_hospital_number"/>
<result property="visitDate" column="visit_date"/>
<result property="dischargeMethod" column="discharge_method"/>
<result property="patientSource" column="patient_source"/>
<result property="surgicalName" column="surgical_name" />
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectPatientInfoVo">
select id,resident_id,
@ -72,88 +72,89 @@
from patient_info
</sql>
<select id="selectPatientInfoList" parameterType="com.xinelu.manage.dto.patientinfo.PatientInfoDto" resultMap="PatientInfoResult">
<include refid="selectPatientInfoVo" />
<where>
del_flag = 0
<if test="patientName != null and patientName != ''">
and patient_name = #{patientName}
</if>
<if test="patientPhone != null and patientPhone != ''">
and patient_phone like concat('%', #{patientPhone}, '%')
</if>
<if test="cardNo != null and cardNo != ''">
and card_no = #{cardNo}
</if>
<if test="patientType != null and patientType != ''">
<choose>
<when test="patientType == 'OUTPATIENT_DISCHARGE'.toString()">
and (patient_type = 'OUTPATIENT' or patient_type = 'DISCHARGED_PATIENT')
</when>
<otherwise>
and patient_type = #{patientType}
</otherwise>
</choose>
</if>
<if test="attendingPhysicianId != null">
and attending_physician_id = #{attendingPhysicianId}
</if>
<if test="mainDiagnosis != null and mainDiagnosis != ''">
and main_diagnosis like concat('%', #{mainDiagnosis}, '%')
</if>
<if test="hospitalAgencyId != null ">
and hospital_agency_id = #{hospitalAgencyId}
</if>
<if test="campusAgencyId != null ">
and campus_agency_id = #{campusAgencyId}
</if>
<if test="departmentId != null ">
and department_id = #{departmentId}
</if>
<if test="wardId != null ">
and ward_id = #{wardId}
</if>
<if test="visitMethod != null and visitMethod != ''">
and visit_method = #{visitMethod}
</if>
<if test="visitDateStart != null ">
and visit_date >= #{visitDateStart}
</if>
<if test="visitDateEnd != null ">
and visit_date &lt;= #{visitDateEnd}
</if>
<if test="admissionTimeStart != null ">
and admission_time >= #{admissionTimeStart}
</if>
<if test="admissionTimeEnd != null ">
and admission_time &lt;= #{admissionTimeEnd}
</if>
<if test="appointmentDateStart != null ">
and appointment_date >= #{appointmentDateStart}
</if>
<if test="appointmentDateEnd != null ">
and appointment_date &lt;= #{appointmentDateEnd}
</if>
<if test="appointmentTreatmentGroup != null and appointmentTreatmentGroup != ''">
and appointment_treatment_group = #{appointmentTreatmentGroup}
</if>
<if test="registrationNo != null and registrationNo != ''">
and registration_no = #{registrationNo}
</if>
<if test="visitSerialNumber != null and visitSerialNumber != ''">
and visit_serial_number = #{visitSerialNumber}
</if>
<if test="responsibleNurse != null and responsibleNurse != ''">
and responsible_nurse = #{responsibleNurse}
</if>
<if test="patientSource != null and patientSource != ''">
and patient_source = #{patientSource}
</if>
<if test="surgicalName != null and surgicalName != ''">
and surgical_name = #{surgicalName}
</if>
</where>
</select>
<select id="selectPatientInfoList" parameterType="com.xinelu.manage.dto.patientinfo.PatientInfoDto"
resultMap="PatientInfoResult">
<include refid="selectPatientInfoVo"/>
<where>
del_flag = 0
<if test="patientName != null and patientName != ''">
and patient_name = #{patientName}
</if>
<if test="patientPhone != null and patientPhone != ''">
and patient_phone like concat('%', #{patientPhone}, '%')
</if>
<if test="cardNo != null and cardNo != ''">
and card_no = #{cardNo}
</if>
<if test="patientType != null and patientType != ''">
<choose>
<when test="patientType == 'OUTPATIENT_DISCHARGE'.toString()">
and (patient_type = 'OUTPATIENT' or patient_type = 'DISCHARGED_PATIENT')
</when>
<otherwise>
and patient_type = #{patientType}
</otherwise>
</choose>
</if>
<if test="attendingPhysicianId != null">
and attending_physician_id = #{attendingPhysicianId}
</if>
<if test="mainDiagnosis != null and mainDiagnosis != ''">
and main_diagnosis like concat('%', #{mainDiagnosis}, '%')
</if>
<if test="hospitalAgencyId != null ">
and hospital_agency_id = #{hospitalAgencyId}
</if>
<if test="campusAgencyId != null ">
and campus_agency_id = #{campusAgencyId}
</if>
<if test="departmentId != null ">
and department_id = #{departmentId}
</if>
<if test="wardId != null ">
and ward_id = #{wardId}
</if>
<if test="visitMethod != null and visitMethod != ''">
and visit_method = #{visitMethod}
</if>
<if test="visitDateStart != null ">
and visit_date >= #{visitDateStart}
</if>
<if test="visitDateEnd != null ">
and visit_date &lt;= #{visitDateEnd}
</if>
<if test="admissionTimeStart != null ">
and admission_time >= #{admissionTimeStart}
</if>
<if test="admissionTimeEnd != null ">
and admission_time &lt;= #{admissionTimeEnd}
</if>
<if test="appointmentDateStart != null ">
and appointment_date >= #{appointmentDateStart}
</if>
<if test="appointmentDateEnd != null ">
and appointment_date &lt;= #{appointmentDateEnd}
</if>
<if test="appointmentTreatmentGroup != null and appointmentTreatmentGroup != ''">
and appointment_treatment_group = #{appointmentTreatmentGroup}
</if>
<if test="registrationNo != null and registrationNo != ''">
and registration_no = #{registrationNo}
</if>
<if test="visitSerialNumber != null and visitSerialNumber != ''">
and visit_serial_number = #{visitSerialNumber}
</if>
<if test="responsibleNurse != null and responsibleNurse != ''">
and responsible_nurse = #{responsibleNurse}
</if>
<if test="patientSource != null and patientSource != ''">
and patient_source = #{patientSource}
</if>
<if test="surgicalName != null and surgicalName != ''">
and surgical_name = #{surgicalName}
</if>
</where>
</select>
<select id="selectPatientInfoById" parameterType="Long" resultMap="PatientInfoResult">
<include refid="selectPatientInfoVo" />
@ -495,15 +496,15 @@
where id = #{id}
</update>
<update id="deletePatientInfoById" parameterType="Long">
<update id="deletePatientInfoById" parameterType="Long">
update patient_info set del_flag = 1
where id = #{id}
</update>
<update id="deletePatientInfoByIds" parameterType="String">
update patient_info set del_flag = 1 where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<update id="deletePatientInfoByIds" parameterType="String">
update patient_info set del_flag = 1 where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>

View File

@ -93,6 +93,104 @@
where id = #{id}
</select>
<select id="selectManualFollowUpList"
resultType="com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO">
SELECT
pi.patient_name,
pi.patient_phone,
pi.sex,
pi.hospital_agency_id,
pi.hospital_agency_name,
pi.campus_agency_id,
pi.campus_agency_name,
pi.department_id,
pi.department_name,
pi.ward_id,
pi.ward_name,
pi.in_hospital_number,
pi.visit_serial_number,
pi.main_diagnosis,
pvr.surgical_name,
pi.attending_physician_id,
pi.attending_physician_name,
pi.visit_method,
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',
spmrn.task_type,
CASE
WHEN spmrn.task_type = 'PHONE_OUTBOUND' THEN spmrn.phone_template_name
WHEN spmrn.task_type = 'QUESTIONNAIRE_SCALE' THEN spmrn.questionnaire_name
WHEN spmrn.task_type = 'ARTIFICIAL_FOLLOW_UP' THEN spmrn.follow_template_name
END AS 'templateName',
CASE
WHEN spmrn.task_type = 'PHONE_OUTBOUND' THEN spmrn.phone_template_id
WHEN spmrn.task_type = 'QUESTIONNAIRE_SCALE' THEN spmrn.question_info_id
WHEN spmrn.task_type = 'ARTIFICIAL_FOLLOW_UP' THEN spmrn.follow_template_id
END AS 'templateId'
FROM
sign_patient_manage_route spmr
LEFT JOIN sign_patient_manage_route_node spmrn ON spmr.id = spmrn.manage_route_id
LEFT JOIN patient_task_execute_record pter on spmr.id = pter.manage_route_id and spmrn.id = pter.manage_route_node_id
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'
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}, '%')
</if>
<if test="patientPhone != null and patientPhone != ''">
AND pi.patient_phone LIKE concat('%', #{patientPhone}, '%')
</if>
<if test="hospitalAgencyId != null">
AND pi.hospital_agency_id = #{hospitalAgencyId}
</if>
<if test="campusAgencyId != null">
AND pi.campus_agency_id = #{campusAgencyId}
</if>
<if test="departmentId != null">
AND pi.department_id = #{departmentId}
</if>
<if test="wardId != null">
AND pi.ward_id = #{wardId}
</if>
<if test="visitMethod != null and visitMethod != ''">
AND pi.visit_method = #{visitMethod}
</if>
<if test="visitSerialNumber != null and visitSerialNumber != ''">
AND pi.visit_serial_number LIKE concat('%', #{visitSerialNumber}, '%')
</if>
<if test="clinicalStartTime != null">
AND pi.visit_date >= #{clinicalStartTime}
</if>
<if test="clinicalEndTime != null">
AND pi.visit_date &lt;= #{clinicalEndTime}
</if>
<if test="dischargeStartTime != null">
AND pi.discharge_time >= #{dischargeStartTime}
</if>
<if test="dischargeEndTime != null">
AND pi.discharge_time &lt;= #{dischargeEndTime}
</if>
<if test="admissionStartTime != null">
AND pi.admission_time >= #{admissionStartTime}
</if>
<if test="admissionEndTime != null">
AND pi.admission_time &lt;= #{admissionEndTime}
</if>
<if test="mainDiagnosis != null and mainDiagnosis != ''">
AND pi.main_diagnosis LIKE concat('%', #{mainDiagnosis}, '%')
</if>
<if test="attendingPhysicianId != null">
AND pi.attending_physician_id = #{attendingPhysicianId}
</if>
<if test="attendingPhysicianName != null and attendingPhysicianName != ''">
AND pi.attending_physician_name LIKE concat('%',#{attendingPhysicianName}, '%')
</if>
</where>
</select>
<insert id="insertSignPatientManageRoute" parameterType="com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute" useGeneratedKeys="true"
keyProperty="id">
insert into sign_patient_manage_route

View File

@ -567,6 +567,12 @@
</foreach>
</delete>
<delete id="deleteRouteNodeByManageRouteId">
delete
from sign_patient_manage_route_node
where manage_route_id = #{manageRouteId}
</delete>
<select id="selectPatientTaskList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto" resultType="com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo">
select patient.id as patientId, patient.patient_name,
patient.patient_phone,

View File

@ -37,6 +37,8 @@
<result property="releaseStatus" column="release_status"/>
<result property="suitRange" column="suit_range"/>
<result property="routeSort" column="route_sort"/>
<result property="agreeNumber" column="agreeNumber"/>
<result property="totalNumber" column="totalNumber"/>
<result property="routeRemark" column="route_remark"/>
<collection property="triggerConditionList" javaType="java.util.List"
resultMap="SpecialDiseaseTriggerConditionResult"/>
@ -282,7 +284,7 @@
<select id="selectSpecialDiseaseRouteAndTriggerById"
resultType="com.xinelu.manage.vo.specialdiseaseroute.SpecialDiseaseRouteVO"
resultMap="SpecialDiseaseRouteVOResult">
select sdr.id specialDiseaseRouteId,
select sdr.id specialDiseaseRouteId,
sdr.department_id,
sdr.department_name,
sdr.disease_type_id,
@ -295,7 +297,7 @@
sdr.suit_range,
sdr.route_sort,
sdr.route_remark,
sdtc.id triggerConditionId,
sdtc.id triggerConditionId,
sdtc.route_id,
sdtc.route_name,
sdtc.trigger_condition_code,
@ -303,8 +305,16 @@
sdtc.trigger_condition_operator,
sdtc.trigger_condition_value,
sdtc.trigger_condition_sort,
sdtc.trigger_condition_remark
sdtc.trigger_condition_remark,
(select COUNT(1)
from special_disease_node
where route_id = specialDiseaseRouteId) totalNumber,
(select COUNT(1)
from special_disease_node
where route_id = specialDiseaseRouteId
and route_check_status = 'AGREE') agreeNumber
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 sdr.id = sdtc.route_id
where sdr.id = #{id}
</select>