ソースを参照

湘雅病案首页:逻辑确认更新(一)

wangsy 3 年 前
コミット
0b1b794192

+ 37 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0191.java

@@ -0,0 +1,37 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.FirstPageRecordDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0191
+ * @Description : 主要手术及操作名称未填写
+ * @Author : wsy
+ * @Date: 2021-10-12 20:28
+ */
+@Component
+public class FIRP0191 extends QCCatalogue {
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        if (firstPageRecordDoc == null || operationDocs.size() == 0) {
+            return;
+        }
+        Map<String, Object> firstPageRecordDocStructureMap = firstPageRecordDoc.getStructureExtMap();
+        List<Map<String, String>> mapList = (List<Map<String, String>>) firstPageRecordDocStructureMap.get(Content.operative_information);
+        if (mapList == null || mapList.size() == 0) {
+            status.set("-1");
+            return;
+        }
+    }
+}

+ 29 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0244.java

@@ -5,6 +5,10 @@ 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.operation.OperationDiscussionDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -20,17 +24,36 @@ import java.util.Map;
 public class FIRP0244 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
         status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        String operations = "";
+        String operations_first = "";
+        if (ListUtil.isNotEmpty(operationDocs)) {
+            OperationDiscussionDoc operationDiscussionDoc = operationDocs.get(0).getOperationDiscussionDoc();
+            if (operationDiscussionDoc == null) {
+                return;
+            }
+            operations = operationDiscussionDoc.getStructureMap().get(Content.notch_grade);
+        }
+        if (StringUtil.isBlank(operations)) {
+            return;
+        }
         if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
             List<Map<String, String>> operative_information = (List<Map<String, String>>) firstpageStructureMap.get(Content.operative_information);
-            if(operative_information != null && operative_information.size()>0){
-                for (Map<String,String> opInfo:operative_information) {
-                    if(!CatalogueUtil.isEmpty(opInfo.get(Content.operative_name)) && CatalogueUtil.isEmpty(opInfo.get(Content.notch_grade))){
-                        status.set("-1");
-                        break;
-                    }
+            if (operative_information != null && operative_information.size() > 0) {
+                operations_first = operative_information.get(0).get(Content.notch_grade);
+                if (!CatalogueUtil.isEmpty(operative_information.get(0).get(Content.operative_name)) || CatalogueUtil.isEmpty(operations_first)) {
+                    return;
                 }
             }
         }
+        if (StringUtil.isBlank(operations_first)) {
+            return;
+        }
+
+        if (!operations.contains(operations_first)) {
+            status.set("");
+            return;
+        }
     }
 }

+ 29 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0246.java

@@ -5,6 +5,10 @@ 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.operation.OperationDiscussionDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -19,19 +23,38 @@ import java.util.Map;
 @Component
 public class FIRP0246 extends QCCatalogue {
     public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
         status.set("0");
-        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureExtMap() != null) {
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        String operations = "";
+        String operations_first = "";
+        if (ListUtil.isNotEmpty(operationDocs)) {
+            OperationDiscussionDoc operationDiscussionDoc = operationDocs.get(0).getOperationDiscussionDoc();
+            if (operationDiscussionDoc == null) {
+                return;
+            }
+            operations = operationDiscussionDoc.getStructureMap().get(Content.healing_level);
+        }
+        if (StringUtil.isBlank(operations)) {
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
             Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
             List<Map<String, String>> operative_information = (List<Map<String, String>>) firstpageStructureMap.get(Content.operative_information);
             if (operative_information != null && operative_information.size() > 0) {
-                for (Map<String, String> opInfo : operative_information) {
-                    if (!CatalogueUtil.isEmpty(opInfo.get(Content.operative_name)) && CatalogueUtil.isEmpty(opInfo.get(Content.healing_level))) {
-                        status.set("-1");
-                        break;
-                    }
+                operations_first = operative_information.get(0).get(Content.healing_level);
+                if (!CatalogueUtil.isEmpty(operative_information.get(0).get(Content.operative_name)) || CatalogueUtil.isEmpty(operations_first)) {
+                    return;
                 }
             }
+        }
+        if (StringUtil.isBlank(operations_first)) {
+            return;
+        }
 
+        if (!operations.contains(operations_first)) {
+            status.set("-1");
+            return;
         }
     }
 }

+ 61 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP02973.java

