Pārlūkot izejas kodu

修改义乌主治医生查房bug和宁海入院记录、手术记录、首次病程录html解析问题

songxinlu 4 gadi atpakaļ
vecāks
revīzija
ce9f95d64a

+ 2 - 2
kernel/src/main/java/com/lantone/qc/kernel/catalogue/yiwu/threelevelward/THR0127.java

@@ -86,8 +86,8 @@ public class THR0127 extends QCCatalogue {
             }
             List<String> resultInfos = new ArrayList<>();
             for (int j = 0; j < roundRecordEveryWeek.size(); j++) {
-                int directorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.director);
-                int dept_doctorNum = CatalogueUtil.appearNumber(roundRecordEveryWeek.get(j).split(","), Content.dept_doctor);
+                int directorNum = CatalogueUtil.appearNumberNotSub(roundRecordEveryWeek.get(j).split(","), Content.director);
+                int dept_doctorNum = CatalogueUtil.appearNumberNotSub(roundRecordEveryWeek.get(j).split(","), Content.dept_doctor);
                 if (directorNum + dept_doctorNum < 2) {
                     //每周无2次主任医师查房记录/科主任查房记录
                     status.set("-1");

+ 16 - 0
kernel/src/main/java/com/lantone/qc/kernel/util/CatalogueUtil.java

@@ -279,6 +279,22 @@ public class CatalogueUtil {
         return count;
     }
 
+    /**
+     * 获取指定字符串出现的次数
+     *
+     * @param srcText  源字符串
+     * @param findText 要查找的字符串
+     * @return
+     */
+    public static int appearNumberNotSub(String[] srcText, String findText) {
+        int count = 0;
+        for (String title : srcText) {
+            if (title.contains(findText)) {
+                count++;
+            }
+        }
+        return count;
+    }
     /**
      * 只保留Date数组中精确到分的格式
      *

+ 62 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java

@@ -5,10 +5,12 @@ import com.google.common.collect.Maps;
 import com.lantone.qc.pub.util.StringUtil;
 import com.lantone.qc.trans.comsis.CommonAnalysisUtil;
 import lombok.extern.slf4j.Slf4j;
+import lombok.val;
 import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -53,6 +55,7 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
         List<String> titles = Lists.newArrayList("姓 名", "入院时间", "出生日期", "性 别", "性别", "记录时间","年 龄", "出 生 地", "职 业", "职业", "入院时间", "民 族", "民族",
                 "联系地址", "婚 姻", "婚姻", "病史陈述者", "病史可靠度", "家长姓名","住 址","联系电话", "主诉", "主 诉", "现 病 史","现病史", "既 往 史", "个 人 史", "母 孕 史", "出 生 史", "喂 养 史",
                 "既往史", "个人史", "母孕史", "出生史", "喂养史","婚育史","家族史","年龄","姓名","出生地","住址",
+                "末次月经","身份证号","户籍地址","联 系 人","孕/产 次","预 产 期","产前检查","籍贯","",
                 "生长发育史", "预防接种史", "生活习惯史", "婚 育 史", "月经婚育史", "家 族 史", "辅助检查", "记录医生", "初步诊断", "补充诊断");
         String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("main"), true);
         if (StringUtil.isNotBlank(htmlContent)) {
@@ -60,6 +63,65 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
             CommonAnalysisUtil.html2StructureMap(titles, htmlContent, map);
             disDiagnose(map, Lists.newArrayList("初步诊断"), "医师签名:");
             disDiagnose(map, Lists.newArrayList("初步诊断医师签名:"), "时 间:");
+            //入院记录 体格检查、补充及专科情况里获取辅助检查提取
+            getAuxiliary(map,Lists.newArrayList("体格检查","补充及专科情况","补充及专科情况"),htmlContent);
+            //婚育史特殊符号处理
+//            removeSymbol(map,"□","婚育史");
+        }
+    }
+
+    private void getAuxiliary(Map<String, String> map, ArrayList<String> newArrayList,String htmlContent) {
+        CommonAnalysisUtil.html2StructureMapNoColon(newArrayList, htmlContent, map);
+        //家族史其他内容清理
+        if(map.keySet().contains("家族史"))
+        {
+            String fimaly = map.get("家族史");
+            if(map.keySet().contains("体格检查"))
+            {
+                removeMapVal(map,fimaly,"体格检查","家族史");
+                if(map.keySet().contains("补充及专科情况")&&StringUtil.isBlank(map.get("辅助检查")))
+                {
+                    String auxiliary = map.get("补充及专科情况");
+                    CommonAnalysisUtil.html2StructureMapNoColon(
+                            Lists.newArrayList("辅助检查"),auxiliary, map);
+                    if(map.get("辅助检查").contains("初步诊断")&&StringUtil.isNotBlank(map.get("初步诊断"))
+                            &&map.get("辅助检查").contains(map.get("初步诊断")))
+                    {
+                        String val = map.get("辅助检查");
+                        if(val.contains(map.get("初步诊断")))
+                        {
+                            val = val.split("初步诊断")[0].replaceAll("初步诊断","")
+                                    .replaceAll(":","").trim();
+                            map.put("辅助检查",val);
+
+                        }
+                    }
+                }
+            }
+
+        }
+    }
+
+    private void removeMapVal(Map<String, String> map, String val,String mapkey,String changeKey) {
+        if(val.contains(map.get(mapkey)))
+        {
+            val = val.split(map.get(mapkey))[0].replaceAll(mapkey,"").trim();
+            map.put(changeKey,val);
+        }
+    }
+
+    /**
+     * @Author songxl
+     * @Description map中特殊符号处理
+     * @Date  2021/4/8
+     * @Param [map,symbol,key]
+     * @Return void
+     * @MethodName removeSymbol
+     */
+    private void removeSymbol(Map<String, String> map,String symbol,String key) {
+        if(map.keySet().contains(key))
+        {
+            map.put(key,map.get(key).replaceAll(symbol,"").trim());
         }
     }
 
@@ -201,5 +263,4 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
             }
         }
     }
