Merge remote-tracking branch 'origin/dev_2.0.0' into dev_2.0.0

dev_2.0.0
xueqingkun 1 year ago
commit 7f7bd78bb2

@ -34,7 +34,7 @@ public class DiagnosisQaRecord extends Model<DiagnosisQaRecord> implements Seria
@ApiModelProperty("诊断进程ID")
private String processId;
@ApiModelProperty("问答类型:default,patient")
@ApiModelProperty("问答类型:default,patient,如果patient,说明是病历配置的回答,打勾")
private String answerType;
/**
@ -49,6 +49,12 @@ public class DiagnosisQaRecord extends Model<DiagnosisQaRecord> implements Seria
@ApiModelProperty("问题")
private String question;
/**
* ID
*/
@ApiModelProperty("问题ID")
private String questionLibraryId;
/**
* ID
*/

@ -2,6 +2,7 @@ package com.supervision.service;
import com.supervision.model.DiagnosisQaRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.vo.ask.DiagnosisQaRecordHistoryResVO;
import java.util.List;
@ -13,5 +14,5 @@ import java.util.List;
public interface DiagnosisQaRecordService extends IService<DiagnosisQaRecord> {
List<DiagnosisQaRecord> queryByProcessId(String processId);
List<DiagnosisQaRecordHistoryResVO> queryByProcessId(String processId);
}

@ -1,12 +1,26 @@
package com.supervision.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.model.AskTemplateQuestionLibrary;
import com.supervision.model.CommonDic;
import com.supervision.model.DiagnosisQaRecord;
import com.supervision.service.AskTemplateQuestionLibraryService;
import com.supervision.service.CommonDicService;
import com.supervision.service.DiagnosisQaRecordService;
import com.supervision.mapper.DiagnosisQaRecordMapper;
import com.supervision.vo.ask.DiagnosisQaRecordHistoryResVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author flevance
@ -14,13 +28,33 @@ import java.util.List;
* @createDate 2023-10-20 17:19:21
*/
@Service
@RequiredArgsConstructor
public class DiagnosisQaRecordServiceImpl extends ServiceImpl<DiagnosisQaRecordMapper, DiagnosisQaRecord>
implements DiagnosisQaRecordService{
@Override
public List<DiagnosisQaRecord> queryByProcessId(String processId) {
private final CommonDicService commonDicService;
return super.lambdaQuery().eq(DiagnosisQaRecord::getProcessId,processId).list();
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
@Override
public List<DiagnosisQaRecordHistoryResVO> queryByProcessId(String processId) {
List<DiagnosisQaRecord> list = this.lambdaQuery().eq(DiagnosisQaRecord::getProcessId, processId).list();
// 根据questionLibraryId找到对应的字典
Set<String> questionIdList = list.stream().map(DiagnosisQaRecord::getQuestionLibraryId).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
List<AskTemplateQuestionLibrary> askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(questionIdList);
Map<String, Long> questionLibraryMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, AskTemplateQuestionLibrary::getDictId));
List<CommonDic> commonDicList = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list();
Map<Long, CommonDic> dicMap = commonDicList.stream().collect(Collectors.toMap(CommonDic::getId, Function.identity()));
List<DiagnosisQaRecordHistoryResVO> resVOS = BeanUtil.copyToList(list, DiagnosisQaRecordHistoryResVO.class);
for (DiagnosisQaRecordHistoryResVO resVO : resVOS) {
Long dictId = questionLibraryMap.get(resVO.getQuestionLibraryId());
if (ObjectUtil.isNotEmpty(dictId)){
CommonDic commonDic = dicMap.get(dictId);
resVO.setCommonDic(commonDic);
}
}
return resVOS;
}
}

@ -0,0 +1,14 @@
package com.supervision.vo.ask;
import com.supervision.model.CommonDic;
import com.supervision.model.DiagnosisQaRecord;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class DiagnosisQaRecordHistoryResVO extends DiagnosisQaRecord {
private CommonDic commonDic;
}

