Ver código fonte

模板映射解析修改

rengb 4 anos atrás
pai
commit
ac29387e79
27 arquivos alterados com 362 adições e 43 exclusões
  1. 12 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/ModuleHelper.java
  2. 5 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/util/ModuleMappingUtil.java
  3. 1 0
      dbanaly/src/main/resources/mapper/lt/ModuleInfoMapper.xml
  4. 3 2
      trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunTransferRecordDocTrans.java
  5. 5 7
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunBeHospitalizedHtmlAnalysis.java
  6. 166 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunBeHospitalizedHtmlAnalysisExt.java
  7. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunClinicBloodEffectHtmlAnalysis.java
  8. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunClinicalBloodHtmlAnalysis.java
  9. 3 1
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunConsultationHtmlAnalysis.java
  10. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunCrisisValueReportHtmlAnalysis.java
  11. 3 2
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunCriticallyIllNoticeHtmlAnalysis.java
  12. 3 3
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDeathCaseDiscussHtmlAnalysis.java
  13. 4 3
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDeathRecordHtmlAnalysis.java
  14. 3 4
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDifficultCaseDiscussHtmlAnalysis.java
  15. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDutyShiftSystemHtmlAnalysis.java
  16. 3 3
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunFirstCourseRecordHtmlAnalysis.java
  17. 8 3
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunHtmlAnalysisUtil.java
  18. 4 3
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunLeaveHospitalHtmlAnalysis.java
  19. 3 4
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunOperationHtmlAnalysis.java
  20. 3 1
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunOperationRecordHtmlAnalysis.java
  21. 3 3
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunPreoperativeHtmlAnalysis.java
  22. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunRescueHtmlAnalysis.java
  23. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunStagesSummaryHtmlAnalysis.java
  24. 3 4
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunThreeLevelWardHtmlAnalysis.java
  25. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunTransferIntoHtmlAnalysis.java
  26. 103 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/MyTest2.java
  27. 3 0
      trans/src/main/java/com/lantone/qc/trans/beilun/util/TransferOutHtmlAnalysis.java

+ 12 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/comsis/ModuleHelper.java

@@ -55,6 +55,7 @@ public class ModuleHelper {
             List<String> xmlDataTypeHospitalIds = Lists.newArrayList("1", "2", "3");
             List<String> htmlDataTypeHospitalIds = Lists.newArrayList("4");
             for (String hospitalId : hospitalIds.split(",")) {
+                loadStandardModule(hospitalId);
                 if (xmlDataTypeHospitalIds.contains(hospitalId)) {
                     loadModuleInfoByHospitalId(hospitalId);
                 } else if (htmlDataTypeHospitalIds.contains(hospitalId)) {
@@ -124,4 +125,15 @@ public class ModuleHelper {
         });
     }
 
+    private void loadStandardModule(String hospitalId) {
+        QueryWrapper<ModuleInfo> moduleInfoQe = new QueryWrapper<>();
+        moduleInfoQe.eq("is_deleted", "N");
+        moduleInfoQe.eq("default_module", 1);
+        moduleInfoQe.eq("hospital_id", Long.parseLong(hospitalId));
+        Map<Long, List<ModuleInfo>> modeIdMsMap = moduleInfoService.list(moduleInfoQe).stream().collect(Collectors.groupingBy(i -> i.getModeId()));
+        modeIdMsMap.keySet().forEach(key -> {
+            ModuleMappingUtil.standardModuleInfo.put(key + "", modeIdMsMap.get(key).get(0).getId() + "");
+        });
+    }
+
 }

+ 5 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/util/ModuleMappingUtil.java

