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 5fc4e354..6410ed05 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 @@ -3,7 +3,6 @@ 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; /** @@ -51,7 +50,15 @@ public interface PatientInfoMapper { * @param patientInfo 患者信息 * @return 结果 */ - int updatePatientInfo(PatientInfo patientInfo); + int updatePatientInfoSelective(PatientInfo patientInfo); + + /** + * 修改患者信息 + * + * @param patientInfo 患者信息 + * @return 结果 + */ + int updatePatientInfo(PatientInfo patientInfo); /** * 删除患者信息 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 3ea6473b..932d8570 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,18 +1,24 @@ package com.xinelu.manage.service.patientinfo.impl; +import com.xinelu.common.constant.SignRecordServiceStatusConstants; +import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.StringUtils; import com.xinelu.common.utils.bean.BeanUtils; import com.xinelu.manage.domain.patientinfo.PatientInfo; import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord; import com.xinelu.manage.domain.residentinfo.ResidentInfo; +import com.xinelu.manage.domain.signpatientrecord.SignPatientRecord; import com.xinelu.manage.dto.patientinfo.PatientInfoDto; import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto; import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper; import com.xinelu.manage.mapper.residentinfo.ResidentInfoMapper; +import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; import com.xinelu.manage.service.patientinfo.IPatientInfoService; import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService; import java.time.LocalDateTime; import java.util.List; +import java.util.Objects; import javax.annotation.Resource; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -34,6 +40,8 @@ public class PatientInfoServiceImpl implements IPatientInfoService { private ResidentInfoMapper residentInfoMapper; @Resource private IPatientVisitRecordService patientVisitRecordService; + @Resource + private SignPatientRecordMapper signPatientRecordMapper; /** * 查询患者信息 @@ -125,7 +133,7 @@ public class PatientInfoServiceImpl implements IPatientInfoService { patientInfo.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); patientInfo.setUpdateTime(LocalDateTime.now()); patientInfo.setDelFlag(0); - patientInfoMapper.updatePatientInfo(patientInfo); + patientInfoMapper.updatePatientInfoSelective(patientInfo); return patientInfo; } @@ -136,11 +144,18 @@ public class PatientInfoServiceImpl implements IPatientInfoService { * @return 结果 */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public int deletePatientInfoByIds(Long[] ids) { int flag = 0; for (Long id : ids) { PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(id); + // 查询关联的就诊记录是否已签约 + if (patientInfo.getSignPatientRecordId() != null && StringUtils.equals(SignRecordServiceStatusConstants.SERVICE_CENTER, patientInfo.getServiceStatus())) { + SignPatientRecord signPatientRecord = signPatientRecordMapper.selectByPrimaryKey(patientInfo.getSignPatientRecordId()); + if (Objects.equals(patientInfo.getPatientVisitRecordId(), signPatientRecord.getPatientVisitRecordId()) && signPatientRecord.getDelFlag() == 0) { + throw new ServiceException("该居民已签约不能删除该就诊记录!"); + } + } patientVisitRecordService.deletePatientVisitRecordById(patientInfo.getPatientVisitRecordId()); // 根据患者最新一条就诊记录修改患者状态 PatientVisitRecordDto patientVisitRecordDto = new PatientVisitRecordDto(); @@ -156,6 +171,7 @@ public class PatientInfoServiceImpl implements IPatientInfoService { // 设置patientType patientVisitRecordService.setPatientType(patientInfo, patientVisitRecord); } + patientInfo.setPatientType(null); flag += patientInfoMapper.updatePatientInfo(patientInfo); } return flag; diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java index 92bd8a53..b2ba6efe 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java @@ -105,7 +105,7 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital preHospitalization.setCreateTime(LocalDateTime.now()); int flag = preHospitalizationMapper.insertSelective(preHospitalization); patientInfo.setPatientPreHospitalizationId(preHospitalization.getId()); - patientInfoMapper.updatePatientInfo(patientInfo); + patientInfoMapper.updatePatientInfoSelective(patientInfo); return flag; } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java index 6dafdc9c..dca9920e 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java @@ -391,7 +391,7 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService // 修改居民信息 PatientInfo updInfo = patientInfoList.get(0); BeanUtils.copyBeanProp(updInfo, item); - patientMapper.updatePatientInfo(updInfo); + patientMapper.updatePatientInfoSelective(updInfo); patientVisitRecord.setPatientId(patientInfoList.get(0).getId()); } else { PatientInfo saveInfo = new PatientInfo(); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java index 2036f69b..85b8c45a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/signpatientrecord/impl/SignPatientRecordServiceImpl.java @@ -150,7 +150,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService { patient.setSignStatus(SignRecordServiceStatusConstants.IN_SIGN); patient.setServiceStatus(SignRecordServiceStatusConstants.SERVICE_CENTER); patient.setSignTime(LocalDateTime.now()); - patientInfoMapper.updatePatientInfo(patient); + patientInfoMapper.updatePatientInfoSelective(patient); if (flag > 0) { // 保存签约服务包信息 SignPatientPackage signPatientPackage = new SignPatientPackage(); @@ -261,7 +261,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService { // 签约信息保存到患者表 patient.setSignStatus(patientCancelSignDto.getSignStatus()); patient.setServiceStatus(patientCancelSignDto.getServiceStatus()); - patientInfoMapper.updatePatientInfo(patient); + patientInfoMapper.updatePatientInfoSelective(patient); } return signPatientRecordMapper.updateByPrimaryKeySelective(signRecord); } @@ -298,7 +298,7 @@ public class SignPatientRecordServiceImpl implements ISignPatientRecordService { int flag = signPatientRecordMapper.insertSelective(signRecord); if (flag > 0) { patientInfo.setSignPatientRecordId(signRecord.getId()); - patientInfoMapper.updatePatientInfo(patientInfo); + patientInfoMapper.updatePatientInfoSelective(patientInfo); } return flag; } 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 ed9920c5..bd38a5d4 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml @@ -375,7 +375,7 @@ - + update patient_info @@ -515,6 +515,55 @@ where id = #{id} + + update patient_info + set resident_id = #{residentId}, + patient_name = #{patientName}, + patient_phone = #{patientPhone}, + family_member_phone = #{familyMemberPhone}, + birth_date = #{birthDate}, + card_no = #{cardNo}, + sex = #{sex}, + address = #{address}, + patient_type = #{patientType}, + sign_status = #{signStatus}, + sign_patient_record_id = #{signPatientRecordId}, + service_status = #{serviceStatus}, + sign_time = #{signTime}, + visit_method = #{visitMethod}, + attending_physician_id = #{attendingPhysicianId}, + attending_physician_name = #{attendingPhysicianName}, + main_diagnosis = #{mainDiagnosis}, + hospital_agency_id = #{hospitalAgencyId}, + hospital_agency_name = #{hospitalAgencyName}, + campus_agency_id = #{campusAgencyId}, + campus_agency_name = #{campusAgencyName}, + department_id = #{departmentId}, + department_name = #{departmentName}, + ward_id = #{wardId}, + ward_name = #{wardName}, + responsible_nurse = #{responsibleNurse}, + patient_visit_record_id = #{patientVisitRecordId}, + visit_serial_number = #{visitSerialNumber}, + admission_time = #{admissionTime}, + discharge_time = #{dischargeTime}, + patient_pre_hospitalization_id = #{patientPreHospitalizationId}, + appointment_treatment_group = #{appointmentTreatmentGroup}, + registration_no = #{registrationNo}, + registration_date = #{registrationDate}, + appointment_date = #{appointmentDate}, + in_hospital_number = #{inHospitalNumber}, + visit_date = #{visitDate}, + discharge_method = #{dischargeMethod}, + patient_source = #{patientSource}, + surgical_name = #{surgicalName}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime} + where id = #{id} + update patient_info set del_flag = 1 where id = #{id} diff --git a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SignPackageExpireTask.java b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SignPackageExpireTask.java index 0af40125..65ed00d0 100644 --- a/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SignPackageExpireTask.java +++ b/postdischarge-quartz/src/main/java/com/xinelu/quartz/task/SignPackageExpireTask.java @@ -47,7 +47,7 @@ public class SignPackageExpireTask { patientInfo.setId(sign.getPatientId()); patientInfo.setSignStatus(SignRecordServiceStatusConstants.EXPIRE_SIGN); patientInfo.setServiceStatus(SignRecordServiceStatusConstants.SERVICE_END); - patientInfoMapper.updatePatientInfo(patientInfo); + patientInfoMapper.updatePatientInfoSelective(patientInfo); } } }