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.StringUtils;
import com.xinelu.common.utils.file.FileUploadUtils; import com.xinelu.common.utils.file.FileUploadUtils;
import com.xinelu.common.utils.file.FileUtils; import com.xinelu.common.utils.file.FileUtils;
import com.xinelu.common.utils.file.MimeTypeUtils;
import com.xinelu.framework.config.ServerConfig; import com.xinelu.framework.config.ServerConfig;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -37,6 +38,9 @@ public class CommonController {
private static final String FILE_DELIMETER = ","; private static final String FILE_DELIMETER = ",";
@Resource
private SystemBusinessConfig systemBusinessConfig;
/** /**
* 通用下载请求 * 通用下载请求
* *
@ -140,4 +144,23 @@ public class CommonController {
log.error("下载文件失败", e); 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 captchaType: math
# 话术图片路径图片上传 # 话术图片路径图片上传
script-file-url: /scriptFileUrl script-file-url: /scriptFileUrl
# 获取管理端富文本的上传路径
rich-text-picture-url: /richTextPictureUrl
# 开发环境配置 # 开发环境配置
server: server:
@ -179,6 +181,6 @@ xss:
# 过滤开关 # 过滤开关
enabled: true enabled: true
# 排除链接(多个用逗号分隔) # 排除链接(多个用逗号分隔)
excludes: /system/notice excludes: /system/notice,/system/specialDiseaseNode/add,/system/specialDiseaseNode/edit
# 匹配链接 # 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/* urlPatterns: /system/*,/monitor/*,/tool/*

View File

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

View File

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

View File

@ -51,6 +51,14 @@ public class LabelFieldInfoController extends BaseController {
return AjaxResult.success(labelFieldInfoService.selectLabelFieldInfoList(labelFieldInfo)); 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.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil; import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute; import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService; 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.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize; import java.util.List;
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 * 签约患者管理任务路径Controller
@ -70,9 +67,9 @@ public class SignPatientManageRouteController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('manage:signroute:add')") @PreAuthorize("@ss.hasPermi('manage:signroute:add')")
@Log(title = "签约患者管理任务路径", businessType = BusinessType.INSERT) @Log(title = "签约患者管理任务路径", businessType = BusinessType.INSERT)
@PostMapping @PostMapping("/add")
public AjaxResult add(@RequestBody SignPatientManageRoute signPatientManageRoute) { public AjaxResult add(@RequestBody SignPatientManageRouteVO signPatientManageRoute) {
return toAjax(signPatientManageRouteService.insertSignPatientManageRoute(signPatientManageRoute)); return signPatientManageRouteService.insertSignPatientManageRoute(signPatientManageRoute);
} }
/** /**
@ -80,9 +77,9 @@ public class SignPatientManageRouteController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('manage:signroute:edit')") @PreAuthorize("@ss.hasPermi('manage:signroute:edit')")
@Log(title = "签约患者管理任务路径", businessType = BusinessType.UPDATE) @Log(title = "签约患者管理任务路径", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping("/edit")
public AjaxResult edit(@RequestBody SignPatientManageRoute signPatientManageRoute) { public AjaxResult edit(@RequestBody SignPatientManageRouteVO signPatientManageRoute) {
return toAjax(signPatientManageRouteService.updateSignPatientManageRoute(signPatientManageRoute)); return signPatientManageRouteService.updateSignPatientManageRoute(signPatientManageRoute);
} }
/** /**
@ -95,5 +92,14 @@ public class SignPatientManageRouteController extends BaseController {
return toAjax(signPatientManageRouteService.deleteSignPatientManageRouteByIds(ids)); return toAjax(signPatientManageRouteService.deleteSignPatientManageRouteByIds(ids));
} }
/**
* 查询人工随访代办列表
*/
@GetMapping("/manualFollowUpList")
public TableDataInfo getManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO) {
startPage();
List<ManualFollowUpVO> list = signPatientManageRouteService.selectManualFollowUpList(manualFollowUpDTO);
return getDataTable(list);
}
} }

View File

