manage: fix bug

dev_2.1.0
xueqingkun 1 year ago
parent 37f626f38d
commit 1c89b2fca6

@ -84,6 +84,7 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
@Transactional(rollbackFor = Exception.class)
public void createMedicalRec(MedicalRecManageVO reqVO) {
assertDefaultAnswer(reqVO.getDefaultQaList());
// 然后保存病历
MedicalRec medicalRec = BeanUtil.toBean(reqVO, MedicalRec.class);
medicalRec.setDiseaseId(reqVO.getDiseaseId());
@ -95,6 +96,21 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
saveAskPatientAnswer(reqVO.getDefaultQaList(), medicalRec.getId(), 0);
}
private void assertDefaultAnswer(List<MedicalRecQaVO> qaList) {
Assert.notEmpty(qaList, "默认问题列表不能为空");
CommonDic systemDic = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").eq(CommonDic::getCode, "system").one();
Assert.notNull(systemDic, "未找到系统问题");
List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.lambdaQuery().eq(AskTemplateQuestionLibrary::getDictId, systemDic.getId()).list();
if (CollUtil.isEmpty(askTemplateQuestionLibraryList)){
return;
}
Set<String> libraryIds = qaList.stream().map(MedicalRecQaVO::getLibraryQuestionId).collect(Collectors.toSet());
for (AskTemplateQuestionLibrary askTemplateQuestionLibrary : askTemplateQuestionLibraryList) {
Assert.isTrue(libraryIds.contains(askTemplateQuestionLibrary.getId()), "默认问题未配置");
}
}
private void saveAskPatientAnswer(List<MedicalRecQaVO> qaList,String medicalRecId,Integer answerType){
if (CollUtil.isEmpty(qaList)) {
@ -171,6 +187,9 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
if (!StrUtil.equals(medicalRec.getDiseaseId(), reqVO.getDiseaseId())) {
throw new BusinessException("修改病例时,不允许修改疾病");
}
assertDefaultAnswer(reqVO.getDefaultQaList());
BeanUtil.copyProperties(reqVO, medicalRec, "id","patientId");
medicalRec.updateById();
// 然后修改问答
@ -178,7 +197,9 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
List<AskPatientAnswer> existQAList = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRec.getId()).list();
Map<String, AskPatientAnswer> existQAMap = existQAList.stream().collect(Collectors.toMap(AskPatientAnswer::getId, Function.identity()));
for (MedicalRecQaVO medicalRecQaVO : reqVO.getQaList()) {
Collection<MedicalRecQaVO> medicalRecQaVOS = CollUtil.addAll(CollUtil.newArrayList(), reqVO.getQaList());
medicalRecQaVOS.addAll(reqVO.getDefaultQaList());
for (MedicalRecQaVO medicalRecQaVO : medicalRecQaVOS) {
if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) {
throw new BusinessException("问题ID不能为空");
}
@ -230,7 +251,7 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO();
medicalRecQaVO.setId(e.getId());
medicalRecQaVO.setLibraryQuestionId(e.getLibraryQuestionId());
medicalRecQaVO.setAnswerType(Objects.nonNull(e.getAnswerType()) ? 1 : e.getAnswerType());
medicalRecQaVO.setAnswerType(Objects.isNull(e.getAnswerType()) ? 1 : e.getAnswerType());
// 病历的回答
medicalRecQaVO.setMedicalRecAnswer(e.getAnswer());
medicalRecQaVO.setAnswerResourceId(e.getAnswerResourceId());
@ -302,7 +323,7 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService {
if (StrUtil.isNotEmpty(medicalRecId)) {
List<AskPatientAnswer> askPatientAnswerList = askPatientAnswerService.lambdaQuery()
.eq(AskPatientAnswer::getMedicalId, medicalRecId).eq(AskPatientAnswer::getAnswerType, "0").list();
.eq(AskPatientAnswer::getMedicalId, medicalRecId).eq(AskPatientAnswer::getAnswerType, 0).list();
final Map<String, AskTemplateQuestionLibrary> libraryMap = new HashMap<>();
if (CollUtil.isNotEmpty(askPatientAnswerList)){

@ -1,6 +1,7 @@
package com.supervision.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.supervision.model.AskPatientAnswer;
import com.supervision.model.MedicalRec;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.vo.manage.MedicalRecPageResVO;

@ -18,6 +18,9 @@ public class MedicalRecPageResVO {
private String patientSelfDesc;
//患者头像
private String patientHeadPic;
//患者静默视频
private String patientSilentVideo;
/**
* ->
*/

@ -28,6 +28,12 @@ public class DiagnoseProcessResVo {
@ApiModelProperty("主诉")
private String patientSelfDesc;
@ApiModelProperty("患者头像")
private String patientHeadPic;
@ApiModelProperty("患者静默视频")
private String patientSilentVideo;
@ApiModelProperty("病人id")
private String patientId;

@ -36,6 +36,7 @@
mre.patient_self_desc as patientSelfDesc,
mre.patient_id as patientId,
mre.patient_name as name,
mre.patient_head_pic as patientHeadPic,
mre.patient_age as age,
mre.patient_gender as gender,
pat.resource_id as resourceId

@ -159,7 +159,7 @@ public class AskServiceImpl implements AskService {
log.info("{}:未从问题库中找到,回答未识别语句", rasaResult);
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(defaultNoMatchId));
talkResultResVO.setAnswerMessage(defaultNoMatchAnswerMessage);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么");
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, defaultNoMatchAnswerMessage);
} else {
AskPatientAnswer askPatientAnswer = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, process.getMedicalRecId())
@ -174,9 +174,9 @@ public class AskServiceImpl implements AskService {
saveQaRecord(talkReqVO.getProcessId(), "patient", askPatientAnswer.getId(), talkReqVO.getText(), library, resText);
}else {
log.info("{}:病历配置,从AskPatientAnswer中未找到回答结果,回复未识别到语句", rasaResult);
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(library.getDefaultAnswerResourceId()));
talkResultResVO.setAnswerMessage(library.getDefaultAnswer());
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), library, "您好,我没有听懂您说什么");
talkResultResVO.setVideoBase64(getAnswerVideoBase64OrDefault(defaultNoMatchId));
talkResultResVO.setAnswerMessage(defaultNoMatchAnswerMessage);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), library, defaultNoMatchAnswerMessage);
}
}
}

