From 0133f88bf25900342928102ca96d2d75d4895bf4 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Fri, 29 Nov 2024 15:42:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=82=A3=E8=80=85=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/门诊随访记录 - 未随访.xlsx | Bin 0 -> 9763 bytes .../com/xinelu/common/constant/Constants.java | 5 + .../xinelu/common/constant/HttpStatus.java | 5 + .../xinelu/common/core/domain/AjaxResult.java | 12 +++ .../ImportDownloadController.java | 3 + .../patientinfo/PatientInfoController.java | 4 +- .../patientinfoimport/PatientInfoImport.java | 14 +-- .../mapper/patientinfo/PatientInfoMapper.java | 2 +- .../patientinfo/IPatientInfoService.java | 2 +- .../impl/PatientInfoServiceImpl.java | 99 +++++++++--------- .../manage/patientinfo/PatientInfoMapper.xml | 6 +- .../residentinfo/ResidentInfoMapper.xml | 2 +- 12 files changed, 94 insertions(+), 60 deletions(-) create mode 100644 postdischarge-admin/src/main/resources/template/门诊随访记录 - 未随访.xlsx diff --git a/postdischarge-admin/src/main/resources/template/门诊随访记录 - 未随访.xlsx b/postdischarge-admin/src/main/resources/template/门诊随访记录 - 未随访.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..13595b5d5090c2e735cd578551a8327b46028b08 GIT binary patch literal 9763 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 C-O*qG literal 0 HcmV?d00001 diff --git a/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java b/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java index 3bfa89ec..b41e5d3e 100644 --- a/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java +++ b/postdischarge-common/src/main/java/com/xinelu/common/constant/Constants.java @@ -219,6 +219,11 @@ public class Constants { */ public static final String OUTPATIENT = "outpatient"; + /** + * 门诊患者 + */ + public static final String PATIENT_INFO_IMPORT = "patientInfoImport"; + /** * 预住院 */ diff --git a/postdischarge-common/src/main/java/com/xinelu/common/constant/HttpStatus.java b/postdischarge-common/src/main/java/com/xinelu/common/constant/HttpStatus.java index bea70afa..bc708d49 100644 --- a/postdischarge-common/src/main/java/com/xinelu/common/constant/HttpStatus.java +++ b/postdischarge-common/src/main/java/com/xinelu/common/constant/HttpStatus.java @@ -86,4 +86,9 @@ public class HttpStatus * 接口未实现 */ public static final int NOT_IMPLEMENTED = 501; + + /** + * 系统内部错误 + */ + public static final int ERROR_TWO = 500_2; } diff --git a/postdischarge-common/src/main/java/com/xinelu/common/core/domain/AjaxResult.java b/postdischarge-common/src/main/java/com/xinelu/common/core/domain/AjaxResult.java index 1d0590fc..01da180c 100644 --- a/postdischarge-common/src/main/java/com/xinelu/common/core/domain/AjaxResult.java +++ b/postdischarge-common/src/main/java/com/xinelu/common/core/domain/AjaxResult.java @@ -140,6 +140,18 @@ public class AjaxResult extends HashMap { return new AjaxResult(code, msg, null); } + /** + * 返回错误消息 + * + * @param code 状态码 + * @param msg 返回内容 + * @param data 数据对象 + * @return 警告消息 + */ + public static AjaxResult error(int code, String msg, Object data) { + return new AjaxResult(code, msg, data); + } + /** * 方便链式调用 * diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java index 3f72aab4..45689770 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java @@ -61,6 +61,9 @@ public class ImportDownloadController { case Constants.OUTPATIENT: // 门诊患者 file = ResourceUtils.getFile("classpath:template/门诊患者信息导入表.xlsx"); break; + case Constants.PATIENT_INFO_IMPORT: // 门诊患者 + file = ResourceUtils.getFile("classpath:template/门诊随访记录 - 未随访.xlsx"); + break; } if (Objects.isNull(file)) { throw new ServiceException("下载导入模板文件失败,请联系管理员!"); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientinfo/PatientInfoController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientinfo/PatientInfoController.java index 74929d49..e499c896 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientinfo/PatientInfoController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientinfo/PatientInfoController.java @@ -133,7 +133,7 @@ public class PatientInfoController extends BaseController { @ApiOperation("患者信息导入") @PostMapping("/patientUpload") - public AjaxResult patientUpload(MultipartFile file) throws Exception { + public AjaxResult patientUpload(MultipartFile file, Integer records) throws Exception { //判断excel里面是否有数据/文件格式 if (Objects.isNull(file) || StringUtils.isBlank(file.getOriginalFilename())) { return AjaxResult.error("请选择需要导入的文件!"); @@ -145,7 +145,7 @@ public class PatientInfoController extends BaseController { } ExcelUtil util = new ExcelUtil<>(PatientInfoImport.class); List list = util.importExcel(file.getInputStream()); - return patientInfoService.patientUpload(list); + return patientInfoService.patientUpload(list, records); } @ApiOperation("未识别科室名称导入") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patientinfoimport/PatientInfoImport.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patientinfoimport/PatientInfoImport.java index 2c03579a..d6d50400 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patientinfoimport/PatientInfoImport.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/patientinfoimport/PatientInfoImport.java @@ -1,5 +1,6 @@ package com.xinelu.manage.domain.patientinfoimport; +import com.fasterxml.jackson.annotation.JsonFormat; import com.xinelu.common.annotation.Excel; import com.xinelu.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; @@ -10,7 +11,7 @@ import lombok.NoArgsConstructor; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; -import java.time.LocalDateTime; +import java.time.LocalDate; import java.util.Objects; /** @@ -49,8 +50,9 @@ public class PatientInfoImport extends BaseEntity { * 就诊时间(门诊患者),时间格式:yyyy-MM-dd */ @ApiModelProperty(value = "就诊时间") - @Excel(name = "就诊时间") - private LocalDateTime visitDate; + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "就诊时间", width = 30, dateFormat = "yyyy-MM-dd") + private LocalDate visitDate; /** * 门诊/住院号 @@ -63,7 +65,7 @@ public class PatientInfoImport extends BaseEntity { * 患者姓名 */ @ApiModelProperty(value = "患者姓名") - @Excel(name = "患者姓名") + @Excel(name = "姓名") private String patientName; /** @@ -84,14 +86,14 @@ public class PatientInfoImport extends BaseEntity { * 主要诊断 */ @ApiModelProperty(value = "主要诊断") - @Excel(name = "诊断名称") + @Excel(name = "诊断") private String mainDiagnosis; /** * 患者电话 */ @ApiModelProperty(value = "患者电话") - @Excel(name = "手机号号码") + @Excel(name = "联系电话") private String patientPhone; /** diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java index 9aa82744..b565da80 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java @@ -147,7 +147,7 @@ public interface PatientInfoMapper { * @param list 集合 * @return PatientInfo */ - List selectPatientInfoByPatientName(@Param("list") List list); + List selectPatientInfoByPatientName(@Param("list") List list, @Param("nowDate") LocalDate nowDate); /** * 新增患者信息 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java index 0e108466..a5d9b774 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java @@ -96,7 +96,7 @@ public interface IPatientInfoService { * @param list 患者信息结合 * @return AjaxResult */ - AjaxResult patientUpload(List list); + AjaxResult patientUpload(List list,Integer records); /** * 未识别科室名称导入 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java index 8cf9c0ab..b74c4791 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.xinelu.manage.service.patientinfo.impl; import com.xinelu.common.annotation.DataScope; +import com.xinelu.common.constant.HttpStatus; import com.xinelu.common.constant.SignRecordServiceStatusConstants; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.domain.entity.SysUser; @@ -39,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -317,28 +319,25 @@ public class PatientInfoServiceImpl implements IPatientInfoService { @Transactional(rollbackFor = Exception.class) @Override - public AjaxResult patientUpload(List list) { + public AjaxResult patientUpload(List list, Integer records) { if (CollectionUtils.isEmpty(list) || list.size() == 0) { return AjaxResult.error("导入用户数据不能为空!"); } - PatientInfoImport regexPhone = list.stream().filter(item -> StringUtils.isNotBlank(item.getPatientPhone())).filter(item -> BooleanUtils.isFalse(regexUtil.regexPhone(item.getPatientPhone()))).findFirst().orElse(new PatientInfoImport()); - if (StringUtils.isNotBlank(regexPhone.getPatientPhone())) { - return AjaxResult.error("手机号号码:" + regexPhone.getPatientPhone() + " 格式不正确,请重新录入!"); + List collect = list.stream().filter(Objects::nonNull).filter(item -> StringUtils.isEmpty(item.getPatientName()) || StringUtils.isEmpty(item.getPatientPhone()) || StringUtils.isEmpty(item.getDeptAlias()) || Objects.isNull(item.getVisitDate())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect)) { + return AjaxResult.error("请填写完整!"); } - PatientInfoImport regexCardNo = list.stream().filter(item -> StringUtils.isNotBlank(item.getCardNo())).filter(item -> BooleanUtils.isFalse(regexUtil.regexCardNo(item.getCardNo()))).findFirst().orElse(new PatientInfoImport()); - if (StringUtils.isNotBlank(regexCardNo.getCardNo())) { - return AjaxResult.error("身份证号:" + regexCardNo.getCardNo() + " 格式不正确,请重新录入!"); + List regexPhoneList = list.stream().filter(item -> StringUtils.isNotBlank(item.getPatientPhone())).filter(item -> BooleanUtils.isFalse(regexUtil.regexPhone(item.getPatientPhone()))).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(regexPhoneList)) { + return AjaxResult.error(HttpStatus.ERROR_TWO, "手机号号码格式不正确,请重新录入!", regexPhoneList); } - //导入重复 + //导入重复过滤 List distinctCollect = list.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList()); - if (list.size() != distinctCollect.size()) { - List contains = list.stream().filter(item -> !distinctCollect.contains(item)).collect(Collectors.toList()); - return AjaxResult.error("导入数据重复", contains); - } + LocalDate nowDate = LocalDate.now(); //与数据库重复 - List patientInfos = patientInfoMapper.selectPatientInfoByPatientName(list); - if (CollectionUtils.isEmpty(patientInfos)) { - return AjaxResult.error("有" + patientInfos.size() + "条记录当天已导入,是否继续导入"); + List patientInfos = new ArrayList<>(); + if (Objects.isNull(records) || records == 1) { + patientInfos = patientInfoMapper.selectPatientInfoByPatientName(list, nowDate); } //sn String sn = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); @@ -350,22 +349,36 @@ public class PatientInfoServiceImpl implements IPatientInfoService { } department.setHospitalAgencyId(sysUser.getHospitalAgencyId()); List departmentList = departmentMapper.selectDepartmentNameCount(department); - if (CollectionUtils.isEmpty(departmentList)) { - return AjaxResult.error("该账号所属医院无下级科室,请先维护所属医院的下级科室信息!"); - } PatientInfoImportVO patientInfoImportVO = new PatientInfoImportVO(); List deptAliasVOS = new ArrayList<>(); //组装数据 - for (PatientInfoImport patientInfoImport : list) { + List patientInfoImportList = new ArrayList<>(); + //选择自动去除当日重复记录 + for (PatientInfoImport patientInfoImport : distinctCollect) { + if (CollectionUtils.isNotEmpty(patientInfos)) { + List collect1 = patientInfos.stream().filter(Objects::nonNull).filter(item -> patientInfoImport.getPatientName().equals(item.getPatientName()) && patientInfoImport.getPatientPhone().equals(item.getPatientPhone())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(collect1)) { + continue; + } + } //判断是否有科室名称或别名一致 - Department equalsDepartment = departmentList.stream().filter(Objects::nonNull).filter(item -> patientInfoImport.getDeptAlias().equals(item.getDepartmentName()) || item.getDepartmentAbbreviation().contains(patientInfoImport.getDeptAlias())).findFirst().orElse(new Department()); patientInfoImport.setSn(sn); patientInfoImport.setCreateBy(SecurityUtils.getUsername()); patientInfoImport.setCreateTime(LocalDateTime.now()); - //一致塞值,不一致取数据返回 - if (Objects.nonNull(equalsDepartment.getId())) { - patientInfoImport.setDepartmentId(equalsDepartment.getId()); - patientInfoImport.setDepartmentName(patientInfoImport.getDepartmentName()); + //医院有科室且名称一致塞值,不一致取数据返回,医院没科室科室数据返回 + if (CollectionUtils.isNotEmpty(departmentList)) { + Department equalsDepartment = departmentList.stream().filter(Objects::nonNull) + .filter(item -> patientInfoImport.getDeptAlias().equals(item.getDepartmentName()) || (StringUtils.isNotEmpty(item.getDepartmentAbbreviation()) && item.getDepartmentAbbreviation().contains(patientInfoImport.getDeptAlias()))).findFirst().orElse(new Department()); + if (Objects.nonNull(equalsDepartment.getId())) { + patientInfoImport.setDepartmentId(equalsDepartment.getId()); + patientInfoImport.setDepartmentName(patientInfoImport.getDepartmentName()); + patientInfoImportList.add(patientInfoImport); + } else { + DeptAliasVO deptAliasVO = new DeptAliasVO(); + deptAliasVO.setSn(sn); + deptAliasVO.setDeptAlias(patientInfoImport.getDeptAlias()); + deptAliasVOS.add(deptAliasVO); + } } else { DeptAliasVO deptAliasVO = new DeptAliasVO(); deptAliasVO.setSn(sn); @@ -373,15 +386,16 @@ public class PatientInfoServiceImpl implements IPatientInfoService { deptAliasVOS.add(deptAliasVO); } } - List patientInfoImports = new ArrayList<>(list); + //组装返回数据 + List patientInfoImports = new ArrayList<>(patientInfoImportList); patientInfoImportVO.setSn(sn); patientInfoImportVO.setDepartments(departmentList); if (CollectionUtils.isNotEmpty(deptAliasVOS)) { - deptAliasVOS = deptAliasVOS.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getDepartmentId())).distinct().collect(Collectors.toList()); + deptAliasVOS = deptAliasVOS.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getDeptAlias())).distinct().collect(Collectors.toList()); patientInfoImportVO.setDeptAliasVOS(deptAliasVOS); } //新增缓存表 - int insertCount = patientInfoImportMapper.insertPatientInfoImportList(list); + int insertCount = patientInfoImportMapper.insertPatientInfoImportList(patientInfoImportList); if (insertCount <= 0) { return AjaxResult.error("导入失败,请联系管理员!"); } @@ -389,16 +403,19 @@ public class PatientInfoServiceImpl implements IPatientInfoService { if (CollectionUtils.isNotEmpty(deptAliasVOS)) { return AjaxResult.success("科室名称不存在", patientInfoImportVO); } else { - int i = patientInfoMapper.insertPatientInfoList(list); + //新增患者表 + int i = patientInfoMapper.insertPatientInfoList(patientInfoImportList); if (i <= 0) { return AjaxResult.error("导入失败,请联系管理员!"); } - List patientInfoIds = new ArrayList<>(list); - int residentCount = residentInfoMapper.insertResidentInfoList(list); + //新增居民表 + List patientInfoIds = new ArrayList<>(patientInfoImportList); + int residentCount = residentInfoMapper.insertResidentInfoList(patientInfoImportList); if (residentCount <= 0) { return AjaxResult.error("导入失败,请联系管理员!"); } - List residentIds = new ArrayList<>(list); + //新增就诊记录表 + List residentIds = new ArrayList<>(patientInfoImportList); List patientVisitRecords = new ArrayList<>(); for (PatientInfoImport patientInfoImport : patientInfoImports) { PatientInfoImport patientInfoId = patientInfoIds.stream().filter(Objects::nonNull).filter(item -> patientInfoImport.getPatientName().equals(item.getPatientName()) && patientInfoImport.getPatientPhone().equals(item.getPatientPhone())).findFirst().orElse(new PatientInfoImport()); @@ -406,14 +423,6 @@ public class PatientInfoServiceImpl implements IPatientInfoService { PatientVisitRecord patientVisitRecord = new PatientVisitRecord(); patientVisitRecord.setPatientId(patientInfoId.getId()); patientVisitRecord.setResidentId(residentId.getId()); -// patientVisitRecord.setVisitDate(patientInfoImport.getVisitDate()); -// patientVisitRecord.setCardNo(patientInfoImport.getCardNo()); -// patientVisitRecord.setAge(patientInfoImport.getAge()); -// patientVisitRecord.setMainDiagnosis(patientInfoImport.getMainDiagnosis()); -// patientVisitRecord.setPatientPhone(patientInfoImport.getPatientPhone()); -// patientVisitRecord.setPatientName(patientInfoImport.getPatientName()); -// patientVisitRecord.setDepartmentId(patientInfoImport.getDepartmentId()); -// patientVisitRecord.setDepartmentName(patientInfoImport.getDepartmentName()); BeanUtils.copyProperties(patientInfoImport, patientVisitRecord); patientVisitRecord.setDelFlag(0); patientVisitRecord.setHospitalAgencyId(departmentList.get(0).getHospitalAgencyId()); @@ -456,6 +465,7 @@ public class PatientInfoServiceImpl implements IPatientInfoService { if (CollectionUtils.isEmpty(departmentList)) { return AjaxResult.error("该账号所属医院无下级科室,请先维护所属医院的下级科室信息!"); } + //科室组装别名 List departments = new ArrayList<>(); for (Department department1 : departmentList) { Department deptAliasdepartment = new Department(); @@ -474,16 +484,19 @@ public class PatientInfoServiceImpl implements IPatientInfoService { departments.add(deptAliasdepartment); } } + //修改科室表别名信息 if (CollectionUtils.isNotEmpty(departments)) { int i = departmentMapper.updateDepartmentListByIds(departments); if (i <= 0) { return AjaxResult.error("导入失败,请联系管理员!"); } } + //新增患者表信息 int i = patientInfoMapper.insertPatientInfoList(patientInfoImports); if (i <= 0) { return AjaxResult.error("导入失败,请联系管理员!"); } + //新增居民表信息 List patientInfoIds = new ArrayList<>(patientInfoImports); int residentCount = residentInfoMapper.insertResidentInfoList(patientInfoImports); if (residentCount <= 0) { @@ -497,14 +510,6 @@ public class PatientInfoServiceImpl implements IPatientInfoService { PatientVisitRecord patientVisitRecord = new PatientVisitRecord(); patientVisitRecord.setPatientId(patientInfoId.getId()); patientVisitRecord.setResidentId(residentId.getId()); -// patientVisitRecord.setVisitDate(patientInfoImport.getVisitDate()); -// patientVisitRecord.setCardNo(patientInfoImport.getCardNo()); -// patientVisitRecord.setAge(patientInfoImport.getAge()); -// patientVisitRecord.setMainDiagnosis(patientInfoImport.getMainDiagnosis()); -// patientVisitRecord.setPatientPhone(patientInfoImport.getPatientPhone()); -// patientVisitRecord.setPatientName(patientInfoImport.getPatientName()); -// patientVisitRecord.setDepartmentId(patientInfoImport.getDepartmentId()); -// patientVisitRecord.setDepartmentName(patientInfoImport.getDepartmentName()); BeanUtils.copyProperties(patientInfoImport, patientVisitRecord); patientVisitRecord.setDelFlag(0); patientVisitRecord.setHospitalAgencyId(department.getHospitalAgencyId()); diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml index 0c41c575..cfb1def7 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml @@ -861,13 +861,15 @@ diff --git a/postdischarge-manage/src/main/resources/mapper/manage/residentinfo/ResidentInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/residentinfo/ResidentInfoMapper.xml index f06c6410..4f68e647 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/residentinfo/ResidentInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/residentinfo/ResidentInfoMapper.xml @@ -215,7 +215,7 @@ - + insert into resident_info( patient_name, patient_phone,