-
 }

+ 2 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiFirstCourseRecordHtmlAnalysis.java

@@ -33,7 +33,8 @@ public class NingHaiYiYiFirstCourseRecordHtmlAnalysis implements NingHaiYiYiHtml
             }
             if (structureMap.containsKey("二.拟诊讨论")) {
                 List<String> listTitle = CommonAnalysisUtil.sortTitles(
-                        Lists.newArrayList("1.初步诊断", "2.诊断依据", "3.鉴别诊断"), structureMap.get("二.拟诊讨论")
+                        Lists.newArrayList("1.初步诊断", "2.诊断依据", "3.鉴别诊断"
+                                ,"诊断依据","鉴别诊断","初步诊断"), structureMap.get("二.拟诊讨论")
                 );
                 CommonAnalysisUtil.cutByTitles(structureMap.get("二.拟诊讨论"), listTitle, 0, structureMap);
             }

+ 20 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiOperationRecordHtmlAnalysis.java

@@ -62,6 +62,24 @@ public class NingHaiYiYiOperationRecordHtmlAnalysis implements NingHaiYiYiHtmlAn
                     map.put("手术结束时间", operatorDate[1]);
                 }
             }
+            //宁海产科手术记录处理
+            if(map.containsKey("开始")&&map.containsKey("结束")
+                    &&!map.containsKey("手术开始时间")&&!map.containsKey("手术结束时间")
+                    &&!map.containsKey("手术日期"))
+            {
+                map.put("手术开始时间", map.get("开始"));
+                String endTime = map.get("结束");
+                if(endTime.contains("手术名称"))
+                {
+                    CommonAnalysisUtil.html2StructureMapNoColon
+                            (Lists.newArrayList("手术名称","术前诊断","手术指征","术后诊断"),endTime,map);
+                    endTime = endTime.split("手术名称")[0].trim();
+                }
+                map.put("手术结束时间", endTime);
+                map.put("手术日期","开始:"+map.get("手术开始时间")+"  结束:"+map.get("手术结束时间"));
+
+            }
+
             CommonAnalysisUtil.makeEmpty(map, "医生签名");
             NingHaiYiYiHtmlAnalysisUtil.insertModuleId(modeId, recTypeId, map);
         } catch (Exception e) {
@@ -83,10 +101,11 @@ public class NingHaiYiYiOperationRecordHtmlAnalysis implements NingHaiYiYiHtmlAn
                 "诊断手术/操作简要经过(包括术中有无并发症及具体描述和处理)", "手术经过","医师签名",
                 "医生签名", "记录时间", "时间", "手术/操作医生", "记录者", "术中输血", "术前宫颈准备日期", "药物名称及用法", "导管或其他", "插入深度",
                 "阴道填塞纱布条", "准备者", "取出日期", "手术方法", "术中特殊情况", "病理检查", "其他", "记录者", "手术者",
-                "检查子宫位置"
+                "检查子宫位置","开始","结束"
         );
         titles = CommonAnalysisUtil.sortTitles(titles, text);
         CommonAnalysisUtil.cutByTitlesNoColon(text, titles, 0, map);
+
     }
 
 }