Bladeren bron

嵊州:规则修改

wangsy 3 jaren geleden
bovenliggende
commit
befacaf97e

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

@@ -22,7 +22,7 @@ import java.util.List;
 @Component
 public class BEH0009 extends QCCatalogue {
     private List<String> containList = Arrays.asList("检查", "术后", "药物", "发现", "误服", "确诊", "经", "异常", "诊断"
-            , "示", "超", "伤", "术", "复查", "体检", "血透", "血液透析","孕");
+            , "示", "超", "伤", "术", "复查", "体检", "血透", "血液透析","孕","农药");
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         if (inputInfo.getBeHospitalizedDoc() == null) {

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

@@ -21,7 +21,7 @@ import java.util.List;
 @Component
 public class BEH0010 extends QCCatalogue {
     private List<String> containList = Arrays.asList("癌", "瘤", "复诊", "术后", "化疗后", "发现", "体检", "检查", "确诊"
-            , "诊断", "复查", "复发", "示", "超", "CT", "血透", "血液透析");
+            , "诊断", "复查", "复发", "示", "超", "CT", "血透", "血液透析", "治疗后");
 
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");

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

@@ -48,7 +48,7 @@ public class BEH0029 extends QCCatalogue {
         }
         if (pastLabel != null) {
             String pastText = pastLabel.getText();
-            if (StringUtil.isNotBlank(pastText) && (pastText.contains("详见") || pastText.contains("预防接种") || pastText.contains("预防免疫接种")
+            if (StringUtil.isNotBlank(pastText) && (pastText.contains("详见") || pastText.contains("接种")|| pastText.contains("预防接种") || pastText.contains("预防免疫接种")
                     || pastText.contains("见旧病历") || pastText.contains("见既往病历"))) {
                 status.set("0");
                 return;
@@ -63,7 +63,7 @@ public class BEH0029 extends QCCatalogue {
         }
         if (personalLabel != null) {
             String personText = personalLabel.getText();
-            if (StringUtil.isNotBlank(personText) && (personText.contains("详见") || personText.contains("预防接种"))) {
+            if (StringUtil.isNotBlank(personText) && (personText.contains("详见") || personText.contains("接种")|| personText.contains("预防接种"))) {
                 status.set("0");
                 return;
             }

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

@@ -80,7 +80,7 @@ public class BEH0058 extends QCCatalogue {
         }
         if (StringUtil.isNotBlank(maritalText)) {
             List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女"
-                    , "0-0-0-0", "详见", "0-0-0-0","无子女","未孕");
+                    , "0-0-0-0", "详见", "0-0-0-0","无子女","未孕", "见旧病历", "见既往病历");
             for (String word : words) {
                 if (maritalText.contains(word)) {
                     status.set("0");

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

@@ -32,7 +32,7 @@ public class BEH0072 extends QCCatalogue {
             if (StringUtil.isNotBlank(familyText)) {
                 familyText = familyText.substring(0, Math.min(15, familyText.length()));
                 if (familyText.contains("死因") || familyText.contains("原因") || familyText.contains("详")
-                || familyText.contains("因") || familyText.contains("死于")) {
+                || familyText.contains("因") || familyText.contains("死于")|| familyText.contains("自然死")) {
                     return;
                 }
             }

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

@@ -28,7 +28,8 @@ public class BEH0372 extends QCCatalogue {
         if (StringUtil.isBlank(bhbasicInfoStatus)) {
             bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻");
         }
-        if (StringUtil.isBlank(basicInfoStatus) || basicInfoStatus.contains("详见") || StringUtil.isBlank(bhbasicInfoStatus)) {
+        if (StringUtil.isBlank(basicInfoStatus) || basicInfoStatus.contains("详见")
+                || basicInfoStatus.contains("见旧病历")|| basicInfoStatus.contains("见既往病历")|| StringUtil.isBlank(bhbasicInfoStatus)) {
             status.set("0");
             return;
         }

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

@@ -34,7 +34,7 @@ public class BEH0441 extends QCCatalogue {
             return;
         }
         List<String> words = Lists.newArrayList("胃纳", "食纳", "食欲", "未纳", "纳眠", "饮食", "睡眠"
-                , "禁食", "未食", "鼻饲", "饮", "未进食");
+                , "禁食", "未食", "鼻饲", "饮", "未进食", "开奶", "吃奶", "胃管");
         String presentText = presentLabel.getText();
         if (StringUtil.isNotBlank(presentText)) {
             for (String word : words) {

+ 2 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0160.java

@@ -29,6 +29,8 @@ public class FIRP0160 extends QCCatalogue {
             if (StringUtil.isBlank(firstAdmissionGender) || StringUtil.isBlank(admissionGender)){
                 return;
             }
+            firstAdmissionGender = firstAdmissionGender.replace("性","");
+            admissionGender = admissionGender.replace("性","");
             if (!CatalogueUtil.compareToken(firstAdmissionGender,admissionGender)) {
                 status.set("-1");
             }

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0161.java

@@ -46,6 +46,9 @@ public class FIRP0161 extends QCCatalogue {
             if (StringUtil.isNotBlank(admissionAge) && admissionAge.contains("岁")) {
                 admissAge = admissionAge.substring(0, admissionAge.indexOf("岁"));
             }
+            if (StringUtil.isNotBlank(admissionAge) && !admissionAge.contains("岁")) {
+                admissAge = admissionAge;
+            }
             String firstadmissAge = "";
             if (StringUtil.isNotBlank(firstAdmissionAge) && firstAdmissionAge.contains("岁")) {
                 firstadmissAge = firstAdmissionAge.substring(0, firstAdmissionAge.indexOf("岁"));

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0175.java

@@ -55,6 +55,9 @@ public class FIRP0175 extends QCCatalogue {
                         if (firstpageleaveDiag.contains("伴")) {
                             firstpageleaveDiag = firstpageleaveDiag.substring(0, firstpageleaveDiag.indexOf("伴"));
                         }
+                        if(diags.contains(firstpageleaveDiag)){
+                            firstpageleaveDiag = firstpageleaveDiag.replaceAll("^[0-9]", "");
+                        }
                     }
                     break;
                 }

+ 13 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0248.java

@@ -5,6 +5,8 @@ import com.lantone.qc.kernel.util.CatalogueUtil;
 import com.lantone.qc.pub.Content;
 import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -25,6 +27,17 @@ public class FIRP0248 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             int rescueNum = inputInfo.getRescueDocs().size();
+            int noRescueNum = 0;
+            if(ListUtil.isNotEmpty(inputInfo.getRescueDocs())){
+                for (RescueDoc rescueDoc : inputInfo.getRescueDocs()) {
+                    String endFile = rescueDoc.getStructureMap().get("抢救结果");
+                    if(endFile.contains("放弃")){
+                        noRescueNum++;
+                    }
+                }
+            }
+            rescueNum = rescueNum-noRescueNum;
+
             boolean match = false;
 
             String fpRescueNumStr = firstpageStructureMap.get("病人抢救次数");

+ 59 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/firstpagerecord/FIRP0190.java

@@ -0,0 +1,59 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0190
+ * @Description :Rh填写错误
+ * @Author : 胡敬
+ * @Date: 2020-03-18 13:35
+ */
+@Component
+public class FIRP0190 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() == null || inputInfo.getFirstPageRecordDoc().getStructureMap() == null
+                || inputInfo.getClinicalBloodDocs().size() == 0) {
+            return;
+        }
+        Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+        List<ClinicalBloodDoc> clinicalBloodDocList = inputInfo.getClinicalBloodDocs();
+        String rhFactor = firstpageStructureMap.get(Content.rhFactor);
+        if (CatalogueUtil.isEmpty(rhFactor)) {
+            return;
+        }
+        int matchSum = 0, noRhSum = 0;
+        for (ClinicalBloodDoc clinicalBloodDoc : clinicalBloodDocList) {
+            String text = clinicalBloodDoc.getText();
+            if (StringUtils.isEmpty(text)) {
+                continue;
+            }
+
+            String pattern = "[\\s\\S]*(?=RH)[^,;,;。]{0,3}((?=阴)|(?=阳))[\\s\\S]*";
+            if(!text.matches(pattern)){
+                noRhSum++;
+            }else{
+                matchSum++;
+                return;
+            }
+        }
+        /* 如果所有输血记录都没有rh记录(阴、阳),则不报错 */
+        if (noRhSum == clinicalBloodDocList.size()){
+            return;
+        }
+        if (matchSum == 0) {
+            status.set("-1");
+        }
+    }
+}

+ 115 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/leavehospital/LEA0149.java

@@ -0,0 +1,115 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.leavehospital;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+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.doc.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
+import com.lantone.qc.pub.model.label.ChiefLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description: 出院记录内容缺主诉
+ * @author: rengb
+ * @time: 2020/3/10 13:53
+ */
+@Component
+public class LEA0149 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        if (leaveHospitalDoc == null || beHospitalizedDoc == null) {
+            status.set("0");
+            return;
+        }
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if (deathRecordDoc != null) {
+            status.set("0");
+            return;
+        }
+        Map<String, String> lhStructureMap = leaveHospitalDoc.getStructureMap();
+        ChiefLabel chiefLabel = beHospitalizedDoc.getChiefLabel();
+        if (lhStructureMap != null && chiefLabel != null) {
+            String bhChief = CatalogueUtil.int2ChineseNum(chiefLabel.getText().replaceAll("[\\p{Punct}\\pP。-]", ""));
+            String leaveChief = lhStructureMap.get("主诉");
+            String key = getKeyByHospitalId();
+            String bhThings = lhStructureMap.get(key);
+            String reThings = lhStructureMap.get("入院原因");   //邵逸夫主诉在入院原因内
+            if (StringUtil.isNotBlank(bhThings)) {
+                bhThings = CatalogueUtil.int2ChineseNum(bhThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (bhThings.contains("\n")) {
+                    bhThings = bhThings.replace("\n", "");
+                }
+            }
+            if (StringUtil.isNotBlank(reThings)) {
+                reThings = CatalogueUtil.int2ChineseNum(reThings.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (reThings.contains("\n")) {
+                    reThings = reThings.replace("\n", "");
+                }
+            }
+
+            //如果出院小结结构化数据能取出主诉,则直接用该主诉和入院记录主诉比较
+            if (StringUtil.isNotBlank(leaveChief)) {
+                leaveChief = CatalogueUtil.int2ChineseNum(leaveChief.replaceAll("[\\p{Punct}\\pP。-]", ""));
+                if (bhChief.equals(leaveChief)) {
+                    status.set("0");
+                    return;
+                }
+            }
+            if (StringUtil.isNotBlank(bhThings) && bhThings.replace(" ", "").contains(bhChief.replace(" ", ""))) {
+                status.set("0");
+                return;
+            }
+            //邵逸夫主诉写在入院原因
+            if (StringUtil.isNotBlank(reThings) && reThings.replace(" ", "").contains(bhChief.replace(" ", ""))) {
+                status.set("0");
+                return;
+            }
+
+            if (StringUtil.isNotBlank(bhThings) && (bhThings.replace(" ", "").contains(bhChief.replace(" ", ""))
+                    || bhThings.replace(" ", "").contains(bhChief.replace(" ", "").replace("余", "")))) {
+                status.set("0");
+                return;
+            }
+            if (StringUtils.isNotBlank(bhThings)) {
+                Pattern compile = Pattern.compile("(?<=2.).*(?=3.体格检查)");
+                Matcher matcher = compile.matcher(bhThings);
+                while (matcher.find()) {
+                    String number = matcher.group(0);
+                    if (CatalogueUtil.isEmpty(number)) {
+                        status.set("-1");
+                    }
+                }
+                //处理台州的
+                if (bhThings.contains("患者因")) {
+                    status.set("0");
+                }
+            }
+
+
+            //                    bhThings = bhThings.replaceAll("[\\p{Punct}\\pP]", "");
+            //                    if (bhThings.indexOf(bhChief) < 0) {
+            //                        status.set("-1");
+            //                    }
+        }
+    }
+    private String getKeyByHospitalId() {
+        switch (Content.hospital_Id)
+        {
+            case "7":               //厦门
+                return "病史摘要";
+            default:
+                return "入院情况";
+        }
+    }
+}

+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/shengzhouyy/ClinicalBloodDocTrans.java

@@ -48,6 +48,7 @@ public class ClinicalBloodDocTrans extends ModelDocTrans {
         }
 
         ClinicalBloodDoc clinicalBloodDoc = new ClinicalBloodDoc();
+        clinicalBloodDoc.setText(structureMap.get("原始文本"));
         clinicalBloodDoc.setStructureMap(structureMap);
         clinicalBloodDoc.setPageData((Map) structureMap);
         return clinicalBloodDoc;