瀏覽代碼

死亡病例讨论记录解析修改

rengb 4 年之前
父節點
當前提交
f2010cdb50

+ 9 - 39
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunDeathCaseDiscussDocTrans.java

@@ -1,13 +1,13 @@
 package com.lantone.qc.trans.beilun;
 package com.lantone.qc.trans.beilun;
 
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
-import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
 import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.ModelDocTrans;
+import com.lantone.qc.trans.beilun.util.BeiLunDeathCaseDiscussHtmlAnalysis;
+import com.lantone.qc.trans.beilun.util.BeiLunHtmlAnalysis;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.comsis.Preproc;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -23,48 +23,18 @@ public class BeiLunDeathCaseDiscussDocTrans extends ModelDocTrans {
     public DeathCaseDiscussDoc extract(MedrecVo medrecVo) {
     public DeathCaseDiscussDoc extract(MedrecVo medrecVo) {
         Map<String, Object> contentMap = ((List<Map>) medrecVo.getContent().get("content")).get(0);
         Map<String, Object> contentMap = ((List<Map>) medrecVo.getContent().get("content")).get(0);
         String content = contentMap.get("xmlText").toString();
         String content = contentMap.get("xmlText").toString();
-        Map<String, String> xmlNodeValueMap = CxXmlUtil.firstLevelNodeValue(content);
-        xmlNodeValueMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        xmlNodeValueMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(xmlNodeValueMap, keyContrasts);
-
-        String text = CxXmlUtil.getXmlText(content);
-        Map<String, String> cutWordMap = Preproc.getCutWordMap(true, sourceTitles, text);
-        cutWordMap.putAll(structureMap);
-
-        DeathCaseDiscussDoc deathCaseDiscussDoc = ModelDocGenerate.deathCaseDiscussDocGen(cutWordMap);
-        deathCaseDiscussDoc.setText(text);
-        deathCaseDiscussDoc.setPageData((Map) cutWordMap);
+        String recTitle = contentMap.get("recTitle").toString();
+        BeiLunHtmlAnalysis beiLunHtmlAnalysis = new BeiLunDeathCaseDiscussHtmlAnalysis();
+        Map<String, String> sourceMap = beiLunHtmlAnalysis.analysis(content, recTitle);
+        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
 
 
+        DeathCaseDiscussDoc deathCaseDiscussDoc = ModelDocGenerate.deathCaseDiscussDocGen(structureMap);
+        deathCaseDiscussDoc.setPageData((Map) structureMap);
         return deathCaseDiscussDoc;
         return deathCaseDiscussDoc;
     }
     }
 
 
-    private List<String> sourceTitles = Lists.newArrayList(
-            "记录时间",
-            "记录医师",
-            "入院时间",
-            "死亡时间",
-            "出院时间",
-            "入院诊断",
-            "死亡诊断",
-            "讨论时间",
-            "讨论地点",
-            "参加讨论人员",
-            "讨论主持人",
-            "讨论内容",
-            "死亡原因",
-            "结论"
-    );
-
     private List<String> keyContrasts = Lists.newArrayList(
     private List<String> keyContrasts = Lists.newArrayList(
-            "记录日期=记录时间",
-            "讨论时间=",
-            "主持人=讨论主持人",
-            "参加人员姓名=参加讨论人员",
-            "讨论内容=",
-            "主持人小结++++主持人小结意见=结论",
-            "签名++++=记录医师",
-            "签名时间="
+
     );
     );
 
 
 }
 }

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

@@ -0,0 +1,52 @@
+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 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/17 14:27
+ */
+public class BeiLunDeathCaseDiscussHtmlAnalysis 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);
+        Element bigDivElement = doc.selectFirst("body").child(0);
+
+        bigDivElement.child(0).lastElementSibling().remove();
+        map.put("医生签名时间", BeiLunHtmlAnalysisUtil.elementLayer1ToStr(bigDivElement.child(0).lastElementSibling(), false));
+        bigDivElement.child(0).lastElementSibling().remove();
+
+        String text = BeiLunHtmlAnalysisUtil.blockDivToStr(bigDivElement, false);
+        List<String> titles = Lists.newArrayList("入院诊断", "死亡诊断", "尸检结果", "讨论时间", "讨论地点",
+                "主 持 人", "参加人员", "具体讨论意见", "主持人小结意见", "主持人(签名)", "记录者签名");
+        CommonAnalysisUtil.cutByTitlesNoColon(text, titles, 0, map);
+        BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
+        BeiLunHtmlAnalysisUtil.insertModuleId(recTitle, map);
+        return map;
+    }
+
+    public static void main(String[] args) {
+        String html = FileUtil.fileRead("C:/Users/Administrator/Desktop/宁波/病例导出/死亡病例讨论-EICU-2258383.html");
+        String recTitle = "死亡病例讨论";
+        BeiLunDeathCaseDiscussHtmlAnalysis test = new BeiLunDeathCaseDiscussHtmlAnalysis();
+        Map<String, String> map = test.analysis(html, recTitle);
+        map.keySet().forEach(key -> {
+            System.out.println(key + "-----" + map.get(key));
+        });
+    }
+
+}

+ 16 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunHtmlAnalysisUtil.java

@@ -178,4 +178,20 @@ public class BeiLunHtmlAnalysisUtil {
         map.put("mode_id", ModuleMappingUtil.getHtmlDataTypeModuleId(deptName + "-" + recTitle));
         map.put("mode_id", ModuleMappingUtil.getHtmlDataTypeModuleId(deptName + "-" + recTitle));
     }
     }
 
 
+    /**
+     * map中有的value以冒号开头,用此方法来去掉冒号
+     *
+     * @param map
+     */
+    public static void mapValueRemoveStartColon(Map<String, String> map) {
+        if (map == null) {
+            return;
+        }
+        map.keySet().forEach(key -> {
+            if (map.get(key).startsWith(":") || map.get(key).startsWith(":")) {
+                map.put(key, map.get(key).replaceFirst("[::]", ""));
+            }
+        });
+    }
+
 }
 }

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

@@ -190,7 +190,7 @@ public class CommonAnalysisUtil {
     /**
     /**
      * 标题没有冒号版本
      * 标题没有冒号版本
      */
      */
-    private static void cutByTitlesNoColon(String line, List<String> titles, int depth, Map<String, String> structureMap) {
+    public static void cutByTitlesNoColon(String line, List<String> titles, int depth, Map<String, String> structureMap) {
         if (depth > titles.size() || titles.size() == 0) {
         if (depth > titles.size() || titles.size() == 0) {
             return;
             return;
         }
         }