chengyao 4 лет назад
Родитель
Сommit
e7c3e6b10c

+ 49 - 27
structure-center/src/main/java/com/lantone/structure/facade/tran/DeathCaseDiscussionTran.java

@@ -54,7 +54,7 @@ public class DeathCaseDiscussionTran extends TargetTran {
         );
         //单独处理参加人员(截取依据:护士不会汇报病史,而且汇报病史的人会出现在参加人员中,所以会有一个人的名字出现两次)
         List<String> ftitles = CommonAnalysisUtil.sortTitles(
-                Lists.newArrayList("﹙副﹚主任医师","主治医师","医师","护士"),
+                Lists.newArrayList("﹙副﹚主任医师","主治医师","医师","护士","汇报病史"),
                 text
         );
 
@@ -64,7 +64,6 @@ public class DeathCaseDiscussionTran extends TargetTran {
             sourceMap.remove("性别");
             sourceMap.remove("床号");
             sourceMap.remove("汇报病史");
-            sourceMap.remove("护士");
         }
 
         return sourceMap;
@@ -158,9 +157,13 @@ public class DeathCaseDiscussionTran extends TargetTran {
             //参加讨论人员名单
 
          // 去掉最后无法识别的名字,例如 徐金印医师汇报病史    该名会出现在参加人员名单上排除法处理
+            // 兼容参加人员无护士
             List<String> attendNames = new ArrayList<>();
             StringBuffer targetRet = new StringBuffer();
             if(StringUtil.isNotEmpty(retMap.get("参加人员"))){
+                String  retData = "";
+                String  replace = "";
+                String attendName = retMap.get("参加人员");
                     if(StringUtil.isNotEmpty(retMap.get("﹙副﹚主任医师"))) {
                         String rName = retMap.get("﹙副﹚主任医师");
                         transAdd(rName, attendNames);
@@ -172,37 +175,56 @@ public class DeathCaseDiscussionTran extends TargetTran {
                     }
                     if(StringUtil.isNotEmpty(retMap.get("医师"))) {
                         String rName = retMap.get("医师");
-                        transAdd(rName, attendNames);
+                        if(StringUtil.isEmpty(retMap.get("护士"))) {
+                            rName =  rName.substring(0,rName.lastIndexOf("、") + 3);
+                            transAdd(rName, attendNames);
+                            String newRname =  retMap.get("医师").substring( retMap.get("医师").lastIndexOf("、") + 3);
+                            for (String name : attendNames) {
+                               if(newRname.contains(name)){
+                                   retMap.put("医师", retMap.get("医师").substring(0,retMap.get("医师").lastIndexOf(name)));
+                                    retData =attendName.substring(0, attendName.lastIndexOf(name));
+                                    replace = retData;
+                               }
+                            }
+                        }else{
+                            transAdd(rName, attendNames);
+                        }
                     }
-                    String attendName = retMap.get("参加人员");
+
+                if(StringUtil.isNotEmpty(retMap.get("护士"))) {
                     String spiltString = attendName.substring(attendName.indexOf("护士")+2, attendName.lastIndexOf("医师"));
                     for (String name : attendNames) {
                         if(spiltString.contains(name)){
-                          String  retData = attendName.substring(0, attendName.lastIndexOf(name));
-                          String  replace = retData;
-                          //职称与姓名空格区分
-                           if( retData.contains("主治医师:")){
-                               retData = retData.substring(0,retData.indexOf("主治医师:"));
-                               if(StringUtil.isNotEmpty(retData)){
-                                   targetRet.append(retData+" ");
-                               }
-                               if(StringUtil.isNotEmpty(retMap.get("主治医师"))){
-                                   targetRet.append("主治医师:"+retMap.get("主治医师")+" ");
-                               }
-                               if(StringUtil.isNotEmpty(retMap.get("医师"))){
-                                   targetRet.append("医师:"+retMap.get("医师")+" ");
-                               }
-                               String rec = "";
-
-                               if( replace.contains("护士:")){
-                                    rec = replace.substring(replace.lastIndexOf("护士:"));
-                               }
-                               if(StringUtil.isNotEmpty(rec)){
-                                   targetRet.append(rec);
-                               }
-                           }
+                            retData = attendName.substring(0, attendName.lastIndexOf(name));
+                            replace = retData;
                         }
                     }
+                }
+
+                //职称与姓名空格区分
+                if( retData.contains("主治医师:")){
+                    retData = retData.substring(0,retData.indexOf("主治医师:"));
+                    if(StringUtil.isNotEmpty(retData)){
+                        targetRet.append(retData+" ");
+                    }
+                    if(StringUtil.isNotEmpty(retMap.get("主治医师"))){
+                        targetRet.append("主治医师:"+retMap.get("主治医师")+" ");
+                    }
+                    if(StringUtil.isNotEmpty(retMap.get("医师"))){
+                        targetRet.append("医师:"+retMap.get("医师")+" ");
+                    }
+                    String rec = "";
+
+                    if( replace.contains("护士:")){
+                        rec = replace.substring(replace.lastIndexOf("护士:"));
+                    }
+                    if(StringUtil.isNotEmpty(rec)){
+                        targetRet.append(rec);
+                        retMap.remove("护士");
+                    }
+                }
+
+
                     retMap.remove("主治医师");
                     retMap.remove("医师");
                     retMap.put("参加人员",targetRet.toString());

+ 13 - 9
structure-center/src/main/java/com/lantone/structure/facade/tran/DeathRecordTran.java

@@ -127,13 +127,7 @@ public class DeathRecordTran extends TargetTran {
                 }
             }
 
-            //入院情况 =入院情况 +抢救措施
-            if (StringUtil.isNotEmpty(retMap.get("入院情况"))) {
-                if (StringUtil.isNotEmpty(retMap.get("抢救措施"))) {
-                    retMap.put("入院情况",retMap.get("入院情况")+" "+"抢救措施:"+retMap.get("抢救措施"));
-                    retMap.remove("抢救措施");
-                }
-            }
+
 
             //直接死亡原因名称
             if (StringUtil.isNotEmpty(retMap.get("死亡诊断"))) {
@@ -149,11 +143,21 @@ public class DeathRecordTran extends TargetTran {
                 retMap.remove("最后诊断");
             }
 
-            //如果诊疗经过为空则取治疗经过
+            //如果诊疗经过为空则取治疗经过  需要拼接抢救措施
             if (StringUtil.isEmpty(retMap.get("诊疗经过"))) {
                 if (StringUtil.isNotEmpty(retMap.get("治疗经过"))) {
                     retMap.put("诊疗过程描述",retMap.get("治疗经过"));
-                    retMap.remove("治疗经过");
+                    if (StringUtil.isNotEmpty(retMap.get("抢救措施"))) {
+                        retMap.put("诊疗过程描述",retMap.get("治疗经过")+" "+"抢救措施:"+retMap.get("抢救措施"));
+                        retMap.remove("治疗经过");
+                        retMap.remove("抢救措施");
+                    }
+                }
+            }else{
+                String str = retMap.get("诊疗经过");
+                if (StringUtil.isNotEmpty(retMap.get("抢救措施"))) {
+                    retMap.put("诊疗经过",str+" "+"抢救措施:"+retMap.get("抢救措施"));
+                    retMap.remove("抢救措施");
                 }
             }
 

+ 85 - 8
structure-center/src/main/java/com/lantone/structure/facade/tran/LeaveHospitalTran.java

@@ -7,9 +7,12 @@ import com.lantone.structure.facade.tran.util.CommonAnalysisUtil;
 import com.lantone.structure.model.doc.LeaveHospitalDoc;
 import com.lantone.structure.util.MapUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.time.DateUtils;
 
 
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @Description:出院小结
@@ -44,18 +47,19 @@ public class LeaveHospitalTran extends TargetTran {
     private Map<String, String> cutWord(String text) {
         Map<String, String> sourceMap = Maps.newHashMap();
         List<String> titles = CommonAnalysisUtil.sortTitles(
-                //
-                Lists.newArrayList("入院日期","出院日期","入院诊断","入院情况","主要阳性结果","主要阴性结果","阳性结果","阴性结果","住院期间的辅助检查","治疗经过","诊疗经过","出院情况","并发症","治疗效果","出院医嘱","出院注意事项","首席医师","经治/主治医师","填写日期"),
+                Lists.newArrayList("入院日期","出院日期","入院诊断","入院情况","主要阳性结果","主要阴性结果","阳性结果","阴性结果","住院期间的辅助检查","治疗经过","诊疗经过","出院情况","并发症","治疗效果","出院医嘱","营养指导","出院注意事项","首席医师",
+                      "经治/主治医师:", "经治/主治医师","填写日期"),
                 text
         );
 
         CommonAnalysisUtil.cutByTitles(text, titles, 0, sourceMap);
-        if(sourceMap.containsKey("入院诊断")||(sourceMap.containsKey("住院期间的辅助检查"))||(sourceMap.containsKey("出院注意事项"))||sourceMap.containsKey("阴性结果")||sourceMap.containsKey("主要阴性结果")){
+        if(sourceMap.containsKey("入院诊断")||(sourceMap.containsKey("住院期间的辅助检查"))||(sourceMap.containsKey("出院注意事项"))||sourceMap.containsKey("阴性结果")||sourceMap.containsKey("主要阴性结果")||sourceMap.containsKey("营养指导")){
             sourceMap.remove("入院诊断");
             sourceMap.remove("住院期间的辅助检查");
             sourceMap.remove("出院注意事项");
             sourceMap.remove("阴性结果");
             sourceMap.remove("主要阴性结果");
+            sourceMap.remove("营养指导");
         }
         return sourceMap;
     }
@@ -94,11 +98,6 @@ public class LeaveHospitalTran extends TargetTran {
 
     public void leaveHospitalContrast( LeaveHospitalDoc leaveHospitalDoc, Map<String, String> retMap) {
         if (leaveHospitalDoc != null) {
-            if (StringUtil.isNotEmpty(retMap.get("经治/主治医师"))) {
-                String value = retMap.get("经治/主治医师");
-                String retValue = parseString(value);
-                retMap.put("经治/主治医师",retValue);
-            }
             if (StringUtil.isNotEmpty(retMap.get("出院日期"))) {
                 String value = retMap.get("出院日期");
                 if (value.contains("日")) {
@@ -137,6 +136,39 @@ public class LeaveHospitalTran extends TargetTran {
                 retMap.remove("治疗效果");
 
             }
+
+            if (StringUtil.isNotEmpty(retMap.get("首席医师").trim())) {
+                String firDoctor = retMap.get("首席医师");
+                if(firDoctor.contains("经治/主治医师")){
+                    if(StringUtil.isNotEmpty( firDoctor.split("经治/主治医师")[0].trim())){
+                        firDoctor = firDoctor.split("经治/主治医师")[0].trim();
+                        retMap.put("首席医师",firDoctor);
+                    }else{
+                        retMap.remove("首席医师");
+                    }
+                    if(StringUtil.isNotEmpty( firDoctor.split("经治/主治医师")[1].trim())){
+                        String value = firDoctor.split("经治/主治医师")[1].trim();
+                        if(value.contains(":")){
+                            value =  value.substring(value.indexOf(":")+1);
+                        }
+                        retMap.put("经治/主治医师",value);
+                    }
+                }
+            }else{
+                retMap.remove("首席医师");
+            }
+
+            if (StringUtil.isNotEmpty(retMap.get("填写日期"))) {
+                String fileDate = retMap.get("填写日期");
+                String sginTime= lastTime(fileDate);
+                retMap.put("填写日期",sginTime);
+            }
+
+            if (StringUtil.isNotEmpty(retMap.get("经治/主治医师"))) {
+                String value = retMap.get("经治/主治医师");
+                String retValue = parseString(value);
+                retMap.put("经治/主治医师",retValue);
+            }
         }
     }
 
@@ -147,4 +179,49 @@ public class LeaveHospitalTran extends TargetTran {
         }
         return text;
     }
+
+    /**
+     * 抽取文本中的最后时间
+     *
+     * @param top
+     * @return
+     */
+    public static String lastTime(String top) {
+        Date date = null;
+        try {
+            date = DateUtils.parseDate(top, StringUtil.dateFormats);
+        } catch (Exception e) {
+            log.error(e.getMessage(),e);
+        }
+        if(date!= null){
+            return top;
+        }else{
+            if(top.contains("年") && top.contains("月") && top.contains("日")){
+               top = extractDate(top);
+                 lastTime(top);
+            }
+            return top;
+        }
+    }
+
+    /**
+     * 抽取文本中的第一个时间
+     *
+     * @param top
+     * @return
+     */
+    public static String extractDate(String top) {
+        Pattern pattern = Pattern.compile("[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2}?");
+        Matcher matcher = pattern.matcher(top);
+        if (matcher.find()) {
+            return matcher.group(0);
+        } else {
+            Pattern p1 = Pattern.compile("[0-9]{4}年[0-9]+月[0-9]+日");
+            Matcher m1 = p1.matcher(top);
+            if (m1.find()) {
+                return m1.group(0);
+            }
+        }
+        return null;
+    }
 }