Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

zhoutg 5 tahun lalu
induk
melakukan
37a215963c

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

@@ -24,7 +24,7 @@ public class BEH0003 extends QCCatalogue {
 
         String chief_text = inputInfo.getBeHospitalizedDoc().getChiefLabel().getText();
         int chief_text_length = chief_text.replaceAll("[\\p{Punct}\\pP]", "").length();
-        if(chief_text_length<20)
+        if(chief_text_length<=20)
         {
             status.set("0");
         }

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

@@ -22,10 +22,15 @@ public class BEH0024 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         List<Wound> wounds = inputInfo.getBeHospitalizedDoc().getPastLabel().getWounds();
         if (ListUtil.isNotEmpty(wounds)) {
-            if (wounds.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).count() > 0 || inputInfo.getBeHospitalizedDoc().getPastLabel().getText().contains("外伤史")) {
+            if (wounds.stream().map(i -> i.getName()).filter(i -> StringUtil.isNotBlank(i)).count() > 0) {
                 status.set("0");
+                return;
             }
         }
+        //硬规则匹配
+        if (inputInfo.getBeHospitalizedDoc().getPastLabel().getText().contains("外伤")) {
+            status.set("0");
+        }
     }
 
 }

+ 8 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0056.java

@@ -5,6 +5,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.ConjugalRelation;
 import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 /**
@@ -17,6 +18,13 @@ public class BEH0056 extends QCCatalogue {
 
     @Override
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        //婚育史未填写,直接返回;
+        if (inputInfo.getBeHospitalizedDoc().getMaritalLabel() == null
+                || StringUtils.isEmpty(inputInfo.getBeHospitalizedDoc().getMaritalLabel().getText())) {
+            status.set("0");
+            return;
+        }
+
         ConjugalRelation conjugalRelation = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getConjugalRelation();
         long cont = inputInfo.getBeHospitalizedDoc().getMaritalLabel()
                 .getFamily().stream()
@@ -25,8 +33,6 @@ public class BEH0056 extends QCCatalogue {
             if(StringUtil.isNotBlank(conjugalRelation.getName()) || cont > 0){
                 status.set("0");
             }
-        }else {
-            status.set("0");
         }
         //硬规则 匹配离婚
         if (inputInfo.getBeHospitalizedDoc().getMaritalLabel().getText().contains("离婚")) {

+ 12 - 8
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0398.java

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 兄弟姐妹健康状况未描述
@@ -33,18 +34,21 @@ public class BEH0398 extends QCCatalogue {
         }
 
         Pattern p = Pattern.compile("[兄弟姐妹哥]");
-        long count = familyList
+        List<Family> filterFamilies = familyList
                 .stream()
                 .filter(
                         i -> i != null
                                 && StringUtil.isNotBlank(i.getName())
-                                && p.matcher(i.getName()).find()
-                                && i.getHealthCondition() != null
-                                && StringUtil.isNotBlank(i.getHealthCondition().getName())
-                )
-                .count();
-        if (count > 0) {
-            status.set("0");
+                                && p.matcher(i.getName()).find()).collect(Collectors.toList());
+
+        for (Family family : filterFamilies) {
+            if (family.getDead() != null) {
+                status.set("0");
+                return;
+            } else if (family.getHealthCondition() != null && StringUtil.isNotBlank(family.getHealthCondition().getName())) {
+                status.set("0");
+                return;
+            }
         }
     }
 

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

@@ -22,7 +22,6 @@ import java.util.List;
 @Component
 public class BEH0449 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
         BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
         if (beHospitalizedDoc != null) {
             String chief_text = beHospitalizedDoc.getChiefLabel().getText();
@@ -34,8 +33,9 @@ public class BEH0449 extends QCCatalogue {
                 if (ListUtil.isNotEmpty(clinicals_chief) && ListUtil.isNotEmpty(clinicals_present)) {
                     Clinical clinical_chief = clinicals_chief.get(0);
                     Clinical clinical_present = clinicals_present.get(0);
-                    if (!clinical_chief.getName().equals(clinical_present.getName())) {
-                        status.set("-1");
+                    if (clinical_chief.getName().equals(clinical_present.getName())) {
+                        status.set("0");
+                        return;
                     } else if (clinical_chief.getName().contains(clinical_present.getName())
                             || clinical_present.getName().contains(clinical_chief.getName())) {
                         status.set("0");

+ 6 - 12
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0454.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.PastLabel;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -18,19 +20,11 @@ import java.util.Map;
 @Component
 public class BEH0454 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-
-        status.set("0");
-        Map<String, String> bhMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
-        if(bhMap != null){
-            String birthDate = bhMap.get("一般健康状况");
-            if(birthDate != null){
-                if(CatalogueUtil.isEmpty(birthDate)){
-                    status.set("-1");
-                }
-            }else {
-                status.set("-1");
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        if(pastLabel != null){
+            if (StringUtils.isNotEmpty(pastLabel.getHeathCondition())) {
+                status.set("0");
             }
         }
-
     }
 }

+ 8 - 20
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0494.java

@@ -6,6 +6,7 @@ import com.lantone.qc.kernel.util.SpringContextUtil;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.entity.Diag;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -21,28 +22,15 @@ import java.util.Map;
 @Component
 public class BEH0494 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-
-        String sign = inputInfo.getBeHospitalizedDoc().getStructureMap().get("签名");
-        sign = (null==sign)?"":sign.trim();
-
-        if(sign.length() > 0 || true) {
+        String doctorName = inputInfo.getBeHospitalizedDoc().getStructureMap().get("签名");
+        if(StringUtils.isNotEmpty(doctorName)) {
             RedisUtil redisUtil = SpringContextUtil.getBean("redisUtil");
-            int cnt = 0;
-
-            Map<String, String> surgeon;
-
-            if (null != redisUtil.get(sign)) {
-                surgeon = (Map)redisUtil.get(sign);
-                String prof = surgeon.get("职称").trim();
-                if (null != prof && prof.contains("医师")) {
-                    cnt += 1;
-                }
-            }
-
-            if (cnt == 0) {
-                status.set("-1");
+            Map<String, String> surgeon = (Map<String, String>) redisUtil.get(doctorName);
+            if (StringUtils.isNotEmpty(surgeon.get("professor")) && surgeon.get("professor").contains("医师")) {
+                status.set("0");
             }
+        } else {
+            status.set("0");
         }
     }
 }

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

@@ -191,6 +191,12 @@ public class EntityProcessPast extends EntityProcess {
                 }
                 pastLabel.addDiagInfectious(diagInfectious);
             }
+
+            //健康情况
+            List<Lemma> healthLemmas = createEntityTree(aiOut, EntityEnum.HEALTH.toString());
+            for (Lemma lemma : healthLemmas) {
+                pastLabel.setHeathCondition(lemma.getText());
+            }
         } catch (Exception e) {
             e.printStackTrace();
             logger.error(e.getMessage(), e);

+ 25 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/CacheFileManager.java

@@ -4,6 +4,7 @@ import com.lantone.qc.pub.jdbc.MysqlJdbc;
 import com.lantone.qc.pub.util.PropertiesUtil;
 import com.lantone.qc.security.util.CryptUtil;
 import com.lantone.qc.security.util.EncrypDES;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -26,6 +27,8 @@ public class CacheFileManager {
     private String password;
     private String url;
 
+    private String hospitalId = "1";
+
     private String path = "";
 
     public static void main(String[] args) {
@@ -123,6 +126,28 @@ public class CacheFileManager {
                 fw.write("\n");
             }
             fw.close();
+
+            //医院医生信息
+            sql = "select doctor_id, doctor_name, dept_id, dept_name, professor from qc_doctor_info where hospital_id = " + hospitalId;
+
+            fw = new FileWriter(path + "hospital_doctor_info.dict");
+            rs = st.executeQuery(sql);
+            while (rs.next()) {
+                r1 = rs.getString(2);
+                r2 = rs.getString(4);
+                r3 = rs.getString(5);
+//                r1 = CryptUtil.decrypt_char(r1==null?"":r1);
+                if (StringUtils.isEmpty(r1)) {
+                    continue;
+                }
+                r1 = r1==null?"":r1;
+                r2 = r2==null?"":r2;
+                r3 = r3==null?"":r3;
+
+                fw.write(encrypDES.encrytor(r1+ "|" + r2 + "|" + r3));
+                fw.write("\n");
+            }
+            fw.close();
         } catch (IOException ioe) {
             ioe.printStackTrace();
         } catch (SQLException sqle) {

+ 23 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/CacheUtil.java

@@ -36,6 +36,7 @@ public class CacheUtil implements ApplicationRunner {
             this.putHospitalDiagHuaZMap();//医院华卓映射
             this.putLantoneDiagHuaZMap();//朗通华卓映射
             this.putClinicBodyPartMap();//症状需要部位描述词典放入redis缓存
+            this.putHospitalDoctorInfoMap();//症状需要部位描述词典放入redis缓存
         } catch (Exception e) {
             logger.error("缓存文件读取错误。。。");
         }
@@ -72,6 +73,28 @@ public class CacheUtil implements ApplicationRunner {
         redisUtil.setJsonStringValue(KernelConstants.CONCEPT_DIAG_PROPERTY_MAP, diagMap);
     }
 
+    /**
+     * 医院医生信息
+     * @throws Exception
+     */
+    public void putHospitalDoctorInfoMap() throws Exception {
+        Configuration configuration = new DefaultConfig();
+        List<String> lines = configuration.readTargetFileContents("cache/hospital_doctor_info.dict");
+
+        Map<String, Map<String, Object>> hospitalDoctorMap = new HashMap<>();
+        for (String line : lines) {
+            String[] line_arr = line.split("\\|", -1);
+            if (line_arr.length == 3) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("doctorName", line_arr[0]);
+                map.put("deptName", line_arr[1]);
+                map.put("professor", line_arr[2]);
+                hospitalDoctorMap.put(line_arr[0], map);
+            }
+        }
+        redisUtil.setJsonStringValue(KernelConstants.HOSPITAL_DOCTOR_MAP, hospitalDoctorMap);
+    }
+
     /**
      * 医院疾病信息放入redis缓存
      */

+ 0 - 0
kernel/src/main/resources/cache/hospital_doctor_info.dict


+ 1 - 0
public/src/main/java/com/lantone/qc/pub/model/label/PastLabel.java

@@ -26,6 +26,7 @@ public class PastLabel extends GeneralLabel{
     private List<BloodTransfusion> bloodTransfusions = new ArrayList<>();//输血史
     private List<Operation> operations = new ArrayList<>();//手术史
     private List<Vaccinate> vaccinates = new ArrayList<>();//预防接种史
+    private String heathCondition;
 
     public void addDiag(Diag diag) {
         this.diags.add(diag);