|
|
|
@ -28,8 +28,6 @@ import java.util.stream.Collectors;
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService {
|
|
|
|
|
|
|
|
|
|
private final DiagnosisResultService diagnosisResultService;
|
|
|
|
|
|
|
|
|
|
private final DiagnosisPrimaryService diagnosisPrimaryService;
|
|
|
|
|
|
|
|
|
|
private final AskPatientAnswerService askPatientAnswerService;
|
|
|
|
@ -54,35 +52,9 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
|
|
|
|
|
|
|
|
|
|
private final DiseaseTreatmentPlanDrugService diseaseTreatmentPlanDrugService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void finishAsk(FinishAskReqVO reqVO) {
|
|
|
|
|
// 首先保存诊断结果
|
|
|
|
|
DiagnosisResult diagnosisResult = new DiagnosisResult();
|
|
|
|
|
diagnosisResult.setProcessId(reqVO.getProcessId());
|
|
|
|
|
// 最终诊断结果,从初步诊断中获取
|
|
|
|
|
List<DiagnosisPrimary> list = diagnosisPrimaryService.lambdaQuery()
|
|
|
|
|
.eq(DiagnosisPrimary::getProcessId, reqVO.getProcessId())
|
|
|
|
|
.eq(DiagnosisPrimary::getExcludeFlag, 0)
|
|
|
|
|
.list();
|
|
|
|
|
if (CollectionUtil.isEmpty(list)) {
|
|
|
|
|
throw new BusinessException("您还未进行有效的初步诊断!");
|
|
|
|
|
}
|
|
|
|
|
diagnosisResult.setFinalDiagnosis(list.stream().map(DiagnosisPrimary::getPrimaryDiagnosisId).collect(Collectors.toList()));
|
|
|
|
|
diagnosisResult.setTreatmentPlanType(reqVO.getTreatmentPlanType());
|
|
|
|
|
diagnosisResult.setTreatmentPlan(reqVO.getTreatmentPlan());
|
|
|
|
|
diagnosisResultService.save(diagnosisResult);
|
|
|
|
|
|
|
|
|
|
// 修改流程状态
|
|
|
|
|
processService.lambdaUpdate().set(Process::getStatus, 2).set(Process::getFinishAskTime,LocalDateTime.now())
|
|
|
|
|
.eq(Process::getId, reqVO.getProcessId()).update();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public DiagnosisResultResVO queryDiagnosisResult(String processId) {
|
|
|
|
|
// 首先查询到结果
|
|
|
|
|
DiagnosisResult diagnosisResult = diagnosisResultService.lambdaQuery()
|
|
|
|
|
.eq(DiagnosisResult::getProcessId, processId).last("limit 1").oneOpt().orElseThrow(() -> new BusinessException("未找到评估结果"));
|
|
|
|
|
DiagnosisResultResVO diagnosisResultResVO = new DiagnosisResultResVO();
|
|
|
|
|
diagnosisResultResVO.setId(processId);
|
|
|
|
|
Process process = processService.getById(processId);
|
|
|
|
@ -90,7 +62,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
|
|
|
|
|
MedicalRec medicalRec = medicalRecService.getById(process.getMedicalRecId());
|
|
|
|
|
List<Disease> diseasesList = diseaseService.listDiseaseWithType(medicalRec.getDiseaseId());
|
|
|
|
|
// 1.生成预期诊断结果
|
|
|
|
|
diagnosisResultResVO.setExpertDiagnosisResult(creatExpertDiagnosisResult(medicalRec, diagnosisResult, diseasesList));
|
|
|
|
|
diagnosisResultResVO.setExpertDiagnosisResult(creatExpertDiagnosisResult(medicalRec, diseasesList, processId));
|
|
|
|
|
// 2.生成初步诊断依据
|
|
|
|
|
diagnosisResultResVO.setBasisPrimaryResultResVO(createBasisPrimaryResult(patient, medicalRec, process));
|
|
|
|
|
// 3.生成证实诊断依据
|
|
|
|
@ -269,12 +241,18 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
|
|
|
|
|
/**
|
|
|
|
|
* 预期诊断结果
|
|
|
|
|
*/
|
|
|
|
|
private ExpertDiagnosisResultResVO creatExpertDiagnosisResult(MedicalRec medicalRec, DiagnosisResult diagnosisResult, List<Disease> diseasesList) {
|
|
|
|
|
private ExpertDiagnosisResultResVO creatExpertDiagnosisResult(MedicalRec medicalRec, List<Disease> diseasesList, String processId) {
|
|
|
|
|
ExpertDiagnosisResultResVO expertDiagnosisResultResVO = new ExpertDiagnosisResultResVO();
|
|
|
|
|
expertDiagnosisResultResVO.setDiagnosis(medicalRec.getSymptoms());
|
|
|
|
|
Set<String> expertDiseaseIdSet = diseasesList.stream().map(Disease::getId).collect(Collectors.toSet());
|
|
|
|
|
List<Disease> userDiagnosisDiseaseList = CollUtil.isEmpty(diagnosisResult.getFinalDiagnosis()) ? CollUtil.newArrayList()
|
|
|
|
|
: diseaseService.listByIds(diagnosisResult.getFinalDiagnosis());
|
|
|
|
|
// 从vp_diagnosis_primary中找到确认诊断时,确认的
|
|
|
|
|
List<DiagnosisPrimary> userPrimaryDiseaseList = diagnosisPrimaryService.lambdaQuery()
|
|
|
|
|
.eq(DiagnosisPrimary::getProcessId, processId)
|
|
|
|
|
// 确认的
|
|
|
|
|
.eq(DiagnosisPrimary::getExcludeFlag, 0).list();
|
|
|
|
|
|
|
|
|
|
List<Disease> userDiagnosisDiseaseList = CollUtil.isEmpty(userPrimaryDiseaseList) ? CollUtil.newArrayList()
|
|
|
|
|
: diseaseService.listByIds(userPrimaryDiseaseList.stream().map(DiagnosisPrimary::getPrimaryDiagnosisId).collect(Collectors.toList()));
|
|
|
|
|
// 用户的诊断
|
|
|
|
|
expertDiagnosisResultResVO.setUserDiagnosisResult(userDiagnosisDiseaseList.stream().map(e -> {
|
|
|
|
|
DiagnosisDiseaseResultNodeVO userNode = new DiagnosisDiseaseResultNodeVO();
|
|
|
|
|