Quellcode durchsuchen

术后解析修改

rengb vor 4 Jahren
Ursprung
Commit
0317ffadf1

+ 11 - 58
trans/src/main/java/com/lantone/qc/trans/beilun/BeiLunOperationDocTrans.java

@@ -15,6 +15,7 @@ import com.lantone.qc.pub.util.ListUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.beilun.util.BeiLunHtmlAnalysis;
+import com.lantone.qc.trans.beilun.util.BeiLunOperationHtmlAnalysis;
 import com.lantone.qc.trans.beilun.util.BeiLunPreoperativeHtmlAnalysis;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
@@ -91,68 +92,19 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
 
     private OperationDiscussionDoc getOperationDiscussionDoc(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, operationDiscussion_keyContrasts);
-        if (StringUtil.isNotBlank(structureMap.get("手术开始时间"))) {
-            structureMap.put("手术时间", structureMap.get("手术开始时间"));
-        }
-        if (StringUtil.isNotBlank(structureMap.get("签名"))) {
-            structureMap.put("记录医师", structureMap.get("签名"));
-        }
-
-        String text = CxXmlUtil.getXmlText(content);
-        Map<String, String> cutWordMap = Preproc.getCutWordMap(true, operationDiscussion_sourceTitles, text);
-        cutWordMap.putAll(structureMap);
-
-        OperationDiscussionDoc operationDiscussionDoc = ModelDocGenerate.operationDiscussionDocGen(cutWordMap);
-        operationDiscussionDoc.setText(text);
-        operationDiscussionDoc.setPageData((Map) cutWordMap);
+        String recTitle = contentMap.get("recTitle").toString();
+        String recTypeId = contentMap.get("recTypeId").toString();
+        BeiLunHtmlAnalysis beiLunHtmlAnalysis = new BeiLunOperationHtmlAnalysis();
+        Map<String, String> sourceMap = beiLunHtmlAnalysis.analysis(content, recTitle, recTypeId);
+        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationDiscussion_keyContrasts);
 
+        OperationDiscussionDoc operationDiscussionDoc = ModelDocGenerate.operationDiscussionDocGen(structureMap);
+        operationDiscussionDoc.setPageData((Map) structureMap);
         return operationDiscussionDoc;
     }
 
-    private List<String> operationDiscussion_sourceTitles = Lists.newArrayList(
-            "记录医师",
-            "记录时间",
-            "手术时间",
-            "麻醉方式",
-            "手术方式",
-            "术中诊断",
-            "手术简要经过",
-            "患者术后情况",
-            "术后处理措施",
-            "术后可能出现的并发症及预防措施",
-            "术后注意事项",
-            "谈话医师签字",
-            "患者签名",
-            "患者签名时间",
-            "被授权人/代理人签名",
-            "代理人签名时间"
-    );
-
     private List<String> operationDiscussion_keyContrasts = Lists.newArrayList(
-            "记录日期=记录时间",
-            "手术开始时间=",
-            "手术结束时间=",
-            "麻醉方式=",
-            "麻醉医生=麻醉医师",
-            "手术方式=",
-            "手术人员=手术相关人员",
-            "手术方式++++手术名称=手术方式",
-            "术中诊断++++初步诊断=术中诊断",
-            "术中诊断++++术后诊断=术中诊断",
-            "并发症++++手术并发症=术中并发症",
-            "手术经过=手术简要经过",
-            "患者术后情况=",
-            "术后处理措施=",
-            "术后并发症及预防措施=术后可能出现的并发症及预防措施",
-            "术后注意事项=",
-            "患者签名=",
-            "签名时间=代理人签名时间",
-            "签字++++患者授权的其他代理人签字=代理人签名",
-            "签名++++=医生签名"
+
     );
 
 
