rengb 4 лет назад
Родитель
Сommit
7f6328f26c

+ 11 - 40
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunClinicalBloodDocTrans.java

@@ -1,14 +1,13 @@
 package com.lantone.qc.trans.beilun;
 
 import com.google.common.collect.Lists;
-import com.lantone.qc.dbanaly.facade.changx.CxXmlUtil;
 import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
-import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
+import com.lantone.qc.trans.beilun.util.BeiLunClinicalBloodHtmlAnalysis;
+import com.lantone.qc.trans.beilun.util.BeiLunHtmlAnalysis;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.comsis.Preproc;
 
 import java.util.List;
 import java.util.Map;
@@ -32,47 +31,19 @@ public class BeiLunClinicalBloodDocTrans extends ModelDocTrans {
 
     private ClinicalBloodDoc getClinicalBloodDoc(Map<String, Object> contentMap) {
         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, "");
-        cutWordMap.putAll(structureMap);
-        if (StringUtil.isNotBlank(structureMap.get("输注种类、血型、数量"))) {
-            cutWordMap.put("输血成分及数量", structureMap.get("输注种类、血型、数量"));
-        }
-
-        ClinicalBloodDoc clinicalBloodDoc = ModelDocGenerate.clinicalBloodDocGen(cutWordMap);
-        clinicalBloodDoc.setText(text);
-        clinicalBloodDoc.setPageData((Map) cutWordMap);
-
+        String recTitle = contentMap.get("recTitle").toString();
+        String recTypeId = contentMap.get("recTypeId").toString();
+        BeiLunHtmlAnalysis beiLunHtmlAnalysis = new BeiLunClinicalBloodHtmlAnalysis();
+        Map<String, String> sourceMap = beiLunHtmlAnalysis.analysis(content, recTitle, recTypeId);
+        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
+
+        ClinicalBloodDoc clinicalBloodDoc = ModelDocGenerate.clinicalBloodDocGen(structureMap);
+        clinicalBloodDoc.setPageData((Map) structureMap);
         return clinicalBloodDoc;
     }
 
-    private List<String> sourceTitles = Lists.newArrayList(
-            "输注原因",
-            "输注时间",
-            "输注开始",
-            "输注结束",
-            "输注种类、血型、数量",
-            "输注过程",
-            "输注后效果评价",
-            "记录医师",
-            "记录时间"
-    );
-
     private List<String> keyContrasts = Lists.newArrayList(
-            "记录日期=记录时间",
-            "输注原因=",
-            "输注开始=",
-            "输注结束=",
-            "输注种类、血型、数量=",
-            "输注过程=",
-            "++++复选框=输注方式",
-            "签名++++=记录医师",
-            "签名时间="
+
     );
 
 }

+ 1 - 26
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunDifficultCaseDiscussDocTrans.java

@@ -1,17 +1,13 @@
 package com.lantone.qc.trans.beilun;
 
 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.DifficultCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.beilun.util.BeiLunDeathCaseDiscussHtmlAnalysis;
 import com.lantone.qc.trans.beilun.util.BeiLunDifficultCaseDiscussHtmlAnalysis;
 import com.lantone.qc.trans.beilun.util.BeiLunHtmlAnalysis;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
-import com.lantone.qc.trans.comsis.Preproc;
 
 import java.util.List;
 import java.util.Map;
@@ -43,32 +39,11 @@ public class BeiLunDifficultCaseDiscussDocTrans extends ModelDocTrans {
 
         DifficultCaseDiscussDoc difficultCaseDiscussDoc = ModelDocGenerate.difficultCaseDiscussDocGen(structureMap);
         difficultCaseDiscussDoc.setPageData((Map) structureMap);
-
         return difficultCaseDiscussDoc;
     }
 
-    private List<String> sourceTitles = Lists.newArrayList(
-            "记录时间",
-            "记录医师",
-            "入院时间",
-            "入院诊断",
-            "讨论时间",
-            "讨论地点",
-            "讨论目的",
-            "主持人",
-            "参加讨论者",
-            "讨论内容",
-            "结论"
-    );
-
     private List<String> keyContrasts = Lists.newArrayList(
-            //"讨论日期=讨论时间",
-            "人员及专业技术职务++++专业技术职务=参加讨论者",
-            "患者病情汇报=简要病情",
-            "主持人小结意见=主持人小结",
-            "住址(单位)=住址",
-            "患者病情汇报=讨论内容",
-            "记录医生签名=记录医生"
+
     );
 
 }

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

@@ -0,0 +1,55 @@
+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.Element;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2020/9/28 17:56
+ */
+public class BeiLunClinicalBloodHtmlAnalysis implements BeiLunHtmlAnalysis {
+
+    @Override
+    public Map<String, String> analysis(String... args) {
+        Map<String, String> map = Maps.newLinkedHashMap();
+        String html = args[0];
+        String recTitle = args[1];
+        String recTypeId = args[2];
+        Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0);
+        analysisGeneral(bigDivElement, map);
+        BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
+        return map;
+    }
+
+    private void analysisGeneral(Element bigDivElement, Map<String, String> map) {
+        if (bigDivElement.selectFirst("hr") != null) {
+            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
+        }
+        String text = BeiLunHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
+        CommonAnalysisUtil.extractWardInfo(text, map);
+        String bqjlText = "病情记录" + map.get("病情记录");
+        List<String> titles = Lists.newArrayList(
+                "病情记录"
+        );
+        titles = CommonAnalysisUtil.sortTitlesNoColon(titles, bqjlText);
+        CommonAnalysisUtil.cutByTitlesNoColon(bqjlText, titles, 0, map);
+    }
+
+    public static void main(String[] args) {
+        String html = FileUtil.fileRead("C:/Users/Administrator/Desktop/宁波/分类/消化内科/红细胞输注病程记录/106000157270.odt.html");
+        String recTitle = "术后首程-";
+        BeiLunClinicalBloodHtmlAnalysis test = new BeiLunClinicalBloodHtmlAnalysis();
+        Map<String, String> map = test.analysis(html, recTitle, "");
+        map.keySet().forEach(key -> {
+            System.out.println(key + "-----" + map.get(key).replaceAll("\n", ""));
+        });
+    }
+
+}