package com.supervision.service.impl; import com.supervision.exception.BusinessException; import com.supervision.model.*; import com.supervision.model.Process; import com.supervision.vo.ask.AskAncillaryHistoryResVO; import com.supervision.pojo.vo.AskAncillaryResultReqVO; import com.supervision.pojo.vo.ConfigAncillaryItemResVO; import com.supervision.service.*; import com.supervision.util.UserUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class AskAncillaryServiceImpl implements AskAncillaryService { private final ProcessService processService; private final DiseaseAncillaryService diseaseAncillaryService; private final ConfigAncillaryItemService ancillaryItemService; private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService; private final MedicalRecService medicalRecService; @Override public List queryAncillaryItemList() { List list = ancillaryItemService.lambdaQuery().list(); return list.stream().collect(Collectors.groupingBy(ConfigAncillaryItem::getType)).entrySet().stream().map(e -> { ConfigAncillaryItemResVO item = new ConfigAncillaryItemResVO(); item.setItemName(e.getKey()); item.setItemList(e.getValue()); return item; }).collect(Collectors.toList()); } @Override public DiagnosisAncillaryRecord execAskAncillaryResult(AskAncillaryResultReqVO reqVO) { // 首先根据process_id查新到流程ID Process process = Optional.ofNullable(processService.getById(reqVO.getProcessId())).orElseThrow(() -> new BusinessException("未找到流程ID")); // 找到对应的项目的检查结果 DiseaseAncillary diseaseAncillary = diseaseAncillaryService.lambdaQuery().eq(DiseaseAncillary::getMedicalRecId, process.getMedicalRecId()).eq(DiseaseAncillary::getItemId, reqVO.getItemId()) .oneOpt().orElseGet(() -> { DiseaseAncillary get = new DiseaseAncillary(); get.setResult("无相关资讯"); return get; }); DiagnosisAncillaryRecord record = new DiagnosisAncillaryRecord(); record.setProcessId(process.getId()); record.setAncillaryId(diseaseAncillary.getId()); record.setItemId(reqVO.getItemId()); record.setPrimaryId(reqVO.getPrimaryId()); record.setResult(diseaseAncillary.getResult()); record.setCreateUserId(UserUtil.getUser().getId()); record.setUpdateUserId(UserUtil.getUser().getId()); record.insert(); return record; } @Override public List queryAskAncillaryHistory(String processId) { return diagnosisAncillaryRecordService.queryAncillaryRecord(processId); } }