@@ -20,6 +20,7 @@ public class ModuleMappingUtil {
 
     public static final Map<String, Map<Set<String>, String>> xmlDataTypeModuleInfo = Maps.newHashMap();
     public static final Map<String, String> htmlDataTypeModuleInfo = Maps.newHashMap();
+    public static final Map<String, String> standardModuleInfo = Maps.newHashMap();
 
     public static String getXmlDataTypeModuleId(Map<String, String> sourceMap) {
         SpecialStorageUtil specialStorageUtil = SpringContextUtil.getBean("specialStorageUtil");
@@ -43,4 +44,8 @@ public class ModuleMappingUtil {
         return htmlDataTypeModuleInfo.get(recTitle);
     }
 
+    public static String getStandardModuleId(String modeId) {
+        return standardModuleInfo.get(modeId);
+    }
+
 }

+ 1 - 0
dbanaly/src/main/resources/mapper/lt/ModuleInfoMapper.xml

@@ -10,6 +10,7 @@
         where a.hospital_id=#{hospitalId} and a.is_deleted='N'
         and b.hospital_id=#{hospitalId} and b.is_deleted='N'
         and c.hospital_id=#{hospitalId} and c.is_deleted='N'
+        and c.map_type!='-1' and a.default_module=0
     </select>
 
 </mapper>

+ 3 - 2
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunTransferRecordDocTrans.java

@@ -12,6 +12,7 @@ import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.beilun.util.BeiLunCrisisValueReportHtmlAnalysis;
 import com.lantone.qc.trans.beilun.util.BeiLunHtmlAnalysis;
 import com.lantone.qc.trans.beilun.util.BeiLunTransferIntoHtmlAnalysis;
+import com.lantone.qc.trans.beilun.util.TransferOutHtmlAnalysis;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 
 import java.util.ArrayList;
@@ -218,7 +219,7 @@ public class BeiLunTransferRecordDocTrans extends ModelDocTrans {
         String content = contentMap.get("xmlText").toString();
         String recTitle = contentMap.get("recTitle").toString();
         String recTypeId = contentMap.get("recTypeId").toString();
-        BeiLunHtmlAnalysis beiLunHtmlAnalysis = new BeiLunCrisisValueReportHtmlAnalysis();
+        BeiLunHtmlAnalysis beiLunHtmlAnalysis = new TransferOutHtmlAnalysis();
         Map<String, String> sourceMap = beiLunHtmlAnalysis.analysis(content, recTitle, recTypeId);
         Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
 
@@ -230,5 +231,5 @@ public class BeiLunTransferRecordDocTrans extends ModelDocTrans {
 
     private List<String> keyContrasts = Lists.newArrayList(
     );
-    
+
 }

+ 5 - 7
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunBeHospitalizedHtmlAnalysis.java

@@ -18,6 +18,8 @@ import java.util.Map;
  */
 public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "1";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -26,18 +28,14 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Document doc = Jsoup.parse(html);
 
-        if (recTitle.contains("24小时")) {
+        if (recTitle.contains("24")) {
             analysis24h(doc, map);
-            BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, map);
         } else if (recTitle.contains("日间病历")) {
             analysisDay(doc, map);
-            BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, map);
         } else {
             analysisGeneral(doc, recTitle, map);
-            //默认使用标准模板
-            map.put("mode_id", "402");
         }
-        //BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 
@@ -139,7 +137,7 @@ public class BeiLunBeHospitalizedHtmlAnalysis implements BeiLunHtmlAnalysis {
     }
 
     private void disHandleExt(Map<String, String> map) {
-        String[] keys = {"补充诊断", "修正诊断"};
+        String[] keys = { "补充诊断", "修正诊断" };
         String value = null;
         int index = 0;
         for (String key : keys) {

+ 166 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunBeHospitalizedHtmlAnalysisExt.java

@@ -0,0 +1,166 @@
+package com.lantone.qc.trans.beilun.util;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.pub.util.FileUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/9/15 16:28
+ */
+public class BeiLunBeHospitalizedHtmlAnalysisExt implements BeiLunHtmlAnalysis {
+
+    @Override
+    public Map<String, String> analysis(String... args) {
+        Map<String, String> map = Maps.newLinkedHashMap();
+        String html = args[0];
+        String recTitle = args[1];
+        Document doc = Jsoup.parse(html);
+        String msg = BeiLunHtmlAnalysisUtil.elementLayer1ToStr(doc.selectFirst("table").nextElementSibling(),false);
+        List<String> lls = Lists.newArrayList("姓名","性别","出生年月","科室","科别","床位","住院号");
+        CommonAnalysisUtil.cutByTitles(msg, lls, 0, map);
+        if (map.size()==0){
+            throw new RuntimeException("21212");
+        }
+
+        if (recTitle.contains("24小时")) {
+            analysis24h(doc, map);
+        } else if (recTitle.contains("日间病历")) {
+            analysisDay(doc, map);
+        } else {
+            analysisGeneral(doc, recTitle, map);
+        }
+
+//        BeiLunHtmlAnalysisUtil.insertModuleId(recTitle, map);
+        return map;
+    }
+
+    //一般模板
+    private void analysisGeneral(Document doc, String recTitle, Map<String, String> map) {
+        //个人基础信息table解析
+        BeiLunHtmlAnalysisUtil.tableStyle1InsertMap(doc.getElementById("table1"), map);
+        //主诉、现病史等table解析
+        BeiLunHtmlAnalysisUtil.tableStyle2InsertMap(doc.getElementById("table6"), map);
+        //体 格 检 查 表(一) table解析
+        Element tgjcTableElement = doc.getElementById("table3");
+        BeiLunHtmlAnalysisUtil.tableStyle2InsertMap(tgjcTableElement, map);
+
+        //诊断 table解析
+        String disTableElementId = "table7_2_0_0_1_1_2_0_1_4_5_6_7_0_1";
+        if (recTitle.equals("妇科大病历")) {
+            disTableElementId = "table7_2_0_0_1_1_2_0_1_4_5_6_7_0_1_37";
+        }
+        Element disTableElement = doc.getElementById(disTableElementId);
+        BeiLunHtmlAnalysisUtil.tableStyle1InsertMap(disTableElement, map);
+        disHandleExt(map);
+
+        //医生签名、医生签名时间
+        Element docSignElement = null, docSignTimeElement = null;
+        for (Element disTableElementNt : disTableElement.nextElementSiblings()) {
+            docSignElement = disTableElementNt.selectFirst("image,img");
+            if (docSignElement != null) {
+                docSignTimeElement = disTableElementNt.nextElementSibling();
+                break;
+            }
+        }
+        if (docSignElement != null) {
+            map.put("医生签名", docSignElement.outerHtml());
+        }
+        if (docSignTimeElement != null) {
+            map.put("医生签名时间", BeiLunHtmlAnalysisUtil.elementLayer1ToStr(docSignTimeElement, false).trim());
+        }
+
+        //专科检查、辅助检查
+        Element yuElement = new Element("div");
+        for (Element tgjcTableElementNt : tgjcTableElement.nextElementSiblings()) {
+            if (tgjcTableElementNt.id().contains("table7_2_0_0_1_1_2_0_1_4_5_6_7_0_1")) {
+                break;
+            }
+            if (tgjcTableElementNt.tagName().equals("table")) {
+                continue;
+            }
+            tgjcTableElementNt.appendTo(yuElement);
+        }
+        String yuText = BeiLunHtmlAnalysisUtil.blockDivToStr(yuElement, true)
+                .replace("体  格  检  查  表 (二)", "")
+                .replace("(补充及专科情况)", "")
+                .replace("辅  助  检  查", "辅助检查:")
+                .replace("诊断:", "")
+                .replace("补充专科情况", "补充专科情况:")
+                .trim();
+        CommonAnalysisUtil.cutByTitles(yuText, Lists.newArrayList("专科检查", "辅助检查"), 0, map);
+    }
+
+    //24小时出入院记录、24小时出入院记录(全院)、24小时入出院记录(全院通用)、24小时内入院死亡记录(全院通用)
+    private void analysis24h(Document doc, Map<String, String> map) {
+        String text = BeiLunHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), false);
+        text = text.substring(text.lastIndexOf("24小时入出院记录姓    名")).replaceFirst("第1页", "");
+        List<String> titles = Lists.newArrayList("姓    名", "家庭住址", "性    别", "工作单位", "年    龄", "身份证号码", "民    族",
+                "联系人(关系)", "职    业", "入院时间", "婚    姻", "死亡时间", "记录时间", "出 生 地", "病史陈述者", "主    诉", "入院情况", "心理评估",
+                "疼痛评估", "营养评估", "功能评估", "入院诊断", "诊疗经过", "死亡原因", "死亡诊断", "出院情况", "出院诊断", "出院计划", "出院医嘱",
+                "出院去向", "医师签名", "书写时间");
+
+        CommonAnalysisUtil.cutByTitles(text, titles, 0, map);
+        CommonAnalysisUtil.processType(map, "出院去向");
+    }
+
+    //原-日间病历入出院记录、日间病历-性早熟
+    private void analysisDay(Document doc, Map<String, String> map) {
+        //个人基础信息table解析
+        BeiLunHtmlAnalysisUtil.tableStyle1InsertMap(doc.getElementById("table1"), map);
+        //主诉、入院情况等table解析
+        BeiLunHtmlAnalysisUtil.tableStyle2InsertMap(doc.getElementById("table6"), map);
+        //医生签名、医生签名时间
+        Element docSignElement = null, docSignTimeElement = null;
+        for (Element table6ElementNt : doc.getElementById("table6").parent().nextElementSiblings()) {
+            docSignElement = table6ElementNt.selectFirst("image,img");
+            if (docSignElement != null) {
+                docSignTimeElement = table6ElementNt.nextElementSibling();
+                break;
+            }
+        }
+        if (docSignElement != null) {
+            map.put("医生签名", docSignElement.outerHtml());
+        }
+        if (docSignTimeElement != null) {
+            map.put("医生签名时间", BeiLunHtmlAnalysisUtil.elementLayer1ToStr(docSignTimeElement, false).trim());
+        }
+    }
+
+    private void disHandleExt(Map<String, String> map) {
+        String[] keys = { "补充诊断", "修正诊断" };
+        String value = null;
+        int index = 0;
+        for (String key : keys) {
+            value = map.get(key);
+            if (StringUtil.isNotBlank(value)) {
+                for (String key_ : keys) {
+                    index = value.indexOf(key_);
+                    if (index > 0) {
+                        map.put(key_, value.substring(index + 5));
+                        map.put(key, value.substring(0, index));
+                    }
+                }
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        String html = FileUtil.fileRead("C:/Users/Administrator/Desktop/宁波/病例导出/日间病历-性早熟-儿科-2265411.html");
+        String recTitle = "日间病历-性早熟";
+        BeiLunBeHospitalizedHtmlAnalysis test = new BeiLunBeHospitalizedHtmlAnalysis();
+        Map<String, String> map = test.analysis(html, recTitle);
+        map.keySet().forEach(key -> {
+            System.out.println(key + "-----" + map.get(key));
+        });
+    }
+
+}

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunClinicBloodEffectHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunClinicBloodEffectHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "32";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunClinicBloodEffectHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunClinicalBloodHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunClinicalBloodHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "10";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunClinicalBloodHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunConsultationHtmlAnalysis.java

@@ -17,6 +17,8 @@ import java.util.stream.Collectors;
  */
 public class BeiLunConsultationHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "31";
+
     @Override
     public Map<String, String> analysis(String... args) {
         List<String> titles = Lists.newArrayList("姓名", "性别", "出生日期", "科别", "病区", "床号", "住院号",
@@ -91,7 +93,7 @@ public class BeiLunConsultationHtmlAnalysis implements BeiLunHtmlAnalysis {
         }
         CommonAnalysisUtil.extractDateByTitle(structureMap, "会诊到达时间");
         CommonAnalysisUtil.processType(structureMap, "会诊类型");
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, structureMap);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         return structureMap;
     }
 

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunCrisisValueReportHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunCrisisValueReportHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "23";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunCrisisValueReportHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 2
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunCriticallyIllNoticeHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunCriticallyIllNoticeHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "25";
+
     @Override
     public Map<String, String> analysis(String... args) {
         List<String> titles = Lists.newArrayList("临床诊断", "主要症状", "体格检查", "辅助检查", "告知医师签名",
@@ -31,8 +33,7 @@ public class BeiLunCriticallyIllNoticeHtmlAnalysis implements BeiLunHtmlAnalysis
             CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
         }
         CommonAnalysisUtil.extractDateByTitle(structureMap, "告知时间");
-//        structureMap.put("rec_title=", "405");
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, structureMap);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         return structureMap;
     }
 

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDeathCaseDiscussHtmlAnalysis.java

@@ -17,6 +17,8 @@ import java.util.Map;
  */
 public class BeiLunDeathCaseDiscussHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "3";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -34,9 +36,7 @@ public class BeiLunDeathCaseDiscussHtmlAnalysis implements BeiLunHtmlAnalysis {
                 "主 持 人", "参加人员", "具体讨论意见", "主持人小结意见", "主持人(签名)", "记录者签名");
         CommonAnalysisUtil.cutByTitlesNoColon(text, titles, 0, map);
         BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, map);
-        //找不到模板id,用默认标准模板
-        map.putIfAbsent("mode_id", "405");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 4 - 3
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDeathRecordHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunDeathRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "24";
+
     @Override
     public Map<String, String> analysis(String... args) {
         List<String> titles = Lists.newArrayList("入院日期", "死亡时间", "入院情况", "入院诊断",
@@ -30,9 +32,8 @@ public class BeiLunDeathRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
             htmlContent = htmlContent.replaceAll("[   ]", " ");
             CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
         }
-        CommonAnalysisUtil.extractDateByTitle(structureMap,"记录时间");
-//        structureMap.put("rec_title=", "5254");
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTitle, structureMap);
+        CommonAnalysisUtil.extractDateByTitle(structureMap, "记录时间");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         return structureMap;
     }
 

