瀏覽代碼

宁海第一人民医院代码入合并分支

wangsy 3 年之前
父節點
當前提交
bf44da692c
共有 22 個文件被更改,包括 643 次插入75 次删除
  1. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0439.java
  2. 81 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/firstpagerecord/FIRP0250.java
  3. 3 5
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR0125.java
  4. 4 6
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR0126.java
  5. 508 0
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR02985.java
  6. 1 1
      kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR03090.java
  7. 2 11
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiOperationDocTrans.java
  8. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiStagesSummaryDocTrans.java
  9. 27 35
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java
  10. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicBloodEffectHtmlAnalysis.java
  11. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiClinicalBloodHtmlAnalysis.java
  12. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationHtmlAnalysis.java
  13. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiConsultationRecordHtmlAnalysis.java
  14. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCrisisValueReportHtmlAnalysis.java
  15. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiCriticallyIllNoticeHtmlAnalysis.java
  16. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathCaseDiscussHtmlAnalysis.java
  17. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDeathRecordHtmlAnalysis.java
  18. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDifficultCaseDiscussHtmlAnalysis.java
  19. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiDutyShiftSystemHtmlAnalysis.java
  20. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiHtmlAnalysis.java
  21. 1 1
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiRescueHtmlAnalysis.java
  22. 2 2
      trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiTransferOutHtmlAnalysis.java

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/behospitalized/BEH0439.java

