浏览代码

义乌质控规则,页面显示问题修改

zhangzw 4 年之前
父节点
当前提交
d973872bc1

+ 8 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/behospitalized/BEH0030.java

@@ -48,18 +48,21 @@ public class BEH0030 extends QCCatalogue {
         )) {
             status.set("0");
         }
+        String familyText = null;
         String pastText = pastLabel.getText();
-        String familyText = familyLabel.getText();
-        String pastText1=structureMap.get("既往史");
-        if (pastText!=null && (pastText.contains("肝炎") || pastText.contains("结核") || pastText.contains("详见原病历")
+        if (familyLabel != null) {
+            familyText = familyLabel.getText();
+        }
+        String pastText1 = structureMap.get("既往史");
+        if (pastText != null && (pastText.contains("肝炎") || pastText.contains("结核") || pastText.contains("详见原病历")
                 || pastText.contains("乙肝") || pastText.contains("传染病史"))) {
             status.set("0");
         }
-        if (familyText!=null && (familyText.contains("肝炎") || familyText.contains("结核") || familyText.contains("详见原病历")
+        if (familyText != null && (familyText.contains("肝炎") || familyText.contains("结核") || familyText.contains("详见原病历")
                 || familyText.contains("乙肝"))) {
             status.set("0");
         }
-        if (pastText1!=null && (pastText1.contains("肝炎") || pastText1.contains("结核") || pastText1.contains("详见原病历")
+        if (pastText1 != null && (pastText1.contains("肝炎") || pastText1.contains("结核") || pastText1.contains("详见原病历")
                 || pastText1.contains("乙肝") || pastText1.contains("传染病史"))) {
             status.set("0");
         }

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

@@ -34,8 +34,8 @@ public class BEH02966 extends QCCatalogue {
         List<String> noMatchWords = null;
         if (gender.contains("男")) {
             /* 男性不合理词 */
-            noMatchWords = Lists.newArrayList("阴道", "宫颈","宫底", "胎位", "胎数", "胎心",
-                    "宫缩", "宫口", "输卵管", "卵巢", "输卵管", "阴唇", "阴蒂", "阴道前庭", "前庭大腺", "处女膜");
+            noMatchWords = Lists.newArrayList("阴道", "宫颈", "宫底", "胎位", "胎数", "胎心",
+                    "宫缩", "宫口", "输卵管", "卵巢", "输卵管", "阴唇", "阴蒂", "阴道前庭", "前庭大腺", "处女膜", "月经");
         } else if (gender.contains("女")) {
             /* 女性不合理词 */
             noMatchWords = Lists.newArrayList("睾丸", "阴茎", "精索", "包皮", "附睾", "输精管",
@@ -45,7 +45,7 @@ public class BEH02966 extends QCCatalogue {
             return;
         }
 
-        List<String> keys = Lists.newArrayList("主诉", "现病史", "既往史", "个人史", "体格检查", "一般情况"
+        List<String> keys = Lists.newArrayList("主诉", "现病史", "既往史", "个人史", "月经史", "体格检查", "一般情况"
                 , "初步诊断", "专科体格检查", "神经系统检查", "实验室检查", "影像学检查");
         String text = CatalogueUtil.structureMapJoin(beHospitalStructureMap, keys);
 

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

@@ -48,7 +48,7 @@ public class BEH0372 extends QCCatalogue {
             return;
         }
 
-        if (bhbasicInfoStatus.equals("丧偶") && basicInfoStatus.contains("已故")) {
+        if (bhbasicInfoStatus.equals("丧偶") || basicInfoStatus.contains("已故")) {
             status.set("0");
             return;
         }

+ 38 - 31
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/behospitalized/BEH0376.java

@@ -45,23 +45,47 @@ public class BEH0376 extends QCCatalogue {
             status.set("0");
             return;
         }
-        //硬规则 匹配未育
-        String marry = structureMap_beh.get(Content.marry);
-        if (StringUtil.isBlank(marry)) {
-            marry = structureMap_beh.get("婚姻状况");
-        }
-        if ("未婚".equals(marry)) {
-            status.set("0");
-            return;
-        }
+        boolean findChild = false;
         String maritalText = maritalLabel.getText();
         if (StringUtil.isNotBlank(maritalText)) {
-            List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女", "详见原病历", "无子女");
-            for (String word : words) {
-                if (maritalText.contains(word)) {
+            if (maritalText.length() > 0) {
+                String str = maritalText;
+                String s = "\\d+-\\d+-\\d+-\\d+";
+                Pattern pattern = Pattern.compile(s);
+                Matcher ma = pattern.matcher(str);
+                while (ma.find()) {
+                    String matchText = ma.group();
+                    if (!matchText.endsWith("0")) {
+                        findChild = true;
+                    }
+                    String childrenText = str.substring(str.indexOf(matchText), str.length() - 1);
+                    if (childrenText.contains("健康") || childrenText.contains("状况")) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            }
+            if (!findChild) {
+                List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女", "详见原病历", "无子女");
+                for (String word : words) {
+                    if (maritalText.contains(word)) {
+                        status.set("0");
+                        return;
+                    }
+                }
+                //硬规则 匹配未育
+                String marry = structureMap_beh.get(Content.marry);
+                if (StringUtil.isBlank(marry)) {
+                    marry = structureMap_beh.get("婚姻状况");
+                }
+                if ("未婚".equals(marry)) {
                     status.set("0");
                     return;
                 }
+                //未婚 无子女
+                if (maritalLabel.getMaritalStatus() != null && maritalLabel.getMaritalStatus().getName().contains("未婚")) {
+                    status.set("0");
+                }
             }
             String regex = ".*\\d+-\\d+-\\d+-0.*";
             if (maritalText.matches(regex)) {
@@ -69,25 +93,8 @@ public class BEH0376 extends QCCatalogue {
                 return;
             }
 
-            if(maritalText.length()>0){
-                String str=maritalText;
-                String s= "\\d+-\\d+-\\d+-\\d+";
-                Pattern  pattern=Pattern.compile(s);
-                Matcher ma=pattern.matcher(str);
-                while(ma.find()){
-                    String childrenText =str.substring(str.indexOf(ma.group()),str.length()-1);
-                    if(childrenText.contains("健康")||childrenText.contains("状况")){
-                        status.set("0");
-                        return;
-                    }
-                }
-            }
-        }
-        //未婚 无子女
-        if (maritalLabel.getMaritalStatus() != null && maritalLabel.getMaritalStatus().getName().contains("未婚")) {
-            status.set("0");
-            return;
         }
+
         List<Family> familyList = Lists.newArrayList();
         List<Family> familiesFl = inputInfo.getBeHospitalizedDoc().getFamilyLabel().getFamilies();
         List<Family> familiesMl = inputInfo.getBeHospitalizedDoc().getMaritalLabel().getFamily();
@@ -98,7 +105,7 @@ public class BEH0376 extends QCCatalogue {
             familyList.addAll(familiesMl);
         }
 
-        Pattern p = Pattern.compile("[儿子女兄弟姐妹]");
+        Pattern p = Pattern.compile("[儿子女]");
         List<Family> filterFamilies = familyList
                 .stream()
                 .filter(

+ 9 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/behospitalized/BEH0414.java

@@ -31,10 +31,10 @@ public class BEH0414 extends QCCatalogue {
             String newbornAgeDays = firstpageStructureMap.get(Content.newbornAgeDays);
             String newbornAgeStr = "";
             int newbornAge = 0;
-            if (StringUtil.isNotBlank(newbornAgeMonths) && StringUtil.isNotBlank(newbornAgeDays)){
+            if (StringUtil.isNotBlank(newbornAgeMonths) && StringUtil.isNotBlank(newbornAgeDays)) {
                 newbornAgeStr = newbornAgeMonths + newbornAgeDays;
             }
-            if (StringUtil.isNotBlank(newbornAgeStr)){
+            if (StringUtil.isNotBlank(newbornAgeStr)) {
                 newbornAge = removalUnit(newbornAgeStr);
             }
             String admissionAge = beHospitalStructureMap.get(Content.age);
@@ -43,8 +43,12 @@ public class BEH0414 extends QCCatalogue {
                 return;
             }
             String admissAge = "";
-            if (StringUtil.isNotBlank(admissionAge) && admissionAge.contains("岁")) {
-                admissAge = admissionAge.substring(0, admissionAge.indexOf("岁"));
+            if (StringUtil.isNotBlank(admissionAge)) {
+                if (admissionAge.contains("岁")) {
+                    admissAge = admissionAge.substring(0, admissionAge.indexOf("岁"));
+                } else if (admissionAge.contains("天")) {
+                    admissAge = admissionAge.substring(0, admissionAge.indexOf("天"));
+                }
             }
             // int firstAdmissionAgeNum = removalUnit(firstAdmissionAge);
             // int admissionAgeNum = removalUnit(admissionAge);
@@ -64,7 +68,7 @@ public class BEH0414 extends QCCatalogue {
         if (StringUtil.isNotBlank(admissionAge) && admissionAge.contains("岁")) {
             admissionAge = admissionAge.replaceAll("[岁天]", "");
         }
-        admissionAge = admissionAge.replaceAll("[^0-9]","");
+        admissionAge = admissionAge.replaceAll("[^0-9]", "");
         if (CatalogueUtil.numbersOnly(admissionAge)) {
             age = Integer.parseInt(admissionAge);
         }

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

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

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

@@ -36,7 +36,7 @@ public class BEH0445 extends QCCatalogue {
         }
         String presentText = presentLabel.getText();
         if (StringUtil.isNotBlank(presentText)) {
-            List<String> words = Lists.newArrayList("睡眠", "未眠", "未睡", "未入眠", "入睡", "纳眠", "夜眠", "镇静", "未开奶","吃奶","已开奶");
+            List<String> words = Lists.newArrayList("睡眠", "未眠", "未睡", "未入眠", "入睡", "纳眠", "夜眠", "镇静", "未开奶","吃奶","已开奶");
             for (String word : words) {
                 if (presentText.contains(word)) {
                     status.set("0");

+ 14 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/threelevelward/THR0144.java

@@ -5,10 +5,7 @@ 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.DeathCaseDiscussDoc;
-import com.lantone.qc.pub.model.doc.DeathRecordDoc;
-import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
-import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
+import com.lantone.qc.pub.model.doc.*;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
@@ -28,6 +25,7 @@ public class THR0144 extends QCCatalogue {
             status.set("0");
             return;
         }
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
         LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
         DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
         DeathCaseDiscussDoc deathCaseDiscussDoc = inputInfo.getDeathCaseDiscussDoc();
@@ -41,6 +39,17 @@ public class THR0144 extends QCCatalogue {
             status.set("0");
             return;
         }
+        String leaveDate = null;
+        if (firstPageRecordDoc != null) {
+            leaveDate = firstPageRecordDoc.getStructureMap().get("出院时间");
+            if (StringUtil.isBlank(leaveDate)) {
+                leaveDate = leaveHospitalDoc.getStructureMap().get("出院时间");
+            }
+        }
+        if (StringUtil.isBlank(leaveDate)) {
+            status.set("0");
+            return;
+        }
         int j = 0; //最后两次查房记录
         Boolean lastFlag = true;
         for (int i = allDoctorWradDocs.size() - 1; i >= 0 && j < 2; i--) {
@@ -54,7 +63,7 @@ public class THR0144 extends QCCatalogue {
                 continue;
             }
             conditionRecord = StringUtil.isBlank(conditionRecord) ? "" : conditionRecord;
-            conditionRecord = conditionRecord.replace(" ","");
+            conditionRecord = conditionRecord.replace(" ", "");
             treatmentPlan = StringUtil.isBlank(treatmentPlan) ? "" : treatmentPlan;
             //主任或主治查房 标题需要包含“主任”或“主治”,内容需要包含“出院”
             if ((conditionRecord.contains("出院") || treatmentPlan.contains("出院") || conditionRecord.contains("转院"))

+ 32 - 28
trans/src/main/java/com/lantone/qc/trans/yiwu/YiWuFirstCourseRecordDocTrans.java

@@ -39,12 +39,13 @@ public class YiWuFirstCourseRecordDocTrans extends ModelDocTrans {
         } else {
             Map<String, String> sourceMap = YiWuXmlUtil.xmlToMap(content);
             sourceMap.put("mode_id", ModuleMappingUtil.getDeptModuleId(modeId));
-            List<String> titles = Lists.newArrayList("病历记录时间", "一般情况","一、病例特点", "二、初步诊断", "三、诊断依据"
-                    , "四、鉴别诊断", "五、诊疗计划","记录医师");
+            List<String> titles = Lists.newArrayList("病历记录时间", "一般情况", "一、病例特点", "二、初步诊断", "三、诊断依据"
+                    , "四、鉴别诊断", "五、诊疗计划", "主诊医师", "记录医师", "审核医师");
             String text = sourceMap.get("原始文本");
-            CommonAnalysisUtil.cutByTitlesNoColon(text, titles, 0, sourceMap);
+            titles = CommonAnalysisUtil.sortTitles(titles, text);
+            CommonAnalysisUtil.cutByTitles(text, titles, 0, sourceMap);
             //新生儿科特殊处理
-            if (StringUtils.isNotEmpty(sourceMap.get("病历记录时间"))&&sourceMap.get("病历记录时间").split("患者").length>1) {
+            if (StringUtils.isNotEmpty(sourceMap.get("病历记录时间")) && sourceMap.get("病历记录时间").split("患者").length > 1) {
                 sourceMap.put("病历内容", "患者" + sourceMap.get("病历记录时间").split("患者")[1]);
             }
             Map<String, String> changeKeyMap = Maps.newHashMap();
@@ -63,41 +64,44 @@ public class YiWuFirstCourseRecordDocTrans extends ModelDocTrans {
             sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
             structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts, modeId);
         }
+        /*
         // 最后的主诊医师处理
         //经主诊医师XXX同意后确定以下诊疗计划:......
         //......。以下诊疗方案由主诊医师/诊疗组长XXX确认
-        if(StringUtils.isNotEmpty(structureMap.get("诊疗计划"))){
-            if(structureMap.get("诊疗计划").contains("诊疗方案") || structureMap.get("诊疗计划").contains("诊疗规范")){
-                String temp=structureMap.get("诊疗计划");
-                List<String> titles = Lists.newArrayList("。",";");
-                for (String str: titles) {
-                    String[] s=temp.split(str);
-                    temp=s[s.length-1];
+        if (StringUtils.isNotEmpty(structureMap.get("诊疗计划"))) {
+            if (structureMap.get("诊疗计划").contains("诊疗方案") || structureMap.get("诊疗计划").contains("诊疗规范")) {
+                String temp = structureMap.get("诊疗计划");
+                List<String> titles = Lists.newArrayList("。", ";");
+                for (String str : titles) {
+                    String[] s = temp.split(str);
+                    temp = s[s.length - 1];
                 }
-                List<String> titles1 = Lists.newArrayList("方案","由","组长","医师","主诊","诊疗","确认","审核","医生","规范","以上","经","审核","、","同意","1","2","3","4","副主任");
-                for (String str:titles1) {
-                    temp=temp.replaceAll(str,"");
+                List<String> titles1 = Lists.newArrayList("方案", "由", "组长", "医师", "主诊", "诊疗", "确认", "审核", "医生", "规范", "以上", "经", "审核", "、", "同意", "1", "2", "3", "4", "副主任");
+                for (String str : titles1) {
+                    temp = temp.replaceAll(str, "");
                 }
-                structureMap.put("主诊医师",temp);
-                structureMap.put("诊疗计划",structureMap.get("诊疗计划").split("诊疗方案")[0]);
+                structureMap.put("主诊医师", temp);
+                structureMap.put("诊疗计划", structureMap.get("诊疗计划").split("诊疗方案")[0]);
             }
-            if(structureMap.get("诊疗计划").contains("诊疗计划") || structureMap.get("诊疗计划").contains("治疗计划")){
-                String temp=structureMap.get("诊疗计划");
-                List<String> titles = Lists.newArrayList("。",";",":");
-                for (String str: titles) {
-                    String[] s=temp.split(str);
-                    temp=s[0];
+            if (structureMap.get("诊疗计划").contains("诊疗计划") || structureMap.get("诊疗计划").contains("治疗计划")) {
+                String temp = structureMap.get("诊疗计划");
+                List<String> titles = Lists.newArrayList("。", ";", ":");
+                for (String str : titles) {
+                    String[] s = temp.split(str);
+                    temp = s[0];
                 }
-                List<String> titles1 = Lists.newArrayList("经","主诊","同意","医师","确定","以下","诊疗计划","后","如下","审核","治疗计划","医","确认",",");
-                for (String str:titles1) {
-                    temp=temp.replaceAll(str,"");
+                List<String> titles1 = Lists.newArrayList("经", "主诊", "同意", "医师", "确定", "以下", "诊疗计划", "后", "如下", "审核", "治疗计划", "医", "确认", ",");
+                for (String str : titles1) {
+                    temp = temp.replaceAll(str, "");
                 }
-                structureMap.put("主诊医师",temp);
-                if(structureMap.get("诊疗计划").split("1").length>1){
-                    structureMap.put("诊疗计划","1"+structureMap.get("诊疗计划").split("1")[1]);
+                structureMap.put("主诊医师", temp);
+                if (structureMap.get("诊疗计划").split("1").length > 1) {
+                    structureMap.put("诊疗计划", "1" + structureMap.get("诊疗计划").split("1")[1]);
                 }
             }
         }
+
+         */
         // 病例特点=主诉+现病史-发病情况+专科检查+实验室检查+影像学检查+辅助检查结果+呼吸+脉搏+体温+血压
         //        structureMap.put("病例特点", MapUtil.getSelectString(structureMap, Arrays.asList(
         //                "主诉",

+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/yiwu/YiWuThreeLevelWardDocTrans.java

@@ -172,6 +172,7 @@ public class YiWuThreeLevelWardDocTrans extends ModelDocTrans {
             "病程内容=病情记录",
             "病程标题=查房标题",
             "记录医师=记录医生",
+            "记录医师签名=记录医生",
             "医师签名=记录医生"
     );