@ -1,13 +1,11 @@
package com.supervision.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.DiagnosisPrimary;
import com.supervision.service.DiagnoseHallService;
import com.supervision.service.DiagnosisPrimaryService;
import com.supervision.service.MedicalRecService;
import com.supervision.service.ProcessService;
import com.supervision.model.*;
import com.supervision.service.*;
import com.supervision.vo.ask.DiagnosisPrimaryVO;
import com.supervision.vo.manage.MedicalRecPageResVO;
import com.supervision.vo.result.DiagnoseProcessReqVo;
@ -16,9 +14,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@ -34,6 +30,12 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService {
private final DiagnosisPrimaryService diagnosisPrimaryService;
private final AskPatientAnswerService askPatientAnswerService;
private final CommonDicService commonDicService;
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
@Override
public IPage<DiagnoseProcessResVo> queryDiagnoseProcessPageList(Integer pageNum, Integer pageSize,
@ -54,20 +56,59 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService {
Map<String, List<DiagnosisPrimaryVO>> diagnosisPrimaryVOsMap = diagnosisPrimaryVOS.stream().collect(Collectors.groupingBy(DiagnosisPrimary::getProcessId));
// 3.把疾病名填充到诊断列表中
List<String> medicalRecIds = records.stream().map(DiagnoseProcessResVo::getMedicalRecId).filter(Objects::nonNull).collect(Collectors.toList());
Map<String, AskPatientAnswer> askPatientAnswerMap = queryAskPatientSilentVideoAnswer(medicalRecIds);
diagnoseProcessResVoPage.getRecords().forEach(vo->{
List<DiagnosisPrimaryVO> list = diagnosisPrimaryVOsMap.getOrDefault(vo.getProcessId(),new ArrayList<>());
vo.setPrimaryDiseaseNameList(list.stream().map(DiagnosisPrimaryVO::getPrimaryDiseaseName).distinct().collect(Collectors.toList()));
vo.setPatientSilentVideo(askPatientAnswerMap.getOrDefault(vo.getMedicalRecId(),new AskPatientAnswer()).getAnswerResourceId());
});
return diagnoseProcessResVoPage;
}
@Override
public IPage<MedicalRecPageResVO> queryMedicalRecPageList(Integer pageNum, Integer pageSize) {
return medicalRecService.queryMedicalRecManagePage(null, null, null, pageNum, pageSize);
IPage<MedicalRecPageResVO> medicalRecPageResVOIPage = medicalRecService.queryMedicalRecManagePage(null, null, null, pageNum, pageSize);
if (CollUtil.isEmpty(medicalRecPageResVOIPage.getRecords())){
return medicalRecPageResVOIPage;
}
List<String> medicalRecIds = medicalRecPageResVOIPage.getRecords().stream().map(MedicalRecPageResVO::getMedicalId).collect(Collectors.toList());
Map<String, AskPatientAnswer> askPatientAnswerMap = queryAskPatientSilentVideoAnswer(medicalRecIds);
medicalRecPageResVOIPage.getRecords().forEach(vo->{
vo.setPatientSilentVideo(askPatientAnswerMap.getOrDefault(vo.getMedicalId(),new AskPatientAnswer()).getAnswerResourceId());
});
return medicalRecPageResVOIPage;
}
/**
*
* @param medicalRecIds
* @return
*/
Map<String,AskPatientAnswer> queryAskPatientSilentVideoAnswer(List<String> medicalRecIds){
if (CollUtil.isEmpty(medicalRecIds)){
return new HashMap<>();
}
CommonDic one = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").eq(CommonDic::getCode, "system").one();
Assert.notNull(one,"字典项目未配置");
AskTemplateQuestionLibrary silentInfo = askTemplateQuestionLibraryService.lambdaQuery()
.eq(AskTemplateQuestionLibrary::getDictId, one.getId()).eq(AskTemplateQuestionLibrary::getDescription, "静默视频").one();
Assert.notNull(silentInfo,"静默视频未配置");
List<AskPatientAnswer> askPatientAnswerList = askPatientAnswerService.lambdaQuery()
.in(AskPatientAnswer::getMedicalId, medicalRecIds)
.eq(AskPatientAnswer::getLibraryQuestionId, silentInfo.getId()).list();
if (CollUtil.isEmpty(askPatientAnswerList)){
return new HashMap<>();
}
return askPatientAnswerList.stream().collect(Collectors.toMap(AskPatientAnswer::getMedicalId, o -> o));
}
}

Loading…
Cancel
Save