+ 3 - 4
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDifficultCaseDiscussHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunDifficultCaseDiscussHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "19";
+
     @Override
     public Map<String, String> analysis(String... args) {
         List<String> titles = Lists.newArrayList("姓名", "性别", "出生日期", "科别", "病区", "床号",
@@ -33,10 +35,7 @@ public class BeiLunDifficultCaseDiscussHtmlAnalysis implements BeiLunHtmlAnalysi
         }
         CommonAnalysisUtil.extractDateByTitle(structureMap, "告知时间");
         removeLast(structureMap);
-        //structureMap.put("rec_title=", "141");
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, structureMap);
-        //找不到模板id,用默认标准模板
-        structureMap.putIfAbsent("mode_id", "404");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         return structureMap;
     }
 

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunDutyShiftSystemHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunDutyShiftSystemHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "9";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunDutyShiftSystemHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunFirstCourseRecordHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunFirstCourseRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "2";
+
     @Override
     public Map<String, String> analysis(String... args) {
         List<String> titles = Lists.newArrayList("(一)病历特点", "(二)诊断依据", "(三)鉴别诊断",
@@ -44,9 +46,7 @@ public class BeiLunFirstCourseRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
                 structureMap.put("(一)病历特点", structureMap.get("(一)病历特点").split("入院查体")[0]);
             }
         }
