Parcourir la source

Merge remote-tracking branch 'origin/master'

zhoutg il y a 4 ans
Parent
commit
7ff54dca9f

+ 30 - 0
src/main/java/com/diagbot/entity/node/LisBigName.java

@@ -0,0 +1,30 @@
+package com.diagbot.entity.node;
+
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.Getter;
+import lombok.Setter;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Property;
+
+@Setter
+@Getter
+@NodeEntity(label = "化验套餐名称")
+public class LisBigName extends BaseNode  {
+
+	@Property(name = "单位")
+	private String unit;
+
+	@Property(name = "最小值")
+	private Double minval;
+
+	@Property(name = "最大值")
+	private Double maxval;
+
+	@Property(name = "范围")
+	private Integer range;
+
+	@Property(name = "静态知识")
+	private String knowledge;
+
+
+}

+ 1 - 1
src/main/java/com/diagbot/entity/node/YiBaoDiseaseName.java

@@ -39,7 +39,7 @@ public class YiBaoDiseaseName extends BaseNode  {
 	private Set<Vital> vitals = new HashSet<>();
 
 	@Relationship(type = "医保疾病名称相关化验套餐名称", direction = Relationship.OUTGOING)
-	private Set<LisName> lisnames = new HashSet<>();
+	private Set<LisBigName> lisnames = new HashSet<>();
 
 	@Relationship(type = "医保疾病名称相关辅助检查名称", direction = Relationship.OUTGOING)
 	private Set<PacsName> pacsnames = new HashSet<>();

+ 4 - 0
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -302,9 +302,13 @@ public class CommonFacade {
                 if (ListUtil.isNotEmpty(cjiefClinicals)) {
                     ChiefPushVo chiefPushVo = new ChiefPushVo();
                     chiefPushVo.setSymptoms(cjiefClinicals);
+                    if(ListUtil.isNotEmpty(chiefLabel.getPds())){
+                        chiefPushVo.setPds(chiefLabel.getPds());
+                    }
                     pushVO.setChiefPushVo(chiefPushVo);
                 }
             }
+
         }
         if(presentLabel != null){
             PresentPushVo presentPushVo = new PresentPushVo();

+ 11 - 5
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -12,6 +12,7 @@ import com.diagbot.enums.RedisEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
+import com.diagbot.model.entity.PD;
 import com.diagbot.repository.*;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
@@ -252,6 +253,11 @@ public class NeoFacade {
     public List<NeoPushDTO> getPush(NeoPushVO pushVO) {
         Double age = pushVO.getAgeNum();
         Integer sex = pushVO.getSex();
+        List<PD> pds = pushVO.getChiefPushVo().getPds();
+        PD pd = null;
+        if(ListUtil.isNotEmpty(pds)){
+            pd = pds.get(0);
+        }
         List<NeoPushDTO> neoPushDTOS = new ArrayList<>();
         List<String> allDis = Lists.newArrayList();
         //如果化验有特异性就直接推送疾病
@@ -261,7 +267,7 @@ public class NeoFacade {
             lises = lisPushVo.getLises();
         }
 
-        if (pushDisBySpecialLis(age, sex, neoPushDTOS, lises)) return neoPushDTOS;
+        if (pushDisBySpecialLis(age, sex, pd, neoPushDTOS, lises)) return neoPushDTOS;
 
         // 症状、体征推送出的疾病
         pushDisBySymptomOrVital(pushVO, allDis);
@@ -269,7 +275,7 @@ public class NeoFacade {
         pushDisByLis(allDis, lises);
         //辅检推出的疾病
         pushDisByPacs(pushVO, allDis);
-        filterAndSort(neoPushDTOS, allDis, sex, age);
+        filterAndSort(neoPushDTOS, allDis, sex, age, pd);
 
         return neoPushDTOS;
     }
@@ -282,13 +288,13 @@ public class NeoFacade {
      * @param lises
      * @return
      */
-    private boolean pushDisBySpecialLis(Double age, Integer sex, List<NeoPushDTO> neoPushDTOS, List<Lis> lises) {
+    private boolean pushDisBySpecialLis(Double age, Integer sex, PD pd, List<NeoPushDTO> neoPushDTOS, List<Lis> lises) {
         if (ListUtil.isNotEmpty(lises)) {
             List<String> lis_dis = lises.parallelStream()
                     .map(x -> nodeRepository.getDisByLis_Special(x.getName(), x.getUniqueName() + x.getResult()))
                     .flatMap(List::stream).collect(Collectors.toList());
             if (ListUtil.isNotEmpty(lis_dis)) {
-                filterAndSort(neoPushDTOS, lis_dis, sex, age);
+                filterAndSort(neoPushDTOS, lis_dis, sex, age,pd);
                 if (ListUtil.isNotEmpty(neoPushDTOS)) {
                     return true;
                 }
@@ -355,7 +361,7 @@ public class NeoFacade {
         allDis.addAll(allDis_bySymptom);
     }
 
-    private void filterAndSort(List<NeoPushDTO> neoPushDTOS, List<String> allDis, int gender_code, double age) {
+    private void filterAndSort(List<NeoPushDTO> neoPushDTOS, List<String> allDis, int gender_code, double age, PD pd) {
         //推送出的所有疾病进行性别和年龄的过滤
         List<Map<String, String>> diseases = null;
         Map<String, Double> dis_fbl = new HashMap<>();

+ 6 - 0
src/main/java/com/diagbot/model/ai/process/EntityProcessClinic.java

@@ -169,6 +169,12 @@ public class EntityProcessClinic extends EntityProcess {
             List<PD> pds = new ArrayList<>();
             for (Lemma lemma : pdLemmas) {
                 PD pd = new PD();
+                String[] val_unit = new String[2];
+                if (lemma.getText().trim().length() > 0) {
+                    val_unit = extract_digit(lemma.getText());
+                }
+                pd.setValue(val_unit[0]);
+                pd.setUnit(val_unit[1]);
                 pd.setName(lemma.getText());
                 pds.add(pd);
             }

+ 1 - 1
src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java

@@ -34,7 +34,7 @@ public class YiBaoDiseaseNode {
 					.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
 					.map(x ->NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
 
-			pushDTO.setLis(disease.getLisnames().stream().collect(Collectors.toMap(LisName::getName,LisName::getNodeId,(e1, e2) -> e2))
+			pushDTO.setLis(disease.getLisnames().stream().collect(Collectors.toMap(LisBigName::getName,LisBigName::getNodeId,(e1, e2) -> e2))
 					.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
 					.map(x ->NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
 

+ 24 - 0
src/main/java/com/diagbot/util/NeoUtil.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.PushBaseDTO;
 import com.diagbot.entity.node.Vital;
 import com.diagbot.entity.node.YiBaoDiseaseName;
+import com.diagbot.model.entity.PD;
 import com.diagbot.repository.Constants;
 import com.diagbot.repository.NodeInfo;
 import com.diagbot.repository.datautil;
@@ -145,6 +146,13 @@ public class NeoUtil {
         return match;
     }
 
+    /**
+     * 性别、年龄匹配
+     * @param disease
+     * @param gender_code
+     * @param age
+     * @return
+     */
     public static boolean matchBasic(Map<String,String> disease, int gender_code, double age){
         boolean match = true;
         if(disease != null){
@@ -164,6 +172,22 @@ public class NeoUtil {
         return match;
     }
 
+    public static boolean matchPds(String disName, PD pd){
+        boolean match = true;
+        if(pd != null){
+            String unit = pd.getUnit();
+            String value = pd.getValue();
+            if(unit != null){
+                if((unit.contains("年") || unit.contains("月")) && disName.startsWith("急")){
+                    match = false;
+                }
+
+            }
+        }
+
+        return match;
+    }
+
 
     public static NodeNeoDTO fillNodeNeoDTO(Vital vital) {
         NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();

+ 2 - 0
src/main/java/com/diagbot/vo/neoPushEntity/ChiefPushVo.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo.neoPushEntity;
 
+import com.diagbot.model.entity.PD;
 import lombok.Data;
 
 import java.util.List;
@@ -13,4 +14,5 @@ import java.util.List;
 @Data
 public class ChiefPushVo {
     private List<Symptom> symptoms;
+    private List<PD> pds;
 }