Browse Source

死亡病例讨论记录对接修改

rengb 5 years ago
parent
commit
cb8b9148be

+ 27 - 46
trans/src/main/java/com/lantone/qc/trans/changx/ChangxDeathCaseDiscussDocTrans.java

@@ -3,9 +3,11 @@ package com.lantone.qc.trans.changx;
 import com.google.common.collect.Lists;
 import com.lantone.qc.pub.model.doc.DeathCaseDiscussDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
-import com.lantone.qc.pub.util.MapUtil;
+import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.ModelDocTrans;
+import com.lantone.qc.trans.changx.util.CxXmlUtil;
 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;
@@ -21,70 +23,49 @@ public class ChangxDeathCaseDiscussDocTrans extends ModelDocTrans {
     @Override
     public DeathCaseDiscussDoc extract(MedrecVo medrecVo) {
         String content = ((List<String>) medrecVo.getContent().get("content")).get(0);
+        Map<String, String> xmlNodeValueMap = CxXmlUtil.firstLevelNodeValue("//DocObjContent//Region", content);
+        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(xmlNodeValueMap, keyContrasts);
 
-        Map<String, String> pageData = Preproc.extract_doc_pub(true, pageDataTitles, content);
-        pageData.put("病程记录内容",
-                pageData.get("病程记录内容")
-                        .replace(pageData.get("病程记录时间"), "")
-                        .replace(pageData.get("病程记录名称"), "")
-        );
+        String text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Region/Content_Text");
+        if (StringUtil.isBlank(text)) {
+            text = CxXmlUtil.getTextByNodePath(content, "//DocObjContent/Region");
+        }
+        Map<String, String> cutWordMap = Preproc.getCutWordMap(true, sourceTitles, text);
+        cutWordMap.putAll(structureMap);
 
-        List<String> targetTitles = Lists.newArrayList();
-        sourceTitles.forEach(sourceTitle -> {
-            String targetTitle = "";
-            for (int index = 0; index < sourceTitle.length(); index++) {
-                if (index == sourceTitle.length() - 1) {
-                    targetTitle += sourceTitle.substring(index, index + 1);
-                } else {
-                    targetTitle += sourceTitle.substring(index, index + 1) + "[\\s\\p{Zs}]*";
-                }
-            }
-            targetTitles.add(targetTitle);
-        });
-
-        Map<String, String> sourceMap = Preproc.extract_doc_pub(true, targetTitles, content);
-        sourceMap.put("记录时间", sourceMap.get("病程记录时间"));
-        MapUtil.keyAssig(sourceMap, "参加讨论人员", "参加讨论人员(包括职称及姓名)");
-        MapUtil.keyAssig(sourceMap, "讨论主持人", "主持人");
-        MapUtil.keyAssig(sourceMap, "死亡时间", "出院时间");
-        MapUtil.keyAssig(sourceMap, "结论", "总结");
-        MapUtil.keyAssig(sourceMap, "死亡原因", "结论");
-
-        DeathCaseDiscussDoc deathCaseDiscussDoc = ModelDocGenerate.deathCaseDiscussDocGen(sourceMap);
-        deathCaseDiscussDoc.setText(content);
-        deathCaseDiscussDoc.setPageData((Map) pageData);
+        DeathCaseDiscussDoc deathCaseDiscussDoc = ModelDocGenerate.deathCaseDiscussDocGen(cutWordMap);
+        deathCaseDiscussDoc.setText(text);
+        deathCaseDiscussDoc.setPageData((Map) xmlNodeValueMap);
 
         return deathCaseDiscussDoc;
     }
 
-    private List<String> pageDataTitles = Lists.newArrayList(
-            "病程记录时间",
-            "病程记录名称",
-            "病程记录内容",
-            "记录医师"
-    );
-
     private List<String> sourceTitles = Lists.newArrayList(
-            "病程记录时间",
-            "病程记录名称",
-            "病程记录内容",
             "记录时间",
             "记录医师",
             "入院时间",
-            "入院诊断",
             "死亡时间",
             "出院时间",
+            "入院诊断",
             "死亡诊断",
             "讨论时间",
             "讨论地点",
-            "参加讨论人员(包括职称及姓名)",
             "参加讨论人员",
-            "主持人",
             "讨论主持人",
             "讨论内容",
             "死亡原因",
-            "结论",
-            "总结"
+            "结论"
+    );
+
+    private List<String> keyContrasts = Lists.newArrayList(
+            "记录日期=记录时间",
+            "讨论时间=",
+            "主持人=讨论主持人",
+            "参加人员姓名=参加讨论人员",
+            "讨论内容=",
+            "主持人小结++++主持人小结意见=结论",
+            "签名++++=记录医师",
+            "签名时间="
     );
 
 }