瀏覽代碼

入院记录、首次病程录、出院小结、术后首次病程及谈话记录、手术记录、术前讨论、术前小结、查房记录编辑功能模板对应

wangsy 9 月之前
父節點
當前提交
9f15203e88

+ 16 - 0
public/src/main/java/com/lantone/qc/pub/util/DateUtil.java

@@ -34,10 +34,16 @@ public class DateUtil {
      * 日期格式:yyyyMMddHHmmss
      */
     public static final String DATE_TIME_FORMAT_NO_SPLIT = "yyyyMMddHHmmss";
+    /**
+     * 日期格式:yyyy-MM-dd HH:mm
+     */
+    public static final String DATE_TIME_FORMAT_NO_SS = "yyyy-MM-dd HH:mm";
+
     /**
      * 日期格式:yyyy-MM-dd HH:mm:ss
      */
     public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
+
     /**
      * 日期格式:yyyy/MM/dd HH:mm:ss
      */
@@ -155,6 +161,16 @@ public class DateUtil {
         return formatDate(new Date());
     }
 
+    /**
+     * 将日期转换成为字符(yyyy-MM-dd HH:mm)
+     *
+     * @param date
+     * @return
+     */
+    public static String formatDateTimeNOSS(Date date) {
+        return format(date, DATE_TIME_FORMAT_NO_SS);
+    }
+
     /**
      * 将日期转换成为字符(yyyy-MM-dd HH:mm:ss)
      *

+ 128 - 12
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfBeHospitalizedDocTrans.java

@@ -15,11 +15,13 @@ import com.lantone.qc.pub.model.label.PresentLabel;
 import com.lantone.qc.pub.model.label.VitalLabel;
 import com.lantone.qc.pub.model.label.VitalLabelSpecial;
 import com.lantone.qc.pub.model.vo.MedrecVo;
+import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.shaoyf.util.ShaoyfOrdinaryAssistant;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -41,19 +43,39 @@ public class ShaoyfBeHospitalizedDocTrans extends ModelDocTrans {
         Map<String, Object> contentMap = ((List<Map>) medrecVo.getContent().get("content")).get(0);
         String content = contentMap.get("xmlText").toString();
 
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
-        OrdinaryAssistant.removeBlank(structureMap);
-        //如果有入院时间,优先使用
-        if (StringUtils.isEmpty(structureMap.get("入院时间")) && StringUtils.isNotEmpty(structureMap.get("入病房时间"))) {
-            structureMap.put("入院时间", structureMap.get("入病房时间"));
-        }
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "356");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"birthday","出生日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","记录日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"revisedTime","修正日期");
+            } catch (Exception e) {
+
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrastParseds);
+        } else {
+             sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
+            OrdinaryAssistant.removeBlank(structureMap);
+            //如果有入院时间,优先使用
+            if (StringUtils.isEmpty(structureMap.get("入院时间")) && StringUtils.isNotEmpty(structureMap.get("入病房时间"))) {
+                structureMap.put("入院时间", structureMap.get("入病房时间"));
+            }
 
-        structureMap.put("签名", structureMap.get("医师签名"));
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "签名");
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "审核人");
+            structureMap.put("签名", structureMap.get("医师签名"));
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "签名");
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "审核人");
+        }
 
         BeHospitalizedDoc beHospitalizedDoc = beHospitalizedDocGen(structureMap); // 不走共用
         beHospitalizedDoc.setPageData((Map) structureMap);
@@ -116,6 +138,100 @@ public class ShaoyfBeHospitalizedDocTrans extends ModelDocTrans {
             "复诊科室=科别"
     );
 
+    private List<String> keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "sex=性别",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=科别",
+            "recTitle=标题",
+            "marriage=婚姻",
+            "jobType=职业",
+            "nation=民族",
+            "phone=电话",
+            "workplace=工作单位",
+            "registerAddress=联系地址",
+            "bornAddress=出生地",
+            "expectDate=预产期",
+            "lastMenstrual=末次月经",
+            "pregnantNum=孕/产次",
+            "historyTeller=病史陈述者",
+            "chief=主诉",
+            "present=现病史",
+            "pastHistory=既往史(过去史)",
+            "personalHistory=个人史",
+            "maritalHistory=婚育史(婚姻史)",
+            "menstrualHistory=月经史",
+            "familyHistory=家族史",
+            "feedingHistory=喂养史",
+            "operationHistory=手术外伤史",
+            "bloodHistory=输血史",
+            "infectionHistory=传染病史",
+            "specialVital=专科体格检查",
+            "assistantExam=辅助检查",
+            "lisExam=实验室检查",
+            "pacsExam=影像学检查",
+            "tentativeDiagnosis=初步诊断",
+            "supplyDiagnosis=补充诊断",
+            "revisedDiagnosis=修正诊断",
+            "auditDoctor=审核人",
+            "temperature=体温",
+            "pulse=脉搏",
+            "breathe=呼吸",
+            "bloodPressure=血压",
+            "pain=疼痛",
+            "weight=体重",
+            "height=身高",
+            "bmi=BMI",
+            "fever=发热",
+            "coughSymptom=咳嗽等呼吸道症状",
+            "healthStatus=一般健康状态",
+            "internalHistory=内科疾病史",
+            "poisoningHistory=药物食物中毒史",
+            "chronicMedication=长期用药",
+            "vaccinationHistory=预防接种史",
+            "habitHistory=个人习惯史",
+            "vitalSigns=生命体征",
+            "generalCondition=一般情况",
+            "skin=皮肤",
+            "lymphNodes=浅表淋巴结",
+            "head=头部",
+            "eyes=眼",
+            "pupil=瞳孔",
+            "ear=耳",
+            "nose=鼻",
+            "oralCavity=口腔",
+            "neck=颈部",
+            "thyroid=甲状腺检查",
+            "chestInspection=胸部视诊",
+            "chestPalpation=胸部触诊",
+            "chestPercussion=胸部叩诊",
+            "chestAuscultation=胸部听诊",
+            "breast=乳房",
+            "cardiacInspection=心脏视诊",
+            "cardiacPalpation=心脏触诊",
+            "cardiacPercussion=心脏叩诊",
+            "cardiacAuscultation=心脏听诊",
+            "peripheralVessels=周围血管",
+            "abdominalInspection=腹部视诊",
+            "abdominalPalpation=腹部触诊",
+            "liverPalpation=肝触诊",
+            "gallbladderPalpation=胆囊触诊",
+            "spleenPalpation=脾触诊",
+            "kidneyPalpation=肾触诊",
+            "abdominalPercussion=腹部叩诊",
+            "abdominalAuscultation=腹部听诊",
+            "spine=脊柱",
+            "theFourLimbs=四肢",
+            "cranialNerve=颅神经",
+            "feeling=感觉",
+            "sports=运动",
+            "pathologicalSign=病理征",
+            "meningealSign=脑膜刺激征",
+            "nerveOthers=颅神经其它",
+            "revisedDoctor=修正医生签名"
+    );
 
     /**
      * 入院记录

+ 56 - 8
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfFirstCourseRecordDocTrans.java

@@ -5,11 +5,14 @@ import com.lantone.qc.dbanaly.facade.shaoyf.ShaoyfXmlUtil;
 import com.lantone.qc.pub.jdbc.MysqlJdbc;
 import com.lantone.qc.pub.model.doc.FirstCourseRecordDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.pub.util.PropertiesUtil;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.ModelDocGenerate;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
+import com.lantone.qc.trans.shaoyf.util.ShaoyfOrdinaryAssistant;
 
 import java.util.*;
 
@@ -27,11 +30,30 @@ public class ShaoyfFirstCourseRecordDocTrans extends ModelDocTrans {
         Map<String, Object> contentMap = ((List<Map>) medrecVo.getContent().get("content")).get(0);
         String content = contentMap.get("xmlText").toString();
 
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "294");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期1");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+            } catch (Exception e) {
+
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrastParseds);
+        } else {
+            sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
+        }
         if (sourceMap.get("主诊医生") != null) {
             sourceMap.put("主诊医生", sourceMap.get("主诊医生").replace("&amp;amp;nbsp;", ""));
+
         }
 //        PropertiesUtil propertiesUtil = new PropertiesUtil("kernel.properties");
 //        MysqlJdbc nlpJdbc = new MysqlJdbc(propertiesUtil.getProperty("mysql.redis.user"), propertiesUtil.getProperty("mysql.redis.password"), propertiesUtil.getProperty("mysql.redis.url"));
@@ -41,8 +63,7 @@ public class ShaoyfFirstCourseRecordDocTrans extends ModelDocTrans {
 //        List<Map<String, Object>> list = new ArrayList<>();
 //        list.add(map);
 //        nlpJdbc.insert(list, "ft_temp", new String[]{"ft"});
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
-        structureMap.put("记录时间",structureMap.get("病历日期"));
+        structureMap.put("记录时间", structureMap.get("病历日期"));
         // 病例特点=主诉+现病史-发病情况+专科检查+实验室检查+影像学检查+辅助检查结果+呼吸+脉搏+体温+血压
         //        structureMap.put("病例特点", MapUtil.getSelectString(structureMap, Arrays.asList(
         //                "主诉",
@@ -75,8 +96,8 @@ public class ShaoyfFirstCourseRecordDocTrans extends ModelDocTrans {
         //        );
         // 诊疗计划=检查计划+治疗计划和措施
         structureMap.put("诊疗计划-crf", MapUtil.getSelectString(structureMap, Arrays.asList(
-                "检查计划",
-                "治疗计划和措施"
+                        "检查计划",
+                        "治疗计划和措施"
                 ))
         );
 
@@ -89,8 +110,35 @@ public class ShaoyfFirstCourseRecordDocTrans extends ModelDocTrans {
         return firstCourseRecordDoc;
     }
 
+    private List<String> keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "sex=性别",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=临床科室",
+            "recTitle=标题",
+            "chief=主诉",
+            "present=现病史",
+            "pastHistory=既往史",
+            "vital=查体",
+            "assistantExam=辅检",
+            "caseCharacter=病例特点",
+            "tentativeDiagnosis=初步诊断",
+            "supplyDiagnosis=诊断依据",
+            "revisedDiagnosis=鉴别诊断",
+            "treatPlan=治疗计划",
+            "recDoctor=医师签名",
+            "auditDoctor=审核人",
+            "chiefDoctor=主诊医生",
+            "fever=发热",
+            "coughSymptom=咳嗽等呼吸道症状",
+            "entryMedication=入院时在使用的治疗性药物",
+            "addiMedication=成瘾药物"
+    );
+
     private List<String> keyContrasts = Lists.newArrayList(
-                        "本人姓名=姓名",
+            "本人姓名=姓名",
             "现病史- 发病情况=发病经过",
             "入院原因=主诉",
             "医生=医师签名",

+ 67 - 9
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfLeaveHospitalDocTrans.java

@@ -4,10 +4,12 @@ import com.google.common.collect.Lists;
 import com.lantone.qc.dbanaly.facade.shaoyf.ShaoyfXmlUtil;
 import com.lantone.qc.pub.model.doc.LeaveHospitalDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
+import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.shaoyf.util.ShaoyfOrdinaryAssistant;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -23,14 +25,33 @@ public class ShaoyfLeaveHospitalDocTrans extends ModelDocTrans {
         Map<String, Object> contentMap = ((List<Map>) medrecVo.getContent().get("content")).get(0);
         String content = contentMap.get("xmlText").toString();
 
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
-        structureMap.put("入院情况", structureMap.get("入院病情"));
-        structureMap.put("出院时间", structureMap.get("出院日期"));
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "医师签名");
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "审核人");
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "312");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院时间");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"leaveHospitalDate","出院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","签名时间");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"patientSignDate","患者或家属签字时间");
+            } catch (Exception e) {
+
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrastParseds);
+        } else {
+            sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
+            structureMap.put("入院情况", structureMap.get("入院病情"));
+            structureMap.put("出院时间", structureMap.get("出院日期"));
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "医师签名");
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "审核人");
+        }
         LeaveHospitalDoc leaveHospitalDoc = new LeaveHospitalDoc();
         leaveHospitalDoc.setStructureMap(structureMap);
         leaveHospitalDoc.setPageData((Map) structureMap);
@@ -38,6 +59,44 @@ public class ShaoyfLeaveHospitalDocTrans extends ModelDocTrans {
         return leaveHospitalDoc;
     }
 
+    private List<String> keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "sex=性别",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=临床科室",
+            "recTitle=标题",
+            "tentativeDiagnosis=入院诊断",
+            "leaveDiagnosis=出院诊断",
+            "behospitalDayNum=住院天数",
+            "behospitalReason=入院原因",
+            "behospitalSituation=入院病情",
+            "treatmentProcess=诊治经过",
+            "leaveHospitalSituation=出院情况",
+            "leaveHospitalDoctoradvice=出院医嘱",
+            "recDoctor=医师签名",
+            "auditDoctor=审核人",
+            "chiefDoctor=主诊医生",
+            "leaveDiagnosisCh=出院诊断中医",
+            "leaveHospitalCondition=出院状态",
+            "leaveHospitalDisposition=出院后去处",
+            "leaveHospitalMedication=出院医嘱",
+            "foodMedicationAdvice=食物药物间相互作用指导",
+            "foodAdvice=饮食指导",
+            "foodAdviceSpecial=特殊饮食指导",
+            "implantAdvice=植入物相关指导",
+            "otherAdvice=其它指导",
+            "followDateRecord=随访计划",
+            "followPlace=复诊地点",
+            "followPurpose=复诊目的",
+            "followDept=复诊科室",
+            "followScore=NRS营养风险评分",
+            "followEmergency=其他情况",
+            "patientSign=患者或家属签名",
+            "agreeSign=知情同意签名"
+    );
+
     private List<String> keyContrasts = Lists.newArrayList(
             "本人姓名=姓名",
             "入院日期=入院时间",
@@ -50,5 +109,4 @@ public class ShaoyfLeaveHospitalDocTrans extends ModelDocTrans {
             "病历日期=签名时间",
             "体温(耳)=体温耳"
     );
-
 }

+ 163 - 15
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfOperationDocTrans.java

@@ -11,6 +11,7 @@ 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;
 import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.pub.util.StringUtil;
@@ -18,6 +19,7 @@ import com.lantone.qc.trans.ModelDocTrans;
 import com.lantone.qc.trans.comsis.OrdinaryAssistant;
 import com.lantone.qc.trans.shaoyf.util.ShaoyfOrdinaryAssistant;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -94,17 +96,65 @@ public class ShaoyfOperationDocTrans extends ModelDocTrans {
 
     private OperationDiscussionDoc getOperationDiscussionDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationDiscussion_keyContrasts);
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "330");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期1");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"operationDate","手术日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"startTime","开始时间");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"endTime","结束时间");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+            } catch (Exception e) {
 
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationDiscussion_keyContrastParseds);
+        } else {
+            sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationDiscussion_keyContrasts);
+        }
         OperationDiscussionDoc operationDiscussionDoc = new OperationDiscussionDoc();
         operationDiscussionDoc.setStructureMap(structureMap);
         operationDiscussionDoc.setPageData((Map) structureMap);
 
         return operationDiscussionDoc;
     }
+    // 术后首次病程
+    private List<String> operationDiscussion_keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "sex=性别",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=科别",
+            "recTitle=标题",
+            "narcosisType=麻醉方式",
+            "narcosisDoctor=麻醉医师",
+            "preoperationDiagnosis=术前诊断",
+            "postoperativeDiagnosis=术中诊断",
+            "operationMan=手术人员",
+            "operationName=手术名称",
+            "operationProcess=手术经过",
+            "postoperativeSituation=目前情况",
+            "postoperativeTreatment=治疗计划和措施",
+            "postoperativeNotice=术后注意事项",
+            "postoperativeComplication=术后可能出现的并发症及预防措施",
+            "operationSpecimen=手术切除标本",
+            "operationBleed=术中出血量",
+            "operationBloodTransfusion=术中输血量",
+            "operationComplication=术中并发症",
+            "recDoctor=医生",
+            "auditDoctor=审核人",
+            "chiefDoctor=主刀医生",
+            "patientSign=患者或家属签名"
+    );
 
     private List<String> operationDiscussion_keyContrasts = Lists.newArrayList(
             "本人姓名=姓名",
@@ -139,20 +189,76 @@ public class ShaoyfOperationDocTrans extends ModelDocTrans {
 
     private OperationRecordDoc getOperationRecordDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationRecord_keyContrasts);
-        OrdinaryAssistant.removeBlank(structureMap);
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "289");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期1");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"operationDate","手术日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+            } catch (Exception e) {
+
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationRecord_keyContrastParseds);
+        } else {
+            sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, operationRecord_keyContrasts);
+            OrdinaryAssistant.removeBlank(structureMap);
 //        structureMap.put("主刀医师", structureMap.get("手术医师"));
-        MapUtil.keyAssig(structureMap,"主刀医师","手术医师");
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "主刀医师签名");
+            MapUtil.keyAssig(structureMap, "主刀医师", "手术医师");
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "主刀医师签名");
+        }
         OperationRecordDoc operationRecordDoc = new OperationRecordDoc();
         operationRecordDoc.setStructureMap(structureMap);
         operationRecordDoc.setPageData((Map) structureMap);
         return operationRecordDoc;
     }
 
+    // 手术记录
+    private List<String> operationRecord_keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "sex=性别",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=临床科室",
+            "recTitle=标题",
+            "startTime=开始时间",
+            "endTime=结束时间",
+            "preoperationDiagnosis=术前诊断",
+            "operationName=手术名称",
+            "postoperativeDiagnosis=术后诊断",
+            "operationSurgeon=手术医师",
+            "firstHelping=一助",
+            "secondHelping=助手II",
+            "narcosisDoctor=麻醉医师",
+            "narcosisType=麻醉方式",
+            "cutType=切口类别",
+            "pathologicalDiagnosis=病理(冰冻)诊断",
+            "isImplants=术中植入物",
+            "implantsName=植入物名称",
+            "bloodLoss=失血",
+            "intraoperativeView=术中发现",
+            "postoperativeNotice=术后注意事项",
+            "operationProcess=手术经过",
+            "recDoctor=主刀医师签名",
+            "auditDoctor=审核人",
+            "operationTime=手术时数",
+            "specimen=手术标本",
+            "transfusion=输血情况",
+            "redBlood=红细胞",
+            "platelet=血小板",
+            "Plasma=血浆",
+            "wholeBlood=全血"
+    );
+
     // 手术记录
     private List<String> operationRecord_keyContrasts = Lists.newArrayList(
             "结束时间=手术结束时间",
@@ -190,17 +296,59 @@ public class ShaoyfOperationDocTrans extends ModelDocTrans {
 
     private PreoperativeDiscussionDoc getPreoperativeDiscussionDoc(Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, preoperativeDiscussion_keyContrasts);
 
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "286");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期1");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"discussTime","讨论时间");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"behospitalDate","入院日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+            } catch (Exception e) {
+
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, preoperativeDiscussion_keyContrastParseds);
+        } else {
+            sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, preoperativeDiscussion_keyContrasts);
+        }
         PreoperativeDiscussionDoc preoperativeDiscussionDoc = new PreoperativeDiscussionDoc();
         preoperativeDiscussionDoc.setStructureMap(structureMap);
         preoperativeDiscussionDoc.setPageData((Map) structureMap);
         return preoperativeDiscussionDoc;
     }
 
+    private List<String> preoperativeDiscussion_keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=科别",
+            "sex=性别",
+            "recTitle=标题",
+            "discussType=讨论方式",
+            "participant=参加人员",
+            "briefNote=简要病情",
+            "preoperationDiagnosis=术前诊断",
+            "operationIndication=手术指征",
+            "replacePlan=可替代的方案",
+            "operationName=拟行术式",
+            "anesthesiaType=麻醉方式",
+            "preoperationPrepare=术前准备内容",
+            "intraoperativeNotice=术中注意事项",
+            "postoperativeNotice=术后注意事项",
+            "recDoctor=医生",
+            "auditDoctor=审核人",
+            "potentialIssues=可能意外和防范措施"
+    );
+
     private List<String> preoperativeDiscussion_keyContrasts = Lists.newArrayList(
             "参加人员及职称=参加人员",
             "主刀医师=主刀医师签名",

+ 72 - 39
trans/src/main/java/com/lantone/qc/trans/shaoyf/ShaoyfThreeLevelWardDocTrans.java

@@ -12,6 +12,7 @@ import com.lantone.qc.pub.model.doc.ward.AttendingDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.DirectorDoctorWardDoc;
 import com.lantone.qc.pub.model.doc.ward.GeneralDoctorWardDoc;
 import com.lantone.qc.pub.model.vo.MedrecVo;
+import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.MapUtil;
 import com.lantone.qc.pub.util.SpringContextUtil;
 import com.lantone.qc.pub.util.StringUtil;
@@ -21,10 +22,7 @@ import com.lantone.qc.trans.shaoyf.util.ShaoyfOrdinaryAssistant;
 import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description: 查房记录文档生成
@@ -55,47 +53,64 @@ public class ShaoyfThreeLevelWardDocTrans extends ModelDocTrans {
 
     private void classifyThreeLevelWardDoc(ThreeLevelWardDoc result, Map<String, Object> contentMap) {
         String content = contentMap.get("xmlText").toString();
-        Map<String, String> sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
-        sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
-        String recTitle = contentMap.get("recTitle").toString();
-        if (recTitles.contains(recTitle)) {
-            sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
-        }
-        Map<String, String> structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
+        Map<String, String> sourceMap = new HashMap<>();
+        Map<String, String> structureMap = new HashMap<>();
+        if (contentMap.get("isParsed") != null && "1".equals(contentMap.get("isParsed").toString())) {
+            sourceMap = (Map) FastJsonUtils.getJsonToMap(content);
+            sourceMap.remove("hospitalId");
+            sourceMap.put("mode_id", "322");
+            try {
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recordDate","病历日期1");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"wardDate","查房日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"recDate","病历日期");
+                ShaoyfOrdinaryAssistant.replaceData(sourceMap,"auditDate","审核日期");
+            } catch (Exception e) {
 
-        if (StringUtils.isEmpty(structureMap.get("查房日期"))) {
-            if (!StringUtils.isEmpty(structureMap.get("病历日期"))) {
-                structureMap.put("查房日期", structureMap.get("病历日期"));
-            } else {
-                return;
             }
-        }
-        //不能简单的标准转化,如果有查房标题,优先使用
-        if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("查房备注"))) {
-            structureMap.put("查房标题", structureMap.get("查房备注"));
-        }
-        if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("查房类别"))) {
-            structureMap.put("查房标题", structureMap.get("查房类别"));
-        }
-        if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("上级查房医生职称"))) {
-            structureMap.put("查房标题", structureMap.get("上级查房医生职称"));
-        }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrastParseds);
+        } else {
+            sourceMap = ShaoyfXmlUtil.getXmlToMap(content);
+            sourceMap.put("mode_id=" + contentMap.get("modeId").toString(), "");
+            String recTitle = contentMap.get("recTitle").toString();
+            if (recTitles.contains(recTitle)) {
+                sourceMap.put("rec_title=" + contentMap.get("recTitle").toString(), "");
+            }
+            structureMap = OrdinaryAssistant.mapKeyContrast(sourceMap, keyContrasts);
 
-        structureMap.put("查房标题供页面显示", structureMap.get("查房标题"));
-        String title = structureMap.get("查房标题");
-        if (StringUtil.isNotBlank(title)) {
-            if (title.contains("Attending") || title.contains("attending")) {
-                title = title.replace("Attending", "主任医师").replace("attending", "主任医师");
+            if (StringUtils.isEmpty(structureMap.get("查房日期"))) {
+                if (!StringUtils.isEmpty(structureMap.get("病历日期"))) {
+                    structureMap.put("查房日期", structureMap.get("病历日期"));
+                } else {
+                    return;
+                }
             }
-            if (title.contains("Fellow") || title.contains("fellow")) {
-                title = title.replace("Fellow", "主治医师").replace("fellow", "主治医师");
+            //不能简单的标准转化,如果有查房标题,优先使用
+            if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("查房备注"))) {
+                structureMap.put("查房标题", structureMap.get("查房备注"));
+            }
+            if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("查房类别"))) {
+                structureMap.put("查房标题", structureMap.get("查房类别"));
+            }
+            if (StringUtils.isEmpty(structureMap.get("查房标题")) && StringUtils.isNotEmpty(structureMap.get("上级查房医生职称"))) {
+                structureMap.put("查房标题", structureMap.get("上级查房医生职称"));
             }
-            structureMap.put("查房标题", title);
-        }
 
-        MapUtil.keyAssig(structureMap, "记录时间", "病历日期");
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "审核人");
-        ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "记录医师");
+            structureMap.put("查房标题供页面显示", structureMap.get("查房标题"));
+            String title = structureMap.get("查房标题");
+            if (StringUtil.isNotBlank(title)) {
+                if (title.contains("Attending") || title.contains("attending")) {
+                    title = title.replace("Attending", "主任医师").replace("attending", "主任医师");
+                }
+                if (title.contains("Fellow") || title.contains("fellow")) {
+                    title = title.replace("Fellow", "主治医师").replace("fellow", "主治医师");
+                }
+                structureMap.put("查房标题", title);
+            }
+
+            MapUtil.keyAssig(structureMap, "记录时间", "病历日期");
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "审核人");
+            ShaoyfOrdinaryAssistant.techTitleDocRemove(structureMap, "记录医师");
+        }
 
         //总的查房记录 汇总
         ThreeLevelWardDoc allDoctorWradDoc = new ThreeLevelWardDoc();
@@ -267,4 +282,22 @@ public class ShaoyfThreeLevelWardDocTrans extends ModelDocTrans {
         return timeDifference;
     }
 
+    private List<String> keyContrastParseds = Lists.newArrayList(
+            "behospitalCode=病历号",
+            "name=姓名",
+            "age=年龄",
+            "bedNo=床号",
+            "deptName=科别",
+            "sex=性别",
+            "wardDoctor=查房医师",
+            "wardTitle=查房标题供页面显示",
+            "wardContent=病情记录",
+            "wardS=主诉",
+            "wardO=体检",
+            "wardA=病情记录",
+            "wardP=治疗计划和措施",
+            "recDoctor=记录医师",
+            "auditDoctor=审核人"
+    );
+
 }

+ 15 - 0
trans/src/main/java/com/lantone/qc/trans/shaoyf/util/ShaoyfOrdinaryAssistant.java

@@ -1,8 +1,10 @@
 package com.lantone.qc.trans.shaoyf.util;
 
+import com.lantone.qc.pub.util.DateUtil;
 import com.lantone.qc.pub.util.StringUtil;
 import org.apache.commons.collections.MapUtils;
 
+import java.util.Date;
 import java.util.Map;
 
 /**
@@ -34,4 +36,17 @@ public class ShaoyfOrdinaryAssistant {
         }
     }
 
+    /**
+     * 替换beforeData为afterData并删除beforeData
+     * @param sourceMap
+     */
+    public static void replaceData(Map<String, String> sourceMap, String beforeData,String afterData) {
+        if (sourceMap.get(beforeData) != null) {
+            Object recordDateObject = sourceMap.get(beforeData);
+            long recordDateLong = (Long) recordDateObject;
+            sourceMap.put(afterData, DateUtil.formatDateTimeNOSS(new Date(recordDateLong)));
+            sourceMap.remove(beforeData);
+        }
+    }
+
 }