ソースを参照

Merge branch 'dev/20210120_2.0.1' into debug

# Conflicts:
#	src/main/java/com/diagbot/vo/AnalyzeRunVO.java
chengyao 4 年 前
コミット
eebd218780
37 ファイル変更2365 行追加34 行削除
  1. 1 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  2. 1 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  3. 179 0
      src/main/java/com/diagbot/dto/QualityControlDTO.java
  4. 7 3
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  5. 51 0
      src/main/java/com/diagbot/facade/ConsoleFacade.java
  6. 1 0
      src/main/java/com/diagbot/facade/data/ColumnFacade.java
  7. 66 1
      src/main/java/com/diagbot/facade/data/AStrAdmissionNoteFacade.java
  8. 81 1
      src/main/java/com/diagbot/facade/data/AStrBloodResultFacade.java
  9. 71 1
      src/main/java/com/diagbot/facade/data/AStrBloodTransfusionFacade.java
  10. 66 1
      src/main/java/com/diagbot/facade/data/AStrConsultationApplyFacade.java
  11. 65 1
      src/main/java/com/diagbot/facade/data/AStrConsultationNoteFacade.java
  12. 66 5
      src/main/java/com/diagbot/facade/data/AStrConsultationRecordFacade.java
  13. 70 1
      src/main/java/com/diagbot/facade/data/AStrConsultationResultFacade.java
  14. 66 1
      src/main/java/com/diagbot/facade/data/AStrCrisisNoteFacade.java
  15. 65 1
      src/main/java/com/diagbot/facade/data/AStrDeathDiscussionFacade.java
  16. 66 1
      src/main/java/com/diagbot/facade/data/AStrDeathNoteFacade.java
  17. 66 1
      src/main/java/com/diagbot/facade/data/AStrDifficultCaseFacade.java
  18. 65 1
      src/main/java/com/diagbot/facade/data/AStrFirstRecordFacade.java
  19. 65 1
      src/main/java/com/diagbot/facade/data/AStrIllCriticallyFacade.java
  20. 65 1
      src/main/java/com/diagbot/facade/data/AStrIllSeriouslFacade.java
  21. 66 1
      src/main/java/com/diagbot/facade/data/AStrLeaveHospitalFacade.java
  22. 65 1
      src/main/java/com/diagbot/facade/data/AStrOperativeFirstRecord.java
  23. 66 1
      src/main/java/com/diagbot/facade/data/AStrOperativeNoteFacade.java
  24. 65 2
      src/main/java/com/diagbot/facade/data/AStrPeriodConclusionFacade.java
  25. 66 1
      src/main/java/com/diagbot/facade/data/AStrPreoperativeDiscussionFacade.java
  26. 66 1
      src/main/java/com/diagbot/facade/data/AStrRescueNoteFacade.java
  27. 65 1
      src/main/java/com/diagbot/facade/data/AStrTransferInNoteFacade.java
  28. 65 1
      src/main/java/com/diagbot/facade/data/AStrTransferOutNoteFacade.java
  29. 66 1
      src/main/java/com/diagbot/facade/data/AStrWardRecordFacade.java
  30. 9 0
      src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java
  31. 9 0
      src/main/java/com/diagbot/service/BehospitalInfoService.java
  32. 12 0
      src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java
  33. 1 1
      src/main/java/com/diagbot/util/ColumnCacheUtil.java
  34. 2 2
      src/main/java/com/diagbot/vo/AnalyzeRunVO.java
  35. 255 0
      src/main/java/com/diagbot/web/ADataStrController.java
  36. 19 0
      src/main/java/com/diagbot/web/ConsoleController.java
  37. 285 0
      src/main/resources/mapper/BehospitalInfoMapper.xml

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -232,6 +232,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/consoleByDept/medicalCheckFormKs").permitAll()
                 .antMatchers("/print/export/medicalCheckExportByDept").permitAll()
                 .antMatchers("/consoleByDept/medicalCheckTitleKs").permitAll()
+                .antMatchers("/console/qualityControl").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -276,6 +276,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/consoleByDept/medicalCheckFormKs", request)
                 || matchers("/print/export/medicalCheckExportByDept", request)
                 || matchers("/consoleByDept/medicalCheckTitleKs", request)
+                || matchers("/console/qualityControl", request)
                 || matchers("/", request)) {
             return true;
         }

+ 179 - 0
src/main/java/com/diagbot/dto/QualityControlDTO.java

@@ -0,0 +1,179 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description:病历质控报表返回结构
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class QualityControlDTO {
+
+    /**
+     * 姓名
+     */
+    @Excel(name = "病人姓名", width = 30, orderNum = "1")
+    private String name;
+
+    /**
+     * 病人住院ID
+     */
+    @Excel(name = "住院号", width = 30, orderNum = "2")
+    private String behospitalCode;
+
+    /**
+     * 主管医生id
+     */
+    private String doctorId;
+
+    /**
+     * 医生姓名
+     */
+    @Excel(name = "主治医生", width = 30, orderNum = "3")
+    private String doctorName;
+
+    /**
+     * 科室id(科室编码)
+     */
+    private String deptId;
+    /**
+     * 科室名称
+     */
+    @Excel(name = "科室名称", width = 30, orderNum = "4")
+    private String deptName;
+
+    /**
+     * 入院时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date behospitalDate;
+
+    /**
+     * 出院时间
+     */
+    @Excel(name = "出院日期", width = 30, orderNum = "5")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+
+    /**
+     * 病案首页--
+     */
+    @Excel(name = "病案首页", orderNum = "6")
+    private String medHomePage;
+    /**
+     * 病案首页扣分
+     */
+    @Excel(name = "扣分", orderNum = "7")
+    private BigDecimal medHomePageScore;
+
+    /**
+     * 入院记录--
+     */
+    @Excel(name = "入院记录", orderNum = "8")
+    private String admissionNote;
+    /**
+     * 入院记录扣分
+     */
+    @Excel(name = "扣分", orderNum = "9")
+    private BigDecimal admissionNoteScore;
+
+
+    /**
+     * 首次病程录--
+     */
+    @Excel(name = "首次病程录", orderNum = "10")
+    private String firstCourseNote;
+    /**
+     * 首次病程录扣分
+     */
+    @Excel(name = "扣分", orderNum = "11")
+    private BigDecimal firstCourseNoteScore;
+
+    /**
+     * 病程记录--
+     */
+    @Excel(name = "病程记录", orderNum = "12")
+    private String courseRecord;
+    /**
+     * 病程记录扣分
+     */
+    @Excel(name = "扣分", orderNum = "13")
+    private BigDecimal courseRecordScore;
+
+    /**
+     * 手术信息--
+     */
+    @Excel(name = "手术信息", orderNum = "14")
+    private String  operationInfo;
+    /**
+     * 手术信息扣分
+     */
+    @Excel(name = "扣分", orderNum = "15")
+    private BigDecimal operationInfoScore;
+
+    /**
+     * 出院记录--
+     */
+    @Excel(name = "出院记录", orderNum = "16")
+    private String  dischargeNote;
+    /**
+     * 出院记录扣分
+     */
+    @Excel(name = "扣分", orderNum = "17")
+    private BigDecimal dischargeNoteScore;
+
+    /**
+     * 医嘱单--
+     */
+    @Excel(name = "医嘱单", orderNum = "18")
+    private String  docAdviceNote;
+    /**
+     * 医嘱单扣分
+     */
+    @Excel(name = "扣分", orderNum = "19")
+    private BigDecimal docAdviceNoteScore;
+
+    /**
+     * 其他
+     */
+    @Excel(name = "其他", orderNum = "20")
+    private String  otherCase;
+    /**
+     * 其他扣分
+     */
+    @Excel(name = "扣分", orderNum = "21")
+    private BigDecimal otherCaseScore;
+
+    /**
+     * 总分
+     */
+    @Excel(name = "总分", orderNum = "22")
+    private String  totalScore;
+    /**
+     * 病历等级
+     */
+    @Excel(name = "病历等级", orderNum = "23")
+    private String level;
+
+    /**
+     * 病案首页核查人
+     */
+    @Excel(name = "首页检查者", orderNum = "24")
+    private String  mrName;
+    /**
+     * 病历核查人
+     */
+    @Excel(name = "病历检查者", orderNum = "25")
+    private String chName;
+
+
+
+}

+ 7 - 3
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -912,10 +912,15 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         }
 
         // 病案首页
-        if (homePage != null) {
+        //义乌数据回来还要处理
+//        if(analyzeVO.getHospitalId()==5 && ListUtil.isNotEmpty(recMap.get("病案首页"))){
+//            addDataWithInnerKey("病案首页", recMap, medrecVoList);
+//        }else {
+            if(homePage != null){
             addDataWithFirstPage("病案首页", homePage, medrecVoList, dicMap,
                     homePageList, homeOperationInfoList);
-        }
+             }
+//        }
 
         queryVo.setMedrec(medrecVoList);
         return queryVo;
@@ -936,7 +941,6 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         analyzeVO.setHospitalId(hospitalId);
 
         // 处理公共数据
-
             QueryVo  queryVo = dealCommonData(hospitalId, analyzeVO);
         queryVo.setUseCrfCache(analyzeVO.isUseCrfCache());
         //  调用质控接口

+ 51 - 0
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -1245,6 +1245,57 @@ public class ConsoleFacade {
         return records;
     }
 