@@ -33,7 +33,7 @@ public class BEH0439 extends QCCatalogue {
             if (birthDate_bh != null && birthDate_fpr != null) {
                 if (!CatalogueUtil.isEmpty(birthDate_bh) && !CatalogueUtil.isEmpty(birthDate_fpr)) {
                     if(!DateUtils.isSameInstant(StringUtil.parseDateTime(birthDate_bh, dateFormats)
-                            ,StringUtil.parseDateTime(birthDate_fpr, dateFormats)))
+                            , StringUtil.parseDateTime(birthDate_fpr, dateFormats)))
                     {
                         status.set("-1");
                     }

+ 81 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/firstpagerecord/FIRP0250.java

@@ -0,0 +1,81 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.firstpagerecord;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.pub.Content;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.RescueDoc;
+import com.lantone.qc.pub.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @ClassName : FIRP0250
+ * @Description : 抢救成功次数填写错误
+ * @Author : 楼辉荣
+ * @Date: 2020-03-06 17:28ss
+ */
+@Component
+public class FIRP0250 extends QCCatalogue {
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getRescueDocs().size() > 0) {
+            List<RescueDoc> rescueDocs = inputInfo.getRescueDocs();
+            int rescueNum = getRescueNum(rescueDocs);/* 抢救记录中抢救成功次数 */
+            boolean match = false;
+
+            Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+            String successfulRescueTimes = firstpageStructureMap.get("病人抢救成功次数");
+            int successfulRescueTimesTZ = 0;
+            if (StringUtil.isNotBlank(successfulRescueTimes) && CatalogueUtil.numbersOnly(successfulRescueTimes)) {
+                successfulRescueTimesTZ = Integer.parseInt(successfulRescueTimes);
+            }
+            if (rescueNum == successfulRescueTimesTZ) {
+                match = true;
+            }
+            String saveNum = firstpageStructureMap.get("病人抢救次数");
+            if (successfulRescueTimes == saveNum) {
+                match = true;
+            }
+            String name = firstpageStructureMap.get(Content.rescue_condition);
+            if (StringUtil.isNotBlank(name)) {
+                String[] split = name.split("\\s+");
+                Pattern compile = Pattern.compile("(?<=成功).*(?=次)");
+                Matcher matcher = compile.matcher(split[0]);
+                while (matcher.find()) {
+                    try {
+                        String number = matcher.group(0);
+                        int num = Integer.parseInt(number);
+                        if (num == rescueNum) {
+                            match = true;
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            if (!match) {
+                status.set("-1");
+            }
+        }
+    }
+
+    private int getRescueNum(List<RescueDoc> rescueDocs) {
+        int i = 0;
+        for (RescueDoc re : rescueDocs) {
+            Map<String, String> structureMap = re.getStructureMap();
+            // 跟医学部确认,从抢救措施中读取数据
+            String qjgc = structureMap.get("抢救内容");
+            if (StringUtil.isNotBlank(qjgc) && !qjgc.contains("死亡")) {
+                i++;
+            }
+        }
+        return i;
+    }
+}

+ 3 - 5
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR0125.java

@@ -89,15 +89,13 @@ public class THR0125 extends QCCatalogue {
             }
 
             //===========三级医师相当于主治医生==========
-            List<ThreeLevelWardDoc>  allDoctorWradDocs =  threeLevelWardDoc.getAllDoctorWradDocs();
-            if(allDoctorWradDocs.size()>0)
-            {
+            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
+            if (allDoctorWradDocs.size() > 0) {
 
                 for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
                     Map<String, String> structureMap = threeLevelWard.getStructureMap();
                     String makeTitle = structureMap.get("查房标题");
-                    if(StringUtil.isNotBlank(makeTitle)&&makeTitle.contains("三级"))
-                    {
+                    if (StringUtil.isNotBlank(makeTitle) && makeTitle.contains("三级")) {
                         String recordDateStr = structureMap.get("查房日期");
                         if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime),
                                 StringUtil.parseDateTime(recordDateStr), 72 * 60L)) {

+ 4 - 6
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR0126.java

@@ -107,15 +107,13 @@ public class THR0126 extends QCCatalogue {
                 return;
             }
             //===========三级医师相当于主治医生==========
-            List<ThreeLevelWardDoc>  allDoctorWradDocs =  threeLevelWardDoc.getAllDoctorWradDocs();
-            if(allDoctorWradDocs.size()>0)
-            {
+            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDoc.getAllDoctorWradDocs();
+            if (allDoctorWradDocs.size() > 0) {
 
                 for (ThreeLevelWardDoc threeLevelWard : allDoctorWradDocs) {
                     Map<String, String> structureMap = threeLevelWard.getStructureMap();
                     String makeTitle = structureMap.get("查房标题");
-                    if(StringUtil.isNotBlank(makeTitle)&&makeTitle.contains("三级"))
-                    {
+                    if (StringUtil.isNotBlank(makeTitle) && makeTitle.contains("三级")) {
                         String recordDateStr = structureMap.get("查房日期");
                         if (!CatalogueUtil.compareTime(StringUtil.parseDateTime(admisTime),
                                 StringUtil.parseDateTime(recordDateStr), 48 * 60L)) {
@@ -164,7 +162,7 @@ public class THR0126 extends QCCatalogue {
         }
     }
 
-//    /**
+    //    /**
 //     * 判断查房记录是否含有主治医师查房
 //     *
 //     * @param operatorName     主刀医师

+ 508 - 0
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR02985.java

@@ -0,0 +1,508 @@
+package com.lantone.qc.kernel.catalogue.hospital.ninghaiyiyi.threelevelward;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+import com.lantone.qc.kernel.util.SimilarityUtil;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import com.lantone.qc.pub.model.doc.*;
+import com.lantone.qc.pub.model.doc.consultation.ConsultationDoc;
+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.OperationRecordDoc;
+import com.lantone.qc.pub.model.entity.Drug;
+import com.lantone.qc.pub.util.DateUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * @ClassName : THR02985
+ * @Description : 医嘱有抗生素使用病程无记录
+ * 药品类型(0.普药 1.抗生素 2.激素)
+ * @Author : 胡敬
+ * @Date: 2020-06-23 10:04
+ */
+@Component
+public class THR02985 extends QCCatalogue {
+    @Autowired
+    SimilarityUtil similarityUtil;
+
+    public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+        status.set("0");
+        List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
+        List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
+        FirstCourseRecordDoc firstCourseRecordDoc = inputInfo.getFirstCourseRecordDoc();
+        BeHospitalizedDoc beHospitalizedDoc = inputInfo.getBeHospitalizedDoc();
+        List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
+        LeaveHospitalDoc leaveHospitalDoc = inputInfo.getLeaveHospitalDoc();
+        List<ConsultationDoc> consultationDocs = inputInfo.getConsultationDocs();
+        if (doctorAdviceDocs.size() == 0) {
+            return;
+        }
+
+        List<Map<String, String>> docAdvStruct = doctorAdviceDocs
+                .stream()
+                .filter(Objects::nonNull)
+                .map(DoctorAdviceDoc::getStructureMap)
+                .filter(x -> StringUtil.isNotBlank(x.get("药品类型")) && x.get("药品类型").contains("抗生素"))
+//                .filter(x -> StringUtil.isNotBlank(x.get("医嘱状态判别")) && !x.get("医嘱状态判别").contains("已停止"))
+                .collect(Collectors.toList());
+
+        docAdvStruct.removeIf(x -> StringUtil.isNotBlank(x.get("给药方式")) && !filterKey.contains(x.get("给药方式")));
+        //记录同一天内是否开过多次同一抗生素
+        Map<String, Map<Date, Integer>> antibioticDateTimes = Maps.newHashMap();
+        //记录同一抗生素同一天内是否开过多次,用于医嘱中需要处理的抗生素过滤(一天内同一抗生素开过多次的抗生素直接过滤)
+        getAntibioticTimes(docAdvStruct, antibioticDateTimes);
+        Map<Date, String> doctorAdviceDrugMap = Maps.newLinkedHashMap();
+        Date startDate = null;
+        for (Map<String, String> adviceDoc : docAdvStruct) {
+            String drugName = adviceDoc.get("医嘱项目名称");
+            String startDateStr = adviceDoc.get("医嘱开始时间");
+            if (StringUtil.isNotBlank(drugName)) {
+                startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
+//                startDate = StringUtil.parseDateTime(startDateStr);
+                if (antibioticDateTimes.get(drugName).get(startDate) > 0) {
+                    continue;   //一天内同一抗生素开过多次的抗生素直接过滤
+                }
+                drugName = removeBracket(drugName).replaceAll("[^\u4e00-\u9fa5]", "");
+                String drugStandardWord = similarityUtil.getDrugStandardWord(drugName);
+                if (StringUtil.isNotBlank(drugStandardWord)) {
+                    drugName = drugStandardWord;
+                }
+                if (Arrays.asList(KSS).contains(drugName)) {
+                    doctorAdviceDrugMap.put(startDate, adviceDoc.get("医嘱项目名称"));
+                }
+            }
+        }
+
+        Map<String, Date> info = Maps.newLinkedHashMap();
+        Map<String, List<Drug>> infoModel = Maps.newLinkedHashMap();
+        String dateStr = null;
+        //入院记录中获取信息
+        /*if (beHospitalizedDoc != null) {
+            Map<String, String> structureMap = beHospitalizedDoc.getStructureMap();
+            getInfo(info, structureMap, "入院记录", "入院日期", "治疗计划");
+        }*/
+        //从首程治疗计划中获取信息
+        if (firstCourseRecordDoc != null) {
+            getInfo(info, firstCourseRecordDoc.getStructureMap(), "首次病程录", "病历日期", "诊疗计划");
+            if (firstCourseRecordDoc.getDrugLabel() != null) {
+                List<Drug> drugs = firstCourseRecordDoc.getDrugLabel().getDrugs();
+                dateStr = firstCourseRecordDoc.getStructureMap().get("病历日期");
+                if (StringUtil.isNotBlank(dateStr)) {
+                    getInfo(infoModel, dateStr, drugs);
+                }
+            }
+        }
+
+        //从查房记录中获取信息
+        if (threeLevelWardDocs.size() > 0) {
+            List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
+            List<ThreeLevelWardDoc> wardDocs = allDoctorWradDocs
+                    .stream()
+                    .filter(x -> StringUtil.isNotBlank(x.getStructureMap().get("查房日期")) && x.getThreeLevelWardLabel().size() > 0)
+                    .collect(Collectors.toList());
+            wardDocs.forEach(x -> getInfo(info, x.getStructureMap(), "查房记录", "查房日期", "病情记录", "治疗计划和措施"));
+            wardDocs.forEach(x -> getInfo(infoModel, x.getStructureMap().get("查房日期"), x.getThreeLevelWardLabel().get(x.getThreeLevelWardLabel().size() - 1).getDrugs()));
+        }
+        //从手术记录中获取信息
+        if (operationDocs.size() > 0) {
+            //手术记录
+            List<OperationRecordDoc> operationRecordDocs = operationDocs
+                    .stream()
+                    .map(OperationDoc::getOperationRecordDoc)
+                    .filter(Objects::nonNull)
+                    .filter(x -> x.getOperationRecordLabel() != null && StringUtil.isNotBlank(x.getStructureMap().get("手术时间")))
+                    .collect(Collectors.toList());
+            operationRecordDocs.forEach(x -> getInfo(info, x.getStructureMap(), "手术记录", "手术时间", "手术经过及处理"));
+            operationRecordDocs.forEach(x -> getInfo(infoModel, x.getStructureMap().get("手术时间"), x.getOperationRecordLabel().getDrugs()));
+            //术后首程
+            List<OperationDiscussionDoc> operationDiscussionDocs = operationDocs
+                    .stream()
+                    .map(OperationDoc::getOperationDiscussionDoc)
+                    .filter(Objects::nonNull)
+                    .filter(x -> x.getOperationDiscussionLabel() != null && StringUtil.isNotBlank(x.getStructureMap().get("病历日期")))
+                    .collect(Collectors.toList());
+            operationDiscussionDocs.forEach(x -> getInfo(info, x.getStructureMap(), "术后首程", "病历日期", "手术简要经过", "术后处理措施"));
+            operationDiscussionDocs.forEach(x -> getInfo(infoModel, x.getStructureMap().get("病历日期"), x.getOperationDiscussionLabel().getDrugs()));
+        }
+
+        //从会诊记录中获取信息
+        /*if (consultationDocs.size() > 0) {
+            List<ConsultationResultsDoc> consultationResultsDocs = consultationDocs
+                    .stream()
+                    .map(ConsultationDoc::getConsultationResultsDoc)
+                    .filter(Objects::nonNull)
+                    .filter(x -> x.getConsultationResultLabel() != null && StringUtil.isNotBlank(x.getStructureMap().get("会诊日期及时间")))
+                    .collect(Collectors.toList());
+            consultationResultsDocs.forEach(x -> getInfo(info, x.getStructureMap(), "会诊结果单", "会诊日期及时间", "会诊意见"));
+            consultationResultsDocs.forEach(x -> getInfo(infoModel, x.getStructureMap().get("会诊日期及时间"), x.getConsultationResultLabel().getDrugs()));
+        }*/
+
+        //从出院小结中获取信息
+        if (leaveHospitalDoc != null) {
+            if (inputInfo.getMedicalRecordInfoDoc() != null) {
+                Map<String, String> medicalRecordInfoStructureMap = inputInfo.getMedicalRecordInfoDoc().getStructureMap();
+                dateStr = medicalRecordInfoStructureMap.get("leaveHospitalDate");
+                //如果存在出院小结,出院日期为空,存储系统当前时间
+                if (StringUtil.isBlank(dateStr)) {
+                    dateStr = DateUtil.formatDateTime(new Date());
+                }
+            }
+            if (StringUtil.isNotBlank(dateStr)) {
+                if (leaveHospitalDoc.getLeaveHospitalLabel() != null) {
+                    List<Drug> drugs = leaveHospitalDoc.getLeaveHospitalLabel().getDrugs();
+                    getDischargeInfo(info, leaveHospitalDoc.getStructureMap(), "出院小结", dateStr, "诊治经过");
+                    getInfo(infoModel, dateStr, drugs);
+                }
+            }
+        }
+
+        StringBuffer sb = new StringBuffer();
+        Map<Object, Object> data = Maps.newHashMap();
+        Set<String> existDrug = Sets.newHashSet();
+        String infoStr = "";
+        for (Map.Entry<Date, String> doctorAdviceDrug : doctorAdviceDrugMap.entrySet()) {
+            Date doctorAdviceDate = doctorAdviceDrug.getKey();
+            String drugs = doctorAdviceDrug.getValue();
+            if (drugs.contains(" ")) {
+                drugs = drugs.split(" ")[0];
+            }
+//            drugs = removeBracket(drugs).replaceAll("[^\u4e00-\u9fa5]", "");
+            Set<String> splitDrugs = CatalogueUtil.getRegexWords(drugs, "[((\\[][^\\[\\]()()]+[\\]))]")
+                    .stream().filter(x -> !x.equals("合资") && !x.equals("进口") && !x.equals("国产")).collect(Collectors.toSet());
+            /**********************************************先文本匹配************************************************/
+            String missDrug = "";
+            for (Map.Entry<String, Date> map : info.entrySet()) {
+                missDrug = getMissDrug(map.getKey(), map.getValue(), doctorAdviceDate, splitDrugs, 2, missDrug, existDrug);
+                //当前抗生素药(drugs)在info中已找到,直接跳出当前循环
+                if (StringUtil.isBlank(missDrug)) {
+                    break;
+                }
+            }
+            if (StringUtil.isBlank(missDrug)) {
+                continue;
+            }
+            /**********************************************文本匹配没有找到药,再走模型************************************************/
+            boolean modelFind = false;
+            for (Map.Entry<String, List<Drug>> modelMap : infoModel.entrySet()) {
+                dateStr = modelMap.getKey();
+                List<Drug> diags = modelMap.getValue();
+                Date date = StringUtil.parseDateTime(dateStr);
+                //医嘱开始时间往后2天或往前一天找药
+                if ((doctorAdviceDate.before(date) && !CatalogueUtil.compareTime(doctorAdviceDate, date, 48 * 60L))
+                        || (date.before(doctorAdviceDate) && !CatalogueUtil.compareTime(date, doctorAdviceDate, 24 * 60L))) {
+                    for (String adDrug : splitDrugs) {
+                        for (Drug courseDrug : diags) {
+                            if (compareStandard(courseDrug.getName(), adDrug)) {
+                                modelFind = true;
+                                break;
+                            }
+                        }
+                    }
+                }
+                if (modelFind) {
+                    break;
+                }
+            }
+
+            if (StringUtil.isNotBlank(missDrug) && !modelFind && CatalogueUtil.compareTime(doctorAdviceDate, new Date(), 48 * 60L)) {
+                infoAppend(sb, drugs, DateUtil.formatDateTime(doctorAdviceDate));
+                data.put(doctorAdviceDate, splitDrugs.toString().replaceAll("[\\[\\]]", ""));
+            }
+        }
+        if (StringUtil.isNotBlank(sb.toString())) {
+            this.status.set("-1");
+            this.info.set("医嘱:" + sb.toString().substring(0, sb.toString().length() - 1));
+            extData.set(data);
+        }
+    }
+
+    /**
+     * 记录同一抗生素同一天内是否开过多次,用于医嘱中需要处理的抗生素过滤(一天内同一抗生素开过多次的抗生素直接过滤)
+     *
+     * @param docAdvStruct
+     * @param antibioticDateTimes
+     */
+    private void getAntibioticTimes(List<Map<String, String>> docAdvStruct, Map<String, Map<Date, Integer>> antibioticDateTimes) {
+        String drugName;
+        String startDateStr;
+        Date startDate;
+        Map<Date, Integer> antibioticDateTime;
+        for (Map<String, String> structMap : docAdvStruct) {
+            drugName = structMap.get("医嘱项目名称");
+            startDateStr = structMap.get("医嘱开始时间");
+            startDate = DateUtil.dateZeroClear(StringUtil.parseDateTime(startDateStr));
+//            startDate = StringUtil.parseDateTime(startDateStr);
+            if (antibioticDateTimes.containsKey(drugName)) {
+                Map<Date, Integer> map = antibioticDateTimes.get(drugName);
+                if (map.containsKey(startDate)) {
+                    map.put(startDate, map.get(startDate) + 1);
+                } else {
+                    map.put(startDate, 0);
+                }
+            } else {
+                antibioticDateTime = Maps.newHashMap();
+                antibioticDateTime.put(startDate, 0);
+                antibioticDateTimes.put(drugName, antibioticDateTime);
+            }
+        }
+    }
+
+    /**
+     * 获取各模块信息<入院记录、首次病程录、手术记录、术后首程、会诊结果单、查房记录>
+     *
+     * @param structureMap
+     * @param info
+     */
+    private void getInfo(Map<String, Date> info, Map<String, String> structureMap, String modelType, String dateKey, String... contentKey) {
+        String content = CatalogueUtil.structureMapJoin(structureMap, Lists.newArrayList(contentKey));
+        String recordDateStr = structureMap.get(dateKey);
+        if (StringUtil.isNotBlank(recordDateStr)) {
+            Date date = StringUtil.parseDateTime(recordDateStr);
+            if (StringUtil.isNotBlank(content) && date != null) {
+                info.put(modelType + "->" + content, date);
+            }
+        }
+    }
+
+    /**
+     * 获取出院小结模块信息
+     *
+     * @param structureMap
+     * @param info
+     */
+    private void getDischargeInfo(Map<String, Date> info, Map<String, String> structureMap, String modelType, String dateStr, String... contentKey) {
+        String content = CatalogueUtil.structureMapJoin(structureMap, Lists.newArrayList(contentKey));
+        if (StringUtil.isNotBlank(dateStr)) {
+            Date date = StringUtil.parseDateTime(dateStr);
+            if (StringUtil.isNotBlank(content) && date != null) {
+                info.put(modelType + "->" + content, date);
+            }
+        }
+    }
+
+    private void getInfo(Map<String, List<Drug>> info, String dateKey, List<Drug> drugs) {
+        List<Drug> tempDrugs = new ArrayList<>();
+        if (null != drugs && drugs.size() > 0) {
+            for (Drug drug : drugs) {
+                if (null != drug.getConsumption() && !drug.getConsumption().getName().contains("mg/Kg")) {
+                    tempDrugs.add(drug);
+                }
+            }
+        }
+        if (info.containsKey(dateKey)) {
+            info.get(dateKey).addAll(tempDrugs);
+        } else {
+            info.put(dateKey, tempDrugs);
+        }
+    }
+
+    /**
+     * 核心:从文本中找药
+     *
+     * @param content          文本
+     * @param wardDate
+     * @param doctorAdviceDate
+     * @param drugs
+     * @param days
+     * @return 如果文本中找到该药,则返回空字符串
+     */
+    private String getMissDrug(String content, Date wardDate, Date doctorAdviceDate, Set<String> drugs, int days, String missDrug, Set<String> existDrug) {
+        if ("时间不匹配".equals(missDrug)) {
+            missDrug = "";//初始化缺失药物
+        }
+        //开医嘱时间起,昨天今天明天记录内查找药
+        if ((doctorAdviceDate.before(wardDate) && !CatalogueUtil.compareTime(doctorAdviceDate, wardDate, days * 24 * 60L))
+                || (wardDate.before(doctorAdviceDate) && !CatalogueUtil.compareTime(wardDate, doctorAdviceDate, 24 * 60L)) ||
+                DateUtils.isSameDay(wardDate, doctorAdviceDate)) {
+            boolean findDrug = false;
+            String standardDrug = null;
+            for (String drug : drugs) {
+                if (StringUtil.isBlank(drug)) {
+                    continue;
+                }
+                drug = drug.replaceAll("[^\\u4e00-\\u9fa5]", "");
+                standardDrug = similarityUtil.getDrugStandardWord(drug);
+                if (content.contains(drug) || (StringUtil.isNotBlank(content) && StringUtil.isNotBlank(standardDrug) && content.contains(standardDrug))
+                        || (existDrug.contains(drug) && (regexFind(content, "继续", "治疗") || regexFind(content, "维持", "治疗")
+                        || regexFind(content, "继续", "抗感染") || regexFind(content, "治疗", "同前") || regexFind(content, "治疗同前")))) {
+                    findDrug = true;
+                    existDrug.add(drug);
+                    break;
+                } else {
+                    missDrug = concatInfo(missDrug, drug);
+                }
+            }
+            if (findDrug) {
+                missDrug = "";//如果找到一种抗生素药,就把报错信息置为空
+            }
+        } else {
+            if (StringUtil.isBlank(missDrug)) {
+                missDrug = "时间不匹配";
+            }
+        }
+        return missDrug;
+    }
+
+    private String concatInfo(String infoStr, String content) {
+        if (StringUtil.isBlank(infoStr)) {
+            infoStr += content;
+        } else {
+            if (!infoStr.contains(content)) {
+                infoStr += "或" + content;
+            }
+        }
+        return infoStr;
+    }
+
+    private boolean regexFind(String content, String... str) {
+        String s = "";
+        for (String word : str) {
+            s += word + ".*";
+        }
+        s = s.substring(0, s.lastIndexOf(".*"));
+        Pattern p = Pattern.compile(s);
+        Matcher m = p.matcher(content);
+        return m.find();
+    }
+
+    /**
+     * 比较两个抗生素标准词是否一致
+     *
+     * @param firstWord
+     * @param secordWord
+     * @return
+     */
+    private boolean compareStandard(String firstWord, String secordWord) {
+        if (StringUtil.isBlank(firstWord) || StringUtil.isBlank(secordWord)) {
+            return false;
+        }
+        String drugStandardWord1 = similarityUtil.getDrugStandardWord(firstWord);
+        String drugStandardWord2 = similarityUtil.getDrugStandardWord(secordWord);
+        if (drugStandardWord1 == null || drugStandardWord2 == null) {
+            return firstWord.equals(secordWord) || firstWord.contains(secordWord) || secordWord.contains(firstWord);
+        }
+        return drugStandardWord1.equals(drugStandardWord2);
+    }
+
+    /**
+     * 如果文本包含中括号([海正]美罗培南针),取括号之后的文字
+     *
+     * @param str
+     * @return
+     */
+    private String removeBracket(String str) {
+        if (str.contains("]") && str.indexOf("]") != str.length() - 1) {
+            return str.substring(str.indexOf("]") + 1);
+        }
+        return str;
+    }
+
+    /**
+     * 拼接提示信息
+     *
+     * @param sb
+     * @param drugKey
+     * @param date
+     */
+    private void infoAppend(StringBuffer sb, String drugKey, String date) {
+        sb.append(drugKey).append("(").append(date).append(")").append("_");
+    }
+
+    private static final List<String> filterKey = Lists.newArrayList("ACF", "ID", "IG", "IM", "IP", "IV",
+            "关节腔注射", "宫颈注射", "皮下注射", "皮下注射(儿童)", "皮下注射(免费)", "皮下注射(成人)", "皮内", "皮内注射",
+            "结膜下注射", "肌注", "肌肉注射(儿童)", "肌肉注射(公卫专用)", "肌肉注射(成人)", "胸腔注射", "腹腔内注射", "腹腔注射",
+            "静滴(儿童)", "静滴(成人)", "静脉注射", "静脉注射(儿童)", "静脉注射(免费)", "静脉注射(成人)", "静脉注射(泵)",
+            "静脉滴注", "静脉滴注(泵)", "鞘内注射", "微泵");
+
+    private static final String[] KSS = {
+            "万古霉素",
+            "两性霉素B",
+            "亚胺培南西司他丁",
+            "伊曲康唑",
+            "伏立康唑",
+            "依替米星",
+            "克拉霉素",
+            "克林霉素",
+            "利奈唑胺",
+            "利奈唑胺葡萄糖",
+            "利福昔明",
+            "制霉菌素",
+            "卡泊芬净",
+            "厄他培南",
+            "吗啉硝唑",
+            "呋喃唑酮",
+            "哌拉西林他唑巴坦",
+            "磺胺甲恶唑",
+            "多粘菌素B",
+            "多西环素",
+            "夫西地酸",
+            "头孢丙烯",
+            "头孢他啶",
+            "头孢他啶阿维巴坦",
+            "头孢他美酯",
+            "头孢克洛",
+            "头孢克肟",
+            "头孢吡肟",
+            "头孢呋辛",
+            "头孢哌酮舒巴坦",
+            "头孢唑林",
+            "头孢噻肟",
+            "头孢地嗪",
+            "头孢地尼",
+            "头孢拉定",
+            "头孢曲松",
+            "头孢替安",
+            "头孢美唑",
+            "头孢西丁",
+            "奥硝唑",
+            "妥布霉素",
+            "妥布霉素地塞米松",
+            "左氧氟沙星",
+            "左氧氟沙星",
+            "庆大霉素",
+            "异帕米星",
+            "拉氧头孢",
+            "替加环素",
+            "替硝唑",
+            "替考拉宁",
+            "比阿培南",
+            "氟康唑",
+            "氟康唑",
+            "氟胞嘧啶",
+            "氨曲南",
+            "氨苄西林",
+            "泊沙康唑",
+            "特比萘芬",
+            "甲硝唑",
+            "甲硝唑",
+            "磷霉素",
+            "磷霉素氨丁三醇",
+            "米卡芬净",
+            "米诺环素",
+            "红霉素",
+            "美罗培南",
+            "苄星青霉素",
+            "莫西沙星",
+            "莫西沙星",
+            "达托霉素",
+            "阿奇霉素",
+            "阿奇霉素枸橼酸二氢钠",
+            "阿洛西林",
+            "阿米卡星",
+            "阿莫西林",
+            "阿莫西林克拉维酸",
+            "青霉素"
+    };
+}

+ 1 - 1
kernel/src/main/java/com/lantone/qc/kernel/catalogue/hospital/ninghaiyiyi/threelevelward/THR03090.java

@@ -45,7 +45,7 @@ public class THR03090 extends QCCatalogue {
                 if (operationStartDate.contains("结束")) {
                     operationStartDate = operationStartDate.substring(0, operationStartDate.indexOf("结束")).replace("开始:", "");
                 }
-                if (operationStartDate.contains("年月日")) {
+                if (StringUtil.parseDateTime(operationStartDate) == null) {
                     operationStartDate = DateUtil.nowString();
                 }
                 //取不到时间不判断规则

+ 2 - 11
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiOperationDocTrans.java

@@ -3,12 +3,7 @@ package com.lantone.qc.trans.ninghaiyiyi;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-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.doc.operation.*;
 import com.lantone.qc.pub.model.vo.MedrecVo;
 import com.lantone.qc.pub.util.FastJsonUtils;
 import com.lantone.qc.pub.util.ListUtil;
@@ -16,11 +11,7 @@ import com.lantone.qc.pub.util.StringUtil;
 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.ninghaiyiyi.util.NingHaiYiYiHtmlAnalysis;
-import com.lantone.qc.trans.ninghaiyiyi.util.NingHaiYiYiHtmlAnalysisUtil;
-import com.lantone.qc.trans.ninghaiyiyi.util.NingHaiYiYiOperationHtmlAnalysis;
-import com.lantone.qc.trans.ninghaiyiyi.util.NingHaiYiYiOperationRecordHtmlAnalysis;
-import com.lantone.qc.trans.ninghaiyiyi.util.NingHaiYiYiPreoperativeHtmlAnalysis;
+import com.lantone.qc.trans.ninghaiyiyi.util.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.MapUtils;
 import org.jsoup.Jsoup;

+ 1 - 1
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/NingHaiYiYiStagesSummaryDocTrans.java

@@ -72,4 +72,4 @@ public class NingHaiYiYiStagesSummaryDocTrans extends ModelDocTrans {
             "医师签名=记录医生"
     );
 
-}
+}

+ 27 - 35
trans/src/main/java/com/lantone/qc/trans/ninghaiyiyi/util/NingHaiYiYiBeHospitalizedHtmlAnalysis.java

@@ -5,7 +5,6 @@ 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;
@@ -28,7 +27,7 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
@@ -52,10 +51,10 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
     private void analysisBeHospitalized(Document doc, Map<String, String> map) {
         NingHaiYiYiHtmlAnalysisUtil.tableStyle1InsertMap(doc.getElementById("header"), map);
         map.forEach((key, value) -> map.put(key, value.replace("\n", "")));
-        List<String> titles = Lists.newArrayList("姓 名", "入院时间", "出生日期", "性 别", "性别", "记录时间","年 龄", "出 生 地", "职 业", "职业", "入院时间", "民 族", "民族",
-                "联系地址", "婚 姻", "婚姻", "病史陈述者", "病史可靠度", "家长姓名","住 址","联系电话", "主诉", "主 诉", "现 病 史","现病史", "既 往 史", "个 人 史", "母 孕 史", "出 生 史", "喂 养 史",
-                "既往史", "个人史", "母孕史", "出生史", "喂养史","婚育史","家族史","年龄","姓名","出生地","住址",
-                "末次月经","身份证号","户籍地址","联 系 人","孕/产 次","预 产 期","产前检查","籍贯",
+        List<String> titles = Lists.newArrayList("姓 名", "入院时间", "出生日期", "性 别", "性别", "记录时间", "年 龄", "出 生 地", "职 业", "职业", "入院时间", "民 族", "民族",
+                "联系地址", "婚 姻", "婚姻", "病史陈述者", "病史可靠度", "家长姓名", "住 址", "联系电话", "主诉", "主 诉", "现 病 史", "现病史", "既 往 史", "个 人 史", "母 孕 史", "出 生 史", "喂 养 史",
+                "既往史", "个人史", "母孕史", "出生史", "喂养史", "婚育史", "家族史", "年龄", "姓名", "出生地", "住址",
+                "末次月经", "身份证号", "户籍地址", "联 系 人", "孕/产 次", "预 产 期", "产前检查", "籍贯",
                 "生长发育史", "预防接种史", "生活习惯史", "婚 育 史", "月经婚育史", "家 族 史", "辅助检查", "记录医生", "初步诊断", "补充诊断");
         String htmlContent = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(doc.selectFirst("body").child(0).getElementById("main"), true);
         if (StringUtil.isNotBlank(htmlContent)) {
@@ -64,35 +63,30 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
             disDiagnose(map, Lists.newArrayList("初步诊断"), "医师签名:");
             disDiagnose(map, Lists.newArrayList("初步诊断医师签名:"), "时 间:");
             //入院记录 体格检查、补充及专科情况里获取辅助检查提取
-            getAuxiliary(map,Lists.newArrayList("体格检查","补充及专科情况","补充及专科情况"),htmlContent);
+            getAuxiliary(map, Lists.newArrayList("体格检查", "补充及专科情况", "补充及专科情况"), htmlContent);
             //婚育史特殊符号处理
 //            removeSymbol(map,"□","婚育史");
         }
     }
 
-    private void getAuxiliary(Map<String, String> map, ArrayList<String> newArrayList,String htmlContent) {
+    private void getAuxiliary(Map<String, String> map, ArrayList<String> newArrayList, String htmlContent) {
         CommonAnalysisUtil.html2StructureMapNoColon(newArrayList, htmlContent, map);
         //家族史其他内容清理
-        if(map.keySet().contains("家族史"))
-        {
+        if (map.keySet().contains("家族史")) {
             String fimaly = map.get("家族史");
-            if(map.keySet().contains("体格检查"))
-            {
-                removeMapVal(map,fimaly,"体格检查","家族史");
-                if(map.keySet().contains("补充及专科情况")&&StringUtil.isBlank(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("初步诊断")))
-                    {
+                            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);
+                        if (val.contains(map.get("初步诊断"))) {
+                            val = val.split("初步诊断")[0].replaceAll("初步诊断", "")
+                                    .replaceAll(":", "").trim();
+                            map.put("辅助检查", val);
 
                         }
                     }
@@ -102,26 +96,24 @@ public class NingHaiYiYiBeHospitalizedHtmlAnalysis implements NingHaiYiYiHtmlAna
         }
     }
 
-    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);
+    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]
+     * @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());
+    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());
         }
     }
 

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

@@ -51,7 +51,7 @@ public class NingHaiYiYiClinicBloodEffectHtmlAnalysis implements NingHaiYiYiHtml
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
+    private void analysisGeneral(String recTitle, Element bigDivElement, Map<String, String> map) {
         if (bigDivElement.childNodeSize() == 1) {
             bigDivElement = bigDivElement.child(0);
         }

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

@@ -52,7 +52,7 @@ public class NingHaiYiYiClinicalBloodHtmlAnalysis implements NingHaiYiYiHtmlAnal
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
+    private void analysisGeneral(String recTitle, Element bigDivElement, Map<String, String> map) {
         if (bigDivElement.childNodeSize() == 1) {
             bigDivElement = bigDivElement.child(0);
         }

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

@@ -30,8 +30,8 @@ public class NingHaiYiYiConsultationHtmlAnalysis implements NingHaiYiYiHtmlAnaly
             List<String> titles = Lists.newArrayList("姓名", "性别", "出生日期", "科别", "病区", "床号", "住院号",
                     "会诊类型", "被邀医院", "被邀科室", "被邀医师", "申请时间", "患者病情及诊疗经过、申请会诊的理由及目的", "申请会诊科别",
                     "被邀会诊科别", "申请会诊医师", "会诊意见", "会诊时间", "科主任", "会诊到达时间", "查体", "会诊建议",
-                    "会诊诊断", "由受邀医生填写,本次会诊是否必要","会诊科室", "会诊医师", "外院会诊医师所在医疗机构名称", "会诊医师所在医疗机构名称");
-            String html = args[0].replace("&nbsp;"," ");
+                    "会诊诊断", "由受邀医生填写,本次会诊是否必要", "会诊科室", "会诊医师", "外院会诊医师所在医疗机构名称", "会诊医师所在医疗机构名称");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             String htmlContent = null;

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

@@ -36,7 +36,7 @@ public class NingHaiYiYiConsultationRecordHtmlAnalysis implements NingHaiYiYiHtm
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
+    private void analysisGeneral(String recTitle, Element bigDivElement, Map<String, String> map) {
         if (bigDivElement.childNodeSize() == 1) {
             bigDivElement = bigDivElement.child(0);
         }

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

@@ -24,7 +24,7 @@ public class NingHaiYiYiCrisisValueReportHtmlAnalysis implements NingHaiYiYiHtml
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");

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

@@ -29,7 +29,7 @@ public class NingHaiYiYiCriticallyIllNoticeHtmlAnalysis implements NingHaiYiYiHt
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科室", "科别", "病区", "床号", "住院号",
                     "单位或地址", "联系电话", "初步诊断", "临床诊断", "病情摘要", "主要症状", "体格检查", "辅助检查", "告知医师签名",
                     "告知时间", "患方意见", "患方签名", "手印说明", "与患者关系", "患者(或被授权人)签名与患方关系", "医师签名", "时间", "签字时间");
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

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

@@ -25,7 +25,7 @@ public class NingHaiYiYiDeathCaseDiscussHtmlAnalysis implements NingHaiYiYiHtmlA
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);
             Element bigDivElement = doc.selectFirst("body").child(0).getElementById("main");

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

@@ -27,7 +27,7 @@ public class NingHaiYiYiDeathRecordHtmlAnalysis implements NingHaiYiYiHtmlAnalys
         try {
             List<String> titles = Lists.newArrayList("入院日期", "入院时间", "死亡时间", "记录时间", "入院诊断", "入院情况",
                     "诊疗经过(重点记录病情演变、抢救经过)", "诊治经过", "死亡原因", "死亡诊断", "医师签字");
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

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

@@ -27,7 +27,7 @@ public class NingHaiYiYiDifficultCaseDiscussHtmlAnalysis implements NingHaiYiYiH
         try {
             List<String> titles = Lists.newArrayList("姓名", "性别", "年龄", "出生日期", "科别", "住址(或单位)", "讨论日期",
                     "讨论主持人", "参加讨论人", "发言记录(包括病历简要、讨论意见及结论)", "病史简介", "讨论意见", "主持人小结意见", "记录者(签名)", "科主任(签名)");
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Document doc = Jsoup.parse(html);

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

@@ -36,7 +36,7 @@ public class NingHaiYiYiDutyShiftSystemHtmlAnalysis implements NingHaiYiYiHtmlAn
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
+    private void analysisGeneral(String recTitle, Element bigDivElement, Map<String, String> map) {
         if (bigDivElement.childNodeSize() == 1) {
             bigDivElement = bigDivElement.child(0);
         }

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

@@ -9,6 +9,6 @@ import java.util.Map;
  */
 public interface NingHaiYiYiHtmlAnalysis {
 
-    Map<String,String> analysis(String... args);
+    Map<String, String> analysis(String... args);
 
 }

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

@@ -36,7 +36,7 @@ public class NingHaiYiYiRescueHtmlAnalysis implements NingHaiYiYiHtmlAnalysis {
         return map;
     }
 
-    private void analysisGeneral(String recTitle,Element bigDivElement, Map<String, String> map) {
+    private void analysisGeneral(String recTitle, Element bigDivElement, Map<String, String> map) {
         if (bigDivElement.childNodeSize() == 1) {
             bigDivElement = bigDivElement.child(0);
         }

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

@@ -24,7 +24,7 @@ public class NingHaiYiYiTransferOutHtmlAnalysis implements NingHaiYiYiHtmlAnalys
     public Map<String, String> analysis(String... args) {
         Map<String, String> map = Maps.newLinkedHashMap();
         try {
-            String html = args[0].replace("&nbsp;"," ");
+            String html = args[0].replace("&nbsp;", " ");
             String recTitle = args[1];
             String recTypeId = args[2];
             Element bigDivElement = Jsoup.parse(html).selectFirst("body").child(0).getElementById("main");
@@ -45,7 +45,7 @@ public class NingHaiYiYiTransferOutHtmlAnalysis implements NingHaiYiYiHtmlAnalys
         }
         String text = NingHaiYiYiHtmlAnalysisUtil.blockDivToStr(bigDivElement, true);
         CommonAnalysisUtil.NHExtractWardInfo(recTitle, text, map);
-        String bqjlText = "病情记录" + map.get("病情记录").replace("年   月   日   时   分 ","");
+        String bqjlText = "病情记录" + map.get("病情记录").replace("年   月   日   时   分 ", "");
         List<String> titles = Lists.newArrayList(
                 "病情记录",
                 "医师签名",