Kaynağa Gözat

台州质控修改逻辑及bug

hujing 5 yıl önce
ebeveyn
işleme
b5404e4f84

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

@@ -12,6 +12,7 @@ import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 
 
@@ -23,6 +24,9 @@ import java.util.List;
  */
 @Component
 public class BEH0014 extends QCCatalogue {
+    private List<String> containList = Arrays.asList("体检", "发现", "检查", "因", "确诊", "诊断", "复查", "术后"
+            , "药物", "误服", "查", "撞", "伤", "月经", "暴力", "超", "术");
+
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         if (inputInfo.getBeHospitalizedDoc() == null) {
             status.set("0");
@@ -53,18 +57,18 @@ public class BEH0014 extends QCCatalogue {
                 }
             }
         }
-        //硬规则匹配 前30个字有"体检"或"发现"或"检查"字样
+        //硬规则匹配 前30个字有"体检"或"发现"或"检查"(containList)字样
         String present = presentLabel.getText();
         if (StringUtils.isNotEmpty(present)) {
             if (present.length() > 30) {
                 present = present.substring(0, 30);
             }
-            present = present.replaceAll("[\"“”]","");
-            if (present.contains("体检") || present.contains("发现") || present.contains("检查") || present.contains("因")
-                    || present.contains("确诊") || present.contains("诊断") || present.contains("复查") || present.contains("术后")
-                    || present.contains("药物") || present.contains("误服") || present.contains("查") || present.contains("撞") || present.contains("伤") || present.contains("月经")) {
-                status.set("0");
-                return;
+            present = present.replaceAll("[\"“”]", "");
+            for (String word : containList) {
+                if (present.contains(word)) {
+                    status.set("0");
+                    return;
+                }
             }
             //模型在现病史前30个字里能提出来疾病,那也可以算有诱因
             List<Diag> presentDiags = presentLabel.getDiags();

+ 42 - 37
kernel/src/main/java/com/lantone/qc/kernel/catalogue/leavehospital/LEA0507.java

@@ -1,38 +1,43 @@
-package com.lantone.qc.kernel.catalogue.leavehospital;
-
-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.DeathRecordDoc;
-import com.lantone.qc.pub.util.StringUtil;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.Map;
-
-/**
- * @Description: 无出院记录
- * 出院时间-入院时间 大于24小时 有出院记录 (死亡患者除外)
- * @author: 胡敬
- * @time: 2020/3/27 15:15
- */
-@Component
-public class LEA0507 extends QCCatalogue {
-    @Override
-    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
-        status.set("0");
-        Map<String, String> pageMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
-        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
-        if (deathRecordDoc == null) {
-            String outDate = pageMap.get("出院时间");
-            String inDate = pageMap.get("入院时间");
-            Date infusionEndDate = StringUtil.parseDateTime(inDate);
-            Date recordDate = StringUtil.parseDateTime(outDate);
-
-            if (CatalogueUtil.compareTime(infusionEndDate, recordDate, 24 * 60L) && inputInfo.getLeaveHospitalDoc() == null) {
-                status.set("-1");
-            }
-        }
-    }
+package com.lantone.qc.kernel.catalogue.leavehospital;
+
+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.DeathRecordDoc;
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @Description: 无出院记录
+ * 出院时间-入院时间 大于24小时 有出院记录 (死亡患者除外)
+ * @author: 胡敬
+ * @time: 2020/3/27 15:15
+ */
+@Component
+public class LEA0507 extends QCCatalogue {
+    @Override
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        if (firstPageRecordDoc == null) {
+            return;
+        }
+        Map<String, String> pageMap = firstPageRecordDoc.getStructureMap();
+        DeathRecordDoc deathRecordDoc = inputInfo.getDeathRecordDoc();
+        if (deathRecordDoc == null) {
+            String outDate = pageMap.get("出院时间");
+            String inDate = pageMap.get("入院时间");
+            Date infusionEndDate = StringUtil.parseDateTime(inDate);
+            Date recordDate = StringUtil.parseDateTime(outDate);
+
+            if (CatalogueUtil.compareTime(infusionEndDate, recordDate, 24 * 60L) && inputInfo.getLeaveHospitalDoc() == null) {
+                status.set("-1");
+            }
+        }
+    }
 }

+ 10 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE03026.java

@@ -6,6 +6,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
@@ -23,18 +24,24 @@ import java.util.Map;
 @Component
 public class OPE03026 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        /**
+         * 1.由于术后首程取到的手术时间无法精确到时分,所以去手术记录的手术结束时间取手术时间
+         * 2.由于目前operationDocs中的手术记录和术后首程对应不上,因此只判断手术记录只有一次的情况
+         */
         status.set("0");
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if (ListUtil.isEmpty(operationDocs)) {
+        if (ListUtil.isEmpty(operationDocs) || operationDocs.size() > 1) {
             return;
         }
         for (OperationDoc operationDoc : operationDocs) {
+            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
             OperationDiscussionDoc operationDiscussionDoc = operationDoc.getOperationDiscussionDoc();
-            if (operationDiscussionDoc == null) {
+            if (operationRecordDoc == null || operationDiscussionDoc == null) {
                 continue;
             }
+            Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
             Map<String, String> operationDiscussionStructureMap = operationDiscussionDoc.getStructureMap();
-            String operationDateStr = operationDiscussionStructureMap.get("手术日期");
+            String operationDateStr = operationRecordStructureMap.get("手术结束时间");
             String dateStr = operationDiscussionStructureMap.get("记录日期");
             if (CatalogueUtil.isEmpty(operationDateStr) || CatalogueUtil.isEmpty(dateStr)) {
                 continue;

+ 10 - 3
kernel/src/main/java/com/lantone/qc/kernel/catalogue/operationdiscussion/OPE03028.java

@@ -6,6 +6,7 @@ import com.lantone.qc.pub.model.InputInfo;
 import com.lantone.qc.pub.model.OutputInfo;
 import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
 import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
 import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
@@ -23,18 +24,24 @@ import java.util.Map;
 @Component
 public class OPE03028 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        /**
+         * 1.由于术后首程取到的手术时间无法精确到时分,所以去手术记录的手术结束时间取手术时间
+         * 2.由于目前operationDocs中的手术记录和术后首程对应不上,因此只判断手术记录只有一次的情况
+         */
         status.set("0");
         List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
-        if (ListUtil.isEmpty(operationDocs)) {
+        if (ListUtil.isEmpty(operationDocs) || operationDocs.size() > 1) {
             return;
         }
         for (OperationDoc operationDoc : operationDocs) {
+            OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
             OperationDiscussionDoc operationDiscussionDoc = operationDoc.getOperationDiscussionDoc();
-            if (operationDiscussionDoc == null) {
+            if (operationRecordDoc == null || operationDiscussionDoc == null) {
                 continue;
             }
+            Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
             Map<String, String> operationDiscussionStructureMap = operationDiscussionDoc.getStructureMap();
-            String operationDateStr = operationDiscussionStructureMap.get("手术日期");
+            String operationDateStr = operationRecordStructureMap.get("手术结束时间");
             String dateStr = operationDiscussionStructureMap.get("记录日期");
             if (CatalogueUtil.isEmpty(operationDateStr) || CatalogueUtil.isEmpty(dateStr)) {
                 continue;