Browse Source

现病史部分规则添加

kongwz 5 years ago
parent
commit
66d569fa67

+ 38 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0002.java

@@ -1,14 +1,20 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.util.RedisUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
 import com.lantone.qc.pub.model.entity.Clinical;
 import com.lantone.qc.pub.model.entity.PD;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -19,5 +25,36 @@ import java.util.List;
  */
 @Component
 public class BEH0002 extends QCCatalogue {
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {}
+    @Autowired
+    private RedisUtil redisUtil;
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+        String initialDiagtext = inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getText();
+        List<String> symptoms =null;
+        if(!CatalogueUtil.isEmpty(initialDiagtext)){
+            String main_diag = initialDiagtext.split(",")[0];
+            Map<String, Map<String, Object>> diagMap =(Map<String, Map<String, Object>>) redisUtil.get(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
+            Map<String, Object> map = (Map<String, Object>) diagMap.get(main_diag);
+            if(map != null || map.size() >0){
+                symptoms = (List<String>) map.get("symptoms");
+            }
+        }
+        List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getClinicals();
+        if(clinicals != null && clinicals.size()>0){
+            for (Clinical clinical:clinicals) {
+                String clinicalName = clinical.getName();
+                if(symptoms != null && !symptoms.contains(clinicalName)){
+                    if(StringUtils.isEmpty(info)){
+                        info = clinicalName;
+                    }else {
+                        info = info +"," +clinicalName;
+                    }
+                }
+            }
+        }
+        if(StringUtils.isNotEmpty(info)){
+            status = "-1";
+        }
+    }
 }

+ 5 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0004.java