-        BeiLunHtmlAnalysisUtil.insertModuleId(args[2], structureMap);
-        //首程找不到模板id,用默认标准模板
-        structureMap.putIfAbsent("mode_id", "403");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, args[2], structureMap);
 //        CommonAnalysisUtil.extractDateByTitle(structureMap, "时间");
 //        structureMap.forEach((k,v)-> System.out.println(k + "------" + v));
 //        structureMap.put("rec_title=", "107");

+ 8 - 3
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunHtmlAnalysisUtil.java

@@ -154,14 +154,19 @@ public class BeiLunHtmlAnalysisUtil {
     /**
      * 查询并插入页面模板id
      *
+     * @param modeId
      * @param recTitle
      * @param map
      */
-    public static void insertModuleId(String recTitle, Map<String, String> map) {
-        if (StringUtil.isBlank(recTitle) || map == null) {
+    public static void insertModuleId(String modeId, String recTitle, Map<String, String> map) {
+        if ((StringUtil.isBlank(modeId) && StringUtil.isBlank(recTitle)) || map == null) {
             return;
         }
-        map.put("mode_id", ModuleMappingUtil.getHtmlDataTypeModuleId(recTitle));
+        String moduleId = ModuleMappingUtil.getHtmlDataTypeModuleId(recTitle);
+        if (StringUtil.isBlank(moduleId)) {
+            moduleId = ModuleMappingUtil.getStandardModuleId(modeId);
+        }
+        map.put("mode_id", moduleId);
     }
 
     /**

+ 4 - 3
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunLeaveHospitalHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunLeaveHospitalHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "5";
+
     @Override
     public Map<String, String> analysis(String... args) {
         List<String> titles = Lists.newArrayList("姓名", "性别", "出生日期", "科室", "床号", "住院号 ",
@@ -23,6 +25,7 @@ public class BeiLunLeaveHospitalHtmlAnalysis implements BeiLunHtmlAnalysis {
                 "出院计划", "病理检查结果", "出院情况", "治疗效果", "出院医嘱", "医师签名", "时间");
         String html = args[0];
         String recTitle = args[1];
+        String recTypeId = args[2];
         Document doc = Jsoup.parse(html);
         Map<String, String> structureMap = Maps.newLinkedHashMap();
         String htmlContent = BeiLunHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
@@ -31,9 +34,7 @@ public class BeiLunLeaveHospitalHtmlAnalysis implements BeiLunHtmlAnalysis {
             CommonAnalysisUtil.html2StructureMap(titles, htmlContent, structureMap);
         }
         CommonAnalysisUtil.extractDateByTitle(structureMap, "时间");
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTitle, structureMap);
-        //找不到模板id,用默认标准模板
-        structureMap.putIfAbsent("mode_id", "409");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         return structureMap;
     }
 

+ 3 - 4
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunOperationHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunOperationHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "18";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,10 +26,7 @@ public class BeiLunOperationHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
-        BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, map);
-        //找不到模板id,用默认标准模板
-        map.putIfAbsent("mode_id", "408");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunOperationRecordHtmlAnalysis.java

@@ -3,7 +3,6 @@ package com.lantone.qc.trans.beilun.util;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.FileUtil;
-import com.lantone.qc.pub.util.StringUtil;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Element;
 
@@ -17,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunOperationRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "17";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -25,6 +26,7 @@ public class BeiLunOperationRecordHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
         if (map.containsKey("手术人员")) {
             String operatingCrew = map.get("手术人员");

+ 3 - 3
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunPreoperativeHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "11";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -26,9 +28,7 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
         analysisGeneral(bigDivElement, map);
 
         BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
-        //找不到模板id,用默认标准模板
-        map.putIfAbsent("mode_id", "406");
-        //        BeiLunHtmlAnalysisUtil.insertModuleId(recTitle, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunRescueHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunRescueHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "22";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunRescueHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunStagesSummaryHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunStagesSummaryHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "28";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunStagesSummaryHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 3 - 4
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunThreeLevelWardHtmlAnalysis.java

@@ -18,6 +18,8 @@ import java.util.Map;
  */
 public class BeiLunThreeLevelWardHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "4";
+
     @Override
     public Map<String, String> analysis(String... args) {
         String html = args[0];
@@ -26,10 +28,7 @@ public class BeiLunThreeLevelWardHtmlAnalysis implements BeiLunHtmlAnalysis {
         Document doc = Jsoup.parse(html);
         String htmlText = BeiLunHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0), true);
         CommonAnalysisUtil.extractWardInfo(htmlText, structureMap);
-        BeiLunHtmlAnalysisUtil.insertModuleId(recTypeId, structureMap);
-        //找不到模板id,用默认标准模板
-        structureMap.putIfAbsent("mode_id", "410");
-        //structureMap.put("rec_title=", "5254");
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, structureMap);
         return structureMap;
     }
 

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunTransferIntoHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class BeiLunTransferIntoHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "26";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class BeiLunTransferIntoHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }
 

