Переглянути джерело

义务中心医院:页面显示

rengb 4 роки тому
батько
коміт
ed7194e7fa
32 змінених файлів з 741 додано та 45 видалено
  1. 84 0
      dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/ywzxyy/YwzxyyXmlUtil.java
  2. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyClinicBloodEffectDocTrans.java
  3. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyClinicalBloodDocTrans.java
  4. 34 16
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyConsultationDocTrans.java
  5. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyCrisisValueReportDocTrans.java
  6. 0 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyCriticallyIllNoticeDocTrans.java
  7. 6 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyDeathCaseDiscussDocTrans.java
  8. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyDeathRecordDocTrans.java
  9. 5 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyDifficultCaseDiscussDocTrans.java
  10. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyOperationDocTrans.java
  11. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyRescueDocTrans.java
  12. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyStagesSummaryDocTrans.java
  13. 3 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyTransferRecordDocTrans.java
  14. 61 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyBeHospitalizedXmlAnalysis.java
  15. 18 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyClinicBloodEffectXmlAnalysis.java
  16. 18 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyClinicalBloodXmlAnalysis.java
  17. 40 0
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyConsultationRecordXmlAnalysis.java
  18. 18 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyCrisisValueReportXmlAnalysis.java
  19. 18 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyCriticallyIllNoticeXmlAnalysis.java
  20. 28 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyDeathCaseDiscussXmlAnalysis.java
  21. 28 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyDeathRecordXmlAnalysis.java
  22. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyDifficultCaseDiscussXmlAnalysis.java
  23. 38 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyFirstCourseRecordXmlAnalysis.java
  24. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyLeaveHospitalXmlAnalysis.java
  25. 28 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyOperationDiscussionXmlAnalysis.java
  26. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyOperationRecordXmlAnalysis.java
  27. 107 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyPreoperativeDiscussionXmlAnalysis.java
  28. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyRescueXmlAnalysis.java
  29. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyStagesSummaryXmlAnalysis.java
  30. 18 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyThreeLevelWardXmlAnalysis.java
  31. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyTransferIntoXmlAnalysis.java
  32. 24 1
      trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyTransferOutXmlAnalysis.java

+ 84 - 0
dbanaly/src/main/java/com/lantone/qc/dbanaly/facade/ywzxyy/YwzxyyXmlUtil.java

