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

义务中心医院:入院记录页面显示修改

rengb 4 роки тому
батько
коміт
1ede53eb7f

+ 30 - 10
trans/src/main/java/com/lantone/qc/trans/ywzxyy/util/YwzxyyBeHospitalizedXmlAnalysis.java

@@ -9,6 +9,8 @@ import lombok.extern.slf4j.Slf4j;
 
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @Description:
@@ -37,20 +39,22 @@ public class YwzxyyBeHospitalizedXmlAnalysis implements YwzxyyXmlAnalysis {
     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]*(</肌力>)", "</肌力></肌力> ");
+            xml = xml.replaceAll("(<慢性疾病>)[\\s\\S]*(</既往病史>)", "</既往病史>")
+                    .replaceAll("(<传染病名称>)[\\s\\S]*(</传染病史>)", "</传染病史>")
+                    .replaceAll("(<经量>)[\\s\\S]*(</月经史>)", "</月经史>")
+                    .replaceAll("(<近亲结婚否>)[\\s\\S]*(</婚姻情况>)", "</婚姻情况>")
+                    .replaceAll("(<足月产次数>)[\\s\\S]*(</生育情况>)", "</生育情况>")
+                    .replaceAll("(<收缩压值>)[\\s\\S]*(</血压>)", "</血压>")
+                    .replaceAll("(<反射程度>)[\\s\\S]*(</深反射>)", "</深反射> ")
+                    .replaceAll("(<肌张力>)[^(<肌张力>)]*(<肌张力>)", "<肌张力><肌张力>").replaceAll("(</肌张力>)[^(</肌张力>)]*(</肌张力>)", "</肌张力></肌张力> ")
+                    .replaceAll("(<肌力>)[^(<肌力>)]*(<肌力>)", "<肌力><肌力>").replaceAll("(</肌力>)[^(</肌力>)]*(</肌力>)", "</肌力></肌力> ")
+                    .replaceAll("(</记录医师>)[\\s\\S]*(<记录医师签名时间>)", "</记录医师>记录医师签名时间:<记录医师签名时间>");
+            xml = matRegx(xml, "(</专科检查>检查医师)[\\s\\S]*(<病历记录时间>)", "<病历记录时间>", "记录医师签名时间:<病历记录时间>");
             String text = YwzxyyXmlUtil.xml2Txt(xml);
             List<String> titles = CommonAnalysisUtil.sortTitlesNoColon(
                     Lists.newArrayList("姓  名", "姓  名", "性    别", "年    龄", "民    族", "婚    姻", "出 生 地",
                             "职    业", "联系地址", "入院时间", "病史陈述者", "记录日期", "主    诉", "现 病 史", "既 往 史", "个 人 史",
-                            "月 经 史", "婚 育 史", "家 族 史", "辅助检查", "营养风险筛查", "初步诊断", "修正诊断", "补充诊断",
+                            "月 经 史", "婚 育 史", "家 族 史", "辅助检查", "营养风险筛查", "初步诊断", "修正诊断", "补充诊断", "记录医师签名时间",
                             "医师签名", "记录时间", "体格检查(一)", "体格检查表(二)补 充 及 专 科 情 况", "体格检查", "检查医师"),
                     text
             );
@@ -74,4 +78,20 @@ public class YwzxyyBeHospitalizedXmlAnalysis implements YwzxyyXmlAnalysis {
         return structureMap;
     }
 
+    private String matRegx(String source, String regex1, String regex2, String val) {
+        if (StringUtil.isNotBlank(source) && StringUtil.isNotBlank(regex1)
+                && StringUtil.isNotBlank(regex2) && StringUtil.isNotBlank(val)) {
+            Pattern pattern = Pattern.compile(regex1);
+            Matcher matcher = pattern.matcher(source);
+            if (matcher.find()) {
+                String sce1 = matcher.group();
+                if (!sce1.contains(val)) {
+                    String sce2 = sce1.replaceAll(regex2, val);
+                    source = source.replaceAll(sce1, sce2);
+                }
+            }
+        }
+        return source;
+    }
+
 }