@@ -0,0 +1,61 @@
+package com.lantone.qc.kernel.catalogue.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.operation.OperationDiscussionDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP02973
+ * @Description : 手术日期与手术记录中手术日期不一致
+ * @Author : wsy
+ * @Date: 2021-10-13 20:28
+ */
+@Component
+public class FIRP02973 extends QCCatalogue {
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        String operations = "";
+        String operations_first = "";
+        if (ListUtil.isNotEmpty(operationDocs)) {
+            OperationDiscussionDoc operationDiscussionDoc = operationDocs.get(0).getOperationDiscussionDoc();
+            if (operationDiscussionDoc == null) {
+                return;
+            }
+            operations = operationDiscussionDoc.getStructureMap().get(Content.operative_date);
+        }
+        if (StringUtil.isBlank(operations)) {
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            List<Map<String, String>> operative_information = (List<Map<String, String>>) firstpageStructureMap.get(Content.operative_information);
+            if (operative_information != null && operative_information.size() > 0) {
+                operations_first = operative_information.get(0).get(Content.operative_date);
+                if (!CatalogueUtil.isEmpty(operative_information.get(0).get(Content.operative_name)) || CatalogueUtil.isEmpty(operations_first)) {
+                    return;
+                }
+            }
+        }
+        if (StringUtil.isBlank(operations_first)) {
+            return;
+        }
+
+        if (!operations.contains(operations_first)) {
+            status.set("-1");
+            return;
+        }
+    }
+}

+ 44 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP03184.java

@@ -0,0 +1,44 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP03184
+ * @Description :出院其他诊断入院病情未填写
+ * @Author : wsy
+ * @Date: 2021-10-12 14:01
+ */
+@Component
+public class FIRP03184 extends QCCatalogue {
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getLeaveHospitalDoc() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            List<Map<String, String>> dischargeDiag = (List) firstpageStructureMap.get(Content.dischargeDiag);
+            if (ListUtil.isEmpty(dischargeDiag)) {
+                return;
+            }
+            for (Map<String, String> diagMap : dischargeDiag) {
+                String diagSort = diagMap.get("诊断类别");
+                String beHStatus = diagMap.get("入院情况");
+                String diagName = diagMap.get("诊断名称");
+                //若诊断类别为其他诊断,入院情况为空,提示缺陷
+                if (StringUtil.isBlank(diagSort) && diagSort.contains("其他诊断") && StringUtil.isBlank(beHStatus)) {
+                    status.set("-1");
+                    info.set(diagName);
+                    return;
+                }
+            }
+        }
+    }
+}

+ 61 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/firstpagerecord/FIRP0521.java

@@ -0,0 +1,61 @@
+package com.lantone.qc.kernel.catalogue.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.operation.OperationDiscussionDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0521
+ * @Description : 手术级别填写错误
+ * @Author : wsy
+ * @Date: 2021-10-12 20:28
+ */
+@Component
+public class FIRP0521 extends QCCatalogue {
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+
+        status.set("0");
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        String operations = "";
+        String operations_first = "";
+        if (ListUtil.isNotEmpty(operationDocs)) {
+            OperationDiscussionDoc operationDiscussionDoc = operationDocs.get(0).getOperationDiscussionDoc();
+            if (operationDiscussionDoc == null) {
+                return;
+            }
+            operations = operationDiscussionDoc.getStructureMap().get(Content.operative_degree);
+        }
+        if (StringUtil.isBlank(operations)) {
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, Object> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureExtMap();
+            List<Map<String, String>> operative_information = (List<Map<String, String>>) firstpageStructureMap.get(Content.operative_information);
+            if (operative_information != null && operative_information.size() > 0) {
+                operations_first = operative_information.get(0).get(Content.operative_degree);
+                if (!CatalogueUtil.isEmpty(operative_information.get(0).get(Content.operative_name)) || CatalogueUtil.isEmpty(operations_first)) {
+                    return;
+                }
+            }
+        }
+        if (StringUtil.isBlank(operations_first)) {
+            return;
+        }
+
+        if (!operations.contains(operations_first)) {
+            status.set("-1");
+            return;
+        }
+    }
+}

+ 36 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP0183.java

@@ -0,0 +1,36 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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.util.StringUtil;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0183
+ * @Description : 病理诊断填写与病程记录不一致
+ * @Author : dy
+ * @Date: 2021-10-13 15:02
+ * @Component
+ */
+public class FIRP0183 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null
+                && inputInfo.getBeHospitalizedDoc() != null && inputInfo.getBeHospitalizedDoc().getStructureMap() != null) {
+            Map<String, String> firstMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            Map<String, String> behosMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+            String s = firstMap.get(Content.pathologyDiagnose);
+            String s1 = behosMap.get(Content.pathologyDiagnose);
+            if (StringUtil.isEmpty(s) || StringUtil.isEmpty(s1)) {
+                return;
+            }
+            if (!CatalogueUtil.compareToken(s, s1)) {
+                status.set("0");
+            }
+        }
+    }
+}

