|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.supervision.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.supervision.exception.BusinessException;
|
|
|
|
@ -12,12 +13,11 @@ import com.supervision.service.*;
|
|
|
|
|
import com.supervision.util.UserUtil;
|
|
|
|
|
import com.supervision.vo.ask.DiagnosisPhysicalRecordVo;
|
|
|
|
|
import com.supervision.vo.ask.AskPhysicalHistoryResVO;
|
|
|
|
|
import com.supervision.vo.ask.DiagnosisPrimaryVO;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.util.Comparator;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
import java.util.function.Function;
|
|
|
|
|
import java.util.function.Predicate;
|
|
|
|
@ -37,10 +37,14 @@ public class AskPhysicalServiceImpl implements AskPhysicalService {
|
|
|
|
|
|
|
|
|
|
private final ProcessService processService;
|
|
|
|
|
|
|
|
|
|
private final DiagnosisPrimaryRelationService diagnosisPrimaryRelationService;
|
|
|
|
|
|
|
|
|
|
private final DiagnosisPrimaryService diagnosisPrimaryService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<ConfigPhysicalToolResVO> queryPhysicalToolList() {
|
|
|
|
|
|
|
|
|
|
return toolService.queryPhysicalToolList();
|
|
|
|
|
return toolService.queryPhysicalToolList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -101,14 +105,29 @@ public class AskPhysicalServiceImpl implements AskPhysicalService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<AskPhysicalHistoryResVO> queryAskPhysicalHistory(String processId) {
|
|
|
|
|
return diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId).stream()
|
|
|
|
|
.filter(distinctPredicateNotNull(e->e.getToolId()+e.getLocationId())).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<AskPhysicalHistoryResVO> res = diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId);
|
|
|
|
|
// 这里把初步诊断的疾病名称填充进去
|
|
|
|
|
List<DiagnosisPrimaryRelation> relationList = diagnosisPrimaryRelationService.lambdaQuery().eq(DiagnosisPrimaryRelation::getType, 2)
|
|
|
|
|
.eq(DiagnosisPrimaryRelation::getProcessId, processId).list();
|
|
|
|
|
Map<String, List<DiagnosisPrimaryRelation>> relationMap = relationList.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getRelationId));
|
|
|
|
|
|
|
|
|
|
// 找到process对应的所有的初步诊断
|
|
|
|
|
List<DiagnosisPrimaryVO> diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId);
|
|
|
|
|
Map<String, String> diseaseNameMap = diagnosisPrimaryVOS.stream().collect(Collectors.toMap(DiagnosisPrimaryVO::getId, DiagnosisPrimaryVO::getPrimaryDiseaseName));
|
|
|
|
|
for (AskPhysicalHistoryResVO node : res) {
|
|
|
|
|
List<DiagnosisPrimaryRelation> temp = relationMap.get(node.getId());
|
|
|
|
|
List<String> diseaseNameList = new ArrayList<>();
|
|
|
|
|
if (CollUtil.isNotEmpty(temp)) {
|
|
|
|
|
for (DiagnosisPrimaryRelation relation : temp) {
|
|
|
|
|
String diseaseName = diseaseNameMap.get(relation.getPrimaryId());
|
|
|
|
|
diseaseNameList.add(diseaseName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
node.setResult(StrUtil.join(";", diseaseNameList));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static <K> Predicate<K> distinctPredicateNotNull(Function<K,Object> function){
|
|
|
|
|
ConcurrentHashMap<Object, Boolean> map = new ConcurrentHashMap<>();
|
|
|
|
|
return t-> null != function.apply(t) && null == map.putIfAbsent(function.apply(t), true);
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|