소스 검색

Merge remote-tracking branch 'origin/hb/beilun' into hb/beilun

liuqq 4 년 전
부모
커밋
996447db29
34개의 변경된 파일393개의 추가작업 그리고 48개의 파일을 삭제
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0024.java
  2. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0025.java
  3. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0026.java
  4. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0028.java
  5. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0029.java
  6. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0043.java
  7. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0045.java
  8. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0046.java
  9. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0047.java
  10. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0048.java
  11. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0049.java
  12. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0053.java
  13. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0054.java
  14. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0056.java
  15. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0058.java
  16. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0073.java
  17. 33 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03125.java
  18. 4 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0372.java
  19. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0375.java
  20. 2 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0376.java
  21. 4 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0397.java
  22. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0026.java
  23. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0030.java
  24. 69 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0031.java
  25. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0454.java
  26. 30 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/deathrecord/DEAR0343.java
  27. 1 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/deathrecord/DEAR0344.java
  28. 12 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/operationdiscussion/OPE0369.java
  29. 98 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/threelevelward/THR0134.java
  30. 99 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/threelevelward/THR0139.java
  31. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/medicalwriting/MEDI03118.java
  32. 0 3
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0127.java
  33. 15 3
      trans/src/main/java/com/lantone/qc/trans/shengzhouyy/DifficultCaseDiscussDocTrans.java
  34. 1 2
      trans/src/main/java/com/lantone/qc/trans/shengzhouyy/OperationDocTrans.java

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

@@ -48,7 +48,7 @@ public class BEH0024 extends QCCatalogue {
         }
         //硬规则匹配
         String pastLabelText = pastLabel.getText();