+ 31 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP0191.java

@@ -0,0 +1,31 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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;
+
+/**
+ * @ClassName : FIRP0191
+ * @Description : 主要手术及操作名称未填写
+ * @Author : dy
+ * @Date: 2021-10-13 14:01
+ */
+@Component
+public class FIRP0191 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getFirstPageRecordDoc() != null) {
+            status.set("0");
+            return;
+        }
+        Map<String, String> map = inputInfo.getFirstPageRecordDoc().getStructureMap();
+        String oName = map.get(Content.operative_name);
+        if (!StringUtil.isEmpty(oName)) {
+            status.set("0");
+        }
+    }
+}

+ 30 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP0239.java

@@ -0,0 +1,30 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP0239
+ * @Description :是否有31天再住院计划未填写
+ * @Author : dy
+ * @Date: 2021-10-13 16:05
+ */
+@Component
+public class FIRP0239 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String reHospitalization = firstpageStructureMap.get(Content.reHospitalization);
+            if (CatalogueUtil.isEmpty(reHospitalization)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 30 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP02836.java

@@ -0,0 +1,30 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.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 org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @ClassName : FIRP02836
+ * @Description :出生日期未填写
+ * @Author : dy
+ * @Date: 2021-10-13 16:05
+ */
+@Component
+public class FIRP02836 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String reHospitalization = firstpageStructureMap.get(Content.birth_date);
+            if (CatalogueUtil.isEmpty(reHospitalization)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 33 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/changshaxy/firstpagerecord/FIRP02837.java

@@ -0,0 +1,33 @@
+package com.lantone.qc.kernel.catalogue.hospital.changshaxy.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+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;
+
+/**
+ * @ClassName : FIRP02837
+ * @Description : 年龄未填写
+ * @Author : dy
+ * @Date: 2021-10-13 17:45
+ */
+@Component
+public class FIRP02837 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        if (inputInfo.getFirstPageRecordDoc() == null) {
+            status.set("0");
+            return;
+        }
+        if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String age = firstpageStructureMap.get(Content.age);
+            if (StringUtil.isBlank(age)) {
+                status.set("-1");
+            }
+        }
+    }
+}

+ 9 - 10
trans/src/main/java/com/lantone/qc/trans/changshaxy/util/comsis/XyCommonAnalysisUtil.java

@@ -500,10 +500,10 @@ public class XyCommonAnalysisUtil {
     public static void extractWardInfo(String recTitle, String htmlText, Map<String, String> structureMap) {
         if (StringUtil.isNotBlank(htmlText)) {
             htmlText = htmlText.replaceAll("[   \n]", " ").replace("第1页", "")
-                    .replace("\n", " ").replace("&nbsp","");
+                    .replace("\n", " ").replace("&nbsp", "");
             String date = extractDate(htmlText);
             if (date != null) {
-                String dateTime =date.replace(","," ");
+                String dateTime = date.replace(",", " ");
                 structureMap.put("病历日期", dateTime);
                 htmlText = htmlText.replace(date, "").trim();
             }
@@ -515,10 +515,10 @@ public class XyCommonAnalysisUtil {
             } else {
                 structureMap.put("病历标题", recTitle);
                 structureMap.put("文书标题", title);
-                if (titleContent.size() > 2) {
-                    titleContent.remove(0);
-                    titleContent.remove(0);
-                }
+//                if (titleContent.size() > 2) {
+                titleContent.remove(0);
+//                    titleContent.remove(0);
+//                }
             }
             StringBuffer sb = new StringBuffer();
             for (String text : titleContent) {
@@ -536,18 +536,17 @@ public class XyCommonAnalysisUtil {
                 String info = structureMap.get("病情记录");
                 if (info.contains("医师签名")) {
                     structureMap.put("医师签名", info.substring(info.indexOf("医师签名") + "医生签名".length(), info.length()));
-                   //解决病情记录包括医师签名
+                    //解决病情记录包括医师签名
                     Integer index = info.indexOf("医师签名");
                     structureMap.put("病情记录", info.substring(0, index));
                     structureMap.put("记录医生", "");
                     //解决医师签名里包含上级医师签名
-                    if (structureMap.get("医师签名").contains("上级医师签名")){
-                        structureMap.put("医师签名",structureMap.get("医师签名").substring(0,structureMap.get("医师签名").indexOf("上级医师签名")));
+                    if (structureMap.get("医师签名").contains("上级医师签名")) {
+                        structureMap.put("医师签名", structureMap.get("医师签名").substring(0, structureMap.get("医师签名").indexOf("上级医师签名")));
                     }
                 }
 
 
-
             }
         }
     }