Procházet zdrojové kódy

Merge remote-tracking branch 'origin/dev'

hujing před 5 roky
rodič
revize
d42f1074d6
21 změnil soubory, kde provedl 94 přidání a 30 odebrání
  1. 3 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0006.java
  2. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0014.java
  3. 3 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0058.java
  4. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0065.java
  5. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0072.java
  6. 1 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0375.java
  7. 6 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0376.java
  8. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0400.java
  9. 10 2
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0416.java
  10. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/behospitalized/BEH0441.java
  11. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0309.java
  12. 5 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0087.java
  13. 3 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0092.java
  14. 12 7
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0161.java
  15. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0202.java
  16. 2 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA02901.java
  17. 27 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0322.java
  18. 4 4
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE0328.java
  19. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java
  20. 1 0
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxPathologyShipDocTrans.java
  21. 7 4
      trans/src/main/java/com/lantone/qc/trans/changx/ChangxThreeLevelWardDocTrans.java

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

@@ -32,7 +32,8 @@ public class BEH0006 extends QCCatalogue {
         }
         String chiefText = chiefLabel.getText();
         if (StringUtil.isNotBlank(chiefText) && (chiefText.contains("复查")
-                || chiefText.contains("检查") || chiefText.contains("术后") || chiefText.contains("药物") || chiefText.contains("发现"))) {
+                || chiefText.contains("检查") || chiefText.contains("术后") || chiefText.contains("药物")
+                || chiefText.contains("发现") || chiefText.contains("半年"))) {
             status.set("0");
         } else {
             List<PD> pds = chiefLabel.getPds();
@@ -42,7 +43,7 @@ public class BEH0006 extends QCCatalogue {
                     if (!CatalogueUtil.isEmpty(pdName)) {
                         if (pdName.contains("天") || pdName.contains("周") || pdName.contains("月")
                                 || pdName.contains("时") || pdName.contains("半年") || pdName.contains("秒")
-                                || pdName.contains("日") || pdName.contains("今")) {
+                                || pdName.contains("分") || pdName.contains("日") || pdName.contains("今")) {
                             status.set("0");
                             break;
                         }

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

@@ -53,7 +53,7 @@ public class BEH0014 extends QCCatalogue {
             if (present.length() > 30) {
                 present = present.substring(0, 30);
             }
-            if (present.contains("体检") || present.contains("发现") || present.contains("检查")) {
+            if (present.contains("体检") || present.contains("发现") || present.contains("检查") || present.contains("因")) {
                 status.set("0");
                 return;
             }

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

@@ -45,7 +45,9 @@ public class BEH0058 extends QCCatalogue {
         } else {
             String regex = ".*\\d?子\\d?女.*";
             boolean flag = maritalText.matches(regex);
-            if (flag) {
+            regex = ".*\\d+-\\d+-\\d+-0.*";
+            boolean matches = maritalText.matches(regex);
+            if (flag || matches) {
                 status.set("0");
                 return;
             }

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

@@ -35,7 +35,7 @@ public class BEH0065 extends QCCatalogue {
         } else {
             MenstrualLabel menstrualLabel = inputInfo.getBeHospitalizedDoc().getMenstrualLabel();
             String text = menstrualLabel.getText();
-            if (StringUtil.isNotBlank(text) && (text.contains("未行经") || text.contains("颜色"))) {
+            if (StringUtil.isNotBlank(text) && (text.contains("未行经") || text.contains("颜色")|| text.contains("已绝经"))) {
                 status.set("0");
                 return;
             }

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

@@ -31,7 +31,7 @@ public class BEH0072 extends QCCatalogue {
             String familyText = familyLabel.getText();
             if (StringUtil.isNotBlank(familyText)) {
                 familyText = familyText.substring(0, Math.min(10, familyText.length()));
-                if (familyText.contains("死因") || familyText.contains("原因") || familyText.contains("详")) {
+                if (familyText.contains("死因") || familyText.contains("原因") || familyText.contains("详")) {
                     return;
                 }
             }

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

@@ -41,6 +41,7 @@ public class BEH0375 extends QCCatalogue {
                         || maritalLabel.getText().contains("离婚")
                         || maritalLabel.getText().contains("离异")
                         || maritalLabel.getText().contains("已故")
+                        || maritalLabel.getText().contains("丧偶")
                         || maritalLabel.getText().contains("详见原病历")
                 )
                 )

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

@@ -52,14 +52,18 @@ public class BEH0376 extends QCCatalogue {
         }
         String maritalText = maritalLabel.getText();
         if (StringUtil.isNotBlank(maritalText)) {
-            List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女"
-                    , "0-0-0-0", "详见原病历");
+            List<String> words = Lists.newArrayList("未婚", "未育", "未婚育", "未生育", "未生", "0子0女", "详见原病历");
             for (String word : words) {
                 if (maritalText.contains(word)) {
                     status.set("0");
                     return;
                 }
             }
+            String regex = ".*\\d+-\\d+-\\d+-0.*";
+            if (maritalText.matches(regex)){
+                status.set("0");
+                return;
+            }
         }
         //未婚 无子女
         if (maritalLabel.getMaritalStatus() != null && maritalLabel.getMaritalStatus().getName().contains("未婚")) {

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

@@ -22,7 +22,7 @@ public class BEH0400 extends QCCatalogue {
             return;
         }
         PastLabel pastLabel = inputInfo.getBeHospitalizedDoc().getPastLabel();
-        if (pastLabel != null || StringUtil.isNotBlank(pastLabel.getText())) {
+        if (pastLabel != null && StringUtil.isNotBlank(pastLabel.getText())) {
             status.set("0");
         }
     }

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

@@ -5,6 +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.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -28,11 +29,18 @@ public class BEH0416 extends QCCatalogue {
         if (structureMap != null && firstStructMap != null) {
             String contactAddress_bh = structureMap.get("职业");
             String contactAddress_first = firstStructMap.get(Content.job);
-            if (!CatalogueUtil.isEmpty(contactAddress_bh) && !CatalogueUtil.isEmpty(contactAddress_first)) {
-                if (!contactAddress_first.equals(contactAddress_bh)) {
+            if (StringUtil.isNotBlank(contactAddress_bh) && StringUtil.isNotBlank(contactAddress_first)) {
+                if (!removeBrackets(contactAddress_first).equals(removeBrackets(contactAddress_bh))) {
                     status.set("-1");
                 }
             }
         }
     }
+
+    /*
+    去除括号
+     */
+    private String removeBrackets(String str){
+        return str.replaceAll("[()()]","");
+    }
 }

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

@@ -34,7 +34,7 @@ public class BEH0441 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");

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/clinicalblood/CLI0309.java

@@ -25,6 +25,9 @@ public class CLI0309 extends QCCatalogue {
         if (ListUtil.isEmpty(clinicalBloodDocs) || ListUtil.isEmpty(clinicBloodEffectDocs)) {
             return;
         }
+        if (clinicalBloodDocs.size() < clinicBloodEffectDocs.size()) {
+            return;
+        }
         if (clinicalBloodDocs.size() != clinicBloodEffectDocs.size()) {
             status.set("-1");
             info.set("部分输血记录未找到对应输血后效果评价");

+ 5 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0087.java

@@ -30,6 +30,11 @@ public class FIRC0087 extends QCCatalogue {
                 if(diags == null || diags.size()<1){
                     status.set("-1");
                 }
+                if (StringUtils.isNotEmpty(differentialDiagLabel.getText())
+                        && (differentialDiagLabel.getText().contains("暂缺")
+                            || differentialDiagLabel.getText().contains("无") || differentialDiagLabel.getText().contains("诊断"))) {
+                    status.set("0");
+                }
             }
         }
     }

+ 3 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstcourserecord/FIRC0092.java

@@ -44,5 +44,8 @@ public class FIRC0092 extends QCCatalogue {
                         || treatPlanLabel.getPacs().size() > 0)) {
             status.set("0");
         }
+        if (treatPlanLabel.getNursingLevel() == null) {
+            info.set("无护理级别");
+        }
     }
 }

+ 12 - 7
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0161.java

@@ -26,22 +26,27 @@ public class FIRP0161 extends QCCatalogue {
             Map<String, String> beHospitalStructureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
             String firstAdmissionAge = firstpageStructureMap.get(Content.age);
             String admissionAge = beHospitalStructureMap.get(Content.age);
-            if (StringUtil.isBlank(firstAdmissionAge) || StringUtil.isBlank(admissionAge)){
+            if (StringUtil.isBlank(firstAdmissionAge) || StringUtil.isBlank(admissionAge)) {
                 status.set("0");
                 return;
             }
-            firstAdmissionAge = removalUnit(firstAdmissionAge);
-            admissionAge = removalUnit(admissionAge);
-            if (!CatalogueUtil.compareToken(firstAdmissionAge, admissionAge)) {
+            int firstAdmissionAgeNum = removalUnit(firstAdmissionAge);
+            int admissionAgeNum = removalUnit(admissionAge);
+            if (firstAdmissionAgeNum != admissionAgeNum) {
                 status.set("-1");
             }
         }
     }
 
-    private String removalUnit(String admissionAge) {
+    private int removalUnit(String admissionAge) {
+        int age = 0;
         if (StringUtil.isNotBlank(admissionAge) && admissionAge.contains("岁")) {
-            admissionAge = admissionAge.replace("岁", "");
+            admissionAge = admissionAge.replaceAll("[天]", "");
         }
-        return admissionAge;
+        admissionAge = admissionAge.replaceAll("[^0-9]","");
+        if (CatalogueUtil.numbersOnly(admissionAge)) {
+            age = Integer.parseInt(admissionAge);
+        }
+        return age;
     }
 }

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0202.java

@@ -22,7 +22,7 @@ public class FIRP0202 extends QCCatalogue {
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
             String newbornAdmisWeightStr = firstpageStructureMap.get(Content.newbornAdmisWeight);
-            if (CatalogueUtil.isEmpty(newbornAdmisWeightStr) || "-".equals(newbornAdmisWeightStr)) {
+            if (CatalogueUtil.isEmpty(newbornAdmisWeightStr) || "-".equals(newbornAdmisWeightStr)|| "—".equals(newbornAdmisWeightStr)) {
                 return;
             }
             int newbornAdmisWeight = Integer.parseInt(newbornAdmisWeightStr);

+ 2 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA02901.java

@@ -34,10 +34,11 @@ public class LEA02901 extends QCCatalogue {
             if (StringUtil.isNotBlank(dischargeOrder)) {
                 List<String> words = Lists.newArrayList("qd","bid","tid","qid","qh","q2h","q4h","q6h","q8h",
                         "qn","q3w","qod","biw","qw","prn","sos","ad","lib","st","stat","hs","am","po","ID","IH","IM",
-                        "IV","OD","OL","OS","OU","ivgtt","Q12H");
+                        "IV","OD","OL","OS","OU","ivgtt","Q12H","QN","ONCE");
                 for (String word : words) {
                     if (dischargeOrder.contains(word.toUpperCase()) || dischargeOrder.contains(word.toLowerCase())) {
                         status.set("-1");
+                        info.set("出院医嘱用法用量不规范");
                         return;
                     }
                 }

+ 27 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE0322.java

@@ -0,0 +1,27 @@
+package com.lantone.qc.kernel.catalogue.operationdiscussion;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+
+/**
+ * @Description: 手术患者无手术记录
+ * @author: Mark
+ * @time: 2020/04/04 11:22
+ */
+@Component
+public class OPE0322 extends QCCatalogue {
+
+    @Override
+    protected void start(InputInfo inputInfo, OutputInfo outputInfo) throws ParseException {
+        status.set("0");
+        long cou = inputInfo.getOperationDocs().stream().map(i -> i.getOperationRecordDoc()).filter(i -> i != null).count();
+        if (cou == 0) {
+            status.set("-1");
+        }
+    }
+
+}

+ 4 - 4
kernel/src/main/java/com/lantone/qc/kernel/catalogue/preoperativediscussion/PRE0328.java

@@ -24,9 +24,9 @@ public class PRE0328 extends QCCatalogue {
         if (operationDocs == null || operationDocs.size() == 0) {
             return;
         }
-        if(inputInfo.getBeHospitalizedDoc() != null
-                && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史") !=null
-                && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史").contains("急诊手术")){
+        if (inputInfo.getBeHospitalizedDoc() != null
+                && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史") != null
+                && inputInfo.getBeHospitalizedDoc().getStructureMap().get("现病史").contains("急诊手术")) {
             return;
         }
         int i = 0, j = 0;
@@ -38,7 +38,7 @@ public class PRE0328 extends QCCatalogue {
                 j++;
             }
         }
-        if (i != j) {
+        if (i > 0 && i != j) {
             status.set("-1");
             info.set("手术记录不一致");
         }

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

@@ -92,7 +92,7 @@ public class CatalogueUtil {
             }
             for (String word : words) {
                 if (StringUtil.isNotBlank(word)) {
-                    String newWord = word.replaceAll("[“”]", "");
+                    String newWord = word.replaceAll("[“”]", "\"");
                     if (sections.stream().noneMatch(section -> section.contains(newWord))) {
                         retWords.add(word);
                     }

+ 1 - 0
trans/src/main/java/com/lantone/qc/trans/changx/ChangxPathologyShipDocTrans.java

@@ -43,6 +43,7 @@ public class ChangxPathologyShipDocTrans extends ModelDocTrans {
     private List<String> keyContrasts = Lists.newArrayList(
             "姓名++++患者姓名=姓名",
             "病案号++++住院号=病案号",
+            "病区++++病区名称=病区",
             "数量=标本件数",
             "医师=送检医师",
             "++++送检材料=送检标本名称",

+ 7 - 4
trans/src/main/java/com/lantone/qc/trans/changx/ChangxThreeLevelWardDocTrans.java

@@ -135,10 +135,12 @@ public class ChangxThreeLevelWardDocTrans extends ModelDocTrans {
         String content = structureMap.get("病情记录");
         AttendingDoctorWardDoc attendingDoctorWardDoc = null;
         //标题有代字
-        if ((StringUtils.isNotEmpty(subTitle(title)) && subTitle(title).contains("主治")) || findAttend(title, content)) {
-            attendingDoctorWardDoc = new AttendingDoctorWardDoc();
-            attendingDoctorWardDoc.setStructureMap(structureMap);
-            attendingDoctorWardDoc.setPageData((Map) structureMap);
+        if (StringUtil.isNotBlank(title)) {
+            if ((StringUtils.isNotEmpty(subTitle(title)) && subTitle(title).contains("主治")) || findAttend(title, content)) {
+                attendingDoctorWardDoc = new AttendingDoctorWardDoc();
+                attendingDoctorWardDoc.setStructureMap(structureMap);
+                attendingDoctorWardDoc.setPageData((Map) structureMap);
+            }
         }
         return attendingDoctorWardDoc;
     }
@@ -185,6 +187,7 @@ public class ChangxThreeLevelWardDocTrans extends ModelDocTrans {
             "日常病程记录++++文本框=病情记录",
             "在此输入副主任医师查房记录++++文本框=病情记录",
             "在此输入副主任兼主刀医师查房记录++++文本框=病情记录",
+            "在此输入副主任医师代主治医师查房记录++++文本框=病情记录",
             "科主任=三级医师",
             "入院诊断++++初步诊断=入院诊断",
             "记录日期=记录时间"