瀏覽代碼

根据不同科室解析一些字段内容

xiepl 4 年之前
父節點
當前提交
7553d4df65

+ 38 - 10
trans/src/main/java/com/lantone/qc/trans/shengzhouyy/BeHospitalizedDocTrans.java

@@ -18,6 +18,9 @@ import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -53,15 +56,40 @@ public class BeHospitalizedDocTrans extends ModelDocTrans {
             List<String> sortTitles = CommonAnalysisUtil.sortTitles(titles, text);
             CommonAnalysisUtil.cutByTitles(text, sortTitles, 0, sourceMap);
             sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+//            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            String rec_title = contentMap.get("recTitle").toString();
+            if ("产科住院病历(互联互通)".equals(rec_title)) sourceMap.put("病人性别", "女");
             sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-            String[] docker_signature = sourceMap.get("医师签名").split(" ");
-            if (docker_signature.length > 1) sourceMap.put("医师签名", docker_signature[0]);
-            String[] split = sourceMap.get("记录时间").split(" ");
-            if (split.length >= 2) {
-                String rec_time = split[0] + " " + split[1];
-                sourceMap.put("记录时间", rec_time);
+            String docker_signatures = sourceMap.get("医师签名");
+            if (StringUtils.isNotBlank(docker_signatures)) {
+                String[] docker_signature = docker_signatures.split(" ");
+                if (docker_signature.length > 1) sourceMap.put("医师签名", docker_signature[0]);
             }
-                structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts, modeId);
+            if (StringUtils.isNotBlank(sourceMap.get("记录时间"))) {
+                String[] split = sourceMap.get("记录时间").split(" ");
+                if (split.length >= 2) {
+                    String rec_time = split[0] + " " + split[1];
+                    sourceMap.put("记录时间", rec_time);
+                }
+            }
+
+            String date_of_birth = sourceMap.get("出生日期");
+            String age = sourceMap.get("年龄");
+            if (StringUtils.isBlank(age) && StringUtils.isNotBlank(date_of_birth)) {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
+                try {
+                    Date date_birth = sdf.parse(date_of_birth);
+                    long time = date_birth.getTime();
+                    long currentTimeMillis = System.currentTimeMillis();
+                    long abs = Math.abs(currentTimeMillis - time);
+                    long age1 = abs / 1000 / 60 / 60 / 24 / 365;
+                    sourceMap.put("年龄", age1 + "");
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+            }
+
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts, modeId);
             OrdinaryAssistant.removeBlank(structureMap);
         }
         BeHospitalizedDoc beHospitalizedDoc = beHospitalizedDocGen(structureMap); // 不走共用
@@ -80,18 +108,18 @@ public class BeHospitalizedDocTrans extends ModelDocTrans {
     private List<String> keyContrasts = Lists.newArrayList(
             "患者姓名=姓名", "病人姓名=姓名", "生于=出生日期", "电话=联系电话",
             "国籍=籍贯",
-            "性别=性别",
             "病人性别=性别",
             "患者现住址=住址",
-            "患者年龄=年龄", "病人年龄=年龄",
             "工作单位名称=工作单位",
             "婚姻状况=婚姻", "婚姻=婚姻",
             "供史者=病史陈述者", "陈述者=病史陈述者",
             "入院诊断=初步诊断", "初步诊断西医诊断名称=初步诊断",
             "医师签名=记录医生",
             "现病史1=现病史",
+            "入院情况=现病史",
             "工作单位名称=职业",
-            "产科检查=专科检查"
+            "产科检查=专科检查",
+            "签名时间=记录时间"
     );
     /*
      "初步诊断医师=初步诊断医师签名",

+ 17 - 6
trans/src/main/java/com/lantone/qc/trans/shengzhouyy/OperationDocTrans.java

@@ -5,7 +5,12 @@ import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import com.lantone.qc.dbanaly.facade.shengzhouzz.ShengzhouyyXmlUtil;
 import com.lantone.qc.dbanaly.util.ModuleMappingUtil;
-import com.lantone.qc.pub.model.doc.operation.*;
+import com.lantone.qc.pub.model.doc.operation.OperationDiscussionDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationInformedConsentDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
+import com.lantone.qc.pub.model.doc.operation.OperationSafetyChecklistDoc;
+import com.lantone.qc.pub.model.doc.operation.PreoperativeDiscussionDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.ListUtil;
@@ -107,9 +112,17 @@ public class OperationDocTrans extends ModelDocTrans {
             sourceMap.put("mode_id", ModuleMappingUtil.getDeptModuleId(modeId));
             sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
             sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-
+            String operation_time = sourceMap.get("手术时间");
+            if (StringUtils.isNotBlank(operation_time)) {
+                //2021.01.04 15:21-16:09
+                String[] split = operation_time.split(" ");
+                String[] split1 = split[1].split("-");
+                String surgery_start_time = split[0] + " " + split1[0];
+                String surgery_end_time = split[0] + " " + split1[1];
+                sourceMap.put("手术开始时间", surgery_start_time);
+                sourceMap.put("手术结束时间", surgery_end_time);
+            }
             structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationDiscussion_keyContrasts, modeId);
-
         }
 
         OperationDiscussionDoc operationDiscussionDoc = new OperationDiscussionDoc();
@@ -222,8 +235,6 @@ public class OperationDocTrans extends ModelDocTrans {
             "记录时间=医师签名时间",
             "时间=医师签名时间"
     );
-
-
     /**********************************************术前讨论、术前小结****************************************************/
     private Map<String, PreoperativeDiscussionDoc> getPreoperativeDiscussionDocMap(List<Map<String, Object>> contentMaps) {
         Map<String, PreoperativeDiscussionDoc> retMap = Maps.newHashMap();
@@ -256,7 +267,7 @@ public class OperationDocTrans extends ModelDocTrans {
             sourceMap.put("mode_id", ModuleMappingUtil.getDeptModuleId(modeId));
             List<String> titles = Lists.newArrayList("简要病情", "术前诊断", "手术指征", "手术禁忌症",
                     "拟施手术名称和方式", "拟施麻醉方式", "其他术前相关情况", "术中或术后可能发生的并发症", "手术风险及防治对策",
-                    "术前与患方谈话及签定手术知情同意书情况", "注意事项", "术前准备", "记录医师", "手术名称","参加者姓名及职称",
+                    "术前与患方谈话及签定手术知情同意书情况", "注意事项", "术前准备", "记录医师", "手术名称", "参加者姓名及职称",
                     "临床诊断"
             );
             String text = sourceMap.get("原始文本");