@@ -0,0 +1,84 @@
+package com.lantone.qc.dbanaly.facade.ywzxyy;
+
+import com.google.common.collect.Maps;
+import lombok.extern.slf4j.Slf4j;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.tree.DefaultText;
+
+import java.util.Map;
+
+/**
+ * @Description: xml解析工具
+ * @author: rengb
+ * @time: 2020/3/28 14:23
+ */
+@Slf4j
+public class YwzxyyXmlUtil {
+
+    public static Map<String, String> xmlToMap(String xml) {
+        Map<String, String> map = Maps.newHashMap();
+        try {
+            Document doc = DocumentHelper.parseText(xml);
+            Element root = (Element) doc.selectSingleNode("//XTextDocument/XElements/Element[@xsi:type='XTextBody']/XElements");
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.clear();
+        }
+        return map;
+    }
+
+    public static String element2Str(Element rootElement) {
+        StringBuffer sbf = new StringBuffer();
+        if (rootElement != null) {
+            rootElement.content().forEach(ctt -> {
+                if (ctt.getClass().getName().equals("org.dom4j.tree.DefaultElement")) {
+                    Element sonElement = (Element) ctt;
+                    if (sonElement.hasContent()) {
+                        sbf.append(element2Str(sonElement));
+                    }
+                } else {
+                    DefaultText sonText = (DefaultText) ctt;
+                    sbf.append(sonText.getText());
+                }
+            });
+        }
+        return sbf.toString();
+    }
+
+    public static String bcXmlAna(String xml) {
+        String ret = null;
+        try {
+            Document doc = DocumentHelper.parseText(xml);
+            Element root = doc.getRootElement();
+            Element titleElement = root.element("病历记录标题");
+            root.remove(titleElement);
+            Element timeElement = root.element("病历记录时间");
+            root.remove(timeElement);
+            ret = "原始文本:" + element2Str(root);
+            if (titleElement != null) {
+                ret = "病历记录标题:" + titleElement.getTextTrim() + " " + ret;
+            }
+            if (timeElement != null) {
+                ret = "病历记录时间:" + timeElement.getTextTrim() + " " + ret;
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return ret;
+    }
+
+    public static String xml2Txt(String xml) {
+        String ret = null;
+        try {
+            Document doc = DocumentHelper.parseText(xml);
+            Element root = doc.getRootElement();
+            ret = element2Str(root);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return ret;
+    }
+
+}

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyClinicBloodEffectDocTrans.java

@@ -66,6 +66,8 @@ public class YwzxyyClinicBloodEffectDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyClinicalBloodDocTrans.java

@@ -65,6 +65,8 @@ public class YwzxyyClinicalBloodDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 34 - 16
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyConsultationDocTrans.java

@@ -15,6 +15,10 @@ 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.comsis.OrdinaryAssistant;
+import com.lantone.qc.trans.ywzxyy.util.YwzxyyConsultationRecordXmlAnalysis;
+import com.lantone.qc.trans.ywzxyy.util.YwzxyyXmlAnalysis;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.MapUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -25,6 +29,7 @@ import java.util.Set;
  * @author: rengb
  * @time: 2020/3/17 13:22
  */
+@Slf4j
 public class YwzxyyConsultationDocTrans extends ModelDocTrans {
 
     /**
@@ -77,33 +82,46 @@ public class YwzxyyConsultationDocTrans extends ModelDocTrans {
             if (contentMap.get("xmlText") == null || StringUtil.isBlank(contentMap.get("xmlText").toString())) {
                 continue;
             }
-            consultationName = index + "";
-            ConsultationRecordDoc consultationRecordDoc = getConsultationRecordDoc(contentMap);
-            consultationRecordDoc.setConsultationName(consultationName);
-            retMap.put(consultationName, consultationRecordDoc);
-            index++;
+            try {
+                ConsultationRecordDoc consultationRecordDoc = getConsultationRecordDoc(contentMap);
+                if (consultationRecordDoc != null) {
+                    consultationName = index + "";
+                    consultationRecordDoc.setConsultationName(consultationName);
+                    retMap.put(consultationName, consultationRecordDoc);
+                    index++;
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
         }
         return retMap;
     }
 
     private ConsultationRecordDoc getConsultationRecordDoc(Map<String, Object> contentMap) {
-        String modeId = "7";
         String content = contentMap.get("xmlText").toString();
         Map<String, String> structureMap = null;
         if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
             structureMap = (Map) FastJsonUtils.getJsonToMap(content);
         } else {
-            Map<String, String> sourceMap = YiWuXmlUtil.xmlToMap(content);
-            sourceMap.put("mode_id", ModuleMappingUtil.getDeptModuleId(modeId));
-            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, consultationRecord_keyContrasts, modeId);
+            String recTitle = contentMap.get("recTitle").toString();
+            String recTypeId = contentMap.get("recTypeId").toString();
+            YwzxyyXmlAnalysis ywzxyyXmlAnalysis = new YwzxyyConsultationRecordXmlAnalysis();
+            Map<String, String> sourceMap = ywzxyyXmlAnalysis.analysis(content, recTitle, recTypeId);
+            if (MapUtils.isNotEmpty(sourceMap)) {
+                structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, consultationRecord_keyContrasts, "7");
+                structureMap.put("记录编号", contentMap.get("recId").toString());
+                structureMap.put("病历号", contentMap.get("behospitalCode") == null ? null : contentMap.get("behospitalCode").toString());
+            }
+        }
+        if (MapUtils.isNotEmpty(structureMap)) {
+            ConsultationRecordDoc consultationRecordDoc = new ConsultationRecordDoc();
+            consultationRecordDoc.setText(structureMap.get("原始文本"));
+            consultationRecordDoc.setStructureMap(structureMap);
+            consultationRecordDoc.setPageData((Map) structureMap);
+            return consultationRecordDoc;
+        } else {
+            return null;
         }
-
-        ConsultationRecordDoc consultationRecordDoc = new ConsultationRecordDoc();
-        consultationRecordDoc.setStructureMap(structureMap);
-        consultationRecordDoc.setPageData((Map) structureMap);
-        return consultationRecordDoc;
     }
 
     // 会诊记录映射字段

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyCrisisValueReportDocTrans.java

@@ -65,6 +65,8 @@ public class YwzxyyCrisisValueReportDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 0 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyCriticallyIllNoticeDocTrans.java

@@ -5,7 +5,6 @@ import com.lantone.qc.pub.model.doc.CriticallyIllNoticeDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.trans.ModelDocTrans;
-import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.ywzxyy.util.YwzxyyCriticallyIllNoticeXmlAnalysis;

+ 6 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyDeathCaseDiscussDocTrans.java

@@ -53,6 +53,11 @@ public class YwzxyyDeathCaseDiscussDocTrans extends ModelDocTrans {
         return deathCaseDiscussDoc;
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "科示教室主持人=主持人",
+            "医生办公室主持人=主持人",
+            "上级医师签名=主持人签名",
+            "医师签名=记录医师"
+    );
 
 }

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyDeathRecordDocTrans.java

@@ -54,6 +54,8 @@ public class YwzxyyDeathRecordDocTrans extends ModelDocTrans {
         return deathRecordDoc;
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 5 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyDifficultCaseDiscussDocTrans.java

@@ -65,6 +65,10 @@ public class YwzxyyDifficultCaseDiscussDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "科示教室主持人=主持人",
+            "上级医师签名=主持人签名",
+            "医师签名=记录医师"
+    );
 
 }

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyOperationDocTrans.java

@@ -179,7 +179,9 @@ public class YwzxyyOperationDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> operationRecord_keyContrasts = Lists.newArrayList();
+    private List<String> operationRecord_keyContrasts = Lists.newArrayList(
+            "手术经过及处理(包括患者的体位、切口处理、病灶所见及手术步骤)=手术经过"
+    );
 
 
     /**********************************************术前讨论、术前小结****************************************************/

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyRescueDocTrans.java

@@ -65,6 +65,8 @@ public class YwzxyyRescueDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyStagesSummaryDocTrans.java

@@ -65,6 +65,8 @@ public class YwzxyyStagesSummaryDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 3 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/YwzxyyTransferRecordDocTrans.java

@@ -302,6 +302,8 @@ public class YwzxyyTransferRecordDocTrans extends ModelDocTrans {
         }
     }
 
-    private List<String> keyContrasts = Lists.newArrayList();
+    private List<String> keyContrasts = Lists.newArrayList(
+            "医师签名=记录医师"
+    );
 
 }

+ 61 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyBeHospitalizedXmlAnalysis.java

@@ -1,5 +1,13 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +15,63 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyBeHospitalizedXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> ret = null;
+        String xml = args[0];
+        String recTitle = args[1];
+        String recTypeId = args[2];
+        if (recTitle.equals("住院病历")) {
+            ret = zybl(xml);
+        } else if (recTitle.equals("术前讨论记录")) {
+
+        } else if (recTitle.equals("术前讨论兼术前小结")) {
+
+        }
+        return ret;
+    }
+
+    private Map<String, String> zybl(String xml) {
+        Map<String, String> structureMap = Maps.newHashMap();
+        try {
+            xml = xml.replace("(<慢性疾病>)[\\s\\S]*(</既往病史>)", "</既往病史>")
+                    .replace("(<传染病名称>)[\\s\\S]*(</传染病史>)", "</传染病史>")
+                    .replace("(<经量>)[\\s\\S]*(</月经史>)", "</月经史>")
+                    .replace("(<近亲结婚否>)[\\s\\S]*(</婚姻情况>)", "</婚姻情况>")
+                    .replace("(<足月产次数>)[\\s\\S]*(</生育情况>)", "</生育情况>")
+                    .replace("(<收缩压值>)[\\s\\S]*(</血压>)", "</血压>")
+                    .replace("(<反射程度>)[\\s\\S]*(</深反射>)", "</深反射> ")
+                    .replace("(<肌张力>)[\\s\\S]*(<肌张力>)", "<肌张力><肌张力>").replace("(</肌张力>)[\\s\\S]*(</肌张力>)", "</肌张力></肌张力> ")
+                    .replace("(<肌力>)[\\s\\S]*(<肌力>)", "<肌力><肌力>").replace("(</肌力>)[\\s\\S]*(</肌力>)", "</肌力></肌力> ");
+            String text = YwzxyyXmlUtil.xml2Txt(xml);
+            List<String> titles = CommonAnalysisUtil.sortTitlesNoColon(
+                    Lists.newArrayList("姓  名", "姓  名", "性    别", "年    龄", "民    族", "婚    姻", "出 生 地",
+                            "职    业", "联系地址", "入院时间", "病史陈述者", "记录日期", "主    诉", "现 病 史", "既 往 史", "个 人 史",
+                            "月 经 史", "婚 育 史", "家 族 史", "辅助检查", "营养风险筛查", "初步诊断", "修正诊断", "补充诊断",
+                            "医师签名", "记录时间", "体格检查(一)", "体格检查表(二)补 充 及 专 科 情 况", "体格检查", "检查医师"),
+                    text
+            );
+            structureMap = keyRemoveBlank(structureMap);
+            CommonAnalysisUtil.cutByTitlesNoColon(text, titles, 0, structureMap);
+            structureMap.put("体格检查", structureMap.get("体格检查(一)"));
+            structureMap.put("专科检查", structureMap.get("体格检查表(二)补充及专科情况"));
+            structureMap.remove("体格检查(一)");
+            structureMap.remove("体格检查表(二)补充及专科情况");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return structureMap;
+    }
+
+    private Map<String, String> keyRemoveBlank(Map<String, String> sourceMap) {
+        Map<String, String> structureMap = Maps.newHashMap();
+        sourceMap.forEach((key, value) -> {
+            structureMap.put(StringUtil.removeBlank(key), sourceMap.get(key));
+        });
+        return structureMap;
     }
 
 }

+ 18 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyClinicBloodEffectXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,21 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyClinicBloodEffectXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 18 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyClinicalBloodXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,21 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyClinicalBloodXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 40 - 0
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyConsultationRecordXmlAnalysis.java

@@ -0,0 +1,40 @@
+package com.lantone.qc.trans.ywzxyy.util;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2021/1/25 14:04
+ */
+@Slf4j
+public class YwzxyyConsultationRecordXmlAnalysis implements YwzxyyXmlAnalysis {
+
+    @Override
+    public Map<String, String> analysis(String... args) {
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("请会诊目的", "被邀请科室", "会诊医师", "会诊意见", "会诊后处置措施"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
+    }
+
+}

+ 18 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyCrisisValueReportXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,21 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyCrisisValueReportXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 18 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyCriticallyIllNoticeXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,21 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyCriticallyIllNoticeXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("原始文本"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 28 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyDeathCaseDiscussXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,31 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyDeathCaseDiscussXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名", "主持人签名", "上级医师签名"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(
+                    Lists.newArrayList("入院日期时间", "死亡日期时间", "入院诊断", "死亡诊断", "讨论时间", "地点", "医生办公室主持人",
+                            "科示教室主持人", "主持人", "参加人员", "主管医师报告病史", "讨论摘要", "主持人总结发言", "简要病情", "死亡原因", "经验教训", "诊疗计划"),
+                    level2Text
+            );
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 28 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyDeathRecordXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,31 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyDeathRecordXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名", "记录时间"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(
+                    Lists.newArrayList("姓  名", "性   别", "年    龄", "婚    姻", "民  族", "出 生 地", "职    业", "住院天数", "现 住 址",
+                            "入院日期", "工作单位", "死亡时间", "入院情况", "专科情况", "入院诊断", "诊疗经过", "死亡原因", "死亡诊断"),
+                    level2Text
+            );
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyDifficultCaseDiscussXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyDifficultCaseDiscussXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名", "主持人签名", "上级医师签名"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("讨论时间", "地点", "科示教室主持人", "主持人", "参加人员", "主管医师报告病史", "讨论摘要", "主持人总结发言"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 38 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyFirstCourseRecordXmlAnalysis.java

@@ -1,5 +1,13 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +15,40 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyFirstCourseRecordXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病例特点", "诊断依据", "鉴别诊断", "初步诊断", "诊疗计划"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level2StructureMap.put("病例摘要", level2Text.substring(0, level2Text.indexOf("一、病例特点")));
+            level2StructureMap.keySet().forEach(key -> {
+                level2StructureMap.put(key, removeWN(level2StructureMap.get(key)));
+            });
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
+    }
+
+    private String removeWN(String value) {
+        if (StringUtil.isNotBlank(value)
+                && value.length() >= 2
+                && value.substring(value.length() - 2).replaceAll("[一二三四五六七八九][、]", "").length() == 0) {
+            return value.substring(0, value.length() - 2);
+        }
+        return value;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyLeaveHospitalXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyLeaveHospitalXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> structureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String text = YwzxyyXmlUtil.xml2Txt(xml);
+            List<String> titles = CommonAnalysisUtil.sortTitles(
+                    Lists.newArrayList("入院时间", "出院时间", "住院天数", "入院诊断", "出院诊断", "入院情况",
+                            "住院经过", "出院情况", "出院医嘱", "健康教育", "随访计划", "医师签名", "签名时间"),
+                    text
+            );
+            CommonAnalysisUtil.cutByTitles(text, titles, 0, structureMap);
+            structureMap.put("出院去向", structureMap.get("出院情况"));
+            CommonAnalysisUtil.cutByTitles(structureMap.get("住院经过"), Lists.newArrayList("出院情况"), 0, structureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return structureMap;
     }
 
 }