@@ -7,7 +7,10 @@ import com.lantone.qc.pub.model.OutputInfo;
 import org.springframework.stereotype.Component;
 
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 /**
@@ -23,10 +26,10 @@ public class BEH0004 extends QCCatalogue {
         status = "0";
         Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
         Collection<String> values = structureMap.values();
-        for (String value:values
-             ) {
+        for (String value:values) {
             if(CatalogueUtil.isEmpty(value)){
                 status = "-1";
+                break;
             }
         }
 

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0008.java

@@ -27,7 +27,7 @@ public class BEH0008 extends QCCatalogue {
         ChiefLabel chiefLabel = inputInfo.getBeHospitalizedDoc().getChiefLabel();
         List<Clinical> clinicals = chiefLabel.getClinicals();
         if(clinicals.size()<=3){
-            status = "-0";
+            status = "0";
         }
 
     }

+ 35 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0011.java

@@ -1,26 +1,57 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
-
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.util.RedisUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Diag;
-import com.lantone.qc.pub.model.label.ChiefLabel;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.Iterator;
+import java.util.Arrays;
 import java.util.List;
-
+import java.util.Map;
 
 /**
  * @ClassName : BEH0011
  * @Description : 入院诊断不完整
+ * 初步诊断没有既往史里的慢性疾病
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28
  */
 @Component
 public class BEH0011 extends QCCatalogue {
+    @Autowired
+    private RedisUtil redisUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
 
+        String initDiagText = CatalogueUtil.removeSpecialChar(inputInfo.getBeHospitalizedDoc().getInitialDiagLabel().getText());
+        List<Diag> diags = inputInfo.getBeHospitalizedDoc().getPastLabel().getDiags();
+        if(StringUtils.isNotEmpty(initDiagText)){
+            List<String> initDiags = Arrays.asList(initDiagText.split(","));
+            if(diags.size()>0){
+                for (Diag diag:diags) {
+                    Map<String, Map<String, Object>> diagMap =(Map<String, Map<String, Object>>) redisUtil.get(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP);
+                    Map<String, Object> map = (Map<String, Object>) diagMap.get(diag.getName());
+                    if(map != null || map.size() >0){
+                        String chronic = (String) map.get("chronic");//1是慢病
+                        if("1".equals(chronic) && !initDiags.contains(diag.getName())){
+                            if(StringUtils.isEmpty(info)){
+                                info = diag.getName();
+                            }else {
+                                info = info+","+diag.getName();
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if(StringUtils.isEmpty(info)){
+            status = "0";
+        }
+
+
     }
 }

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0012.java

@@ -9,12 +9,15 @@ import org.springframework.stereotype.Component;
 /**
  * @ClassName : BEH0012
  * @Description :  入院诊断名称不标准
+ * 取redis中hospital_concept_diag_map为key的map
  * @Author : 楼辉荣
  * @Date: 2020-03-06 17:28
  */
 @Component
 public class BEH0012 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status = "0";
+
 
     }
 }

+ 24 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0016.java

@@ -1,12 +1,18 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.util.RedisUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.BodyPart;
 import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.Modification;
+import com.lantone.qc.pub.model.entity.Trend;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -18,11 +24,27 @@ import java.util.List;
  */
 @Component
 public class BEH0016 extends QCCatalogue {
+    @Autowired
+    private RedisUtil redisUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        List<String> propList = (List<String>)redisUtil.get(KernelConstants.CONCEPT_PROPERTY_LIST);
+        List<String> propertyClis = new ArrayList<>();
         List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getClinicals();
         if(clinicals.size()>0){
-
+            for (Clinical clinical:clinicals) {
+                Modification modification = clinical.getModification();
+                if(modification == null){
+                    propertyClis.add(clinical.getName());
+                }else {
+                    String name = modification.getName();
+                    if(!propList.contains(name)){
+                        propertyClis.add(clinical.getName());
+                    }
+                }
+            }
+        }
+        if(propertyClis.size()>0){
+            info = propertyClis.toString().replace("[","").replace("]","");
         }
-
     }
 }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0017.java

@@ -33,7 +33,7 @@ public class BEH0017 extends QCCatalogue {
         }
         if(clinicals_timestamp.size()>0){
             status = "-1";
-            info= clinicals_timestamp.toString();
+            info= clinicals_timestamp.toString().replace("[","").replace("]","");
         }
 
     }

+ 19 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0019.java

@@ -1,10 +1,14 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.KernelConstants;
+import com.lantone.qc.kernel.util.RedisUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Clinical;
+import com.lantone.qc.pub.model.entity.Modification;
 import com.lantone.qc.pub.model.entity.PD;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -20,18 +24,27 @@ import java.util.List;
  */
 @Component
 public class BEH0019 extends QCCatalogue {
+    @Autowired
+    private RedisUtil redisUtil;
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status = "0";
-        List<String> clinicals_timestamp = new ArrayList<>();
+        List<String> propList = (List<String>)redisUtil.get(KernelConstants.CONCEPT_DEGREE_LIST);
+        List<String> propertyClis = new ArrayList<>();
         List<Clinical> clinicals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getClinicals();
         if(clinicals.size()>0){
             for (Clinical clinical:clinicals) {
-
+                Modification modification = clinical.getModification();
+                if(modification == null){
+                    propertyClis.add(clinical.getName());
+                }else {
+                    String name = modification.getName();
+                    if(!propList.contains(name)){
+                        propertyClis.add(clinical.getName());
+                    }
+                }
             }
         }
-        if(clinicals_timestamp.size()>0){
-            status = "-1";
-            info= clinicals_timestamp.toString();
+        if(propertyClis.size()>0){
+            info = propertyClis.toString().replace("[","").replace("]","");
         }
     }
 }

+ 3 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0023.java

@@ -6,6 +6,7 @@ import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
 import com.lantone.qc.pub.model.entity.Lis;
 import com.lantone.qc.pub.model.entity.Pacs;
+import com.lantone.qc.pub.model.entity.Treat;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -23,7 +24,8 @@ public class BEH0023 extends QCCatalogue {
         status = "0";
         List<Lis> lises = inputInfo.getBeHospitalizedDoc().getPresentLabel().getLises();
         List<Pacs> pacses = inputInfo.getBeHospitalizedDoc().getPresentLabel().getPacses();
-        if(lises == null && pacses.size() == 0){
+        List<Treat> treats = inputInfo.getBeHospitalizedDoc().getPresentLabel().getTreats();
+        if(lises == null && pacses.size() == 0 && treats.size() == 0){
             status = "-1";
         }
     }

+ 14 - 4
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/BeHospitalizedAI.java

@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.lantone.qc.kernel.client.CRFServiceClient;
 import com.lantone.qc.kernel.structure.ai.model.CrfOut;
+import com.lantone.qc.kernel.structure.ai.model.EntityEnum;
+import com.lantone.qc.kernel.structure.ai.model.Lemma;
 import com.lantone.qc.kernel.structure.ai.process.*;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
@@ -15,10 +17,7 @@ import com.lantone.qc.pub.model.label.*;
 import com.lantone.qc.pub.model.vo.CRFVo;
 import com.lantone.qc.pub.util.StringUtil;
 
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @ClassName : InHospitalDoc
@@ -131,6 +130,17 @@ public class BeHospitalizedAI {
         presentLabel.setClinicals(loadClinicals(aiOut));
         presentLabel.setGenerals(loadGeneralDes(aiOut));
         presentLabel.setPacses(loadpacses(aiOut));
+
+        EntityProcess entityProcess = new EntityProcess();
+        List<Lemma> entityTree = entityProcess.createEntityTree(aiOut, EntityEnum.CURE.toString());
+        List<Treat> treats = new ArrayList<>();
+        for (Lemma lemma:entityTree){
+            Treat treat = new Treat();
+            treat.setName(lemma.getText());
+            treats.add(treat);
+        }
+        presentLabel.setTreats(treats);
+
     }
 
     /**

+ 6 - 0
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessClinic.java

@@ -34,6 +34,12 @@ public class EntityProcessClinic extends EntityProcess {
                         negative.setName(entity);
                         clinical.setNegative(negative);
                         break;
+                    case MODIFICATION:
+                        Modification modification = new Modification();
+                        modification.setName(entity);
+                        clinical.setModification(modification);
+                        break;
+
                     case BODY:
                         BodyPart bodyPart = new BodyPart();
                         bodyPart.setName(entity);

+ 1 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/Clinical.java

@@ -15,6 +15,7 @@ public class Clinical extends General {
     private BodyPart bodyPart;
     private Trend trend;//趋势
     private Degree degree;//程度
+    private Modification modification;//修饰
     private Cause cause;
     private PD pds;
     private List<PD> timestamp;

+ 9 - 0
public/src/main/java/com/lantone/qc/pub/model/entity/Modification.java

@@ -0,0 +1,9 @@
+package com.lantone.qc.pub.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class Modification extends General {
+}