Browse Source

Merge remote-tracking branch 'origin/master'

zhoutg 5 years ago
parent
commit
f026dd4796

+ 0 - 5
kernel/pom.xml

@@ -89,11 +89,6 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-data-redis</artifactId>
 		</dependency>
-		<dependency>
-			<groupId>cglib</groupId>
-			<artifactId>cglib</artifactId>
-			<version>2.2.2</version>
-		</dependency>
 
 		<dependency>
 			<groupId>net.sourceforge.jexcelapi</groupId>

+ 10 - 18
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0018.java

@@ -24,29 +24,21 @@ import java.util.List;
 public class BEH0018 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
-        List<Clinical> clinicals = presentLabel.getClinicals();
-        if(clinicals.size()>0){
-            for (Clinical clinical:clinicals) {
-                List<PD> timestamp = clinical.getTimestamp();
-                if(timestamp != null){
-                    for (PD pd:timestamp) {
-                        if(!CatalogueUtil.isEmpty(pd.getName())){
-                            if(pd.getName().contains("天") || pd.getName().contains("周")|| pd.getName().contains("月")
-                            || pd.getName().contains("时") || pd.getName().contains("半年") || pd.getName().contains("秒")
-                            || pd.getName().contains("日")){
-                                status.set("0");
-                                break;
-                            }
-                        }
-                    }
-                    if(status.get().equals("0")){
+        List<PD> pds = presentLabel.getPds();
+        if(pds != null && pds.size()>0){
+            for (PD pd:pds) {
+                String pdName = pd.getName();
+                if(!CatalogueUtil.isEmpty(pdName)){
+                    if(pdName.contains("天") || pdName.contains("周")|| pdName.contains("月")
+                            || pdName.contains("时") || pdName.contains("半年") || pdName.contains("秒")
+                            || pdName.contains("日")){
+                        status.set("0");
                         break;
                     }
                 }
             }
-        }else {
-            status.set("0");
         }
+
     }
 }
 

+ 15 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0059.java

@@ -4,6 +4,8 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.label.MenstrualLabel;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 /**
@@ -21,10 +23,19 @@ public class BEH0059 extends QCCatalogue {
                     || inputInfo.getBeHospitalizedDoc().getStructureMap().get("性别") == null
                     || inputInfo.getBeHospitalizedDoc().getStructureMap().get("性别").contains("男")) {
                 status.set("0"); //如果性别是男,就不报错
-            } else if (inputInfo.getBeHospitalizedDoc().getMenstrualLabel() != null
-                    && !CatalogueUtil.isEmpty(inputInfo.getBeHospitalizedDoc().getMenstrualLabel().getText()
-                    .replace("月经史:null", ""))) {
-                status.set("0"); //如果性别是女,不为空就不报错
+            } else {
+                MenstrualLabel menstrualLabel = inputInfo.getBeHospitalizedDoc().getMenstrualLabel();
+                if (menstrualLabel == null) {
+                    return;
+                }
+                String menstrualText = StringUtil.removeBlank(menstrualLabel.getText()).replaceAll("[月经史|:|:|null]", "");
+                if (StringUtil.isBlank(menstrualText)) {
+                    return;
+                }
+                boolean containChinese = CatalogueUtil.isContainChinese(menstrualText);
+                if (containChinese) {
+                    status.set("0"); //如果性别是女,不为空就不报错
+                }
             }
         }
     }

+ 6 - 9
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0445.java

@@ -4,6 +4,7 @@ import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.GeneralDesc;
+import com.lantone.qc.pub.model.label.PresentLabel;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -18,16 +19,12 @@ import java.util.List;
 @Component
 public class BEH0445 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-
-        List<GeneralDesc> generals = inputInfo.getBeHospitalizedDoc().getPresentLabel().getGenerals();
-        if(generals.size() > 0 || generals != null){
-            for (GeneralDesc general:generals) {
-                if(general.getName().contains("睡眠")){
-                    status.set("0");
-                    break;
-                }
+        PresentLabel presentLabel = inputInfo.getBeHospitalizedDoc().getPresentLabel();
+        String text = presentLabel.getText();
+        if(text != null){
+            if(text.contains("睡眠")|| text.contains("纳眠")|| text.contains("入睡")){
+                status.set("0");
             }
         }
-
     }
 }

+ 13 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0472.java

@@ -1,17 +1,14 @@
 package com.lantone.qc.kernel.catalogue.behospitalized;
 
-import com.google.common.collect.Lists;
 import com.lantone.qc.kernel.catalogue.QCCatalogue;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
-import com.lantone.qc.pub.model.entity.Family;
-import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.model.doc.BeHospitalizedDoc;
+import com.lantone.qc.pub.model.label.MaritalLabel;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
 import java.util.Map;
-import java.util.regex.Pattern;
 
 /**
  * @ClassName : BEH0472
@@ -25,9 +22,13 @@ public class BEH0472 extends QCCatalogue {
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
-        Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        if (beHospitalizedDoc == null) {
+            return;
+        }
+        Map<String, String> beHospitalStructureMap = beHospitalizedDoc.getStructureMap();
         if (beHospitalStructureMap != null) {
-            if (beHospitalStructureMap.get("性别") == null || beHospitalStructureMap.get("性别").contains("男")){
+            if (beHospitalStructureMap.get("性别") == null || beHospitalStructureMap.get("性别").contains("男")) {
                 status.set("0"); //如果性别是男,就不报错
                 return;
             }
@@ -36,7 +37,11 @@ public class BEH0472 extends QCCatalogue {
                     || StringUtil.isBlank(beHospitalStructureMap.get("早产"))
                     || StringUtil.isBlank(beHospitalStructureMap.get("流产"));
             if (fertilitySituation) {
-                status.set("-1");
+                //如果结构化数据中上述条件缺少,则在婚育史中查找生育情况
+                MaritalLabel maritalLabel = beHospitalizedDoc.getMaritalLabel();//婚育史
+                if (maritalLabel == null || maritalLabel.getFertility() == null) {
+                    status.set("-1");
+                }
             }
         }
     }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/structure/ai/process/EntityProcessThreeLevelWard.java

@@ -248,7 +248,7 @@ public class EntityProcessThreeLevelWard extends EntityProcess {
                 continue;
             }
             Diag diag = new Diag();
-            diag.setName(lemma.getText());
+            diag.setHospitalDiagName(lemma.getText());
             diags.add(diag);
         }
         if (threeLevelWardLabel.getDiags().size() == 0) {

+ 14 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

@@ -309,4 +309,18 @@ public class CatalogueUtil {
         String[] dateFormatsArr = new String[dateFormatsNew.size()];
         return dateFormatsNew.toArray(dateFormatsArr);
     }
+
+    /**
+     * 判断字符串是否包含中文字
+     * @param str
+     * @return
+     */
+    public static boolean isContainChinese(String str) {
+        Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
+        Matcher m = p.matcher(str);
+        if (m.find()) {
+            return true;
+        }
+        return false;
+    }
 }

+ 20 - 16
kernel/src/main/java/com/lantone/qc/kernel/util/DiagEnhancer.java

@@ -2,7 +2,8 @@ package com.lantone.qc.kernel.util;
 
 import com.lantone.qc.pub.model.entity.Diag;
 import com.lantone.qc.pub.util.StringUtil;
-import net.sf.cglib.proxy.Enhancer;
+
+import java.util.Map;
 
 /**
  * @Description:
@@ -12,21 +13,24 @@ import net.sf.cglib.proxy.Enhancer;
 public class DiagEnhancer {
 
     public static Diag create(String hospitalDiagName) {
-//        //创建Enhancer对象,类似于JDK动态代理的Proxy类,下一步就是设置几个参数
-//        Enhancer enhancer = new Enhancer();
-//        //设置目标类的字节码文件
-//        enhancer.setSuperclass(Diag.class);
-//        //设置回调函数
-//        enhancer.setCallback(new DiagMethodInterceptor());
-//        if (StringUtil.isNotBlank(hospitalDiagName) && !KernelConstants.hospitalDiagNameList.contains(hospitalDiagName)) {
-//            KernelConstants.hospitalDiagNameList.add(hospitalDiagName);
-//        }
-//
-//        Diag proxyDiag = (Diag) enhancer.create();
-        Diag proxyDiag = new Diag();
-        proxyDiag.setName(hospitalDiagName);
-        proxyDiag.setHospitalDiagName(hospitalDiagName);
-        return proxyDiag;
+        Diag diag = new Diag();
+        diag.setHospitalDiagName(hospitalDiagName);
+        RedisUtil redisUtil = SpringContextUtil.getBean("redisUtil");
+        Map<String, Map<String, String>> hospitalDiagHuazMap = redisUtil.getJsonStringValue(KernelConstants.HOSPITAL_DIAG_HUAZ_MAP);
+        Map<String, Map<String, String>> lantoneDiagHuazMap = redisUtil.getJsonStringValue(KernelConstants.LANTONE_DIAG_HUAZ_MAP);
+        if (hospitalDiagHuazMap != null && lantoneDiagHuazMap != null) {
+            Map<String, String> huazDiagMap = hospitalDiagHuazMap.get(hospitalDiagName);
+            if (huazDiagMap != null) {
+                String huazDiagName = huazDiagMap.get("name");
+                if (StringUtil.isNotBlank(huazDiagName)) {
+                    Map<String, String> lantoneDiagMap = lantoneDiagHuazMap.get(huazDiagName);
+                    if (lantoneDiagMap != null) {
+                        diag.setName(lantoneDiagMap.get("name"));
+                    }
+                }
+            }
+        }
+        return diag;
     }
 
 }

+ 0 - 47
kernel/src/main/java/com/lantone/qc/kernel/util/DiagMethodInterceptor.java

@@ -1,47 +0,0 @@
-package com.lantone.qc.kernel.util;
-
-import com.lantone.qc.pub.model.entity.Diag;
-import com.lantone.qc.pub.util.StringUtil;
-import net.sf.cglib.proxy.MethodInterceptor;
-import net.sf.cglib.proxy.MethodProxy;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-
-/**
- * @Description:
- * @author: rengb
- * @time: 2020/3/12 17:52
- */
-public class DiagMethodInterceptor implements MethodInterceptor {
-
-    @Override
-    public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
-        if (method.getName().equals("setName")) {
-            String hospitalDiagName = (String) args[0];
-            if (StringUtil.isNotBlank(hospitalDiagName)) {
-                RedisUtil redisUtil = SpringContextUtil.getBean("redisUtil");
-                Map<String, Map<String, String>> hospitalDiagHuazMap = redisUtil.getJsonStringValue(KernelConstants.HOSPITAL_DIAG_HUAZ_MAP);
-                Map<String, Map<String, String>> lantoneDiagHuazMap = redisUtil.getJsonStringValue(KernelConstants.LANTONE_DIAG_HUAZ_MAP);
-                if (hospitalDiagHuazMap != null && lantoneDiagHuazMap != null) {
-                    Map<String, String> huazDiagMap = hospitalDiagHuazMap.get(hospitalDiagName);
-                    if (huazDiagMap != null) {
-                        String huazDiagName = huazDiagMap.get("name");
-                        if (StringUtil.isNotBlank(huazDiagName)) {
-                            Map<String, String> lantoneDiagMap = lantoneDiagHuazMap.get(huazDiagName);
-                            if (lantoneDiagMap != null) {
-                                args[0] = lantoneDiagMap.get("name");
-                            }
-                        }
-                    }
-                }
-            }
-        } else if (method.getName().equals("setHospitalDiagName")) {
-            Diag diag = (Diag) obj;
-            diag.setName((String) args[0]);
-        }
-        Object object = proxy.invokeSuper(obj, args);
-        return object;
-    }
-
-}