+    /**
+     * 病历质控报表
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    public List<QualityControlDTO> getQualityControl(BehospitalPageVO behospitalPageVO) {
+        behospitalPageSet(behospitalPageVO);
+      //  QualityCaseScoreDTO qualityCaseScoreDTO =  behospitalInfoFacade.getQualityCaseSorce(behospitalPageVO);
+        List<QualityControlDTO> records = behospitalInfoFacade.getQualityControl(behospitalPageVO);
+        return records;
+    }
+
+    private void behospitalPageSet(BehospitalPageVO behospitalPageVO) {
+        //入参验证
+        //入院时间
+        if (null != behospitalPageVO && null != behospitalPageVO.getBehosDateStart()) {
+            behospitalPageVO.setBehosDateStart(DateUtil.getFirstTimeOfDay(behospitalPageVO.getBehosDateStart()));
+        }
+        if (null != behospitalPageVO && null != behospitalPageVO.getBehosDateEnd()) {
+            behospitalPageVO.setBehosDateEnd(DateUtil.getFirstTimeOfDay(DateUtil.addDay(behospitalPageVO.getBehosDateEnd(), 1)));
+        }
+        if (null != behospitalPageVO && null != behospitalPageVO.getBehosDateStart() && null != behospitalPageVO.getBehosDateEnd()) {
+            if (DateUtil.after(behospitalPageVO.getBehosDateStart(), behospitalPageVO.getBehosDateEnd())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "入院时间的开始时间必须小于结束时间!");
+            }
+        }
+        //出院时间
+        if (null != behospitalPageVO && null != behospitalPageVO.getLeaveHosDateStart()) {
+            behospitalPageVO.setLeaveHosDateStart(DateUtil.getFirstTimeOfDay(behospitalPageVO.getLeaveHosDateStart()));
+        }
+        if (null != behospitalPageVO && null != behospitalPageVO.getLeaveHosDateEnd()) {
+            behospitalPageVO.setLeaveHosDateEnd(DateUtil.getFirstTimeOfDay(DateUtil.addDay(behospitalPageVO.getLeaveHosDateEnd(), 1)));
+        }
+        if (null != behospitalPageVO && null != behospitalPageVO.getLeaveHosDateStart() && null != behospitalPageVO.getLeaveHosDateEnd()) {
+            if (DateUtil.after(behospitalPageVO.getLeaveHosDateStart(), behospitalPageVO.getLeaveHosDateEnd())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "出院时间的开始时间必须小于结束时间!");
+            }
+        }
+        behospitalPageVO.setHospitalId(Long.parseLong(SysUserUtils.getCurrentHospitalID()));
+//        behospitalPageVO.setIsPlacefile("1");
+//        if (null != behospitalPageVO.getStatisticsType()
+//                && null == behospitalPageVO.getLeaveHosDateStart()
+//                && null == behospitalPageVO.getLeaveHosDateEnd()) {
+//            String startDate = filterFacade.getStartDateStr(behospitalPageVO.getStatisticsType(), null);
+//            String endDate = filterFacade.getEndDateStr(behospitalPageVO.getStatisticsType(), null);
+//            behospitalPageVO.setLeaveHosDateStart(DateUtil.parseDate(startDate));
+//            behospitalPageVO.setLeaveHosDateEnd(DateUtil.parseDate(endDate));
+//        }
+    }
+
     /**
      * 病案首页合格率占比
      *

+ 1 - 0
src/main/java/com/diagbot/facade/data/ColumnFacade.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.OutputInfo;
 import com.diagbot.dto.Response;
 import com.diagbot.enums.CacheKeyEnum;
 import com.diagbot.facade.QcClientFacade;
+import com.diagbot.facade.str.*;
 import com.diagbot.service.impl.ColumnServiceImpl;
 import com.diagbot.vo.QueryVo;
 import lombok.extern.slf4j.Slf4j;

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrAdmissionNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrAdmissionNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrAdmissionNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrAdmissionNoteVO;
+import com.diagbot.vo.str.StrAdmissionNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrAdmissionNoteFacade extends StrAdmissionNoteServiceImpl {
+
+    @Autowired
+    @Qualifier("strAdmissionNoteServiceImpl")
+    private StrAdmissionNoteServiceImpl strAdmissionNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -84,4 +95,58 @@ public class AStrAdmissionNoteFacade extends StrAdmissionNoteServiceImpl {
         return flag;
     }
 
+    public RespDTO execDealData(List<StrAdmissionNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrAdmissionNoteVO strAdmissionNoteVO:list) {
+                if("".equals(strAdmissionNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strAdmissionNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strAdmissionNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrAdmissionNote> strAdmissionNoteList=Lists.newArrayList();
+            strAdmissionNoteList=BeanUtil.listCopyTo(list,StrAdmissionNote.class);
+            execute(strAdmissionNoteList);
+
+            return RespDTO.onSuc(strAdmissionNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrAdmissionNote> list){
+        try {
+            List<StrAdmissionNote> addE = Lists.newLinkedList();
+            List<StrAdmissionNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrAdmissionNote strAdmissionNote = this.getOne(new QueryWrapper<StrAdmissionNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strAdmissionNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strAdmissionNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-入院记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
+
 }

+ 81 - 1
src/main/java/com/diagbot/facade/data/AStrBloodResultFacade.java

@@ -1,25 +1,41 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrBloodResult;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrBloodResultServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrBloodResultVO;
+import com.diagbot.vo.str.StrBloodResultVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * @Description:输血后效果评价-业务类
+ * @Author:liuqq
+ * @time: ${DATE} ${TIME}
+ **/
 @Component
 public class AStrBloodResultFacade extends StrBloodResultServiceImpl {
+
+    @Autowired
+    @Qualifier("strBloodResultServiceImpl")
+    private StrBloodResultServiceImpl strBloodResultService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -68,6 +84,11 @@ public class AStrBloodResultFacade extends StrBloodResultServiceImpl {
 
     }
 
+    /**
+     * @Description: 是否存在
+     * @Author:liuqq
+     * @time: ${DATE} ${TIME}
+     **/
     public Boolean isExist(StrBloodResult strBloodResult){
         Boolean flag=true;
         int count = this.baseMapper.selectCount(new QueryWrapper<StrBloodResult>()
@@ -79,4 +100,63 @@ public class AStrBloodResultFacade extends StrBloodResultServiceImpl {
         }
         return flag;
     }
+
+    /**
+     * @Description:数据处理
+     * @Author:liuqq
+     * @time: ${DATE} ${TIME}
+     **/
+    public RespDTO execDealData(List<StrBloodResultVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrBloodResultVO strBloodResultVO:list) {
+                if("".equals(strBloodResultVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strBloodResultVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strBloodResultVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrBloodResult> strBloodResultList= Lists.newArrayList();
+            strBloodResultList= BeanUtil.listCopyTo(list,StrBloodResult.class);
+            execute(strBloodResultList);
+
+            return RespDTO.onSuc(strBloodResultList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrBloodResult> list){
+        try {
+            List<StrBloodResult> addE = Lists.newLinkedList();
+            List<StrBloodResult> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrBloodResult strBloodResult = this.getOne(new QueryWrapper<StrBloodResult>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strBloodResult != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strBloodResultService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-输血后效果评价","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 71 - 1
src/main/java/com/diagbot/facade/data/AStrBloodTransfusionFacade.java

@@ -1,25 +1,41 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrBloodTransfusion;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrBloodTransfusionServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrBloodTransfusionVO;
+import com.diagbot.vo.str.StrBloodTransfusionVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * @Description:输血/血制品病程记录-业务类
+ * @Author:liuqq
+ * @time: ${DATE} ${TIME}
+ **/
 @Component
 public class AStrBloodTransfusionFacade extends StrBloodTransfusionServiceImpl {
+
+    @Autowired
+    @Qualifier("strBloodTransfusionServiceImpl")
+    private StrBloodTransfusionServiceImpl strBloodTransfusionService;
     @Autowired
     private ColumnFacade columnFacade;
 
@@ -85,4 +101,58 @@ public class AStrBloodTransfusionFacade extends StrBloodTransfusionServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrBloodTransfusionVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrBloodTransfusionVO strBloodTransfusionVO:list) {
+                if("".equals(strBloodTransfusionVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strBloodTransfusionVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strBloodTransfusionVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrBloodTransfusion> strBloodTransfusionList= Lists.newArrayList();
+            strBloodTransfusionList= BeanUtil.listCopyTo(list,StrBloodTransfusion.class);
+            execute(strBloodTransfusionList);
+
+            return RespDTO.onSuc(strBloodTransfusionList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrBloodTransfusion> list){
+        try {
+            List<StrBloodTransfusion> addE = Lists.newLinkedList();
+            List<StrBloodTransfusion> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrBloodTransfusion strBloodTransfusion = this.getOne(new QueryWrapper<StrBloodTransfusion>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strBloodTransfusion != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strBloodTransfusionService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-入院记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrConsultationApplyFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrConsultationApply;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrConsultationApplyServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrConsultationApplyVO;
+import com.diagbot.vo.str.StrConsultationApplyVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrConsultationApplyFacade extends StrConsultationApplyServiceImpl {
+
+    @Autowired
+    @Qualifier("strConsultationApplyServiceImpl")
+    private StrConsultationApplyServiceImpl strConsultationApplyService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -86,4 +97,58 @@ public class AStrConsultationApplyFacade extends StrConsultationApplyServiceImpl
         return flag;
     }
 
+    public RespDTO execDealData(List<StrConsultationApplyVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrConsultationApplyVO strConsultationApplyVO:list) {
+                if("".equals(strConsultationApplyVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strConsultationApplyVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strConsultationApplyVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrConsultationApply> strConsultationApplyList= Lists.newArrayList();
+            strConsultationApplyList= BeanUtil.listCopyTo(list,StrConsultationApply.class);
+            execute(strConsultationApplyList);
+
+            return RespDTO.onSuc(strConsultationApplyList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrConsultationApply> list){
+        try {
+            List<StrConsultationApply> addE = Lists.newLinkedList();
+            List<StrConsultationApply> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrConsultationApply strConsultationApply = this.getOne(new QueryWrapper<StrConsultationApply>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strConsultationApply != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strConsultationApplyService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-会诊申请单","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
+
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrConsultationNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrConsultationNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrConsultationNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrConsultationNoteVO;
+import com.diagbot.vo.str.StrConsultationNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrConsultationNoteFacade extends StrConsultationNoteServiceImpl {
 
+    @Autowired
+    @Qualifier("strConsultationNoteServiceImpl")
+    private StrConsultationNoteServiceImpl strConsultationNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -88,4 +98,58 @@ public class AStrConsultationNoteFacade extends StrConsultationNoteServiceImpl {
         return flag;
     }
 
+    public RespDTO execDealData(List<StrConsultationNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrConsultationNoteVO strConsultationNoteVO:list) {
+                if("".equals(strConsultationNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strConsultationNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strConsultationNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrConsultationNote> strConsultationNoteList= Lists.newArrayList();
+            strConsultationNoteList= BeanUtil.listCopyTo(list,StrConsultationNote.class);
+            execute(strConsultationNoteList);
+
+            return RespDTO.onSuc(strConsultationNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrConsultationNote> list){
+        try {
+            List<StrConsultationNote> addE = Lists.newLinkedList();
+            List<StrConsultationNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrConsultationNote strConsultationNote = this.getOne(new QueryWrapper<StrConsultationNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strConsultationNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strConsultationNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-会诊申请单","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
+
 }

+ 66 - 5
src/main/java/com/diagbot/facade/data/AStrConsultationRecordFacade.java

@@ -1,19 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrConsultationRecord;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrConsultationRecordServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.AStrConsultationRecordVO;
-import com.diagbot.vo.data.AStrConsultationNoteVO;
-import com.diagbot.vo.data.AStrConsultationResultVO;
+import com.diagbot.vo.str.StrConsultationRecordVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -22,7 +27,9 @@ import java.util.Map;
 @Component
 public class AStrConsultationRecordFacade extends StrConsultationRecordServiceImpl {
 
-
+    @Autowired
+    @Qualifier("strConsultationRecordServiceImpl")
+    private StrConsultationRecordServiceImpl strConsultationRecordService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -37,7 +44,7 @@ public class AStrConsultationRecordFacade extends StrConsultationRecordServiceIm
         Map<String, String> columnMap= EntityUtil.makeMapWithKeyValue(list,"ch","en");
         Boolean flag=columnFacade.createColumn(columnMap,"strConsultationRecord");
 
-        //Map<String, String> map=columnFacade.getColumn("strConsultationNote");
+        //Map<String, String> map=columnFacade.getColumn("strConsultationRecord");
         if(!flag){
             return;
         }
@@ -89,4 +96,58 @@ public class AStrConsultationRecordFacade extends StrConsultationRecordServiceIm
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrConsultationRecordVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrConsultationRecordVO strConsultationRecordVO:list) {
+                if("".equals(strConsultationRecordVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strConsultationRecordVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strConsultationRecordVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrConsultationRecord> strConsultationRecordList= Lists.newArrayList();
+            strConsultationRecordList= BeanUtil.listCopyTo(list,StrConsultationRecord.class);
+            execute(strConsultationRecordList);
+
+            return RespDTO.onSuc(strConsultationRecordList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrConsultationRecord> list){
+        try {
+            List<StrConsultationRecord> addE = Lists.newLinkedList();
+            List<StrConsultationRecord> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrConsultationRecord strConsultationRecord = this.getOne(new QueryWrapper<StrConsultationRecord>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strConsultationRecord != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strConsultationRecordService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-会诊记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 70 - 1
src/main/java/com/diagbot/facade/data/AStrConsultationResultFacade.java

@@ -1,26 +1,41 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrConsultationResult;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrConsultationResultServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrConsultationResultVO;
+import com.diagbot.vo.str.StrConsultationResultVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * @Description:会诊结果单-业务类
+ * @Author:liuqq
+ * @time: ${DATE} ${TIME}
+ **/
 @Component
 public class AStrConsultationResultFacade extends StrConsultationResultServiceImpl {
 
+    @Autowired
+    @Qualifier("strConsultationResultServiceImpl")
+    private StrConsultationResultServiceImpl strConsultationResultService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -87,4 +102,58 @@ public class AStrConsultationResultFacade extends StrConsultationResultServiceIm
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrConsultationResultVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrConsultationResultVO strConsultationResultVO:list) {
+                if("".equals(strConsultationResultVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strConsultationResultVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strConsultationResultVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrConsultationResult> strConsultationResultList= Lists.newArrayList();
+            strConsultationResultList= BeanUtil.listCopyTo(list,StrConsultationResult.class);
+            execute(strConsultationResultList);
+
+            return RespDTO.onSuc(strConsultationResultList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrConsultationResult> list){
+        try {
+            List<StrConsultationResult> addE = Lists.newLinkedList();
+            List<StrConsultationResult> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrConsultationResult strConsultationResult = this.getOne(new QueryWrapper<StrConsultationResult>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strConsultationResult != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strConsultationResultService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-会诊结果单","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrCrisisNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrCrisisNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrCrisisNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrCrisisNoteVO;
+import com.diagbot.vo.str.StrCrisisNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrCrisisNoteFacade extends StrCrisisNoteServiceImpl {
+
+    @Autowired
+    @Qualifier("strCrisisNoteServiceImpl")
+    private StrCrisisNoteServiceImpl strCrisisNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -82,4 +93,58 @@ public class AStrCrisisNoteFacade extends StrCrisisNoteServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrCrisisNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrCrisisNoteVO strCrisisNoteVO:list) {
+                if("".equals(strCrisisNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strCrisisNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strCrisisNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrCrisisNote> strCrisisNoteList= Lists.newArrayList();
+            strCrisisNoteList= BeanUtil.listCopyTo(list,StrCrisisNote.class);
+            execute(strCrisisNoteList);
+
+            return RespDTO.onSuc(strCrisisNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrCrisisNote> list){
+        try {
+            List<StrCrisisNote> addE = Lists.newLinkedList();
+            List<StrCrisisNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrCrisisNote strCrisisNote = this.getOne(new QueryWrapper<StrCrisisNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strCrisisNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strCrisisNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-危急值记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrDeathDiscussionFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrDeathDiscussion;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrDeathDiscussionServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrDeathDiscussionVO;
+import com.diagbot.vo.str.StrDeathDiscussionVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,9 @@ import java.util.Map;
 
 @Component
 public class AStrDeathDiscussionFacade extends StrDeathDiscussionServiceImpl {
+    @Autowired
+    @Qualifier("strDeathDiscussionServiceImpl")
+    private StrDeathDiscussionServiceImpl strDeathDiscussionService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -85,4 +95,58 @@ public class AStrDeathDiscussionFacade extends StrDeathDiscussionServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrDeathDiscussionVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrDeathDiscussionVO strDeathDiscussionVO:list) {
+                if("".equals(strDeathDiscussionVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strDeathDiscussionVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strDeathDiscussionVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrDeathDiscussion> strDeathDiscussionList= Lists.newArrayList();
+            strDeathDiscussionList= BeanUtil.listCopyTo(list,StrDeathDiscussion.class);
+            execute(strDeathDiscussionList);
+
+            return RespDTO.onSuc(strDeathDiscussionList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrDeathDiscussion> list){
+        try {
+            List<StrDeathDiscussion> addE = Lists.newLinkedList();
+            List<StrDeathDiscussion> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrDeathDiscussion strDeathDiscussion = this.getOne(new QueryWrapper<StrDeathDiscussion>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strDeathDiscussion != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strDeathDiscussionService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-死亡病例讨论记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrDeathNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrDeathNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrDeathNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrDeathNoteVO;
+import com.diagbot.vo.str.StrDeathNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrDeathNoteFacade extends StrDeathNoteServiceImpl {
+
+    @Autowired
+    @Qualifier("strDeathNoteServiceImpl")
+    private StrDeathNoteServiceImpl strDeathNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -85,4 +96,58 @@ public class AStrDeathNoteFacade extends StrDeathNoteServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrDeathNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrDeathNoteVO strDeathNoteVO:list) {
+                if("".equals(strDeathNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strDeathNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strDeathNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrDeathNote> strDeathNoteList= Lists.newArrayList();
+            strDeathNoteList= BeanUtil.listCopyTo(list,StrDeathNote.class);
+            execute(strDeathNoteList);
+
+            return RespDTO.onSuc(strDeathNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrDeathNote> list){
+        try {
+            List<StrDeathNote> addE = Lists.newLinkedList();
+            List<StrDeathNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrDeathNote strDeathNote = this.getOne(new QueryWrapper<StrDeathNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strDeathNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strDeathNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-死亡记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrDifficultCaseFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrDifficultCase;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrDifficultCaseServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrDifficultCaseVO;
+import com.diagbot.vo.str.StrDifficultCaseVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrDifficultCaseFacade extends StrDifficultCaseServiceImpl{
+
+    @Autowired
+    @Qualifier("strDifficultCaseServiceImpl")
+    private StrDifficultCaseServiceImpl strDifficultCaseService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -82,4 +93,58 @@ public class AStrDifficultCaseFacade extends StrDifficultCaseServiceImpl{
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrDifficultCaseVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrDifficultCaseVO strDifficultCaseVO:list) {
+                if("".equals(strDifficultCaseVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strDifficultCaseVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strDifficultCaseVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrDifficultCase> strDifficultCaseList= Lists.newArrayList();
+            strDifficultCaseList= BeanUtil.listCopyTo(list,StrDifficultCase.class);
+            execute(strDifficultCaseList);
+
+            return RespDTO.onSuc(strDifficultCaseList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrDifficultCase> list){
+        try {
+            List<StrDifficultCase> addE = Lists.newLinkedList();
+            List<StrDifficultCase> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrDifficultCase strDifficultCase = this.getOne(new QueryWrapper<StrDifficultCase>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strDifficultCase != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strDifficultCaseService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-死亡记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrFirstRecordFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrFirstRecord;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrFirstRecordServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrFirstRecordVO;
+import com.diagbot.vo.str.StrFirstRecordVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrFirstRecordFacade extends StrFirstRecordServiceImpl {
 
+    @Autowired
+    @Qualifier("strFirstRecordServiceImpl")
+    private StrFirstRecordServiceImpl strFirstRecordService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -83,4 +93,58 @@ public class AStrFirstRecordFacade extends StrFirstRecordServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrFirstRecordVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrFirstRecordVO strFirstRecordVO:list) {
+                if("".equals(strFirstRecordVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strFirstRecordVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strFirstRecordVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrFirstRecord> strFirstRecordList= Lists.newArrayList();
+            strFirstRecordList= BeanUtil.listCopyTo(list,StrFirstRecord.class);
+            execute(strFirstRecordList);
+
+            return RespDTO.onSuc(strFirstRecordList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrFirstRecord> list){
+        try {
+            List<StrFirstRecord> addE = Lists.newLinkedList();
+            List<StrFirstRecord> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrFirstRecord strFirstRecord = this.getOne(new QueryWrapper<StrFirstRecord>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strFirstRecord != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strFirstRecordService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-首次病程录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrIllCriticallyFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrIllCritically;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrIllCriticallyServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrIllCriticallyVO;
+import com.diagbot.vo.str.StrIllCriticallyVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrIllCriticallyFacade extends StrIllCriticallyServiceImpl {
 
+    @Autowired
+    @Qualifier("strIllCriticallyServiceImpl")
+    private StrIllCriticallyServiceImpl strIllCriticallyService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -82,4 +92,58 @@ public class AStrIllCriticallyFacade extends StrIllCriticallyServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrIllCriticallyVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrIllCriticallyVO strIllCriticallyVO:list) {
+                if("".equals(strIllCriticallyVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strIllCriticallyVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strIllCriticallyVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrIllCritically> strIllCriticallyList= Lists.newArrayList();
+            strIllCriticallyList= BeanUtil.listCopyTo(list,StrIllCritically.class);
+            execute(strIllCriticallyList);
+
+            return RespDTO.onSuc(strIllCriticallyList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrIllCritically> list){
+        try {
+            List<StrIllCritically> addE = Lists.newLinkedList();
+            List<StrIllCritically> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrIllCritically strIllCritically = this.getOne(new QueryWrapper<StrIllCritically>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strIllCritically != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strIllCriticallyService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-病危通知单","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrIllSeriouslFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrIllSeriousl;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrIllSeriouslServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrIllSeriouslVO;
+import com.diagbot.vo.str.StrIllSeriouslVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrIllSeriouslFacade extends StrIllSeriouslServiceImpl {
 
+    @Autowired
+    @Qualifier("strIllSeriouslServiceImpl")
+    private StrIllSeriouslServiceImpl strIllSeriouslService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -82,4 +92,58 @@ public class AStrIllSeriouslFacade extends StrIllSeriouslServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrIllSeriouslVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrIllSeriouslVO strIllSeriouslVO:list) {
+                if("".equals(strIllSeriouslVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strIllSeriouslVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strIllSeriouslVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrIllSeriousl> strIllSeriouslList= Lists.newArrayList();
+            strIllSeriouslList= BeanUtil.listCopyTo(list,StrIllSeriousl.class);
+            execute(strIllSeriouslList);
+
+            return RespDTO.onSuc(strIllSeriouslList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrIllSeriousl> list){
+        try {
+            List<StrIllSeriousl> addE = Lists.newLinkedList();
+            List<StrIllSeriousl> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrIllSeriousl strIllSeriousl = this.getOne(new QueryWrapper<StrIllSeriousl>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strIllSeriousl != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strIllSeriouslService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-病重通知单","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrLeaveHospitalFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrLeaveHospital;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrLeaveHospitalServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrLeaveHospitalVO;
+import com.diagbot.vo.str.StrLeaveHospitalVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrLeaveHospitalFacade extends StrLeaveHospitalServiceImpl {
+
+    @Autowired
+    @Qualifier("strLeaveHospitalServiceImpl")
+    private StrLeaveHospitalServiceImpl strLeaveHospitalService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -85,4 +96,58 @@ public class AStrLeaveHospitalFacade extends StrLeaveHospitalServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrLeaveHospitalVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrLeaveHospitalVO strLeaveHospitalVO:list) {
+                if("".equals(strLeaveHospitalVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strLeaveHospitalVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strLeaveHospitalVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrLeaveHospital> strLeaveHospitalList= Lists.newArrayList();
+            strLeaveHospitalList= BeanUtil.listCopyTo(list,StrLeaveHospital.class);
+            execute(strLeaveHospitalList);
+
+            return RespDTO.onSuc(strLeaveHospitalList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrLeaveHospital> list){
+        try {
+            List<StrLeaveHospital> addE = Lists.newLinkedList();
+            List<StrLeaveHospital> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrLeaveHospital strLeaveHospital = this.getOne(new QueryWrapper<StrLeaveHospital>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strLeaveHospital != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strLeaveHospitalService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-出院小结","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrOperativeFirstRecord.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrOperativeFirstRecord;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrOperativeFirstRecordServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrOperativeFirstRecordVO;
+import com.diagbot.vo.str.StrOperativeFirstRecordVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrOperativeFirstRecord extends StrOperativeFirstRecordServiceImpl {
 
+    @Autowired
+    @Qualifier("strOperativeFirstRecordServiceImpl")
+    private StrOperativeFirstRecordServiceImpl strOperativeFirstRecordService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -87,4 +97,58 @@ public class AStrOperativeFirstRecord extends StrOperativeFirstRecordServiceImpl
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrOperativeFirstRecordVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrOperativeFirstRecordVO strOperativeFirstRecordVO:list) {
+                if("".equals(strOperativeFirstRecordVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strOperativeFirstRecordVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strOperativeFirstRecordVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrOperativeFirstRecord> strOperativeFirstRecordList= Lists.newArrayList();
+            strOperativeFirstRecordList= BeanUtil.listCopyTo(list,StrOperativeFirstRecord.class);
+            execute(strOperativeFirstRecordList);
+
+            return RespDTO.onSuc(strOperativeFirstRecordList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrOperativeFirstRecord> list){
+        try {
+            List<StrOperativeFirstRecord> addE = Lists.newLinkedList();
+            List<StrOperativeFirstRecord> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrOperativeFirstRecord strOperativeFirstRecord = this.getOne(new QueryWrapper<StrOperativeFirstRecord>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strOperativeFirstRecord != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strOperativeFirstRecordService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-术后首程","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrOperativeNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrOperativeNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrOperativeNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrOperativeNoteVO;
+import com.diagbot.vo.str.StrOperativeNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrOperativeNoteFacade extends StrOperativeNoteServiceImpl {
+
+    @Autowired
+    @Qualifier("strOperativeNoteServiceImpl")
+    private StrOperativeNoteServiceImpl strOperativeNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -86,4 +97,58 @@ public class AStrOperativeNoteFacade extends StrOperativeNoteServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrOperativeNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrOperativeNoteVO strOperativeNoteVO:list) {
+                if("".equals(strOperativeNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strOperativeNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strOperativeNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrOperativeNote> strOperativeNoteList= Lists.newArrayList();
+            strOperativeNoteList= BeanUtil.listCopyTo(list,StrOperativeNote.class);
+            execute(strOperativeNoteList);
+
+            return RespDTO.onSuc(strOperativeNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrOperativeNote> list){
+        try {
+            List<StrOperativeNote> addE = Lists.newLinkedList();
+            List<StrOperativeNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrOperativeNote strOperativeNote = this.getOne(new QueryWrapper<StrOperativeNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strOperativeNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strOperativeNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-手术记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 2
src/main/java/com/diagbot/facade/data/AStrPeriodConclusionFacade.java

@@ -1,18 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrPeriodConclusion;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrPeriodConclusionServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
-import com.diagbot.vo.data.AStrAdmissionNoteVO;
 import com.diagbot.vo.data.AStrPeriodConclusionVO;
+import com.diagbot.vo.str.StrPeriodConclusionVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -22,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrPeriodConclusionFacade extends StrPeriodConclusionServiceImpl {
 
+    @Autowired
+    @Qualifier("strPeriodConclusionServiceImpl")
+    private StrPeriodConclusionServiceImpl strPeriodConclusionService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -85,4 +94,58 @@ public class AStrPeriodConclusionFacade extends StrPeriodConclusionServiceImpl {
         return flag;
     }
 
+    public RespDTO execDealData(List<StrPeriodConclusionVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrPeriodConclusionVO strPeriodConclusionVO:list) {
+                if("".equals(strPeriodConclusionVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strPeriodConclusionVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strPeriodConclusionVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrPeriodConclusion> strPeriodConclusionList= Lists.newArrayList();
+            strPeriodConclusionList= BeanUtil.listCopyTo(list,StrPeriodConclusion.class);
+            execute(strPeriodConclusionList);
+
+            return RespDTO.onSuc(strPeriodConclusionList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrPeriodConclusion> list){
+        try {
+            List<StrPeriodConclusion> addE = Lists.newLinkedList();
+            List<StrPeriodConclusion> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrPeriodConclusion strPeriodConclusion = this.getOne(new QueryWrapper<StrPeriodConclusion>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strPeriodConclusion != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strPeriodConclusionService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-阶段小结","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
+
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrPreoperativeDiscussionFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrPreoperativeDiscussion;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrPreoperativeDiscussionServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrPreoperativeDiscussionVO;
+import com.diagbot.vo.str.StrPreoperativeDiscussionVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrPreoperativeDiscussionFacade extends StrPreoperativeDiscussionServiceImpl {
+
+    @Autowired
+    @Qualifier("strPreoperativeDiscussionServiceImpl")
+    private StrPreoperativeDiscussionServiceImpl strPreoperativeDiscussionService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -84,4 +95,58 @@ public class AStrPreoperativeDiscussionFacade extends StrPreoperativeDiscussionS
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrPreoperativeDiscussionVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrPreoperativeDiscussionVO strPreoperativeDiscussionVO:list) {
+                if("".equals(strPreoperativeDiscussionVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strPreoperativeDiscussionVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strPreoperativeDiscussionVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrPreoperativeDiscussion> strPreoperativeDiscussionList= Lists.newArrayList();
+            strPreoperativeDiscussionList= BeanUtil.listCopyTo(list,StrPreoperativeDiscussion.class);
+            execute(strPreoperativeDiscussionList);
+
+            return RespDTO.onSuc(strPreoperativeDiscussionList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrPreoperativeDiscussion> list){
+        try {
+            List<StrPreoperativeDiscussion> addE = Lists.newLinkedList();
+            List<StrPreoperativeDiscussion> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrPreoperativeDiscussion strPreoperativeDiscussion = this.getOne(new QueryWrapper<StrPreoperativeDiscussion>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strPreoperativeDiscussion != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strPreoperativeDiscussionService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-术前讨论小结","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrRescueNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrRescueNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrRescueNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrRescueNoteVO;
+import com.diagbot.vo.str.StrRescueNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrRescueNoteFacade extends StrRescueNoteServiceImpl {
+
+    @Autowired
+    @Qualifier("strRescueNoteServiceImpl")
+    private StrRescueNoteServiceImpl strRescueNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -84,4 +95,58 @@ public class AStrRescueNoteFacade extends StrRescueNoteServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrRescueNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrRescueNoteVO strRescueNoteVO:list) {
+                if("".equals(strRescueNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strRescueNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strRescueNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrRescueNote> strRescueNoteList= Lists.newArrayList();
+            strRescueNoteList= BeanUtil.listCopyTo(list,StrRescueNote.class);
+            execute(strRescueNoteList);
+
+            return RespDTO.onSuc(strRescueNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrRescueNote> list){
+        try {
+            List<StrRescueNote> addE = Lists.newLinkedList();
+            List<StrRescueNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrRescueNote strRescueNote = this.getOne(new QueryWrapper<StrRescueNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strRescueNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strRescueNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-抢救记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrTransferInNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrTransferInNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrTransferInNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrTransferInNoteVO;
+import com.diagbot.vo.str.StrTransferInNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrTransferInNoteFacade extends StrTransferInNoteServiceImpl {
 
+    @Autowired
+    @Qualifier("strTransferInNoteServiceImpl")
+    private StrTransferInNoteServiceImpl strTransferInNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -84,4 +94,58 @@ public class AStrTransferInNoteFacade extends StrTransferInNoteServiceImpl {
         return flag;
     }
 
+    public RespDTO execDealData(List<StrTransferInNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrTransferInNoteVO strTransferInNoteVO:list) {
+                if("".equals(strTransferInNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strTransferInNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strTransferInNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrTransferInNote> strTransferInNoteList= Lists.newArrayList();
+            strTransferInNoteList= BeanUtil.listCopyTo(list,StrTransferInNote.class);
+            execute(strTransferInNoteList);
+
+            return RespDTO.onSuc(strTransferInNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrTransferInNote> list){
+        try {
+            List<StrTransferInNote> addE = Lists.newLinkedList();
+            List<StrTransferInNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrTransferInNote strTransferInNote = this.getOne(new QueryWrapper<StrTransferInNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strTransferInNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strTransferInNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-转入记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
+
 }

+ 65 - 1
src/main/java/com/diagbot/facade/data/AStrTransferOutNoteFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrTransferOutNote;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrTransferOutNoteServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrTransferOutNoteVO;
+import com.diagbot.vo.str.StrTransferOutNoteVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,6 +28,9 @@ import java.util.Map;
 @Component
 public class AStrTransferOutNoteFacade extends StrTransferOutNoteServiceImpl {
 
+    @Autowired
+    @Qualifier("strTransferOutNoteServiceImpl")
+    private StrTransferOutNoteServiceImpl strTransferOutNoteService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -82,4 +92,58 @@ public class AStrTransferOutNoteFacade extends StrTransferOutNoteServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrTransferOutNoteVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrTransferOutNoteVO strTransferOutNoteVO:list) {
+                if("".equals(strTransferOutNoteVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strTransferOutNoteVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strTransferOutNoteVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrTransferOutNote> strTransferOutNoteList= Lists.newArrayList();
+            strTransferOutNoteList= BeanUtil.listCopyTo(list,StrTransferOutNote.class);
+            execute(strTransferOutNoteList);
+
+            return RespDTO.onSuc(strTransferOutNoteList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrTransferOutNote> list){
+        try {
+            List<StrTransferOutNote> addE = Lists.newLinkedList();
+            List<StrTransferOutNote> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrTransferOutNote strTransferOutNote = this.getOne(new QueryWrapper<StrTransferOutNote>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strTransferOutNote != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strTransferOutNoteService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-转出记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 66 - 1
src/main/java/com/diagbot/facade/data/AStrWardRecordFacade.java

@@ -1,17 +1,24 @@
-package com.diagbot.facade.data;
+package com.diagbot.facade.str;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ColumnZhAndChDTO;
 import com.diagbot.entity.StrWardRecord;
+import com.diagbot.facade.data.AMedAbnormalInfoFacade;
+import com.diagbot.facade.data.ColumnFacade;
 import com.diagbot.service.impl.StrWardRecordServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.MapUtil;
 import com.diagbot.vo.data.AStrWardRecordVO;
+import com.diagbot.vo.str.StrWardRecordVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -20,6 +27,10 @@ import java.util.Map;
 
 @Component
 public class AStrWardRecordFacade extends StrWardRecordServiceImpl {
+
+    @Autowired
+    @Qualifier("strWardRecordServiceImpl")
+    private StrWardRecordServiceImpl strWardRecordService;
     @Autowired
     private ColumnFacade columnFacade;
     @Autowired
@@ -84,4 +95,58 @@ public class AStrWardRecordFacade extends StrWardRecordServiceImpl {
         }
         return flag;
     }
+
+    public RespDTO execDealData(List<StrWardRecordVO> list){
+        if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (StrWardRecordVO strWardRecordVO:list) {
+                if("".equals(strWardRecordVO.getRecId())) {
+                    return RespDTO.onError("请输入记录编号!");
+                }else if(strWardRecordVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(strWardRecordVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
+            //初始、格式化数据
+            List<StrWardRecord> strWardRecordList= Lists.newArrayList();
+            strWardRecordList= BeanUtil.listCopyTo(list,StrWardRecord.class);
+            execute(strWardRecordList);
+
+            return RespDTO.onSuc(strWardRecordList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    public void execute(List<StrWardRecord> list){
+        try {
+            List<StrWardRecord> addE = Lists.newLinkedList();
+            List<StrWardRecord> updateE = Lists.newLinkedList();
+            if (list != null && list.size() > 0) {
+                list.stream().forEach(s -> {
+                    StrWardRecord strWardRecord = this.getOne(new QueryWrapper<StrWardRecord>()
+                            .eq("rec_id", s.getRecId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("behospital_code",s.getBehospitalCode()), false);
+                    if (strWardRecord != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
+                    }
+                });
+            }
+            if(addE.size()>0){
+                strWardRecordService.saveBatch(addE);
+            }
+            if(updateE.size()>0){
+                this.baseMapper.updateBatchByKey(updateE);
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("结构化-查房记录","", JSON.toJSONString(list),"",e.getMessage());
+        }
+    }
 }

+ 9 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -147,6 +147,15 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<HomePageNumDTO> homePageLevelStatistics(FilterOrderVO filterOrderVO);
 
+    /**
+     * 病历质控报表
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    public List<QualityControlDTO> getQualityControl(BehospitalPageVO behospitalPageVO);
+
+
     /**
      * 各科室缺陷占比(主任医生)
      *

+ 9 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -147,6 +147,15 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      */
     public List<HomePageNumDTO> homePageLevelStatistics(FilterOrderVO filterOrderVO);
 
+    /**
+     * 病历质控报表
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    public List<QualityControlDTO> getQualityControl(BehospitalPageVO behospitalPageVO);
+
+
     /**
      * 各科室缺陷占比(主任医生)
      *

+ 12 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -213,6 +213,18 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return baseMapper.homePageLevelStatistics(filterOrderVO);
     }
 
+    /**
+     * 病历质控报表
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    @Override
+    public List<QualityControlDTO> getQualityControl(BehospitalPageVO behospitalPageVO) {
+        return baseMapper.getQualityControl(behospitalPageVO);
+    }
+
+
     /**
      * 各科室缺陷占比(主任医生)
      *

+ 1 - 1
src/main/java/com/diagbot/util/ColumnCacheUtil.java

@@ -1,6 +1,6 @@
 package com.diagbot.util;
 
-import com.diagbot.facade.data.*;
+import com.diagbot.facade.str.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.ApplicationArguments;

+ 2 - 2
src/main/java/com/diagbot/vo/AnalyzeRunVO.java

@@ -22,6 +22,6 @@ public class AnalyzeRunVO {
     private Long modeId;
     // 归档字段
     private String isPlacefile = "0";
-
-    private Integer NeedGroup = 0;
+    //默认分组
+    private Integer NeedGroup = 1;
 }

+ 255 - 0
src/main/java/com/diagbot/web/ADataStrController.java

@@ -0,0 +1,255 @@
+/*
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.str.*;
+import com.diagbot.vo.str.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/qc/data_str")
+@Api(value = "对接接口API-结构化", tags = { "对接接口API-结构化" })
+public class ADataStrController {
+
+    @Autowired
+    private AStrAdmissionNoteFacade aStrAdmissionNoteFacade;
+
+    @Autowired
+    private AStrBloodResultFacade aStrBloodResultFacade;
+
+    @Autowired
+    private AStrBloodTransfusionFacade aStrBloodTransfusionFacade;
+
+    @Autowired
+    private AStrConsultationApplyFacade aStrConsultationApplyFacade;
+
+    @Autowired
+    private AStrCrisisNoteFacade aStrCrisisNoteFacade;
+
+    @Autowired
+    private AStrConsultationRecordFacade aStrConsultationRecordFacade;
+
+    @Autowired
+    private AStrConsultationResultFacade aStrConsultationResultFacade;
+
+    @Autowired
+    private AStrConsultationNoteFacade aStrConsultationNoteFacade;
+
+    @Autowired
+    private AStrFirstRecordFacade aStrFirstRecordFacade;
+
+    @Autowired
+    private AStrDifficultCaseFacade aStrDifficultCaseFacade;
+
+    @Autowired
+    private AStrDeathDiscussionFacade aStrDeathDiscussionFacade;
+
+    @Autowired
+    private AStrDeathNoteFacade aStrDeathNoteFacade;
+
+    @Autowired
+    private AStrOperativeFirstRecord aStrOperativeFirstRecordFacade;
+
+    @Autowired
+    private AStrLeaveHospitalFacade aStrLeaveHospitalFacade;
+
+    @Autowired
+    private AStrIllCriticallyFacade aStrIllCriticallyFacade;
+
+    @Autowired
+    private AStrIllSeriouslFacade aStrIllSeriouslFacade;
+
+
+    @Autowired
+    private AStrPreoperativeDiscussionFacade aStrPreoperativeDiscussionFacade;
+
+    @Autowired
+    private AStrPeriodConclusionFacade aStrPeriodConclusionFacade;
+
+    @Autowired
+    private AStrRescueNoteFacade aStrRescueNoteFacade;
+
+    @Autowired
+    private AStrTransferInNoteFacade aStrTransferInNoteFacade;
+
+    @Autowired
+    private AStrTransferOutNoteFacade aStrTransferOutNoteFacade;
+
+    @Autowired
+    private AStrWardRecordFacade aStrWardRecordFacade;
+
+    @Autowired
+    private AStrOperativeNoteFacade aStrOperativeNoteFacade;
+
+    @ApiOperation(value = "入院记录")
+    @PostMapping("/sendAdmissionNote")
+    @SysLogger("sendAdmissionNote")
+    public RespDTO sendAdmissionNote(@RequestBody List<StrAdmissionNoteVO> list){
+        return aStrAdmissionNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "输血后效果评价")
+    @PostMapping("/sendBloodResult")
+    @SysLogger("sendBloodResult")
+    public RespDTO sendBloodResult(@RequestBody List<StrBloodResultVO> list){
+        return aStrBloodResultFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "输血/血制品病程记录")
+    @PostMapping("/sendBloodTransfusion")
+    @SysLogger("sendBloodTransfusion")
+    public RespDTO sendBloodTransfusion(@RequestBody List<StrBloodTransfusionVO> list){
+        return aStrBloodTransfusionFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "会诊申请单")
+    @PostMapping("/sendConsultationApply")
+    @SysLogger("sendConsultationApply")
+    public RespDTO sendConsultationApply(@RequestBody List<StrConsultationApplyVO> list){
+        return aStrConsultationApplyFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "会诊单(申请和结果)")
+    @PostMapping("/sendConsultationNote")
+    @SysLogger("sendConsultationNote")
+    public RespDTO sendConsultationNote(@RequestBody List<StrConsultationNoteVO> list){
+        return aStrConsultationNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "会诊记录")
+    @PostMapping("/sendConsultationRecord")
+    @SysLogger("sendConsultationRecord")
+    public RespDTO sendConsultationRecord(@RequestBody List<StrConsultationRecordVO> list){
+        return aStrConsultationRecordFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "会诊结果单")
+    @PostMapping("/sendConsultationResult")
+    @SysLogger("sendConsultationResult")
+    public RespDTO sendConsultationResult(@RequestBody List<StrConsultationResultVO> list){
+        return aStrConsultationResultFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "危急值记录")
+    @PostMapping("/sendCrisisNote")
+    @SysLogger("sendCrisisNote")
+    public RespDTO sendCrisisNote(@RequestBody List<StrCrisisNoteVO> list){
+        return aStrCrisisNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "死亡病例讨论记录")
+    @PostMapping("/sendDeathDiscussion")
+    @SysLogger("sendDeathDiscussion")
+    public RespDTO sendDeathDiscussion(@RequestBody List<StrDeathDiscussionVO> list){
+        return aStrDeathDiscussionFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "死亡记录")
+    @PostMapping("/sendDeathNote")
+    @SysLogger("sendDeathNote")
+    public RespDTO sendDeathNote(@RequestBody List<StrDeathNoteVO> list){
+        return aStrDeathNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "疑难病例讨论记录")
+    @PostMapping("/sendDifficultCase")
+    @SysLogger("sendDifficultCase")
+    public RespDTO sendDifficultCase(@RequestBody List<StrDifficultCaseVO> list){
+        return aStrDifficultCaseFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "首次病程录")
+    @PostMapping("/sendFirstRecord")
+    @SysLogger("sendFirstRecord")
+    public RespDTO sendFirstRecord(@RequestBody List<StrFirstRecordVO> list){
+        return aStrFirstRecordFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "病危通知单")
+    @PostMapping("/sendIllCritically")
+    @SysLogger("sendIllCritically")
+    public RespDTO sendIllCritically(@RequestBody List<StrIllCriticallyVO> list){
+        return aStrIllCriticallyFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "病重通知单")
+    @PostMapping("/sendIllSeriousl")
+    @SysLogger("sendIllSeriousl")
+    public RespDTO sendIllSeriousl(@RequestBody List<StrIllSeriouslVO> list){
+        return aStrIllSeriouslFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "出院小结")
+    @PostMapping("/sendLeaveHospital")
+    @SysLogger("sendLeaveHospital")
+    public RespDTO sendLeaveHospital(@RequestBody List<StrLeaveHospitalVO> list){
+        return aStrLeaveHospitalFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "术后首程")
+    @PostMapping("/sendOperativeFirstRecord")
+    @SysLogger("sendOperativeFirstRecord")
+    public RespDTO sendOperativeFirstRecord(@RequestBody List<StrOperativeFirstRecordVO> list){
+        return aStrOperativeFirstRecordFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "手术记录")
+    @PostMapping("/sendOperativeNote")
+    @SysLogger("sendOperativeNote")
+    public RespDTO sendOperativeNote(@RequestBody List<StrOperativeNoteVO> list){
+        return aStrOperativeNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "查房记录")
+    @PostMapping("/sendWardRecord")
+    @SysLogger("sendWardRecord")
+    public RespDTO sendWardRecord(@RequestBody List<StrWardRecordVO> list){
+        return aStrWardRecordFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "转出记录")
+    @PostMapping("/sendTransferOutNote")
+    @SysLogger("sendTransferOutNote")
+    public RespDTO sendTransferOutNote(@RequestBody List<StrTransferOutNoteVO> list){
+        return aStrTransferOutNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "转入记录")
+    @PostMapping("/sendTransferInNote")
+    @SysLogger("sendTransferInNote")
+    public RespDTO sendTransferInNote(@RequestBody List<StrTransferInNoteVO> list){
+        return aStrTransferInNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "抢救记录")
+    @PostMapping("/sendRescueNote")
+    @SysLogger("sendRescueNote")
+    public RespDTO sendRescueNote(@RequestBody List<StrRescueNoteVO> list){
+        return aStrRescueNoteFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "阶段小结")
+    @PostMapping("/sendPeriodConclusion")
+    @SysLogger("sendPeriodConclusion")
+    public RespDTO sendPeriodConclusion(@RequestBody List<StrPeriodConclusionVO> list){
+        return aStrPeriodConclusionFacade.execDealData(list);
+    }
+
+    @ApiOperation(value = "术前讨论小结")
+    @PostMapping("/sendPreoperativeDiscussion")
+    @SysLogger("sendPreoperativeDiscussion")
+    public RespDTO sendPreoperativeDiscussion(@RequestBody List<StrPreoperativeDiscussionVO> list){
+        return aStrPreoperativeDiscussionFacade.execDealData(list);
+    }
+
+}
+*/

+ 19 - 0
src/main/java/com/diagbot/web/ConsoleController.java

@@ -442,6 +442,25 @@ public class ConsoleController {
         return RespDTO.onSuc(consoleFacade.homePageLevelStatistics(filterOrderVO));
     }
 
+    /**
+     * 病历质控报表
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    @ApiOperation(value = "病历质控报表[by:cy]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "level: 病历等级 <br>" +
+                    "name: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc: 排序(降序) <br>" +
+                    "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
+    @PostMapping("/qualityControl")
+    @SysLogger("qualityControl")
+    public RespDTO<List<QualityControlDTO>> getQualityControl(@RequestBody BehospitalPageVO behospitalPageVO) {
+        return RespDTO.onSuc(consoleFacade.getQualityControl(behospitalPageVO));
+    }
+
     /**
      * 病案首页不合格数病历详情(内页)
      * @param qcResultPageVO

+ 285 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -143,6 +143,291 @@
         </if>
     </select>
 
+    <select id="getQualityControl" resultType="com.diagbot.dto.QualityControlDTO">
+        SELECT m.* FROM(
+        SELECT
+        a.name AS NAME,
+        a.behospital_code AS behospitalCode,
+        a.doctor_name AS doctorName,
+        a.beh_dept_name AS deptName,
+        a.beh_dept_id AS deptId,
+        a.leave_hospital_date AS leaveHospitalDate,
+        c.behospital_code,
+        c.hospital_id,
+        c.admissionNote,
+        c.firstCourseNote,
+        c.medHomePage,
+        c.docAdviceNote,
+        c.courseRecord,
+        c.operationInfo,
+        c.dischargeNote,
+        c.admissionNoteScore,
+        c.firstCourseNoteScore,
+        c. medHomePageScore,
+        c.docAdviceNoteScore,
+        c.courseRecordScore,
+        c.operationInfoScore,
+        c.dischargeNoteScore,
+        c.otherCase,
+        (100.0-c.score_res) AS otherCaseScore,
+        IFNULL(b.level,'未评分') AS `level`,
+        g.check_name AS ch_name,
+        h.check_name AS mr_name
+        FROM
+        med_behospital_info a LEFT JOIN med_qcresult_info b
+        ON a.behospital_code = b.behospital_code AND b.is_deleted = 'N'
+        LEFT JOIN  (
+        SELECT
+        t.behospital_code,
+        t.hospital_id,
+        t.admissionNote,
+        t.firstCourseNote,
+        t.medHomePage,
+        t.docAdviceNote,
+        t.courseRecord,
+        t.operationInfo,
+        t.dischargeNote,
+        t.otherCase,
+        t.score_res,
+        if(t.admissionNoteScoreOn >= t.admissionNoteTolScore, (t.admissionNoteTolScore +  t.admissionNoteScoreTh),(t.admissionNoteScoreOn +  t.admissionNoteScoreTh)) AS admissionNoteScore,
+        if(t.firstCourseNoteScoreOn >= t.firstCourseNoteTolScore, (t.firstCourseNoteTolScore +  t.firstCourseNoteScoreTh),(t.firstCourseNoteScoreOn +  t.firstCourseNoteScoreTh)) AS firstCourseNoteScore,
+        if(t.medHomePageScoreOn >= t.medHomePageTolScore, (t.medHomePageTolScore +  t.medHomePageScoreTh),(t.medHomePageScoreOn +  t.medHomePageScoreTh)) AS medHomePageScore,
+        if(t.docAdviceNoteScoreOn >= t.docAdviceNoteTolScore, (t.docAdviceNoteTolScore +  t.docAdviceNoteScoreTh),(t.docAdviceNoteScoreOn +  t.docAdviceNoteScoreTh)) AS docAdviceNoteScore,
+        if(t.courseRecordScoreOn >= t.courseRecordTolScore, (t.courseRecordTolScore +  t.courseRecordScoreTh),(t.courseRecordScoreOn +  t.courseRecordScoreTh)) AS courseRecordScore,
+        if(t.operationInfoScoreOn >= t.operationInfoTolScore, (t.operationInfoTolScore +  t.operationInfoScoreTh),(t.operationInfoScoreOn +  t.operationInfoScoreTh)) AS operationInfoScore,
+        if(t.dischargeNoteScoreOn >= t.dischargeNoteTolScore, (t.dischargeNoteTolScore +  t.dischargeNoteScoreTh),(t.dischargeNoteScoreOn +  t.dischargeNoteScoreTh)) AS dischargeNoteScore
+        from(
+        select
+         t1.*,
+        t2.admissionNoteTolScore,
+        t2.firstCourseNoteTolScore,
+        t2.medHomePageTolScore,
+        t2.docAdviceNoteTolScore,
+        t2.courseRecordTolScore,
+        t2.operationInfoTolScore,
+        t2.dischargeNoteTolScore,
+        t2.score_res FROM (
+        SELECT
+        t1.behospital_code,
+        t1.hospital_id,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 1 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS admissionNote,
+        SUM(CASE WHEN  t1.mode_id =1  AND t1.is_reject = 0 THEN t1.score ELSE 0 END) AS admissionNoteScoreOn,
+        SUM(CASE WHEN  t1.mode_id =1 THEN t1.score ELSE 0 END) AS admissionNoteScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =1 THEN t1.score ELSE 0 END)-SUM(CASE WHEN  t1.mode_id =1  AND t1.is_reject = 0 THEN t1.score ELSE 0 END)) AS admissionNoteScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 2 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS firstCourseNote,
+        SUM(CASE WHEN  t1.mode_id =2 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)  AS firstCourseNoteScoreOn,
+        SUM(CASE WHEN  t1.mode_id =2 THEN t1.score ELSE 0 END)  AS firstCourseNoteScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =2 THEN t1.score ELSE 0 END) -SUM(CASE WHEN  t1.mode_id =2 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)) AS firstCourseNoteScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 6 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS medHomePage,
+        SUM(CASE WHEN  t1.mode_id =6 AND t1.is_reject = 0 THEN t1.score ELSE 0 END) AS medHomePageScoreOn,
+        SUM(CASE WHEN  t1.mode_id =6 THEN t1.score ELSE 0 END) AS medHomePageScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =6 THEN t1.score ELSE 0 END)-SUM(CASE WHEN  t1.mode_id =6 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)) AS medHomePageScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 8 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS docAdviceNote,
+        SUM(CASE WHEN  t1.mode_id =8 AND t1.is_reject = 0 THEN t1.score ELSE 0 END) AS docAdviceNoteScoreOn,
+        SUM(CASE WHEN  t1.mode_id =8 THEN t1.score ELSE 0 END) AS docAdviceNoteScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =8 THEN t1.score ELSE 0 END)-SUM(CASE WHEN  t1.mode_id =8 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)) AS docAdviceNoteScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 56 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS courseRecord,
+        SUM(CASE WHEN  t1.mode_id =56 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)  AS courseRecordScoreOn,
+        SUM(CASE WHEN  t1.mode_id =56 THEN t1.score ELSE 0 END)  AS courseRecordScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =56 THEN t1.score ELSE 0 END)-SUM(CASE WHEN  t1.mode_id =56 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)) AS courseRecordScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 17 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS operationInfo,
+        SUM(CASE WHEN  t1.mode_id =17 AND t1.is_reject = 0 THEN t1.score ELSE 0 END) AS operationInfoScoreOn,
+        SUM(CASE WHEN  t1.mode_id =17  THEN t1.score ELSE 0 END) AS operationInfoScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =17  THEN t1.score ELSE 0 END)-SUM(CASE WHEN  t1.mode_id =17 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)) AS operationInfoScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 5 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS dischargeNote,
+        SUM(CASE WHEN  t1.mode_id =5 AND t1.is_reject = 0 THEN t1.score ELSE 0 END)  AS dischargeNoteScoreOn,
+        SUM(CASE WHEN  t1.mode_id =5 THEN t1.score ELSE 0 END)  AS dischargeNoteScoreTw,
+        (SUM(CASE WHEN  t1.mode_id =5 THEN t1.score ELSE 0 END)-GROUP_CONCAT(DISTINCT CASE WHEN t1.mode_id = 5 THEN t1.msg ELSE NULL END SEPARATOR ';' )) AS dischargeNoteScoreTh,
+        GROUP_CONCAT(DISTINCT CASE WHEN 1=1 THEN t1.msg ELSE NULL END SEPARATOR ';' ) AS otherCase
+        FROM (
+        SELECT
+        c.behospital_code,
+        c.hospital_id,
+        a.mode_id,
+        c.cases_score,
+        c.score,
+        c.msg,
+        c.is_reject,
+        c.cases_id
+        FROM
+        `qc_cases_entry` a,
+        qc_mode b,
+        med_qcresult_detail c,
+        qc_cases_hospital d,
+        med_behospital_info e
+        WHERE a.is_deleted = 'N' AND b.is_deleted = 'N' AND c.is_deleted = 'N' AND d.is_deleted = 'N'AND e.is_deleted = 'N'
+        AND a.id = c.cases_entry_id
+        AND a.mode_id = b.id
+        AND c.cases_id = d.cases_id
+        AND c.hospital_id = d.hospital_id
+        AND c.behospital_code = e.behospital_code
+        AND c.hospital_id = e.hospital_id
+        <if test="hospitalId != null">
+            and c.hospital_id = #{hospitalId}
+        </if>
+        <if test="deptName != null and deptName != ''">
+            and e.beh_dept_name= #{deptName}
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            and e.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and e.is_placefile = #{isPlacefile}
+        </if>
+        <if test="behosDateStart != null">
+            <![CDATA[ and e.behospital_date >= #{behosDateStart}]]>
+        </if>
+        <if test="behosDateEnd != null">
+            <![CDATA[ and e.behospital_date < #{behosDateEnd}]]>
+        </if>
+        <if test="leaveHosDateStart != null">
+            <![CDATA[ and e.leave_hospital_date >= #{leaveHosDateStart}]]>
+        </if>
+        <if test="leaveHosDateEnd != null">
+            <![CDATA[ and e.leave_hospital_date < #{leaveHosDateEnd}]]>
+        </if>
+        <if test="level != null and level != ''">
+            and e.level = #{level}
+        </if>
+        <if test="level != null and level != ''">
+            and e.level = #{level}
+        </if>
+        ORDER BY b.order_no, c.grade_type DESC, a.order_no
+        )t1 GROUP BY behospital_code)t1
+        LEFT JOIN (
+        SELECT m1.*, m2.score_res FROM(
+        SELECT
+        m1.hospital_id,
+        m1.behospital_code,
+        SUM(CASE WHEN  m1.mode_id =1 THEN m1.cases_score ELSE 0 END) AS admissionNoteTolScore,
+        SUM(CASE WHEN  m1.mode_id =2 THEN m1.cases_score ELSE 0 END) AS firstCourseNoteTolScore,
+        SUM(CASE WHEN  m1.mode_id =6 THEN m1.cases_score ELSE 0 END) AS medHomePageTolScore,
+        SUM(CASE WHEN  m1.mode_id =8 THEN m1.cases_score ELSE 0 END) AS docAdviceNoteTolScore,
+        SUM(CASE WHEN  m1.mode_id =56 THEN m1.cases_score ELSE 0 END) AS courseRecordTolScore,
+        SUM(CASE WHEN  m1.mode_id =17 THEN m1.cases_score ELSE 0 END) AS operationInfoTolScore,
+        SUM(CASE WHEN  m1.mode_id =5 THEN m1.cases_score ELSE 0 END) AS dischargeNoteTolScore
+        FROM (
+        SELECT
+        c.behospital_code,
+        a.mode_id,
+        c.cases_score,
+        c.cases_id,
+        c.hospital_id
+        FROM
+        `qc_cases_entry` a,
+        qc_mode b,
+        med_qcresult_detail c,
+        qc_cases_hospital d,
+        med_behospital_info e
+        WHERE a.is_deleted = 'N' AND b.is_deleted = 'N' AND c.is_deleted = 'N' AND d.is_deleted = 'N'AND e.is_deleted = 'N'
+        AND a.id = c.cases_entry_id
+        AND a.mode_id = b.id
+        AND c.cases_id = d.cases_id
+        AND c.hospital_id = d.hospital_id
+        AND c.behospital_code = e.behospital_code
+        AND c.hospital_id = e.hospital_id
+        <if test="hospitalId != null">
+            and c.hospital_id = #{hospitalId}
+        </if>
+        <if test="deptName != null and deptName != ''">
+            and e.beh_dept_name= #{deptName}
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            and e.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and e.is_placefile = #{isPlacefile}
+        </if>
+        <if test="behosDateStart != null">
+            <![CDATA[ and e.behospital_date >= #{behosDateStart}]]>
+        </if>
+        <if test="behosDateEnd != null">
+            <![CDATA[ and e.behospital_date < #{behosDateEnd}]]>
+        </if>
+        <if test="leaveHosDateStart != null">
+            <![CDATA[ and e.leave_hospital_date >= #{leaveHosDateStart}]]>
+        </if>
+        <if test="leaveHosDateEnd != null">
+            <![CDATA[ and e.leave_hospital_date < #{leaveHosDateEnd}]]>
+        </if>
+        <if test="level != null and level != ''">
+            and e.level = #{level}
+        </if>
+        <if test="level != null and level != ''">
+            and e.level = #{level}
+        </if>
+        GROUP BY mode_id
+        ORDER BY b.order_no, c.grade_type DESC, a.order_no
+        )m1  GROUP BY  behospital_code)m1 LEFT JOIN  med_qcresult_info m2
+        ON m2.is_deleted = 'N'
+        AND m1.hospital_id = m2.hospital_id
+        AND m1.behospital_code = m2.behospital_code
+        )t2
+        ON t1.hospital_id = t2.hospital_id
+        AND t1.behospital_code = t2.behospital_code)t)c
+        ON a.behospital_code = c.behospital_code
+        AND a.hospital_id = c.hospital_id
+        LEFT JOIN (SELECT * FROM med_check_info WHERE is_deleted = 'N' AND check_type = 0 ) g
+        ON a.behospital_code = g.behospital_code
+        AND a.hospital_id = g.hospital_id
+        LEFT JOIN (SELECT * FROM med_check_info WHERE is_deleted = 'N'AND check_type = 1 ) h
+        ON a.behospital_code = h.behospital_code
+        AND a.hospital_id = h.hospital_id
+        where
+        a.is_deleted = 'N'
+        <if test="deptName != null and deptName != ''">
+            and a.beh_dept_name= #{deptName}
+        </if>
+        <if test="doctorName != null and doctorName != ''">
+            and CONCAT(
+            IFNULL(a.doctor_name,''),IFNULL(a.beh_doctor_name,''),IFNULL(a.director_doctor_name,''))
+            like CONCAT('%',#{doctorName},'%')
+        </if>
+        <if test="name != null and name != ''">
+            and a.name like CONCAT('%',#{name},'%')
+        </if>
+        <if test="doctorCode != null and doctorCode != ''">
+            and (a.doctor_id = #{doctorCode}
+            or a.beh_doctor_id = #{doctorCode}
+            or a.director_doctor_id = #{doctorCode})
+        </if>
+        <if test="fileCode != null and fileCode != ''">
+            and a.file_code like CONCAT('%',#{fileCode},'%')
+        </if>
+        <if test="hospitalId != null">
+            and a.hospital_id = #{hospitalId}
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            and a.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="behosDateStart != null">
+            <![CDATA[ and a.behospital_date >= #{behosDateStart}]]>
+        </if>
+        <if test="behosDateEnd != null">
+            <![CDATA[ and a.behospital_date < #{behosDateEnd}]]>
+        </if>
+        <if test="leaveHosDateStart != null">
+            <![CDATA[ and a.leave_hospital_date >= #{leaveHosDateStart}]]>
+        </if>
+        <if test="leaveHosDateEnd != null">
+            <![CDATA[ and a.leave_hospital_date < #{leaveHosDateEnd}]]>
+        </if>
+        <if test="level != null and level != ''">
+            and a.level = #{level}
+        </if>
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and a.is_placefile = #{isPlacefile}
+        </if>
+        and a.qc_type_id != 0
+        <if test="chName != null and chName !=''">
+            AND g.ch_name like CONCAT('%',#{chName},'%')
+        </if>
+        <if test="mrName != null and mrName !=''">
+            AND h.mr_name like CONCAT('%',#{mrName},'%')
+        </if>)m
+
+    </select>
+
     <select id="getMsg" resultType="com.diagbot.dto.MsgDTO">
         SELECT b.`name` model_name,c.score,c.msg,c.cases_entry_id,c.is_reject,c.id id,c.info,
         a.cases_id cases_id, d.score cases_score,b.id model_id, a.name standard_msg,