-        if (pastLabelText.contains("外伤") || pastLabelText.contains("详见原病历") || pastLabelText.contains("骨折")
+        if (pastLabelText.contains("外伤") || pastLabelText.contains("详见") || pastLabelText.contains("骨折")
                 || pastLabelText.contains("见旧病历") || pastLabelText.contains("见既往病历") || pastLabelText.contains("右根骨手术")) {
             status.set("0");
         }

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

@@ -61,7 +61,7 @@ public class BEH0025 extends QCCatalogue {
         }
         //规则硬匹配
         String pastLabelText = pastLabel.getText();
-        if (pastLabelText.contains("手术") || pastLabelText.contains("详见原病历")
+        if (pastLabelText.contains("手术") || pastLabelText.contains("详见")
                 || pastLabelText.contains("见旧病历") || pastLabelText.contains("见既往病历")|| pastLabelText.contains("体外碎石")) {
             status.set("0");
         }

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

@@ -39,7 +39,7 @@ public class BEH0026 extends QCCatalogue {
             return;
         }
         String pastText = pastLabel.getText();
-        if (pastText.contains("食物过敏史") || pastText.contains("详见原病历")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
+        if (pastText.contains("食物过敏史") || pastText.contains("详见")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
             status.set("0");
             return;
         }

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

@@ -39,7 +39,7 @@ public class BEH0028 extends QCCatalogue {
             return;
         }
         String pastText = pastLabel.getText();
-        if (pastText.contains("输血") || pastText.contains("详见原病历")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
+        if (pastText.contains("输血") || pastText.contains("详见")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
             status.set("0");
             return;
         }

+ 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("预防接种")
+            if (StringUtil.isNotBlank(pastText) && (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("预防接种"))) {
                 status.set("0");
                 return;
             }

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

@@ -43,7 +43,7 @@ public class BEH0043 extends QCCatalogue {
         }
         String text = personalLabel.getText();
         if (StringUtil.isBlank(text) || text.contains("居住") || text.contains("生长") || text.contains("生活") || text.contains("本地")
-                || text.contains("详见原病历")|| text.contains("见旧病历") || text.contains("见既往病历")) {
+                || text.contains("详见")|| text.contains("见旧病历") || text.contains("见既往病历")) {
             status.set("0");
             return;
         }

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

@@ -37,7 +37,7 @@ public class BEH0045 extends QCCatalogue {
             return;
         }
         String personalText = personalLabel.getText();
-        if (personalText.contains("冶游史") || personalText.contains("详见原病历")) {
+        if (personalText.contains("冶游史") || personalText.contains("详见")) {
             status.set("0");
             return;
         }

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

@@ -38,7 +38,7 @@ public class BEH0046 extends QCCatalogue {
         }
         String personalText = personalLabel.getText();
         if (StringUtil.isBlank(personalText) || personalText.contains("偶有") || personalText.contains("烟")
-                || personalText.contains("详见原病历")) {
+                || personalText.contains("详见")) {
             status.set("0");
             return;
         }

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

@@ -36,7 +36,7 @@ public class BEH0047 extends QCCatalogue {
             return;
         }
         String pastText = personalLabel.getText();
-        if (pastText.contains("饮酒") || pastText.contains("详见原病历")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
+        if (pastText.contains("饮酒") || pastText.contains("详见")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
             status.set("0");
             return;
         }

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

@@ -37,7 +37,7 @@ public class BEH0048 extends QCCatalogue {
             return;
         }
         String personalText = personalLabel.getText();
-        if (personalText.contains("详见原病历")) {
+        if (personalText.contains("详见")) {
             status.set("0");
             return;
         }

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

@@ -28,7 +28,7 @@ public class BEH0049 extends QCCatalogue {
             return;
         }
         String personalText = personalLabel.getText();
-        if (personalText.contains("详见原病历") || personalText.contains("特殊嗜好")) {
+        if (personalText.contains("详见") || personalText.contains("特殊嗜好")) {
             status.set("0");
             return;
         }

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

@@ -45,7 +45,7 @@ public class BEH0053 extends QCCatalogue {
             return;
         }
         String maritalText = maritalLabel.getText();
-        if ("未婚".equals(marry) || maritalText.contains("未婚") || maritalText.contains("详见原病历")
+        if ("未婚".equals(marry) || maritalText.contains("未婚") || maritalText.contains("详见")
                 || maritalText.contains("离婚") || maritalText.contains("离异") || maritalText.contains("结婚")
                 || maritalText.contains("丧偶")|| maritalText.contains("见旧病历") || maritalText.contains("见既往病历")) {
             status.set("0");

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

@@ -33,7 +33,7 @@ public class BEH0054 extends QCCatalogue {
             return;
         }
         if ("未婚".equals(marry) || StringUtil.isBlank(maritalLabel.getText()) || maritalLabel.getText().contains("未婚")
-                || maritalLabel.getText().contains("详见原病历")) {
+                || maritalLabel.getText().contains("详见")) {
             status.set("0");
             return;
         }

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

@@ -44,7 +44,7 @@ public class BEH0056 extends QCCatalogue {
         String text = maritalLabel.getText();
         if (StringUtil.isNotBlank(text)) {
             if (text.contains("未婚") || text.contains("离异") || text.contains("离婚") || text.contains("丧偶")
-                    || "未婚".equals(marry) || text.contains("详见原病历")) {
+                    || "未婚".equals(marry) || text.contains("详见")) {
                 status.set("0");
                 return;
             }

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

@@ -53,7 +53,7 @@ public class BEH0058 extends QCCatalogue {
             boolean flag = maritalText.matches(regex);
             regex = ".*\\d+-\\d+-\\d+-[1-9].*";
             boolean matches = maritalText.matches(regex);
-            regex = ".*\\d+,\\d+,\\d+,[1-9].*|.*\\d个.*|.*\\d男.*|.*\\d女.*";
+            regex = ".*\\d+,\\d+,\\d+,[1-9].*|.*\\d个.*|.*\\d男.*|.*\\d女.*|.*\\d子.*";
             boolean isComma = maritalText.matches(regex);
             if (flag || matches || isComma) {
                 status.set("0");
@@ -67,7 +67,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/BEH0073.java

@@ -39,7 +39,7 @@ public class BEH0073 extends QCCatalogue {
             return;
         }
         String familyText = familyLabel.getText();
-        if (familyText.contains("肝炎") || familyText.contains("结核") || familyText.contains("详见原病历")) {
+        if (familyText.contains("肝炎") || familyText.contains("结核") || familyText.contains("详见")) {
             status.set("0");
             return;
         }

+ 33 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH03125.java

@@ -0,0 +1,33 @@
+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.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+
+/**
+ * @ClassName : BEH03125
+ * @Description : 入院记录身份证号未填写
+ * @Author : wsy
+ * @Date: 2021-06-06 17:28
+ */
+@Component
+public class BEH03125 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (structureMap != null) {
+            String idCode = structureMap.get("身份证号");
+            if (CatalogueUtil.isEmpty(idCode)) {
+                status.set("-1");
+            }
+        }
+    }
+}

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

@@ -28,7 +28,7 @@ public class BEH0372 extends QCCatalogue {
         if (StringUtil.isBlank(bhbasicInfoStatus)) {
             bhbasicInfoStatus = inputInfo.getBeHospitalizedDoc().getStructureMap().get("婚姻");
         }
-        if (StringUtil.isBlank(basicInfoStatus) || StringUtil.isBlank(bhbasicInfoStatus)) {
+        if (StringUtil.isBlank(basicInfoStatus) || basicInfoStatus.contains("详见") || StringUtil.isBlank(bhbasicInfoStatus)) {
             status.set("0");
             return;
         }
@@ -37,7 +37,7 @@ public class BEH0372 extends QCCatalogue {
             return;
         }
 
-        if (bhbasicInfoStatus.equals("未婚") && basicInfoStatus.contains("未婚")) {
+        if (bhbasicInfoStatus.equals("未婚") && (basicInfoStatus.contains("未婚") || basicInfoStatus.contains("未结婚"))) {
             status.set("0");
             return;
         }
@@ -55,12 +55,12 @@ public class BEH0372 extends QCCatalogue {
         }
 
         if ((bhbasicInfoStatus.equals("离婚") || bhbasicInfoStatus.equals("离异")) &&
-                (basicInfoStatus.contains("离异") || bhbasicInfoStatus.equals("离婚"))) {
+                (basicInfoStatus.contains("离异") || basicInfoStatus.equals("离婚"))) {
             status.set("0");
             return;
         }
 
-        if (bhbasicInfoStatus.equals("已婚") && (basicInfoStatus.contains("结婚") || basicInfoStatus.contains("再婚") || basicInfoStatus.contains("已婚") )) {
+        if (bhbasicInfoStatus.equals("已婚") && (basicInfoStatus.contains("结婚") || basicInfoStatus.contains("再婚") || basicInfoStatus.contains("已婚"))) {
             status.set("0");
             return;
         }

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

@@ -47,7 +47,7 @@ public class BEH0375 extends QCCatalogue {
                         || maritalLabel.getText().contains("亡故")
                         || maritalLabel.getText().contains("已逝")
                         || maritalLabel.getText().contains("丧偶")
-                        || maritalLabel.getText().contains("详见原病历")
+                        || maritalLabel.getText().contains("详见")
                         || maritalLabel.getText().contains("见旧病历")
                         || maritalLabel.getText().contains("见既往病历")
                 )
@@ -101,7 +101,7 @@ public class BEH0375 extends QCCatalogue {
         String marrytext=inputInfo.getBeHospitalizedDoc().getMaritalLabel().getText();
         if (StringUtil.isNotBlank(marrytext)
                 && ((marrytext.contains("爱人") || marrytext.contains("配偶") || marrytext.contains("妻子") || marrytext.contains("丈夫"))
-                || (marrytext.contains("详见原病历") || marrytext.contains("已故") || marrytext.contains("体健") || marrytext.contains("去世")))) {
+                || (marrytext.contains("详见") || marrytext.contains("已故") || marrytext.contains("体健") || marrytext.contains("去世")))) {
             status.set("0");
             return;
         }

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

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

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

@@ -59,9 +59,11 @@ public class BEH0397 extends QCCatalogue {
         }
         if ((StringUtil.isNotBlank(familyText)
                 && ((familyText.contains("父") || familyText.contains("双亲") || familyText.contains("母"))
-                && (familyText.contains("详见原病历") || familyText.contains("见旧病历") || familyText.contains("见既往病历") || familyText.contains("已故") || familyText.contains("体健") || familyText.contains("去世") || familyText.contains("健康")))
+                && (familyText.contains("已故") || familyText.contains("体健") || familyText.contains("去世") || familyText.contains("健康"))
+                || familyText.contains("详见") || familyText.contains("见旧病历") || familyText.contains("见既往病历"))
                 || (StringUtil.isNotBlank(maritalText) && ((maritalText.contains("父") || maritalText.contains("双亲") || maritalText.contains("母"))
-                && (maritalText.contains("详见原病历") || maritalText.contains("见旧病历") || maritalText.contains("见既往病历") || maritalText.contains("已故") || maritalText.contains("体健") || maritalText.contains("去世") || familyText.contains("健康")))))) {
+                && (maritalText.contains("已故") || maritalText.contains("体健") || maritalText.contains("去世") || familyText.contains("健康"))
+                || maritalText.contains("详见") || maritalText.contains("见旧病历") || maritalText.contains("见既往病历"))))) {
             status.set("0");
             return;
         }

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0026.java

@@ -39,7 +39,8 @@ public class BEH0026 extends QCCatalogue {
             return;
         }
         String pastText = pastLabel.getText();
-        if (pastText.contains("食物过敏史") || pastText.contains("食物、药物过敏史") || pastText.contains("详见原病历")|| pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
+        if (pastText.contains("食物过敏史") || pastText.contains("食物、药物过敏史") || pastText.contains("食物药物过敏史")
+                || pastText.contains("详见") || pastText.contains("见旧病历") || pastText.contains("见既往病历")) {
             status.set("0");
             return;
         }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0030.java

@@ -47,7 +47,7 @@ public class BEH0030 extends QCCatalogue {
             status.set("0");
         }
         String pastText = pastLabel.getText();
-        if (pastText.contains("肝炎") || pastText.contains("结核") || pastText.contains("详见原病历") || pastText.contains("传染病")
+        if (pastText.contains("肝炎") || pastText.contains("结核") || pastText.contains("详见") || pastText.contains("传染病")
                 || pastText.contains("见旧病历") || pastText.contains("见既往病历") || pastText.contains("乙肝")) {
             status.set("0");
         }

+ 69 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0031.java

@@ -0,0 +1,69 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.behospitalized;
+
+import com.google.common.collect.Lists;
+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 com.lantone.qc.pub.util.ListUtil;
+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;
+
+/**
+ * @Description: 慢病史未填写
+ * @author: rengb
+ * @time: 2020/3/10 14:02
+ */
+@Component
+public class BEH0031 extends QCCatalogue {
+
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+        if (StringUtils.isNotEmpty(structureMap.get("高血压"))) {
+            status.set("0");
+            return;
+        }
+        PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
+        if (pastLabel != null && StringUtil.isNotBlank(pastLabel.getText())) {
+            if (ListUtil.isNotEmpty(
+                    CatalogueUtil.filterDiagsByNature(
+                            pastLabel.getDiags(),
+                            "chronic",
+                            "1"
+                    )
+            )) {
+                status.set("0");
+            }
+            //硬规则匹配
+            String text = pastLabel.getText();
+            if (StringUtils.isNotEmpty(text)) {
+                List<String> words = Lists.newArrayList("高血压", "糖尿病", "阿尔茨海默病", "帕金森", "冠心病心律失常型"
+                        , "冠状动脉性心脏病", "冠状动脉粥样硬化性心脏病", "慢性肾炎综合征", "肾病", "肾疾病", "慢性肾衰竭", "肾功能异常", "哮喘"
+                        , "肺结核", "腹膜透析", "慢性阻塞性肺病", "精神分裂症", "分裂情感性精神病", "双相情感障碍,目前为缓解状态", "前列腺增生"
+                        , "高脂血症", "高低密度脂蛋白胆固醇血症", "高胆固醇血症", "高甘油三酯血症", "骨质疏松", "慢性乙型病毒性肝炎"
+                        , "慢性庚型肝炎", "慢性肝炎", "慢性丁型肝炎", "慢性病毒性肝炎", "慢性丙型病毒性肝炎", "酒精性肝病", "脂肪肝"
+                        , "肝硬化", "肝恶性肿瘤", "肝恶性细胞瘤", "肝病", "肝疾病", "类风湿性关节炎", "心血管", "心脑血管", "脑血管", "内分泌", "见旧病历", "详见", "见既往病历");
+                for (String word : words) {
+                    if (text.contains(word)) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            }
+        } else {
+            status.set("0");
+            return;
+        }
+    }
+
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/behospitalized/BEH0454.java

@@ -38,7 +38,7 @@ public class BEH0454 extends QCCatalogue {
             return;
         }
         if (StringUtils.isNotEmpty(pastLabel.getHeathCondition()) || pastLabel.getText().contains("既往") || pastLabel.getText().contains("平时")
-                || pastLabel.getText().contains("详见原病历") || pastLabel.getText().contains("健康状况")
+                || pastLabel.getText().contains("详见") || pastLabel.getText().contains("健康状况")
                 || pastLabel.getText().contains("见旧病历")) {
             status.set("0");
             return;

+ 30 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/deathrecord/DEAR0343.java

@@ -0,0 +1,30 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.deathrecord;
+
+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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : DEAR0343
+ * @Description : 死亡记录无病情演变
+ * @Author : 胡敬
+ * @Date: 2020-03-18 17:14
+ */
+@Component
+public class DEAR0343 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getDeathRecordDoc() != null && inputInfo.getDeathRecordDoc().getStructureMap() != null) {
+            Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
+            String diagnosisTreatmentProcess = deathRecordStructureMap.get("诊疗经过");
+            if (CatalogueUtil.isEmpty(diagnosisTreatmentProcess)) {
+                status.set("-1");
+                return;
+            }
+        }
+    }
+}

+ 1 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/deathrecord/DEAR0344.java

@@ -22,10 +22,8 @@ public class DEAR0344 extends QCCatalogue {
             Map<String, String> deathRecordStructureMap = inputInfo.getDeathRecordDoc().getStructureMap();
             String diagnosisTreatmentProcess = deathRecordStructureMap.get("诊疗经过");
             if (CatalogueUtil.isEmpty(diagnosisTreatmentProcess)) {
-                return;
-            }
-            if (!diagnosisTreatmentProcess.contains("救")) {
                 status.set("-1");
+                return;
             }
         }
     }

+ 12 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/operationdiscussion/OPE0369.java

@@ -36,6 +36,8 @@ public class OPE0369 extends QCCatalogue {
 
         MedicalRecordInfoDoc medicalRecordInfoDoc = inputInfo.getMedicalRecordInfoDoc();
         String admisTime = "";
+        //主刀医师
+        List<String> chiefSurgeonList = new ArrayList<>();
         if (medicalRecordInfoDoc != null && medicalRecordInfoDoc.getStructureMap() != null) {
             //入院日期
             admisTime = medicalRecordInfoDoc.getStructureMap().get("behospitalDate");
@@ -65,6 +67,7 @@ public class OPE0369 extends QCCatalogue {
                 if (operationDoc.getOperationRecordDoc() != null) {
                     Map<String, String> operationDocStructureMap = operationDoc.getOperationRecordDoc().getStructureMap();
                     operationStartDate = operationDocStructureMap.get("开始时间");
+                    String chiefSurgeon = operationDocStructureMap.get("主刀医师");
                     if (operationStartDate.contains("年月日")) {
                         continue;
                     }
@@ -76,6 +79,7 @@ public class OPE0369 extends QCCatalogue {
                             continue;
                         }
                         operDateList.add(StringUtil.parseDateTime(operationStartDate));
+                        chiefSurgeonList.add(chiefSurgeon);
                     } else {//取不到手术时间
                         return;
                     }
@@ -101,12 +105,15 @@ public class OPE0369 extends QCCatalogue {
                 String writTitle = structureMap.get("文书标题");
                 String recordDateStr = structureMap.get("查房日期");
                 if (operDateList.size() > 0) {
-                    for (Date date : operDateList) {
-                        if (StringUtil.isNotBlank(recordDateStr) && date != null
-                                && StringUtil.parseDateTime(recordDateStr).before(date)) {
-                            if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(recordDateStr), date, Long.valueOf(24 * 60))
+//                    for (Date date : operDateList) {
+                    for (int i = 0; i < operDateList.size(); i++) {
+                        if (StringUtil.isNotBlank(recordDateStr) && operDateList.get(i) != null
+                                && StringUtil.parseDateTime(recordDateStr).before(operDateList.get(i))) {
+                            if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(recordDateStr), operDateList.get(i), Long.valueOf(24 * 60))
                                     && (((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("主刀")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("主刀")))
-                                    || ((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("术前")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("术前"))))) {
+                                    || ((StringUtil.isNotBlank(makeTitle) && makeTitle.contains("术前")) || (StringUtil.isNotBlank(writTitle) && writTitle.contains("术前")))
+                                    || (StringUtil.isNotBlank(makeTitle) && StringUtil.isNotBlank(chiefSurgeonList.get(i)) && makeTitle.contains(chiefSurgeonList.get(i)))
+                                    || (StringUtil.isNotBlank(writTitle) && StringUtil.isNotBlank(chiefSurgeonList.get(i)) && writTitle.contains(chiefSurgeonList.get(i))))) {
                                 operateCount++;
                             }
                         }

+ 98 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/threelevelward/THR0134.java

@@ -0,0 +1,98 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.threelevelward;
+
+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.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
+import com.lantone.qc.pub.model.label.ThreeLevelWardLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @ClassName : THR0134
+ * @Description : 上级医师(主治医师)首次查房无初步诊断
+ * @Author : 胡敬
+ * @Date: 2020-03-23 14:16
+ */
+@Component
+public class THR0134 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        List<AttendingDoctorWardDoc> attendDocs = inputInfo.getThreeLevelWardDocs().get(0).getAttendingDoctorWardDocs();
+        if (attendDocs.size() == 0) {
+            status.set("0");
+            return;
+        }
+        AttendingDoctorWardDoc firstAttendDoc = attendDocs.get(0);
+        //先取结构化数据判断
+        Map<String, String> firstAttendStructureMap = firstAttendDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstAttendStructureMap.get("查房日期");
+        String content = firstAttendStructureMap.get("病情记录");
+        if (content.contains("诊断明确") || content.contains("目前诊断") || content.contains("目前考虑") || content.contains("当前诊断") ||
+                content.contains("考虑诊断") || content.contains("诊断考虑") || content.contains("诊断基本明确") || content.contains("初步诊断") ||
+                content.contains("诊断为") || regexFind(content, "诊断", "基本明确")) {
+            status.set("0");
+            return;
+        }
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过48小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房在手术记录之后不提示规则
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (operationDocs != null) {
+            for (OperationDoc operationDoc : operationDocs) {
+                if (operationDoc.getOperationRecordDoc() != null) {
+                    Map<String, String> structureMap = operationDoc.getOperationRecordDoc().getStructureMap();
+                    String opeEndDate = structureMap.get("结束时间");
+                    if (StringUtil.isBlank(opeEndDate)) {
+                        opeEndDate = structureMap.get("医师签名时间");
+                    }
+                    if (StringUtil.isBlank(opeEndDate) || StringUtil.parseDateTime(opeEndDate) == null) {
+                        continue;
+                    }
+                    if (StringUtil.isNotBlank(opeEndDate) &&
+                            StringUtil.parseDateTime(opeEndDate).before(StringUtil.parseDateTime(recordDateStr))) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            }
+        }
+        ThreeLevelWardLabel firstAttendLabel = firstAttendDoc.getThreeLevelWardLabel();
+        if (firstAttendLabel == null) {
+            return;
+        }
+
+        if (firstAttendLabel.getDiags().size() != 0 || StringUtil.isNotBlank(firstAttendLabel.getDiagText())) {
+            status.set("0");
+        }
+    }
+
+    private boolean regexFind(String content, String... str) {
+        String s = "";
+        for (String word : str) {
+            s += word + ".*";
+        }
+        s = s.substring(0, s.lastIndexOf(".*"));
+        Pattern p = Pattern.compile(s);
+        Matcher m = p.matcher(content);
+        return m.find();
+    }
+}

+ 99 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/shengzhouyy/threelevelward/THR0139.java

@@ -0,0 +1,99 @@
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.threelevelward;
+
+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.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
+import com.lantone.qc.pub.model.label.ThreeLevelWardLabel;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @ClassName : THR0139
+ * @Description : 副主任医师/主任医师首次查房无初步诊断
+ * @Author : 胡敬
+ * @Date: 2020-03-23 14:16
+ */
+@Component
+public class THR0139 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getThreeLevelWardDocs().size() == 0 || inputInfo.getBeHospitalizedDoc() == null) {
+            status.set("0");
+            return;
+        }
+        List<DirectorDoctorWardDoc> directorDocs = inputInfo.getThreeLevelWardDocs().get(0).getDirectorDoctorWardDocs();
+        if (directorDocs.size() == 0) {
+            status.set("0");
+            return;
+        }
+        DirectorDoctorWardDoc firstDirectDoc = directorDocs.get(0);
+        //先取结构化数据判断
+        Map<String, String> firstDirectStructureMap = firstDirectDoc.getStructureMap();
+        String admisDateStr = inputInfo.getBeHospitalizedDoc().getStructureMap().get("入院日期");
+        String recordDateStr = firstDirectStructureMap.get("查房日期");
+        String content = firstDirectStructureMap.get("病情记录");
+        if (content.contains("诊断明确") || content.contains("目前诊断") || content.contains("目前考虑") || content.contains("当前诊断") ||
+                content.contains("考虑诊断") || content.contains("诊断考虑") || content.contains("诊断基本明确") || content.contains("初步诊断") ||
+                content.contains("诊断为") || regexFind(content, "诊断", "基本明确")) {
+            status.set("0");
+            return;
+        }
+
+        if (CatalogueUtil.isEmpty(admisDateStr) || CatalogueUtil.isEmpty(recordDateStr)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房超过72小时则不判断该条规则
+        if (CatalogueUtil.compareTime(StringUtil.parseDateTime(admisDateStr), StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {
+            status.set("0");
+            return;
+        }
+        //如果首次查房在手术记录之后不提示规则
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (operationDocs != null) {
+            for (OperationDoc operationDoc : operationDocs) {
+                if (operationDoc.getOperationRecordDoc() != null) {
+                    Map<String, String> structureMap = operationDoc.getOperationRecordDoc().getStructureMap();
+                    String opeEndDate = structureMap.get("结束时间");
+                    if (StringUtil.isBlank(opeEndDate)) {
+                        opeEndDate = structureMap.get("医师签名时间");
+                    }
+                    if (StringUtil.isBlank(opeEndDate) || StringUtil.parseDateTime(opeEndDate) == null) {
+                        continue;
+                    }
+                    if (StringUtil.isNotBlank(opeEndDate) &&
+                            StringUtil.parseDateTime(opeEndDate).before(StringUtil.parseDateTime(recordDateStr))) {
+                        status.set("0");
+                        return;
+                    }
+                }
+            }
+        }
+        ThreeLevelWardLabel firstDirectLabel = firstDirectDoc.getThreeLevelWardLabel();
+        if (firstDirectLabel == null) {
+            return;
+        }
+
+        if (firstDirectLabel.getDiags().size() != 0 || StringUtil.isNotBlank(firstDirectLabel.getDiagText())) {
+            status.set("0");
+        }
+    }
+
+    private boolean regexFind(String content, String... str) {
+        String s = "";
+        for (String word : str) {
+            s += word + ".*";
+        }
+        s = s.substring(0, s.lastIndexOf(".*"));
+        Pattern p = Pattern.compile(s);
+        Matcher m = p.matcher(content);
+        return m.find();
+    }
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/medicalwriting/MEDI03118.java

@@ -20,7 +20,7 @@ public class MEDI03118 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
         List<InformedConsentDoc> informedConsentDocList = inputInfo.getInformedConsentDoc();
-        if (informedConsentDocList.size() == 0) {
+        if (informedConsentDocList == null || informedConsentDocList.size() == 0) {
             return;
         }
 

+ 0 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/threelevelward/THR0127.java

@@ -198,9 +198,6 @@ public class THR0127 extends QCCatalogue {
                 String doctorTitle = CatalogueUtil.getDoctorTitle(operationDocs, recordDate, "一助");
                 title = title.replace("一助", doctorTitle);
             }
-            if(!"7".equals(Content.hospital_Id)){
-                recordDate = DateUtil.dateZeroClear(recordDate);
-            }
             if (admisDate.before(recordDate) && !CatalogueUtil.compareTime(admisDate, recordDate, Long.valueOf(duration))) {
                 recordTitle += title + ",";
                 dateList.add(recordDate);

+ 15 - 3
trans/src/main/java/com/lantone/qc/trans/shengzhouyy/DifficultCaseDiscussDocTrans.java

@@ -9,6 +9,7 @@ import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -36,14 +37,20 @@ public class DifficultCaseDiscussDocTrans extends ModelDocTrans {
             structureMap = (Map) FastJsonUtils.getJsonToMap(content);
         } else {
             Map<String, String> sourceMap = YiWuXmlUtil.xmlToMap(content);
-            List<String> titles = Lists.newArrayList("讨论日期","讨论意见", "地点","主持人","参加人员的姓名及专业技术职务","主持人小结",
-            "记录医师","记录医师签名","主持人签名","汇报病情","讨论目的");
+            List<String> titles = Lists.newArrayList("讨论日期", "讨论意见", "地点", "主持人", "参加人员的姓名及专业技术职务", "主持人小结",
+                    "记录医师", "记录医师签名", "主持人签名", "汇报病情", "讨论目的", "讨论时间","参加人员","入院诊断",
+                    "讨论摘要","讨论内容");
             String text = sourceMap.get("原始文本");
             List<String> sortTitles = CommonAnalysisUtil.sortTitles(titles, text);
             CommonAnalysisUtil.cutByTitles(text, sortTitles, 0, sourceMap);
             sourceMap.put("mode_id", ModuleMappingUtil.getDeptModuleId(modeId));
             sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
             sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            String talk_time = sourceMap.get("讨论时间");
+            if (StringUtils.isNotBlank(talk_time)) {
+                String[] split = talk_time.split(" ");
+                if (split.length > 0) sourceMap.put("讨论时间", split[0]);
+            }
             structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts, modeId);
         }
 
@@ -75,6 +82,11 @@ public class DifficultCaseDiscussDocTrans extends ModelDocTrans {
             "主持人小结=主持人总结",
             "汇报病情=汇报病史",
             "讨论意见=讨论发言",
-            "记录医师签名=记录医生"
+            "记录医师签名=记录医生",
+            "入院诊断=汇报病史",
+            "参加人员=参加人员的姓名及专业技术职务",
+            "讨论摘要=讨论发言",
+            "讨论内容=讨论发言",
+            "讨论时间=讨论日期"
     );
 }

+ 1 - 2
trans/src/main/java/com/lantone/qc/trans/shengzhouyy/OperationDocTrans.java

@@ -145,7 +145,7 @@ public class OperationDocTrans extends ModelDocTrans {
             "术后诊断=术中后诊断",
             "术后诊疗计划(处理措施)=术后处理措施",
             "术后谈话=术后注意事项",
-            "记录医师签名=记录医生",
+            "记录医师=记录医生",
             "医师签名=记录医生",
             "签名时间=记录时间",
             "会诊日期=手术日期",
@@ -236,7 +236,6 @@ public class OperationDocTrans extends ModelDocTrans {
             "主刀医师签名=医师签名",
             "医师签名=医师签名",
             "记录时间=医师签名时间",
-            "时间=医师签名时间",
             "观察时间=术后观察时间",
             "手术方式=手术名称"
     );