@ -19,6 +19,16 @@ public class AncillaryRecordByResultDAO {
*/
private Integer basisConfirm;
/**
*
*/
private Integer recordBasisConfirmFlag;
/**
*
*/
private Integer recordBasisIdentificationFlag;
/**
*
*/

@ -14,6 +14,16 @@ public class PhysicalRecordByResultDAO {
*/
private Integer requireCheck;
/**
*
*/
private Integer recordBasisConfirmFlag;
/**
*
*/
private Integer recordBasisIdentificationFlag;
/**
*
*/

@ -28,6 +28,8 @@
t2.require_check_flag as requireCheck,
t2.basis_confirm_flag as basisConfirm,
t2.basis_identification_flag as basisIdentification,
t1.basis_confirm_flag as recordBasisConfirmFlag,
t1.basis_identification_flag as recordBasisIdentificationFlag,
t1.id as recordId,
t3.id as itemId
from vp_diagnosis_ancillary_record t1

@ -31,7 +31,8 @@
select (IF(t4.location_name IS NULL, t3.tool_name,
CONCAT_WS(' | ', t3.tool_name, t4.location_name))) AS toolLocationName,
t1.id as recordId,
t2.require_check_flag as requireCheck,
t1.basis_confirm_flag as recordBasisConfirmFlag,
t1.basis_identification_flag as recordBasisIdentificationFlag,
t2.basis_confirm_flag as basisConfirm,
t2.basis_identification_flag as basisIdentification,
t3.id as toolId,

@ -10,6 +10,7 @@
<result property="answerId" column="answer_id" jdbcType="VARCHAR"/>
<result property="answerType" column="answer_type" jdbcType="VARCHAR"/>
<result property="question" column="question" jdbcType="VARCHAR"/>
<result property="questionLibraryId" column="question_library_id" jdbcType="VARCHAR"/>
<result property="questionWavId" column="question_wav_id" jdbcType="VARCHAR"/>
<result property="answer" column="answer" jdbcType="VARCHAR"/>
<result property="answerWavId" column="answer_wav_id" jdbcType="VARCHAR"/>
@ -22,7 +23,7 @@
<sql id="Base_Column_List">
id
,question_answer_type
,process_id,question,question_answer_id
,process_id,question,question_answer_id,questionLibraryId,
question_wav_id,answer,answer_wav_id,
create_user_id,create_time,update_user_id,
update_time

@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
import com.supervision.exception.BusinessException;
import com.supervision.model.DiagnosisQaRecord;
import com.supervision.service.DiagnosisQaRecordService;
import com.supervision.vo.ask.DiagnosisQaRecordHistoryResVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
@ -23,7 +24,7 @@ public class DiagnosisQaRecordController {
private final DiagnosisQaRecordService diagnosisQaRecordService;
@ApiOperation("查询问诊历史记录")
@GetMapping("queryHistoryList")
public List<DiagnosisQaRecord> queryDiagnosisHistoryQaList(String processId){
public List<DiagnosisQaRecordHistoryResVO> queryDiagnosisHistoryQaList(String processId){
if (StrUtil.isEmpty(processId)){
throw new BusinessException("processId is empty");
}

@ -92,7 +92,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
// 2.生成初步诊断依据
diagnosisResultResVO.setBasisPrimaryResultResVO(createBasisPrimaryResult(patient, medicalRec, process));
// 3.生成证实诊断依据
diagnosisResultResVO.setBasisConfirmResultResVO(createBasisConfirmResult(medicalRec, processId, diseasesList));
diagnosisResultResVO.setBasisConfirmResultResVO(createBasisConfirmResult(medicalRec, processId));
// 4.生成鉴别诊断依据
diagnosisResultResVO.setBasisIdentificationResult(createBasisIdentificationResult(medicalRec, processId));
// 5.全面检查-(暂无相关数据) 后面再看
@ -155,7 +155,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
nodeResVO.setRecordName(e.getToolLocationName());
nodeResVO.setRecordId(e.getRecordId());
// 如果是必做的,则是正确
nodeResVO.setCorrect(null == e.getBasisIdentification() ? Integer.valueOf(0) : e.getBasisIdentification());
nodeResVO.setCorrect(Objects.equals(e.getBasisIdentification(), e.getRecordBasisIdentificationFlag()) ? 1 : 0);
return nodeResVO;
}).collect(Collectors.toList());
// 2.3 获取辅助检查
@ -163,7 +163,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
List<BasisDiagnosisNodeResVO> collect = ancillaryRecordList.stream()
.filter(distinctPredicateNotNull(AncillaryRecordByResultDAO::getItemName)).map(e -> {
BasisDiagnosisNodeResVO nodeResVO = new BasisDiagnosisNodeResVO();
nodeResVO.setCorrect(null == e.getBasisIdentification() ? Integer.valueOf(0) : e.getBasisIdentification());
nodeResVO.setCorrect(Objects.equals(e.getBasisIdentification(), e.getRecordBasisIdentificationFlag()) ? 1 : 0);
nodeResVO.setRecordId(e.getRecordId());
nodeResVO.setRecordName(e.getItemName());
nodeResVO.setType(2);
@ -175,11 +175,11 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
return basisIdentificationResultResVO;
}
private BasisConfirmResultResVO createBasisConfirmResult(MedicalRec medicalRec, String processId, List<Disease> diseasesList) {
private BasisConfirmResultResVO createBasisConfirmResult(MedicalRec medicalRec, String processId) {
BasisConfirmResultResVO basisConfirmResultResVO = new BasisConfirmResultResVO();
// 正式诊断依据,来自于medicalRec的ConfirmDiagnosisCriteria
// 证实诊断依据,来自于medicalRec的ConfirmDiagnosisCriteria
basisConfirmResultResVO.setConfirmingDiagnosis(medicalRec.getConfirmDiagnosisCriteria());
// 2.2 获取体格检查
// 2.2 获取体格检查的证实诊断依据
List<PhysicalRecordByResultDAO> physicalRecordList = diagnosisPhysicalRecordService.queryPhysicalResultByProcessId(processId);
List<BasisDiagnosisNodeResVO> nodeList = physicalRecordList.stream()
.filter(distinctPredicateNotNull(PhysicalRecordByResultDAO::getToolLocationName)).map(e -> {
@ -187,16 +187,16 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
nodeResVO.setType(1);
nodeResVO.setRecordName(e.getToolLocationName());
nodeResVO.setRecordId(e.getRecordId());
// 如果是必做的,则是正确
nodeResVO.setCorrect(null == e.getBasisConfirm() ? Integer.valueOf(0) : e.getBasisConfirm());
nodeResVO.setCorrect(Objects.equals(e.getBasisConfirm(), e.getRecordBasisConfirmFlag()) ? 1 : 0);
return nodeResVO;
}).collect(Collectors.toList());
// 2.3 获取辅助检查
List<AncillaryRecordByResultDAO> ancillaryRecordList = diagnosisAncillaryRecordService.queryAncillaryResultByProcessId(processId);
List<BasisDiagnosisNodeResVO> collect = ancillaryRecordList.stream()
.filter(distinctPredicateNotNull(AncillaryRecordByResultDAO::getItemName)).map(e -> {
BasisDiagnosisNodeResVO nodeResVO = new BasisDiagnosisNodeResVO();
nodeResVO.setCorrect(null == e.getBasisConfirm() ? Integer.valueOf(0) : e.getBasisConfirm());
nodeResVO.setCorrect(Objects.equals(e.getBasisConfirm(), e.getRecordBasisConfirmFlag()) ? 1 : 0);
nodeResVO.setRecordId(e.getRecordId());
nodeResVO.setRecordName(e.getItemName());
nodeResVO.setType(2);

@ -66,7 +66,7 @@ public class AskServiceImpl implements AskService {
// 这里调用京东数字人接口首先根据token获取房间号
String roomId = HumanUtil.queryRoomId(talkReqVO.getRoomKey(), talkReqVO.getRoomToken());
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), "您好,我没有听懂您说什么");
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么");
}
TalkResultResVO talkResultResVO = new TalkResultResVO();
// 这里校验,rasa回复的结果是不是action
@ -88,7 +88,7 @@ public class AskServiceImpl implements AskService {
if (ObjectUtil.isEmpty(library)) {
log.info("{}:未从问题库中找到,回答未识别语句", rasaResult);
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), "您好,我没有听懂您说什么");
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), null, "您好,我没有听懂您说什么");
} else {
AskPatientAnswer askPatientAnswer = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getPatientId, process.getPatientId())
.eq(AskPatientAnswer::getLibraryQuestionId, library.getId()).last("limit 1").one();
@ -100,12 +100,12 @@ public class AskServiceImpl implements AskService {
String resText = library.getDefaultAnswer();
HumanUtil.textDriven(resText, roomId);
// 保存记录
saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), resText);
saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), library, resText);
log.info("{}:找到了默认答案:{}", rasaResult, talkReqVO.getText());
} else {
log.info("{}:没有从默认答案中找到找到默认内容,回复未识别语句", rasaResult);
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), "您好,我没有听懂您说什么");
saveQaRecord(talkReqVO.getProcessId(), "default", null, talkReqVO.getText(), library, "您好,我没有听懂您说什么");
}
} else {
if (CollUtil.isEmpty(askPatientAnswer.getAnswer())) {
@ -115,7 +115,7 @@ public class AskServiceImpl implements AskService {
log.info("{}:病历配置的回答:{}:为空不为空不为空,但在获取的时候,答案为空,开始回复默认语句,默认语句内容:{}", rasaResult, askPatientAnswer.getId(), resText);
HumanUtil.textDriven(resText, roomId);
// 保存记录
saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), resText);
saveQaRecord(talkReqVO.getProcessId(), "default", library.getId(), talkReqVO.getText(), library, resText);
} else {
log.info("{}:病历配置的回答:{}:为空不为空,但在获取的时候,答案为空,但是获取默认语句也为空,那么回复未识别语句", rasaResult, askPatientAnswer.getId());
HumanUtil.textDriven("您好,我没有听懂您说什么", roomId);
@ -126,7 +126,7 @@ public class AskServiceImpl implements AskService {
log.info("{}:找到了病历配置的回答语句:{},回答内容:{}", rasaResult, askPatientAnswer.getId(), resText);
HumanUtil.textDriven(resText, roomId);
// 保存记录
saveQaRecord(talkReqVO.getProcessId(), "patient", askPatientAnswer.getId(), talkReqVO.getText(), resText);
saveQaRecord(talkReqVO.getProcessId(), "patient", askPatientAnswer.getId(), talkReqVO.getText(), library, resText);
}
}
@ -136,11 +136,14 @@ public class AskServiceImpl implements AskService {
return talkResultResVO;
}
private void saveQaRecord(String processId, String answerType, String answerId, String question, String resText) {
private void saveQaRecord(String processId, String answerType, String answerId, String question, AskTemplateQuestionLibrary library, String resText) {
DiagnosisQaRecord record = new DiagnosisQaRecord();
record.setProcessId(processId);
record.setAnswerType(answerType);
record.setAnswerId(answerId);
if (ObjectUtil.isNotEmpty(library)) {
record.setQuestionLibraryId(library.getId());
}
record.setQuestion(question);
record.setAnswer(resText);
record.setCreateUserId(UserUtil.getUser().getId());

Loading…
Cancel
Save