+ 103 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/MyTest2.java

@@ -0,0 +1,103 @@
+package com.lantone.qc.trans.beilun.util;
+
+import com.lantone.qc.pub.util.FileUtil;
+import com.lantone.qc.trans.beilun.util.ez.EzXmlAnalysis;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/9/23 11:12
+ */
+public class MyTest2 {
+
+    public static void main(String[] args) throws Exception {
+        puda();
+    }
+
+    public static void puda(){
+        File file = new File("C:\\Users\\Administrator\\Desktop\\宁波\\病例导出");
+        for (File f1 : file.listFiles()) {
+            String html = FileUtil.fileRead(f1.getPath());
+            Pattern pattern = Pattern.compile("[0-9]+.odt");
+            Matcher matcher = pattern.matcher(html);
+            if (matcher.find()){
+                System.out.println(matcher.group());
+            }
+        }
+    }
+
+
+    public static void ez()throws Exception{
+        Set<String> set = new HashSet<>();
+        File file1 = new File("C:\\Users\\Administrator\\Desktop\\恩泽\\入院记录");
+        for (File f1 : file1.listFiles()) {
+            for (File f2 : f1.listFiles()) {
+                String xml = bom(FileUtil.fileRead(f2.getPath()));
+                Map<String, String> map = EzXmlAnalysis.analysis("小儿外科", xml);
+                set.addAll(map.keySet());
+            }
+        }
+
+        set.forEach(i -> {
+            System.out.println(i);
+        });
+    }
+
+    public static void jx() throws Exception {
+        File file = new File("C:\\Users\\Administrator\\Desktop\\恩泽\\入院记录\\骨科入院记录(通用)");
+        Set<Integer> set = new HashSet<>();
+        for (File listFile : file.listFiles()) {
+            try {
+                Document doc = DocumentHelper.parseText(bom(FileUtil.fileRead(listFile.getPath())));
+                List<Element> elements = doc.getRootElement().elements();
+                set.add(elements.size());
+            } catch (Exception e) {
+                System.out.println(listFile.getName());
+            }
+        }
+    }
+
+    public static void jx2() throws Exception {
+        String xml = bom(FileUtil.fileRead("C:\\Users\\Administrator\\Desktop\\恩泽\\JhmrFileContentCdaExport\\1688196_产科入院记录(小).txt"));
+        Map<String, String> map = EzXmlAnalysis.analysis("小儿外科", xml);
+        map.keySet().forEach(key -> {
+            System.out.println(key + "----" + map.get(key));
+        });
+    }
+
+    public static String bom(String result) {
+        if (null != result && !"".equals(result)) {
+            if (result.indexOf("<") != -1 && result.lastIndexOf(">") != -1 && result.lastIndexOf(">") > result.indexOf("<")) {
+                result = result.substring(result.indexOf("<"), result.lastIndexOf(">") + 1);
+            }
+        }
+        return result;
+    }
+
+
+    public static String xmls(Element element) {
+        String ret = "";
+        List<Element> elements = element.elements();
+        if (elements.size() > 0) {
+            elements.forEach(element1 -> {
+
+            });
+        } else {
+            ret += element.getStringValue();
+        }
+
+        return null;
+    }
+
+}

+ 3 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/TransferOutHtmlAnalysis.java

@@ -16,6 +16,8 @@ import java.util.Map;
  */
 public class TransferOutHtmlAnalysis implements BeiLunHtmlAnalysis {
 
+    private String modeId = "27";
+
     @Override
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
@@ -24,6 +26,7 @@ public class TransferOutHtmlAnalysis implements BeiLunHtmlAnalysis {
         String recTypeId = args[2];
         Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
         analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         return map;
     }