@@ -271,8 +223,9 @@ public class BeiLunOperationDocTrans extends ModelDocTrans {
     private PreoperativeDiscussionDoc getPreoperativeDiscussionDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
         String recTitle = contentMap.get("recTitle").toString();
+        String recTypeId = contentMap.get("recTypeId").toString();
         BeiLunHtmlAnalysis beiLunHtmlAnalysis = new BeiLunPreoperativeHtmlAnalysis();
-        Map<String, String> sourceMap = beiLunHtmlAnalysis.analysis(content, recTitle);
+        Map<String, String> sourceMap = beiLunHtmlAnalysis.analysis(content, recTitle, recTypeId);
         Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, preoperativeDiscussion_keyContrasts);
 
         PreoperativeDiscussionDoc preoperativeDiscussionDoc = ModelDocGenerate.preoperativeDiscussionDocGen(structureMap);

+ 55 - 0
trans/src/main/java/com/lantone/qc/trans/beilun/util/BeiLunOperationHtmlAnalysis.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 14:56
+ */
+public class BeiLunOperationHtmlAnalysis 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/宁波/病例导出/包包_术后首程-胃肠疝血管科-2260241.html");
+        String recTitle = "术后首程-";
+        BeiLunOperationHtmlAnalysis test = new BeiLunOperationHtmlAnalysis();
+        Map<String, String> map = test.analysis(html, recTitle, "");
+        map.keySet().forEach(key -> {
+            System.out.println(key + "-----" + map.get(key).replaceAll("\n", ""));
+        });
+    }
+
+}

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

@@ -21,13 +21,9 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
         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);
-
-        if (recTitle.equals("术前小结")) {
-
-        } else {
-            analysisGeneral(bigDivElement, map);
-        }
+        analysisGeneral(bigDivElement, map);
 
         BeiLunHtmlAnalysisUtil.mapValueRemoveStartColon(map);
         //找不到模板id,用默认标准模板
@@ -36,9 +32,10 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
         return map;
     }
 
-    //术前讨论及术前小结、术前讨论及术前小结-打印可选、(四级手术、疑难手术)术前讨论及术前小结、术前讨论
     private void analysisGeneral(Element bigDivElement, Map<String, String> map) {
-        bigDivElement.selectFirst("hr").previousElementSiblings().remove();
+        if (bigDivElement.selectFirst("hr") != null) {
+            bigDivElement.selectFirst("hr").previousElementSiblings().remove();
+        }
         String text = BeiLunHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
 
         int index1 = text.lastIndexOf("经治医生签名");
@@ -61,9 +58,9 @@ public class BeiLunPreoperativeHtmlAnalysis implements BeiLunHtmlAnalysis {
         String html = FileUtil.fileRead("C:/Users/Administrator/Desktop/宁波/病例导出/术前讨论及术前小结-耳鼻喉科-2258069.html");
         String recTitle = "术前讨论及术前小结";
         BeiLunPreoperativeHtmlAnalysis test = new BeiLunPreoperativeHtmlAnalysis();
-        Map<String, String> map = test.analysis(html, recTitle);
+        Map<String, String> map = test.analysis(html, recTitle, "");
         map.keySet().forEach(key -> {
-            System.out.println(key + "-----" + map.get(key));
+            System.out.println(key + "-----" + map.get(key).replaceAll("\n", ""));
         });
     }
 

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

@@ -328,13 +328,13 @@ public class CommonAnalysisUtil {
             htmlText = htmlText.replaceAll("[   \n]", " ").replace("第1页", "");
             String date = extractDate(htmlText);
             if (date != null) {
-                structureMap.put("查房日期", date);
+                structureMap.put("病历日期", date);
                 htmlText = htmlText.replace(date, "").trim();
             }
             List<String> titleContent = Lists.newArrayList(htmlText.split(" "));
             String title = titleContent.get(0);
             if (StringUtil.isNotBlank(title)) {
-                structureMap.put("查房标题", title);
+                structureMap.put("病历标题", title);
                 titleContent.remove(0);
             }
             StringBuffer sb = new StringBuffer();