|
@@ -5,7 +5,10 @@ import com.diagbot.dto.IndicationDTO;
|
|
|
import com.diagbot.dto.PushBaseDTO;
|
|
|
import com.diagbot.dto.PushDTO;
|
|
|
import com.diagbot.dto.RespDTO;
|
|
|
+import com.diagbot.entity.ConceptDetail;
|
|
|
+import com.diagbot.enums.ConceptTypeEnum;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.RespDTOUtil;
|
|
|
import com.diagbot.vo.IndicationPushVO;
|
|
|
import com.diagbot.vo.PushVO;
|
|
@@ -17,6 +20,7 @@ import org.springframework.stereotype.Component;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @Description:
|
|
@@ -29,6 +33,8 @@ public class PushFacade {
|
|
|
private AssembleFacade assembleFacade;
|
|
|
@Autowired
|
|
|
private CdssCoreClient cdssCoreClient;
|
|
|
+ @Autowired
|
|
|
+ private ConceptInfoFacade conceptInfoFacade;
|
|
|
|
|
|
/**
|
|
|
* 基础推理-症状、查体、化验、辅检、诊断
|
|
@@ -105,13 +111,18 @@ public class PushFacade {
|
|
|
disItem1.setName("急性胰腺炎");
|
|
|
dis.add(disItem1);
|
|
|
PushBaseDTO disItem2 = new PushBaseDTO();
|
|
|
- disItem2.setName("咳嗽");
|
|
|
+ disItem2.setName("无晶状体眼");
|
|
|
dis.add(disItem2);
|
|
|
Map<String, List<PushBaseDTO>> disMap = new HashMap<>();
|
|
|
disMap.put("可能诊断", dis);
|
|
|
data.setDis(disMap);
|
|
|
//TODO 出参映射
|
|
|
data = assembleFacade.assemblePushDTO(data, pushVO.getHospitalId());
|
|
|
+ //TODO 是否有静态信息
|
|
|
+ if (pushVO.getGetStaticKnowledge() != null
|
|
|
+ && pushVO.getGetStaticKnowledge().equals(1)) {
|
|
|
+ data = getStaticKnoledge(data);
|
|
|
+ }
|
|
|
return data;
|
|
|
}
|
|
|
|
|
@@ -159,4 +170,81 @@ public class PushFacade {
|
|
|
IndicationDTO indicationDTO = resp.data;
|
|
|
return indicationDTO;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 推理结果标志是否包含静态知识
|
|
|
+ *
|
|
|
+ * @param pushDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public PushDTO getStaticKnoledge(PushDTO pushDTO) {
|
|
|
+ List<String> conceptNameList = Lists.newLinkedList();
|
|
|
+ List<PushBaseDTO> conceptBaseList = Lists.newArrayList();
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getLis())) {
|
|
|
+ conceptBaseList.addAll(pushDTO.getLis());
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getPacs())) {
|
|
|
+ conceptBaseList.addAll(pushDTO.getPacs());
|
|
|
+ }
|
|
|
+ if (pushDTO.getDis() != null) {
|
|
|
+ for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getDis().entrySet()) {
|
|
|
+ if (ListUtil.isNotEmpty(entry.getValue())) {
|
|
|
+ conceptBaseList.addAll(entry.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getMedicines())) {
|
|
|
+ conceptBaseList.addAll(pushDTO.getMedicines());
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getOperations())) {
|
|
|
+ conceptBaseList.addAll(pushDTO.getOperations());
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(conceptBaseList)) {
|
|
|
+ conceptNameList = conceptBaseList.stream()
|
|
|
+ .map(i -> i.getName())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ Map<String, List<ConceptDetail>> conceptDetailMap = conceptInfoFacade.getDetailByConcept(conceptNameList);
|
|
|
+ if (pushDTO.getDis() != null) {
|
|
|
+ for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getDis().entrySet()) {
|
|
|
+ if (ListUtil.isNotEmpty(entry.getValue())) {
|
|
|
+ entry.getValue().forEach(item -> {
|
|
|
+ if (conceptDetailMap.containsKey(item.getName() + "_" + ConceptTypeEnum.getName(1))) {
|
|
|
+ item.setHasInfo(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getLis())) {
|
|
|
+ pushDTO.getLis().forEach(item -> {
|
|
|
+ if (conceptDetailMap.containsKey(item.getName() + "_" + ConceptTypeEnum.getName(3))) {
|
|
|
+ item.setHasInfo(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getPacs())) {
|
|
|
+ pushDTO.getPacs().forEach(item -> {
|
|
|
+ if (conceptDetailMap.containsKey(item.getName() + "_" + ConceptTypeEnum.getName(5))) {
|
|
|
+ item.setHasInfo(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getMedicines())) {
|
|
|
+ pushDTO.getMedicines().forEach(item -> {
|
|
|
+ if (conceptDetailMap.containsKey(item.getName() + "_" + ConceptTypeEnum.getName(2))) {
|
|
|
+ item.setHasInfo(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(pushDTO.getOperations())) {
|
|
|
+ pushDTO.getOperations().forEach(item -> {
|
|
|
+ if (conceptDetailMap.containsKey(item.getName() + "_" + ConceptTypeEnum.getName(6))) {
|
|
|
+ item.setHasInfo(1);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return pushDTO;
|
|
|
+ }
|
|
|
}
|