@ -27,48 +27,68 @@ public class PatientInfo extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键id */ /**
* 主键id
*/
private Long id; private Long id;
/** 居民信息表id */ /**
* 居民信息表id
*/
@ApiModelProperty(value = "居民信息表id") @ApiModelProperty(value = "居民信息表id")
private Long residentId; private Long residentId;
/** 患者姓名 */ /**
* 患者姓名
*/
@ApiModelProperty(value = "患者姓名") @ApiModelProperty(value = "患者姓名")
@Excel(name = "患者姓名") @Excel(name = "患者姓名")
private String patientName; private String patientName;
/** 患者电话 */ /**
* 患者电话
*/
@ApiModelProperty(value = "患者电话") @ApiModelProperty(value = "患者电话")
@Excel(name = "患者电话") @Excel(name = "患者电话")
private String patientPhone; private String patientPhone;
/** 家属电话 */ /**
* 家属电话
*/
@ApiModelProperty(value = "家属电话") @ApiModelProperty(value = "家属电话")
private String familyMemberPhone; private String familyMemberPhone;
/** 出生日期格式yyyy-MM-dd */ /**
* 出生日期格式yyyy-MM-dd
*/
@ApiModelProperty(value = "出生日期格式yyyy-MM-dd") @ApiModelProperty(value = "出生日期格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate; private LocalDate birthDate;
/** 身份证号 */ /**
* 身份证号
*/
@ApiModelProperty(value = "身份证号") @ApiModelProperty(value = "身份证号")
private String cardNo; private String cardNo;
/** 性别MALEFEMALE */ /**
* 性别MALEFEMALE
*/
@ApiModelProperty(value = "性别MALEFEMALE") @ApiModelProperty(value = "性别MALEFEMALE")
@Excel(name = "性别MALEFEMALE") @Excel(name = "性别MALEFEMALE")
private String sex; private String sex;
/** 住址 */ /**
* 住址
*/
@ApiModelProperty(value = "住址") @ApiModelProperty(value = "住址")
@Excel(name = "住址") @Excel(name = "住址")
private String address; 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") @ApiModelProperty(value = "患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT签约患者CONTRACTED_PATIENT")
private String patientType; private String patientType;
@ -87,124 +107,179 @@ public class PatientInfo extends BaseEntity {
@ApiModelProperty(value = "服务状态意向签约INTENTIONAL_SIGNING服务中SERVICE_CENTER服务结束SERVICE_END") @ApiModelProperty(value = "服务状态意向签约INTENTIONAL_SIGNING服务中SERVICE_CENTER服务结束SERVICE_END")
private String serviceStatus; private String serviceStatus;
/** 签约时间格式yyyy-MM-dd HH:mm:ss */ /**
* 签约时间格式yyyy-MM-dd HH:mm:ss
*/
@ApiModelProperty(value = "签约时间格式yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "签约时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "签约时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "签约时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDateTime signTime; private LocalDateTime signTime;
/** 就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL */ /**
* 就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL
*/
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL") @ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
@Excel(name = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL") @Excel(name = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod; private String visitMethod;
/** 主治医生id */ /**
* 主治医生id
*/
@ApiModelProperty(value = "主治医生id") @ApiModelProperty(value = "主治医生id")
@Excel(name = "主治医生id") @Excel(name = "主治医生id")
private Long attendingPhysicianId; private Long attendingPhysicianId;
/** 主治医生姓名 */ /**
* 主治医生姓名
*/
@ApiModelProperty(value = "主治医生姓名") @ApiModelProperty(value = "主治医生姓名")
@Excel(name = "主治医生姓名") @Excel(name = "主治医生姓名")
private String attendingPhysicianName; private String attendingPhysicianName;
/** 主要诊断 */ /**
* 主要诊断
*/
@ApiModelProperty(value = "主要诊断") @ApiModelProperty(value = "主要诊断")
private String mainDiagnosis; private String mainDiagnosis;
/** 所属医院id */ /**
* 所属医院id
*/
@ApiModelProperty(value = "所属医院id") @ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId; private Long hospitalAgencyId;
/** 所属医院名称 */ /**
* 所属医院名称
*/
@ApiModelProperty(value = "所属医院名称") @ApiModelProperty(value = "所属医院名称")
@Excel(name = "所属医院名称") @Excel(name = "所属医院名称")
private String hospitalAgencyName; private String hospitalAgencyName;
/** 所属院区id */ /**
* 所属院区id
*/
@ApiModelProperty(value = "所属院区id") @ApiModelProperty(value = "所属院区id")
private Long campusAgencyId; private Long campusAgencyId;
/** 所属院区名称 */ /**
* 所属院区名称
*/
@ApiModelProperty(value = "所属院区名称") @ApiModelProperty(value = "所属院区名称")
@Excel(name = "所属院区名称") @Excel(name = "所属院区名称")
private String campusAgencyName; private String campusAgencyName;
/** 所属科室id */ /**
* 所属科室id
*/
@ApiModelProperty(value = "所属科室id") @ApiModelProperty(value = "所属科室id")
private Long departmentId; private Long departmentId;
/** 所属科室名称 */ /**
* 所属科室名称
*/
@ApiModelProperty(value = "所属科室名称") @ApiModelProperty(value = "所属科室名称")
@Excel(name = "所属科室名称") @Excel(name = "所属科室名称")
private String departmentName; private String departmentName;
/** 所属病区id */ /**
* 所属病区id
*/
@ApiModelProperty(value = "所属病区id") @ApiModelProperty(value = "所属病区id")
private Long wardId; private Long wardId;
/** 所属病区名称 */ /**
* 所属病区名称
*/
@ApiModelProperty(value = "所属病区名称") @ApiModelProperty(value = "所属病区名称")
@Excel(name = "所属病区名称") @Excel(name = "所属病区名称")
private String wardName; private String wardName;
/** 责任护士 */ /**
* 责任护士
*/
@ApiModelProperty(value = "责任护士") @ApiModelProperty(value = "责任护士")
private String responsibleNurse; private String responsibleNurse;
/** 最新一条就诊记录id */ /**
* 最新一条就诊记录id
*/
@ApiModelProperty(value = "最新一条就诊记录id") @ApiModelProperty(value = "最新一条就诊记录id")
private Long patientVisitRecordId; private Long patientVisitRecordId;
/** 就诊流水号 */ /**
* 就诊流水号
*/
@ApiModelProperty(value = "就诊流水号") @ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber; private String visitSerialNumber;
/** 入院时间时间格式yyyy-MM-dd */ /**
* 入院时间时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "入院时间") @ApiModelProperty(value = "入院时间")
private LocalDateTime admissionTime; private LocalDateTime admissionTime;
/** 出院时间出院患者时间格式yyyy-MM-dd */ /**
* 出院时间出院患者时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "出院时间(出院患者)") @ApiModelProperty(value = "出院时间(出院患者)")
private LocalDateTime dischargeTime; private LocalDateTime dischargeTime;
/** 预约治疗组(取值以及枚举未知?) */ /**
* 预约治疗组取值以及枚举未知
*/
@ApiModelProperty(value = "预约治疗组(取值以及枚举未知?)") @ApiModelProperty(value = "预约治疗组(取值以及枚举未知?)")
private String appointmentTreatmentGroup; private String appointmentTreatmentGroup;
/** 登记号(预住院患者) */ /**
* 登记号预住院患者
*/
@ApiModelProperty(value = "登记号(预住院患者)") @ApiModelProperty(value = "登记号(预住院患者)")
private String registrationNo; private String registrationNo;
/** 登记日期预住院患者时间格式yyyy-MM-dd */ /**
* 登记日期预住院患者时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "登记日期预住院患者时间格式yyyy-MM-dd") @ApiModelProperty(value = "登记日期预住院患者时间格式yyyy-MM-dd")
private LocalDate registrationDate; private LocalDate registrationDate;
/** 预约时间预住院患者时间格式yyyy-MM-dd */ /**
* 预约时间预住院患者时间格式yyyy-MM-dd
*/
@ApiModelProperty(value = "预约时间预住院患者时间格式yyyy-MM-dd") @ApiModelProperty(value = "预约时间预住院患者时间格式yyyy-MM-dd")
private LocalDate appointmentDate; private LocalDate appointmentDate;
/** 门诊/住院号 */ /**
* 门诊/住院号
*/
@ApiModelProperty(value = "门诊/住院号 ") @ApiModelProperty(value = "门诊/住院号 ")
@Excel(name = "门诊/住院号 ", readConverterExp = "门诊/住院号 ") @Excel(name = "门诊/住院号 ", readConverterExp = "门诊/住院号 ")
private String inHospitalNumber; private String inHospitalNumber;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */ /**
* 就诊时间格式yyyy-MM-dd HH:mm:ss
*/
@ApiModelProperty(value = "就诊时间格式yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "就诊时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "就诊时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "就诊时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDateTime visitDate; private LocalDateTime visitDate;
/** 出院方式(出院患者) */ /**
* 出院方式出院患者
*/
@ApiModelProperty(value = "出院方式") @ApiModelProperty(value = "出院方式")
@Excel(name = "出院方式", readConverterExp = "出=院患者") @Excel(name = "出院方式", readConverterExp = "出=院患者")
private String dischargeMethod; 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") @ApiModelProperty(value = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
@Excel(name = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END") @Excel(name = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")
private String patientSource; private String patientSource;
/**
* 删除标识0未删除1已删除
*/
/** 手术名称 */ /** 手术名称 */
@ApiModelProperty(value = "手术名称") @ApiModelProperty(value = "手术名称")
@Excel(name = "手术名称") @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; package com.xinelu.manage.mapper.labelfieldcontent;
import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent; import com.xinelu.manage.domain.labelfieldcontent.LabelFieldContent;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldContentVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; 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); 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; package com.xinelu.manage.mapper.labelfieldinfo;
import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo; import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.vo.labelfieldinfo.LabelFieldVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -28,6 +29,14 @@ public interface LabelFieldInfoMapper {
*/ */
public List<LabelFieldInfo> selectLabelFieldInfoList(LabelFieldInfo labelFieldInfo); 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.domain.patientinfo.PatientInfo;
import com.xinelu.manage.dto.patientinfo.PatientInfoDto; import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo; import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo;
import java.util.List; import java.util.List;
/** /**
@ -20,6 +21,12 @@ public interface PatientInfoMapper {
*/ */
public PatientInfo selectPatientInfoById(Long id); public PatientInfo selectPatientInfoById(Long id);
/**
* 查询患者信息
*
* @param id 主键id
* @return 患者信息
*/
public PatientBaseInfoVo getPatientBaseInfo(Long id); public PatientBaseInfoVo getPatientBaseInfo(Long id);
/** /**

View File

@ -1,6 +1,9 @@
package com.xinelu.manage.mapper.signpatientmanageroute; package com.xinelu.manage.mapper.signpatientmanageroute;
import com.xinelu.manage.domain.signpatientmanageroute.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; import java.util.List;
@ -58,4 +61,12 @@ public interface SignPatientManageRouteMapper {
* @return 结果 * @return 结果
*/ */
public int deleteSignPatientManageRouteByIds(Long[] ids); 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 java.util.List;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 签约患者管理任务路径节点Mapper接口 * 签约患者管理任务路径节点Mapper接口
* *
@ -63,6 +65,14 @@ public interface SignPatientManageRouteNodeMapper {
*/ */
public int deleteSignPatientManageRouteNodeByIds(Long[] ids); public int deleteSignPatientManageRouteNodeByIds(Long[] ids);
/**
* 批量删除签约患者管理任务路径节点
*
* @param manageRouteId 需要删除的数据
* @return 结果
*/
int deleteRouteNodeByManageRouteId(Long manageRouteId);
/** /**
* 查询患者任务列表 * 查询患者任务列表
* @param patientTaskDto 患者任务列表查询传输对象 * @param patientTaskDto 患者任务列表查询传输对象

View File

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

View File

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

View File

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

View File

@ -1,5 +1,6 @@
package com.xinelu.manage.service.labelfieldinfo; package com.xinelu.manage.service.labelfieldinfo;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo; import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.dto.labelfieldinfo.LabelFieldInfoAddDTO; import com.xinelu.manage.dto.labelfieldinfo.LabelFieldInfoAddDTO;
@ -28,6 +29,14 @@ public interface ILabelFieldInfoService {
*/ */
List<LabelFieldInfo> selectLabelFieldInfoList(LabelFieldInfo labelFieldInfo); 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; package com.xinelu.manage.service.labelfieldinfo.impl;
import com.xinelu.common.constant.Constants; import com.xinelu.common.constant.Constants;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.exception.ServiceException; import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils; import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.codes.GenerateSystemCodeUtil; import com.xinelu.common.utils.codes.GenerateSystemCodeUtil;
import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo; import com.xinelu.manage.domain.labelfieldinfo.LabelFieldInfo;
import com.xinelu.manage.dto.labelfieldinfo.LabelFieldInfoAddDTO; 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.mapper.labelfieldinfo.LabelFieldInfoMapper;
import com.xinelu.manage.service.labelfieldinfo.ILabelFieldInfoService; 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.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,6 +21,7 @@ import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -33,6 +38,9 @@ public class LabelFieldInfoServiceImpl implements ILabelFieldInfoService {
@Resource @Resource
private GenerateSystemCodeUtil systemCodeUtil; private GenerateSystemCodeUtil systemCodeUtil;
@Resource
private LabelFieldContentMapper labelFieldContentMapper;
/** /**
* 查询标签字段信息 * 查询标签字段信息
* *
@ -55,6 +63,27 @@ public class LabelFieldInfoServiceImpl implements ILabelFieldInfoService {
return labelFieldInfoMapper.selectLabelFieldInfoList(labelFieldInfo); 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; package com.xinelu.manage.service.signpatientmanageroute;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute; 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; import java.util.List;
/** /**
* 签约患者管理任务路径Service接口 * 签约患者管理任务路径Service接口
* *
@ -16,7 +22,7 @@ public interface ISignPatientManageRouteService {
* @param id 签约患者管理任务路径主键 * @param id 签约患者管理任务路径主键
* @return 签约患者管理任务路径 * @return 签约患者管理任务路径
*/ */
public SignPatientManageRoute selectSignPatientManageRouteById(Long id); SignPatientManageRoute selectSignPatientManageRouteById(Long id);
/** /**
* 查询签约患者管理任务路径列表 * 查询签约患者管理任务路径列表
@ -24,7 +30,7 @@ public interface ISignPatientManageRouteService {
* @param signPatientManageRoute 签约患者管理任务路径 * @param signPatientManageRoute 签约患者管理任务路径
* @return 签约患者管理任务路径集合 * @return 签约患者管理任务路径集合
*/ */
public List<SignPatientManageRoute> selectSignPatientManageRouteList(SignPatientManageRoute signPatientManageRoute); List<SignPatientManageRoute> selectSignPatientManageRouteList(SignPatientManageRoute signPatientManageRoute);
/** /**
* 新增签约患者管理任务路径 * 新增签约患者管理任务路径
@ -32,7 +38,7 @@ public interface ISignPatientManageRouteService {
* @param signPatientManageRoute 签约患者管理任务路径 * @param signPatientManageRoute 签约患者管理任务路径
* @return 结果 * @return 结果
*/ */
public int insertSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute); AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute);
/** /**
* 修改签约患者管理任务路径 * 修改签约患者管理任务路径
@ -40,7 +46,7 @@ public interface ISignPatientManageRouteService {
* @param signPatientManageRoute 签约患者管理任务路径 * @param signPatientManageRoute 签约患者管理任务路径
* @return 结果 * @return 结果
*/ */
public int updateSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute); AjaxResult updateSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute);
/** /**
* 批量删除签约患者管理任务路径 * 批量删除签约患者管理任务路径
@ -48,7 +54,7 @@ public interface ISignPatientManageRouteService {
* @param ids 需要删除的签约患者管理任务路径主键集合 * @param ids 需要删除的签约患者管理任务路径主键集合
* @return 结果 * @return 结果
*/ */
public int deleteSignPatientManageRouteByIds(Long[] ids); int deleteSignPatientManageRouteByIds(Long[] ids);
/** /**
* 删除签约患者管理任务路径信息 * 删除签约患者管理任务路径信息
@ -58,4 +64,11 @@ public interface ISignPatientManageRouteService {
*/ */
public int deleteSignPatientManageRouteById(Long id); 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; 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.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper; 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.signpatientmanageroute.SignPatientManageRouteMapper;
import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService; 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.time.LocalDateTime;
import java.util.List; import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/** /**
* 签约患者管理任务路径Service业务层处理 * 签约患者管理任务路径Service业务层处理
@ -19,6 +29,8 @@ import org.springframework.stereotype.Service;
public class SignPatientManageRouteServiceImpl implements ISignPatientManageRouteService { public class SignPatientManageRouteServiceImpl implements ISignPatientManageRouteService {
@Resource @Resource
private SignPatientManageRouteMapper signPatientManageRouteMapper; private SignPatientManageRouteMapper signPatientManageRouteMapper;
@Resource
private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper;
@Resource @Resource
private PatientInfoMapper patientInfoMapper; private PatientInfoMapper patientInfoMapper;
@ -51,9 +63,24 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute) { public AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute) {
signPatientManageRoute.setCreateBy(SecurityUtils.getUsername());
signPatientManageRoute.setCreateTime(LocalDateTime.now()); signPatientManageRoute.setCreateTime(LocalDateTime.now());
return signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute); 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 结果 * @return 结果
*/ */
@Override @Override
public int updateSignPatientManageRoute(SignPatientManageRoute signPatientManageRoute) { public AjaxResult updateSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute) {
signPatientManageRoute.setUpdateBy(SecurityUtils.getUsername());
signPatientManageRoute.setUpdateTime(LocalDateTime.now()); signPatientManageRoute.setUpdateTime(LocalDateTime.now());
return signPatientManageRouteMapper.updateSignPatientManageRoute(signPatientManageRoute); 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) { public int deleteSignPatientManageRouteById(Long id) {
return signPatientManageRouteMapper.deleteSignPatientManageRouteById(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 specialDiseaseRouteId;
/**
* 总数
*/
private Long totalNumber;
/**
* 进度
*/
private Long agreeNumber;
/** /**
* 节点信息 * 节点信息
@ -30,7 +39,7 @@ public class SpecialDiseaseRouteVO extends SpecialDiseaseRoute {
List<SpecialDiseaseNodeVO> specialDiseaseNodeList; List<SpecialDiseaseNodeVO> specialDiseaseNodeList;
/** /**
* 节点信息 * 触发条件信息
*/ */
List<TriggerConditionVO> triggerConditionList; List<TriggerConditionVO> triggerConditionList;
} }

View File

@ -212,4 +212,26 @@
#{id} #{id}
</foreach> </foreach>
</delete> </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> </mapper>

View File

@ -59,6 +59,18 @@
</where> </where>
</select> </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" <select id="selectLabelFieldInfoById" parameterType="Long"
resultMap="LabelFieldInfoResult"> resultMap="LabelFieldInfoResult">
<include refid="selectLabelFieldInfoVo"/> <include refid="selectLabelFieldInfoVo"/>

View File

@ -72,7 +72,8 @@
from patient_info from patient_info
</sql> </sql>
<select id="selectPatientInfoList" parameterType="com.xinelu.manage.dto.patientinfo.PatientInfoDto" resultMap="PatientInfoResult"> <select id="selectPatientInfoList" parameterType="com.xinelu.manage.dto.patientinfo.PatientInfoDto"
resultMap="PatientInfoResult">
<include refid="selectPatientInfoVo"/> <include refid="selectPatientInfoVo"/>
<where> <where>
del_flag = 0 del_flag = 0

View File

@ -93,6 +93,104 @@
where id = #{id} where id = #{id}
</select> </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" <insert id="insertSignPatientManageRoute" parameterType="com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute" useGeneratedKeys="true"
keyProperty="id"> keyProperty="id">
insert into sign_patient_manage_route insert into sign_patient_manage_route

View File

@ -567,6 +567,12 @@
</foreach> </foreach>
</delete> </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 id="selectPatientTaskList" parameterType="com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto" resultType="com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo">
select patient.id as patientId, patient.patient_name, select patient.id as patientId, patient.patient_name,
patient.patient_phone, patient.patient_phone,

View File

@ -37,6 +37,8 @@
<result property="releaseStatus" column="release_status"/> <result property="releaseStatus" column="release_status"/>
<result property="suitRange" column="suit_range"/> <result property="suitRange" column="suit_range"/>
<result property="routeSort" column="route_sort"/> <result property="routeSort" column="route_sort"/>
<result property="agreeNumber" column="agreeNumber"/>
<result property="totalNumber" column="totalNumber"/>
<result property="routeRemark" column="route_remark"/> <result property="routeRemark" column="route_remark"/>
<collection property="triggerConditionList" javaType="java.util.List" <collection property="triggerConditionList" javaType="java.util.List"
resultMap="SpecialDiseaseTriggerConditionResult"/> resultMap="SpecialDiseaseTriggerConditionResult"/>
@ -303,8 +305,16 @@
sdtc.trigger_condition_operator, sdtc.trigger_condition_operator,
sdtc.trigger_condition_value, sdtc.trigger_condition_value,
sdtc.trigger_condition_sort, 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 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 LEFT JOIN special_disease_trigger_condition sdtc ON sdr.id = sdtc.route_id
where sdr.id = #{id} where sdr.id = #{id}
</select> </select>