|
|
@@ -16,7 +16,6 @@ import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomThumbnailVO;
|
|
|
import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
|
|
|
import cn.tr.module.smart.common.dto.BizClinicRoomDTO;
|
|
|
import cn.tr.module.smart.common.dto.BizClinicRoomQueryDTO;
|
|
|
-import cn.tr.module.smart.common.dto.BizDeptDTO;
|
|
|
import cn.tr.module.smart.common.entity.BizWxAppletQuestionAnswerEntity;
|
|
|
import cn.tr.module.smart.common.enums.ClinicPhaseEnums;
|
|
|
import cn.tr.module.smart.common.enums.InfusionBindType;
|
|
|
@@ -222,6 +221,12 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean wxAppletFinishClinic(BizWxAppletFinishClinicDTO source) {
|
|
|
BizClinicRoomPO clinicRoom = baseRepository.selectById(source.getClinicId());
|
|
|
+ if (ObjectUtil.isNull(clinicRoom)) {
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息不存在");
|
|
|
+ }
|
|
|
+ if (ClinicPhaseEnums.AFTER.equals(clinicRoom.getClinicStatus())) {
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术已结束,无法结束手术");
|
|
|
+ }
|
|
|
if (ObjectUtil.compare(source.getClinicEndTime(), new Date()) > 0) {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001
|
|
|
, String.format("手术结束时间[%s],不得大于当前时间[%s]"
|
|
|
@@ -370,9 +375,9 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
}
|
|
|
if (ObjectUtil.compare(clinicRoom.getClinicStartTime(), finishDTO.getClinicEndTime()) > 0) {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001
|
|
|
- , String.format("手术结束时间[%s],不得早于开始时间[%s]"
|
|
|
- , DateUtil.formatDateTime(finishDTO.getClinicEndTime())
|
|
|
- ,DateUtil.formatDateTime(clinicRoom.getClinicStartTime())));
|
|
|
+ , String.format("手术结束时间[%s],不得早于手术开始时间[%s]"
|
|
|
+ , DateUtil.formatDateTime(finishDTO.getClinicEndTime()),
|
|
|
+ DateUtil.formatDateTime(clinicRoom.getClinicStartTime())));
|
|
|
}
|
|
|
int update = baseRepository.update(null, new LambdaUpdateWrapper<BizClinicRoomPO>()
|
|
|
.set(BizClinicRoomPO::getClinicStatus, ClinicPhaseEnums.AFTER)
|
|
|
@@ -428,10 +433,16 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
//若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
|
|
|
clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
|
|
|
//更新监护信息
|
|
|
- updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
|
|
|
- clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
|
|
|
- clinicRoom.setClinicStartTime(source.getClinicStartTime());
|
|
|
- clinicRoom.setClinicEndTime(null);
|
|
|
+ //医生端只更新手术开始时间、科室、手术名称、手术状态
|
|
|
+ //如果手术时间大于当前时间,则手术状态改为术前
|
|
|
+ if(ObjectUtil.compare(new Date(), source.getClinicStartTime()) > 0){
|
|
|
+ clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
|
|
|
+ clinicRoom.setClinicEndTime(null);
|
|
|
+ }
|
|
|
+ clinicRoom.setClinicStartTime(clinicStartTime);
|
|
|
+ clinicRoom.setDeptId(source.getDeptId());
|
|
|
+ clinicRoom.setDeptName(source.getDeptName());
|
|
|
+ clinicRoom.setClinicName(source.getClinicName());
|
|
|
baseRepository.updateById(clinicRoom);
|
|
|
} else {
|
|
|
//手术不存在,则新增手术信息
|
|
|
@@ -636,9 +647,9 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "医生信息不存在");
|
|
|
}
|
|
|
List<String> clinicIds = source.getClinicIds();
|
|
|
- if(clinicIds.stream().anyMatch(Objects::isNull)){
|
|
|
- throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息id包含空值");
|
|
|
- }
|
|
|
+ if(clinicIds.stream().anyMatch(Objects::isNull)){
|
|
|
+ throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息id包含空值");
|
|
|
+ }
|
|
|
//先删除跟手术医生关联
|
|
|
clinicRoomDoctorUserRepository.delete(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
|
|
|
.in(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicIds));
|
|
|
@@ -682,16 +693,49 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
}
|
|
|
//若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
|
|
|
clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
|
|
|
- //更新监护信息
|
|
|
- updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
|
|
|
//更新医生录入手术信息
|
|
|
- clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
|
|
|
+ if (ObjectUtil.compare(source.getClinicStartTime(), new Date()) > 0) {
|
|
|
+ clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
|
|
|
+ clinicRoom.setClinicEndTime(null);
|
|
|
+ }
|
|
|
clinicRoom.setClinicStartTime(clinicStartTime);
|
|
|
- clinicRoom.setClinicEndTime(null);
|
|
|
clinicRoom.setDeptId(source.getDeptId());
|
|
|
clinicRoom.setDeptName(source.getDeptName());
|
|
|
clinicRoom.setClinicName(source.getClinicName());
|
|
|
- return baseRepository.updateById(clinicRoom)!=0;
|
|
|
+ return baseRepository.updateById(clinicRoom) != 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param source
|
|
|
+ * @description: 医生端新增手术信息
|
|
|
+ * @author wangzl
|
|
|
+ * @date 2025/9/23
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean stdInsertDoctorApp(BizClinicAddOrEditDTO source) {
|
|
|
+ String userId = LoginUserStrategy.tr.getCurrentUserId();
|
|
|
+ String patientCode = source.getPatientCode();
|
|
|
+ //1、先判断是否已经添加过了患者信息
|
|
|
+ BizPatientPO patient = patientRepository.selectOne(new LambdaQueryWrapper<BizPatientPO>()
|
|
|
+ .eq(BizPatientPO::getPatientCode, patientCode)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (ObjectUtil.isNull(patient)) {
|
|
|
+ patient = patientService.insertBizPatientAndReturnObj(source);
|
|
|
+ }
|
|
|
+ BizClinicRoomPO clinicRoom = BizClinicRoomMapper.INSTANCE.convertPO(source);
|
|
|
+ clinicRoom.setPatientId(patient.getId());
|
|
|
+ clinicRoom.setFollowUpCount(0);
|
|
|
+ clinicRoom.setFollowUp(Boolean.FALSE);
|
|
|
+ clinicRoom.setLastModifyUserType(UserTypeEnums.APP_DOCTOR);
|
|
|
+ clinicRoom.setLastModifyUserBy(userId);
|
|
|
+ clinicRoom.setClinicStatus(ClinicPhaseEnums.BEFORE);
|
|
|
+ this.baseRepository.insert(clinicRoom);
|
|
|
+ //更新患者绑定的最新手术id
|
|
|
+ patient.setCurrentClinicId(clinicRoom.getId());
|
|
|
+ patientRepository.updateById(patient);
|
|
|
+ //更新医生看护列表
|
|
|
+ clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
|
|
|
+ return Boolean.TRUE;
|
|
|
}
|
|
|
|
|
|
/**
|