|
@@ -1,46 +1,52 @@
|
|
|
package cn.tr.module.smart.common.service.impl;
|
|
package cn.tr.module.smart.common.service.impl;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import cn.tr.core.exception.ServiceException;
|
|
|
import cn.tr.core.exception.TRExcCode;
|
|
import cn.tr.core.exception.TRExcCode;
|
|
|
import cn.tr.core.strategy.LoginUserStrategy;
|
|
import cn.tr.core.strategy.LoginUserStrategy;
|
|
|
-import cn.tr.module.smart.app.controller.dto.*;
|
|
|
|
|
|
|
+import cn.tr.module.smart.app.controller.dto.AppDoctorClinicFinishDTO;
|
|
|
|
|
+import cn.tr.module.smart.app.controller.dto.AppDoctorClinicQueryByPatientCodeDTO;
|
|
|
|
|
+import cn.tr.module.smart.app.controller.dto.AppDoctorClinicRoomDTO;
|
|
|
import cn.tr.module.smart.app.controller.vo.AppDoctorInfusionHistoryVO;
|
|
import cn.tr.module.smart.app.controller.vo.AppDoctorInfusionHistoryVO;
|
|
|
import cn.tr.module.smart.app.controller.vo.DoctorClinicRoomVO;
|
|
import cn.tr.module.smart.app.controller.vo.DoctorClinicRoomVO;
|
|
|
import cn.tr.module.smart.app.controller.vo.WxDoctorClinicRoomThumbnailVO;
|
|
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.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.ClinicPhaseEnums;
|
|
|
import cn.tr.module.smart.common.enums.UserTypeEnums;
|
|
import cn.tr.module.smart.common.enums.UserTypeEnums;
|
|
|
|
|
+import cn.tr.module.smart.common.mapper.BizClinicRoomMapper;
|
|
|
import cn.tr.module.smart.common.mapper.BizInfusionHistoryMapper;
|
|
import cn.tr.module.smart.common.mapper.BizInfusionHistoryMapper;
|
|
|
|
|
+import cn.tr.module.smart.common.mapper.BizQuestionAnswerMapper;
|
|
|
import cn.tr.module.smart.common.po.*;
|
|
import cn.tr.module.smart.common.po.*;
|
|
|
import cn.tr.module.smart.common.properties.ALiYunProperties;
|
|
import cn.tr.module.smart.common.properties.ALiYunProperties;
|
|
|
import cn.tr.module.smart.common.repository.*;
|
|
import cn.tr.module.smart.common.repository.*;
|
|
|
import cn.tr.module.smart.common.service.*;
|
|
import cn.tr.module.smart.common.service.*;
|
|
|
|
|
+import cn.tr.module.smart.common.vo.BizClinicAndAssessmentVO;
|
|
|
|
|
+import cn.tr.module.smart.common.vo.BizClinicAndDeviceVO;
|
|
|
|
|
+import cn.tr.module.smart.common.vo.BizClinicAndQuestionVO;
|
|
|
import cn.tr.module.smart.wx.controller.vo.BizAiAgentParamVO;
|
|
import cn.tr.module.smart.wx.controller.vo.BizAiAgentParamVO;
|
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicDetailVO;
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxAppletClinicDetailVO;
|
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
|
|
import cn.tr.module.smart.wx.controller.vo.BizWxDeptQuestionVO;
|
|
|
-import cn.tr.module.smart.common.dto.BizClinicAddOrEditDTO;
|
|
|
|
|
import cn.tr.module.smart.wx.controller.vo.IdCardInfoVO;
|
|
import cn.tr.module.smart.wx.controller.vo.IdCardInfoVO;
|
|
|
import cn.tr.module.smart.wx.dto.*;
|
|
import cn.tr.module.smart.wx.dto.*;
|
|
|
import cn.tr.module.smart.wx.utils.Id2Utils;
|
|
import cn.tr.module.smart.wx.utils.Id2Utils;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
-import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-import cn.tr.core.exception.ServiceException;
|
|
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
-import cn.tr.module.smart.common.dto.BizClinicRoomDTO;
|
|
|
|
|
-import cn.tr.module.smart.common.dto.BizClinicRoomQueryDTO;
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
-import cn.tr.module.smart.common.mapper.BizClinicRoomMapper;
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* 诊疗室Service接口实现类
|
|
* 诊疗室Service接口实现类
|
|
|
*
|
|
*
|
|
@@ -98,6 +104,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private ALiYunService aLiYunService;
|
|
private ALiYunService aLiYunService;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public List<BizWxAppletClinicDetailVO> stdSelectWxAppletClinicList(BizWxAppletClinicQueryDTO query) {
|
|
public List<BizWxAppletClinicDetailVO> stdSelectWxAppletClinicList(BizWxAppletClinicQueryDTO query) {
|
|
|
return baseRepository.stdSelectWxAppletClinicList(query);
|
|
return baseRepository.stdSelectWxAppletClinicList(query);
|
|
@@ -237,6 +244,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
* 患者端删除手术信息
|
|
* 患者端删除手术信息
|
|
|
* 如果手术信息已经被看护,则只删除软关联
|
|
* 如果手术信息已经被看护,则只删除软关联
|
|
|
* 如果手术信息未被看护,则删除该手术数据
|
|
* 如果手术信息未被看护,则删除该手术数据
|
|
|
|
|
+ *
|
|
|
* @param ids
|
|
* @param ids
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
@@ -375,7 +383,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
}
|
|
}
|
|
|
return clinicRoomDoctorUserRepository.delete(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
|
|
return clinicRoomDoctorUserRepository.delete(new LambdaQueryWrapper<BizClinicRoomDoctorUserPO>()
|
|
|
.eq(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicId)
|
|
.eq(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicId)
|
|
|
- .eq(BizClinicRoomDoctorUserPO::getUserId,currentUserId)) != 0;
|
|
|
|
|
|
|
+ .eq(BizClinicRoomDoctorUserPO::getUserId, currentUserId)) != 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -391,14 +399,14 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
.eq(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicRoom.getId())
|
|
.eq(BizClinicRoomDoctorUserPO::getClinicRoomId, clinicRoom.getId())
|
|
|
.last("limit 1"));
|
|
.last("limit 1"));
|
|
|
if (ObjectUtil.isNotNull(clinicRoomDoctorUserPO)) {
|
|
if (ObjectUtil.isNotNull(clinicRoomDoctorUserPO)) {
|
|
|
- if(ObjectUtil.equal(clinicRoomDoctorUserPO.getUserId(),userId)){
|
|
|
|
|
|
|
+ if (ObjectUtil.equal(clinicRoomDoctorUserPO.getUserId(), userId)) {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, String.format("住院号{%s}于{%s}已存在手术:{%s},请勿重复添加", patientCode, DateUtil.formatDate(clinicStartTime), clinicRoom.getClinicName()));
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, String.format("住院号{%s}于{%s}已存在手术:{%s},请勿重复添加", patientCode, DateUtil.formatDate(clinicStartTime), clinicRoom.getClinicName()));
|
|
|
- }else {
|
|
|
|
|
|
|
+ } else {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, String.format("住院号{%s}于{%s}已存在手术:{%s},已被其他医生看护", patientCode, DateUtil.formatDate(clinicStartTime), clinicRoom.getClinicName()));
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, String.format("住院号{%s}于{%s}已存在手术:{%s},已被其他医生看护", patientCode, DateUtil.formatDate(clinicStartTime), clinicRoom.getClinicName()));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
//若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
|
|
//若未监护,则证明该手术是由医生端发起的,添加监护信息(手术信息以医生输入为主,如果医生没有输入,则按照病人输入的来)
|
|
|
- clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId,clinicRoom.getId());
|
|
|
|
|
|
|
+ clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
|
|
|
//更新监护信息
|
|
//更新监护信息
|
|
|
updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
|
|
updateClinicInfoBaseOnDoctorByWxApplet(clinicRoom, source);
|
|
|
baseRepository.updateById(clinicRoom);
|
|
baseRepository.updateById(clinicRoom);
|
|
@@ -423,7 +431,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
patient.setCurrentClinicId(clinicRoom.getId());
|
|
patient.setCurrentClinicId(clinicRoom.getId());
|
|
|
patientRepository.updateById(patient);
|
|
patientRepository.updateById(patient);
|
|
|
//更新医生看护列表
|
|
//更新医生看护列表
|
|
|
- clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId,clinicRoom.getId());
|
|
|
|
|
|
|
+ clinicRoomDoctorUserService.stdInsertBizClinicRoomDoctor(userId, clinicRoom.getId());
|
|
|
}
|
|
}
|
|
|
return Boolean.TRUE;
|
|
return Boolean.TRUE;
|
|
|
}
|
|
}
|
|
@@ -434,7 +442,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
.eq(BizIdCardPO::getIdCard, source.getCardNo())
|
|
.eq(BizIdCardPO::getIdCard, source.getCardNo())
|
|
|
.eq(BizIdCardPO::getName, source.getName())
|
|
.eq(BizIdCardPO::getName, source.getName())
|
|
|
.last("limit 1"));
|
|
.last("limit 1"));
|
|
|
- if(ObjectUtil.isNotNull(idCard)){
|
|
|
|
|
|
|
+ if (ObjectUtil.isNotNull(idCard)) {
|
|
|
return Boolean.TRUE;
|
|
return Boolean.TRUE;
|
|
|
}
|
|
}
|
|
|
IdCardInfoVO cardInfoVO = Id2Utils.getInfo(source.getName(), source.getCardNo());
|
|
IdCardInfoVO cardInfoVO = Id2Utils.getInfo(source.getName(), source.getCardNo());
|
|
@@ -465,7 +473,7 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return BizInfusionHistoryMapper.INSTANCE.convertAPPVO(infusionHistoryRepository.selectById(infusionClinic.getInfusionId()));
|
|
|
|
|
|
|
+ return BizInfusionHistoryMapper.INSTANCE.convertAPPVO(infusionHistoryRepository.selectById(infusionClinic.getInfusionId()));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -481,18 +489,18 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
result.setApiKey(aLiYunProperties.getApiKey());
|
|
result.setApiKey(aLiYunProperties.getApiKey());
|
|
|
result.setWorkplaceId(aLiYunProperties.getBailianWorkplaceId());
|
|
result.setWorkplaceId(aLiYunProperties.getBailianWorkplaceId());
|
|
|
BizClinicRoomPO clinicRoom = baseRepository.selectById(source.getClinicId());
|
|
BizClinicRoomPO clinicRoom = baseRepository.selectById(source.getClinicId());
|
|
|
- if(ObjectUtil.isNull(clinicRoom)){
|
|
|
|
|
|
|
+ if (ObjectUtil.isNull(clinicRoom)) {
|
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息不存在");
|
|
throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001, "手术信息不存在");
|
|
|
}
|
|
}
|
|
|
- if(StrUtil.isNotEmpty(clinicRoom.getMemoryId())){
|
|
|
|
|
|
|
+ if (StrUtil.isNotEmpty(clinicRoom.getMemoryId())) {
|
|
|
result.setMemoryId(clinicRoom.getMemoryId());
|
|
result.setMemoryId(clinicRoom.getMemoryId());
|
|
|
- }else {
|
|
|
|
|
- try{
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ try {
|
|
|
String memoryId = aLiYunService.createMemory();
|
|
String memoryId = aLiYunService.createMemory();
|
|
|
result.setMemoryId(memoryId);
|
|
result.setMemoryId(memoryId);
|
|
|
clinicRoom.setMemoryId(memoryId);
|
|
clinicRoom.setMemoryId(memoryId);
|
|
|
baseRepository.updateById(clinicRoom);
|
|
baseRepository.updateById(clinicRoom);
|
|
|
- }catch (Exception e){
|
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -502,7 +510,57 @@ public class BizClinicRoomServiceImpl implements IBizClinicRoomService {
|
|
|
@Override
|
|
@Override
|
|
|
public DoctorClinicRoomVO selectAppBizClinicRoomById(String clinicId) {
|
|
public DoctorClinicRoomVO selectAppBizClinicRoomById(String clinicId) {
|
|
|
String currentUserId = LoginUserStrategy.tr.getCurrentUserId();
|
|
String currentUserId = LoginUserStrategy.tr.getCurrentUserId();
|
|
|
- return baseRepository.selectAppBizClinicRoomById(clinicId,currentUserId);
|
|
|
|
|
|
|
+ return baseRepository.selectAppBizClinicRoomById(clinicId, currentUserId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @description: 供Ai查询手术输注信息插件
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/8/29
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public BizClinicAndDeviceVO selectClinicAndDeviceByClinicId(String clinicId) {
|
|
|
|
|
+ return baseRepository.selectClinicAndDeviceByClinicId(clinicId);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param clinicId
|
|
|
|
|
+ * @description: 供Ai查询最后一次问卷详情插件
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/8/29
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public BizClinicAndQuestionVO selectClinicAndQuestionByClinicId(String clinicId) {
|
|
|
|
|
+ BizClinicAndQuestionVO bizClinicAndQuestionVO = baseRepository.selectClinicAndQuestionByClinicId(clinicId);
|
|
|
|
|
+ List<BizWxDeptQuestionVO> questionAnswerList = BizQuestionAnswerMapper.INSTANCE.convertWxAppletVOList(bizClinicAndQuestionVO.getQuestion());
|
|
|
|
|
+ //填充回答
|
|
|
|
|
+ List<BizWxAppletQuestionAnswerEntity> answerContent = bizClinicAndQuestionVO.getContent();
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(answerContent) && CollectionUtil.isNotEmpty(questionAnswerList)) {
|
|
|
|
|
+ Map<String, BizWxDeptQuestionVO> questionMap = questionAnswerList.stream().collect(Collectors.groupingBy(BizWxDeptQuestionVO::getFieldName,
|
|
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), CollectionUtil::getFirst)));
|
|
|
|
|
+ for (BizWxAppletQuestionAnswerEntity answer : answerContent) {
|
|
|
|
|
+ if (StrUtil.isEmpty(answer.getFiledName())) {
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+ BizWxDeptQuestionVO question = questionMap.get(answer.getFiledName());
|
|
|
|
|
+ if (ObjectUtil.isNotNull(question)) {
|
|
|
|
|
+ question.setAnswer(answer.getContent());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ bizClinicAndQuestionVO.setQuestionList(questionAnswerList);
|
|
|
|
|
+ return bizClinicAndQuestionVO;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @param clinicId
|
|
|
|
|
+ * @description: 供Ai查询手术信息查询最后一次镇痛评价插件
|
|
|
|
|
+ * @author wangzl
|
|
|
|
|
+ * @date 2025/8/29
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public BizClinicAndAssessmentVO selectClinicAndAssessmentByClinicId(String clinicId) {
|
|
|
|
|
+ return baseRepository.selectClinicAndAssessmentByClinicId(clinicId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|