+ 28 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyOperationDiscussionXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,31 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyOperationDiscussionXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(
+                    Lists.newArrayList("手术开始时间", "术中诊断", "麻醉方式", "手术方式", "手术简要经过(包括“术中所见”)",
+                            "术后处理措施", "术后注意事项"),
+                    level2Text
+            );
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyOperationRecordXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyOperationRecordXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> structureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String text = YwzxyyXmlUtil.xml2Txt(xml);
+            List<String> titles = CommonAnalysisUtil.sortTitles(
+                    Lists.newArrayList("手术开始时间", "手术结束时间", "手术前诊断", "手术名称", "手术后诊断",
+                            "手术人员", "麻醉方式", "麻醉医师", "手术标本", "冰冻切片结果", "术中并发症", "术中出血量估计",
+                            "术中输血情况", "输血不良反应", "手术经过及处理(包括患者的体位、切口处理、病灶所见及手术步骤)",
+                            "手术经过", "医师签名", "记录时间"),
+                    text
+            );
+            CommonAnalysisUtil.cutByTitles(text, titles, 0, structureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return structureMap;
     }
 
 }

+ 107 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyPreoperativeDiscussionXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,110 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyPreoperativeDiscussionXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> ret = null;
+        String xml = args[0];
+        String recTitle = args[1];
+        String recTypeId = args[2];
+        if (recTitle.equals("术前小结")) {
+            ret = sqxj(xml);
+        } else if (recTitle.equals("术前讨论记录")) {
+            ret = sqtl(xml);
+        } else if (recTitle.equals("术前讨论兼术前小结")) {
+            ret = xjtl(xml);
+        }
+        return ret;
+    }
+
+    private Map<String, String> sqxj(String xml) {
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(
+                    Lists.newArrayList("简要病情", "术前诊断", "手术指征", "拟施手术名称和方式", "拟施麻醉方式",
+                            "其他术前相关情况", "注意事项", "记录时间"),
+                    level2Text
+            );
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
+    }
+
+    private Map<String, String> sqtl(String xml) {
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitlesNoColon(
+                    Lists.newArrayList("参与讨论者的姓名及专业技术职务", "讨论时间", "术前准备情况", "手术指征",
+                            "手术方案", "可能出现的意外及防范措施", "讨论意见", "主持人小结"),
+                    level2Text
+            );
+            CommonAnalysisUtil.cutByTitlesNoColon(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
+    }
+
+    private Map<String, String> xjtl(String xml) {
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            xml = xml.replaceFirst("</病历记录时间>", "</病历记录时间><病历记录标题>")
+                    .replaceFirst("<讨论时间>", "</病历记录标题>讨论时间<讨论时间>")
+                    .replaceFirst("</讨论时间>", "</讨论时间>讨论地点");
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitlesNoColon(
+                    Lists.newArrayList("讨论时间", "讨论地点", "主持人", "经治医师", "参加人员", "讨论方式", "讨论记录", "1.简要病情",
+                            "2.术前诊断", "3.手术指征与禁忌症", "4.拟施手术名称和方式及可能的变更", "5.可替代的方案", "6.计划性多次手术",
+                            "7.拟施麻醉方式", "8.术前准备", "9.心理状态", "10.经济评估", "11.主要麻醉、术中、术后风险及防范措施",
+                            "12.术中、术后注意事项", "记录医师", "主持人"),
+                    level2Text
+            );
+            CommonAnalysisUtil.cutByTitlesNoColon(level2Text, level2Titles, 0, level2StructureMap);
+            level2StructureMap = removeSerialNumber(level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
+    }
+
+    private Map<String, String> removeSerialNumber(Map<String, String> sourceMap) {
+        Map<String, String> structureMap = Maps.newLinkedHashMap();
+        List<String> titles = Lists.newArrayList("1.简要病情", "2.术前诊断", "3.手术指征与禁忌症",
+                "4.拟施手术名称和方式及可能的变更", "5.可替代的方案", "6.计划性多次手术", "7.拟施麻醉方式",
+                "8.术前准备", "9.心理状态", "10.经济评估", "11.主要麻醉、术中、术后风险及防范措施", "12.术中、术后注意事项");
+        sourceMap.forEach((key, value) -> {
+            if (titles.contains(key)) {
+                structureMap.put(key.replaceFirst("[0-9]+.", ""), value);
+            } else {
+                structureMap.put(key, value);
+            }
+        });
+        return structureMap;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyRescueXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyRescueXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "医师签名"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("参与抢救者的姓名及专业技术职称", "病情变化情况及抢救措施"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyStagesSummaryXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyStagesSummaryXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("入院情况", "入院诊断", "诊疗经过", "目前情况", "目前诊断", "诊疗计划"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 18 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyThreeLevelWardXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,21 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyThreeLevelWardXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> structureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), text);
+            CommonAnalysisUtil.cutByTitles(text, titles, 0, structureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return structureMap;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyTransferIntoXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyTransferIntoXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("入科时间", "转入科室", "转出科室", "入院情况", "入院诊断", "诊疗经过", "目前情况", "目前诊断", "转入诊疗计划"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }

+ 24 - 1
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyTransferOutXmlAnalysis.java

@@ -1,5 +1,12 @@
 package com.lantone.qc.trans.ywzxyy.util;
 
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.lantone.qc.dbanaly.facade.ywzxyy.YwzxyyXmlUtil;
+import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -7,11 +14,27 @@ import java.util.Map;
  * @author: rengb
  * @time: 2021/1/25 14:04
  */
+@Slf4j
 public class YwzxyyTransferOutXmlAnalysis implements YwzxyyXmlAnalysis {
 
     @Override
     public Map<String, String> analysis(String... args) {
-        return null;
+        Map<String, String> level1StructureMap = Maps.newHashMap();
+        try {
+            String xml = args[0];
+            String level1Text = YwzxyyXmlUtil.bcXmlAna(xml);
+            List<String> level1Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("病历记录时间", "病历记录标题", "原始文本", "记录医师"), level1Text);
+            CommonAnalysisUtil.cutByTitles(level1Text, level1Titles, 0, level1StructureMap);
+
+            Map<String, String> level2StructureMap = Maps.newHashMap();
+            String level2Text = level1StructureMap.get("原始文本");
+            List<String> level2Titles = CommonAnalysisUtil.sortTitles(Lists.newArrayList("转入科室", "转出科室", "入院情况", "入院诊断", "诊疗经过", "目前情况", "目前诊断", "转科目的", "注意事项"), level2Text);
+            CommonAnalysisUtil.cutByTitles(level2Text, level2Titles, 0, level2StructureMap);
+            level1StructureMap.putAll(level2StructureMap);
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+        return level1StructureMap;
     }
 
 }