Browse Source

调整同步,增加运行质控

lantone 5 years ago
parent
commit
08fe3275c5
28 changed files with 625 additions and 243 deletions
  1. 11 1
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  2. 11 1
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  3. 0 24
      src/main/java/com/diagbot/dto/data/ABasDeptInfoDTO.java
  4. 2 22
      src/main/java/com/diagbot/dto/data/ABasDoctorInfoDTO.java
  5. 12 0
      src/main/java/com/diagbot/dto/data/AHomePageDTO.java
  6. 8 0
      src/main/java/com/diagbot/dto/data/AMedicalRecordDTO.java
  7. 17 0
      src/main/java/com/diagbot/dto/data/AMrContentDTO.java
  8. 7 6
      src/main/java/com/diagbot/entity/BasDeptInfo.java
  9. 31 18
      src/main/java/com/diagbot/entity/BasDoctorInfo.java
  10. 30 9
      src/main/java/com/diagbot/facade/ABasDeptInfoFacade.java
  11. 35 11
      src/main/java/com/diagbot/facade/ABasDoctorInfoFacade.java
  12. 40 20
      src/main/java/com/diagbot/facade/ABehospitalInfoFacade.java
  13. 23 6
      src/main/java/com/diagbot/facade/ADoctorAdviceFacade.java
  14. 8 4
      src/main/java/com/diagbot/facade/AHomeDiagnoseInfoFacade.java
  15. 130 5
      src/main/java/com/diagbot/facade/AHomePageFacade.java
  16. 23 12
      src/main/java/com/diagbot/facade/AMedRecordTypeFacade.java
  17. 149 63
      src/main/java/com/diagbot/facade/AMedicalRecordFacade.java
  18. 7 1
      src/main/java/com/diagbot/util/ReadProperties.java
  19. 7 0
      src/main/java/com/diagbot/vo/data/ABasDoctorInfoVO.java
  20. 15 2
      src/main/java/com/diagbot/vo/data/AHomePageVO.java
  21. 9 6
      src/main/java/com/diagbot/vo/data/AMedicalRecordContentVO.java
  22. 4 2
      src/main/java/com/diagbot/vo/data/AMedicalRecordVO.java
  23. 16 0
      src/main/java/com/diagbot/vo/data/AMrContentVO.java
  24. 25 28
      src/main/java/com/diagbot/web/DataController.java
  25. 1 1
      src/main/resources/application-local.yml
  26. 2 0
      src/main/resources/jdbc.properties
  27. 1 0
      src/main/resources/mapper/BasDoctorInfoMapper.xml
  28. 1 1
      src/test/java/com/diagbot/CodeGeneration.java

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

@@ -45,7 +45,17 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/oauth/check_token").permitAll()
                 .antMatchers("/cache/clear").permitAll()
                 .antMatchers("/qc/mode/getMenu").permitAll()
-                .antMatchers("/qc/data/initData").permitAll()
+                .antMatchers("/qc/data/sendDoctorInfos").permitAll()
+                .antMatchers("/qc/data/sendDeptInfos").permitAll()
+                .antMatchers("/qc/data/sendRecordTypes").permitAll()
+                .antMatchers("/qc/data/sendMedicalRecord").permitAll()
+                .antMatchers("/qc/data/sendMrContent").permitAll()
+                .antMatchers("/qc/data/sendPatientInfo").permitAll()
+                .antMatchers("/qc/data/sendDoctorAdvice").permitAll()
+                .antMatchers("/qc/data/sendHomePage").permitAll()
+                .antMatchers("/qc/data/sendHomeDiagnose").permitAll()
+                .antMatchers("/qc/data/sendHomeOperation").permitAll()
+                .antMatchers("/qc/data/sendMrView").permitAll()
                 .antMatchers("/qc/behospitalInfo/execule").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_rpc").permitAll()
                 .antMatchers("/qc/behospitalInfo/analyze_api").permitAll()

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

@@ -88,7 +88,17 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/oauth/check_token", request)
                 || matchers("/cache/clear", request)
                 || matchers("/qc/mode/getMenu", request)
-                || matchers("/qc/data/initData", request)
+                || matchers("/qc/data/sendDoctorInfos", request)
+                || matchers("/qc/data/sendDeptInfos", request)
+                || matchers("/qc/data/sendRecordTypes", request)
+                || matchers("/qc/data/sendMedicalRecord", request)
+                || matchers("/qc/data/sendMrContent", request)
+                || matchers("/qc/data/sendPatientInfo", request)
+                || matchers("/qc/data/sendDoctorAdvice", request)
+                || matchers("/qc/data/sendHomePage", request)
+                || matchers("/qc/data/sendHomeDiagnose", request)
+                || matchers("/qc/data/sendHomeOperation", request)
+                || matchers("/qc/data/sendMrView", request)
                 || matchers("/qc/behospitalInfo/execule", request)
                 || matchers("/qc/behospitalInfo/analyze_rpc", request)
                 || matchers("/qc/behospitalInfo/analyze_api", request)

+ 0 - 24
src/main/java/com/diagbot/dto/data/ABasDeptInfoDTO.java

@@ -40,28 +40,4 @@ public class ABasDeptInfoDTO {
      */
     private String station;
 
-    /**
-     * 是否删除,N:未删除,Y:删除
-     */
-    private String isDeleted;
-
-    /**
-     * 记录创建时间
-     */
-    private LocalDateTime gmtCreate;
-
-    /**
-     * 记录修改时间,如果时间是1970年则表示纪录未修改
-     */
-    private LocalDateTime gmtModified;
-
-    /**
-     * 创建人,0表示无创建人值
-     */
-    private String creator;
-
-    /**
-     * 修改人,如果为0则表示纪录未修改
-     */
-    private String modifier;
 }

+ 2 - 22
src/main/java/com/diagbot/dto/data/ABasDoctorInfoDTO.java

@@ -32,29 +32,9 @@ public class ABasDoctorInfoDTO {
      * 职称
      */
     private String professor;
-
-    /**
-     * 是否删除,N:未删除,Y:删除
-     */
-    private String isDeleted;
-
-    /**
-     * 记录创建时间
-     */
-    private LocalDateTime gmtCreate;
-
-    /**
-     * 记录修改时间,如果时间是1970年则表示纪录未修改
-     */
-    private LocalDateTime gmtModified;
-
     /**
-     * 创建人,0表示无创建人值
+     * 职业医师资格
      */
-    private String creator;
+    private String occup;
 
-    /**
-     * 修改人,如果为0则表示纪录未修改
-     */
-    private String modifier;
 }

+ 12 - 0
src/main/java/com/diagbot/dto/data/AHomePageDTO.java

@@ -1,7 +1,10 @@
 package com.diagbot.dto.data;
 
 import java.util.Date;
+import java.util.List;
 
+import com.diagbot.vo.data.AHomeDiagnoseVO;
+import com.diagbot.vo.data.AHomeOperationVO;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -637,5 +640,14 @@ public class AHomePageDTO {
      * 转归情况
      */
     private String returnToType;
+    /**
+     * 出院诊断
+     */
+    private List<AHomeDiagnoseVO> leaveDiags;
+
+    /**
+     * 手术情况
+     */
+    private List<AHomeOperationVO> operations;
 
 }

+ 8 - 0
src/main/java/com/diagbot/dto/data/AMedicalRecordDTO.java

@@ -1,8 +1,11 @@
 package com.diagbot.dto.data;
 
+import com.diagbot.vo.data.AMedicalRecordContentVO;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 @Getter
 @Setter
 public class AMedicalRecordDTO {
@@ -37,4 +40,9 @@ public class AMedicalRecordDTO {
      * 病历标题
      */
     private String recTitle;
+
+    /**
+     * 病历内容
+     */
+    private List<AMedicalRecordContentVO> contents;
 }

+ 17 - 0
src/main/java/com/diagbot/dto/data/AMrContentDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto.data;
+
+import com.diagbot.vo.data.AMedicalRecordVO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Setter
+public class AMrContentDTO {
+
+    private List<AMedicalRecordVO> records;
+
+    private Map<String,Object> map;
+}

+ 7 - 6
src/main/java/com/diagbot/entity/BasDeptInfo.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -59,12 +60,12 @@ public class BasDeptInfo implements Serializable {
     /**
      * 记录创建时间
      */
-    private LocalDateTime gmtCreate;
+    private Date gmtCreate;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private LocalDateTime gmtModified;
+    private Date gmtModified;
 
     /**
      * 创建人,0表示无创建人值
@@ -132,18 +133,18 @@ public class BasDeptInfo implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-    public LocalDateTime getGmtCreate() {
+    public Date getGmtCreate() {
         return gmtCreate;
     }
 
-    public void setGmtCreate(LocalDateTime gmtCreate) {
+    public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
     public String getCreator() {

+ 31 - 18
src/main/java/com/diagbot/entity/BasDoctorInfo.java

@@ -3,8 +3,8 @@ package com.diagbot.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
-import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
@@ -44,6 +44,11 @@ public class BasDoctorInfo implements Serializable {
      */
     private String professor;
 
+    /**
+     * 职业医师资格
+     */
+    private String occup;
+
     /**
      * 是否删除,N:未删除,Y:删除
      */
@@ -52,12 +57,12 @@ public class BasDoctorInfo implements Serializable {
     /**
      * 记录创建时间
      */
-    private LocalDateTime gmtCreate;
+    private Date gmtCreate;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private LocalDateTime gmtModified;
+    private Date gmtModified;
 
     /**
      * 创建人,0表示无创建人值
@@ -104,6 +109,13 @@ public class BasDoctorInfo implements Serializable {
     public void setProfessor(String professor) {
         this.professor = professor;
     }
+    public String getOccup() {
+        return occup;
+    }
+
+    public void setOccup(String occup) {
+        this.occup = occup;
+    }
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -111,18 +123,18 @@ public class BasDoctorInfo implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-    public LocalDateTime getGmtCreate() {
+    public Date getGmtCreate() {
         return gmtCreate;
     }
 
-    public void setGmtCreate(LocalDateTime gmtCreate) {
+    public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
     public String getCreator() {
@@ -143,16 +155,17 @@ public class BasDoctorInfo implements Serializable {
     @Override
     public String toString() {
         return "BasDoctorInfo{" +
-            "doctorId=" + doctorId +
-            ", hospitalId=" + hospitalId +
-            ", deptId=" + deptId +
-            ", name=" + name +
-            ", professor=" + professor +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-        "}";
+                "doctorId=" + doctorId +
+                ", hospitalId=" + hospitalId +
+                ", deptId=" + deptId +
+                ", name=" + name +
+                ", professor=" + professor +
+                ", occup=" + occup +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                "}";
     }
 }

+ 30 - 9
src/main/java/com/diagbot/facade/ABasDeptInfoFacade.java

@@ -1,8 +1,11 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABasDeptInfoDTO;
 import com.diagbot.entity.BasDeptInfo;
+import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.BasDeptInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.TZDBConn;
@@ -12,6 +15,7 @@ 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;
 
 @Component
@@ -40,34 +44,51 @@ public class ABasDeptInfoFacade {
         execute(basDeptInfoList);
     }
 
+    public void executeDeptPort(){
+
+    }
+
     /**
      * 通过接口同步数据
      * @param list
      * @return
      */
-    public List<ABasDeptInfoDTO> executeDept(List<ABasDeptInfoVO> list) {
-        List<BasDeptInfo> basDeptInfoList=Lists.newArrayList();
-        List<ABasDeptInfoDTO> basDeptInfoDtoList=Lists.newArrayList();
+    public RespDTO<List<ABasDeptInfoDTO>> executeDept(List<ABasDeptInfoVO> list) {
         if(list!=null && list.size()>0){
+            List<BasDeptInfo> basDeptInfoList=Lists.newArrayList();
+            List<ABasDeptInfoDTO> basDeptInfoDtoList=Lists.newArrayList();
             basDeptInfoList=BeanUtil.listCopyTo(list,BasDeptInfo.class);
             basDeptInfoDtoList=BeanUtil.listCopyTo(list,ABasDeptInfoDTO.class);
+
+            //循环验证数据有效性
+            for (BasDeptInfo basDeptInfo:basDeptInfoList) {
+                if("".equals(basDeptInfo.getDeptId())) {
+                    return RespDTO.onError("请输入科室编码!");
+                }else if(basDeptInfo.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(basDeptInfo.getDeptName())){
+                    return RespDTO.onError("请输入科室名称!");
+                }
+            }
             execute(basDeptInfoList);
+            return RespDTO.onSuc(basDeptInfoDtoList);
+        }else {
+            return RespDTO.onError("未接收到数据!");
         }
-        return basDeptInfoDtoList;
-    }
-
-    public void executeDeptPort(){
-
     }
 
     public void execute(List<BasDeptInfo> basDeptInfoList){
         basDeptInfoList.stream().forEach(s -> {
             QueryWrapper<BasDeptInfo> queryWrapper = new QueryWrapper<>();
             queryWrapper.in("dept_id", s.getDeptId());
+            queryWrapper.eq("hospital_id", s.getHospitalId());
+            queryWrapper.eq("is_deleted",IsDeleteEnum.N);
             BasDeptInfo basDeptInfo = basDeptInfoServiceImpl.getOne(queryWrapper);
             if (basDeptInfo != null) {
-                basDeptInfoServiceImpl.updateById(s);
+                s.setGmtModified(new Date());
+                basDeptInfoServiceImpl.update(s,queryWrapper);
             } else {
+                s.setGmtCreate(new Date());
                 basDeptInfoServiceImpl.save(s);
             }
         });

+ 35 - 11
src/main/java/com/diagbot/facade/ABasDoctorInfoFacade.java

@@ -1,10 +1,14 @@
 package com.diagbot.facade;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABasDoctorInfoDTO;
 import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.BasDoctorInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ABasDoctorInfoVO;
 import com.google.common.collect.Lists;
@@ -12,13 +16,14 @@ 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;
 
 @Component
 public class ABasDoctorInfoFacade {
     @Autowired
     @Qualifier("basDoctorInfoServiceImpl")
-    private BasDoctorInfoServiceImpl basDoctorInfoServiceImpl;
+    public BasDoctorInfoServiceImpl basDoctorInfoServiceImpl;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -40,29 +45,48 @@ public class ABasDoctorInfoFacade {
         execute(basDeptInfoList);
     }
 
-    public List<ABasDoctorInfoDTO> executeDoctor(List<ABasDoctorInfoVO> list) {
-        List<BasDoctorInfo> basDoctorInfoList=Lists.newArrayList();
-        List<ABasDoctorInfoDTO> basDoctorDtoList=Lists.newArrayList();
+    public void executeDoctorPort(){
+
+    }
+
+    /**
+     * 从接口接收医生信息
+     * @param list
+     * @return
+     */
+    public RespDTO<List<ABasDoctorInfoDTO>> executeDoctor(List<ABasDoctorInfoVO> list) {
         if(list!=null && list.size()>0){
+            List<BasDoctorInfo> basDoctorInfoList=Lists.newArrayList();
+            List<ABasDoctorInfoDTO> basDoctorDtoList=Lists.newArrayList();
             basDoctorInfoList=BeanUtil.listCopyTo(list,BasDoctorInfo.class);
             basDoctorDtoList=BeanUtil.listCopyTo(list,ABasDoctorInfoDTO.class);
+            //循环验证数据有效性
+            for (BasDoctorInfo basDoctorInfo:basDoctorInfoList) {
+                if("".equals(basDoctorInfo.getDoctorId())) {
+                    return RespDTO.onError("请输入医生编码!");
+                }else if(basDoctorInfo.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }
+            }
             execute(basDoctorInfoList);
+            return RespDTO.onSuc(basDoctorDtoList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return basDoctorDtoList;
-    }
-
-    public void executeDoctorPort(){
-
     }
 
     public void execute(List<BasDoctorInfo> basDoctorInfoList){
         basDoctorInfoList.stream().forEach(s -> {
             QueryWrapper<BasDoctorInfo> queryWrapper = new QueryWrapper<>();
-            queryWrapper.in("doctor_id", s.getDeptId());
+            queryWrapper.eq("doctor_id", s.getDoctorId());
+            queryWrapper.eq("hospital_id", s.getHospitalId());
+            queryWrapper.eq("is_deleted",IsDeleteEnum.N);
             BasDoctorInfo basDoctorInfo = basDoctorInfoServiceImpl.getOne(queryWrapper);
             if (basDoctorInfo != null) {
-                basDoctorInfoServiceImpl.updateById(s);
+                s.setGmtModified(new Date());
+                basDoctorInfoServiceImpl.update(s,queryWrapper);
             } else {
+                s.setGmtCreate(new Date());
                 basDoctorInfoServiceImpl.save(s);
             }
         });

+ 40 - 20
src/main/java/com/diagbot/facade/ABehospitalInfoFacade.java

@@ -1,10 +1,10 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABehospitalInfoDTO;
-import com.diagbot.entity.BehospitalInfo;
-import com.diagbot.entity.MedicalRecord;
-import com.diagbot.entity.QcType;
+import com.diagbot.entity.*;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
 import com.diagbot.service.impl.MedicalRecordServiceImpl;
 import com.diagbot.service.impl.QcTypeServiceImpl;
@@ -33,6 +33,9 @@ public class ABehospitalInfoFacade {
     @Qualifier("medicalRecordServiceImpl")
     private MedicalRecordServiceImpl medicalRecordServiceImpl;
 
+    @Autowired
+    private QcAbnormalFacade qcAbnormalFacade;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -58,15 +61,30 @@ public class ABehospitalInfoFacade {
      * @param list
      * @return
      */
-    public List<ABehospitalInfoDTO> executeBehospital(List<ABehospitalInfoVO> list) {
-        List<BehospitalInfo> behospitalInfoList=Lists.newArrayList();
-        List<ABehospitalInfoDTO> behospitalInfoDtoList=Lists.newArrayList();
-        if(list!=null && list.size()>0){
-            behospitalInfoList=BeanUtil.listCopyTo(list,BehospitalInfo.class);
-            behospitalInfoDtoList=BeanUtil.listCopyTo(list,ABehospitalInfoDTO.class);
+    public RespDTO<List<ABehospitalInfoDTO>> executeBehospital(List<ABehospitalInfoVO> list) {
+        if(list!=null && list.size()>0) {
+            List<BehospitalInfo> behospitalInfoList = Lists.newArrayList();
+            List<ABehospitalInfoDTO> behospitalInfoDtoList = Lists.newArrayList();
+            behospitalInfoList = BeanUtil.listCopyTo(list, BehospitalInfo.class);
+            behospitalInfoDtoList = BeanUtil.listCopyTo(list, ABehospitalInfoDTO.class);
+
+            //循环验证数据有效性
+            for (BehospitalInfo behospitalInfo:behospitalInfoList) {
+                if("".equals(behospitalInfo.getBehospitalCode())) {
+                    return RespDTO.onError("请输入病人住院编码!");
+                }else if(behospitalInfo.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(behospitalInfo.getBehDeptId())){
+                    return RespDTO.onError("请输入住院科室编码!");
+                }else if("".equals(behospitalInfo.getBehDeptName())){
+                    return RespDTO.onError("请输入住院科室名称!");
+                }
+            }
             execute(behospitalInfoList);
+            return RespDTO.onSuc(behospitalInfoDtoList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return behospitalInfoDtoList;
     }
 
     public void executeBehospitalPort(){
@@ -79,7 +97,7 @@ public class ABehospitalInfoFacade {
         behospitalInfoList.stream().forEach(s -> {
             QueryWrapper<MedicalRecord> wrapper = new QueryWrapper<>();
             wrapper.eq("behospital_code", s.getBehospitalCode());
-            wrapper.eq("hospital_id", Long.valueOf("3"));
+            wrapper.eq("hospital_id", s.getHospitalId());
             wrapper.eq("mode_id", Long.valueOf("1"));
             MedicalRecord medicalRecord = medicalRecordServiceImpl.getOne(wrapper);
             if(medicalRecord!=null){
@@ -91,25 +109,27 @@ public class ABehospitalInfoFacade {
                 }else{
                     s.setQcTypeId(Long.valueOf("0"));
                 }
+            }else{
+                //新增类型到监测表中
+                QcAbnormal qcAbnormal=new QcAbnormal();
+                qcAbnormal.setHospitalId(s.getHospitalId());
+                qcAbnormal.setBehospitalCode(s.getBehospitalCode());
+                qcAbnormal.setType(2);
+                qcAbnormalFacade.save(qcAbnormal);
             }
 
             QueryWrapper<BehospitalInfo> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("behospital_code", s.getBehospitalCode());
-            queryWrapper.eq("hospital_id", tzDBConn.HOSPITAL_ID);
+            queryWrapper.eq("hospital_id", s.getHospitalId());
+            queryWrapper.eq("is_deleted",IsDeleteEnum.N);
             BehospitalInfo behospitalInfo = behospitalInfoServiceImpl.getOne(queryWrapper);
             if (behospitalInfo != null) {
                 s.setGmtModified(new Date());
-                updateE.add(s);
+                behospitalInfoServiceImpl.update(s,queryWrapper);
             } else {
                 s.setGmtCreate(new Date());
-                add.add(s);
+                behospitalInfoServiceImpl.save(s);
             }
         });
-        if (add != null && add.size() != 0) {
-            behospitalInfoServiceImpl.saveBatch(add);
-        }
-        if (updateE != null && updateE.size() != 0) {
-            behospitalInfoServiceImpl.updateBatchById(updateE);
-        }
     }
 }

+ 23 - 6
src/main/java/com/diagbot/facade/ADoctorAdviceFacade.java

@@ -1,8 +1,11 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ADoctorAdviceDTO;
+import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.entity.DoctorAdvice;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.DoctorAdviceServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.TZDBConn;
@@ -47,15 +50,27 @@ public class ADoctorAdviceFacade {
      * @param list
      * @return
      */
-    public List<ADoctorAdviceDTO> executeDoctorAdvice(List<ADoctorAdviceVO> list) {
-        List<DoctorAdvice> doctorAdviceList=Lists.newArrayList();
-        List<ADoctorAdviceDTO> doctorAdviceDtoList=Lists.newArrayList();
+    public RespDTO<List<ADoctorAdviceDTO>> executeDoctorAdvice(List<ADoctorAdviceVO> list) {
         if(list!=null && list.size()>0){
+            List<DoctorAdvice> doctorAdviceList=Lists.newArrayList();
+            List<ADoctorAdviceDTO> doctorAdviceDtoList=Lists.newArrayList();
             doctorAdviceList=BeanUtil.listCopyTo(list,DoctorAdvice.class);
             doctorAdviceDtoList=BeanUtil.listCopyTo(list,ADoctorAdviceDTO.class);
+            //循环验证数据有效性
+            for (DoctorAdvice doctorAdvice:doctorAdviceList) {
+                if("".equals(doctorAdvice.getDoctorAdviceId())) {
+                    return RespDTO.onError("请输入病人医嘱编码!");
+                }else if(doctorAdvice.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(doctorAdvice.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+            }
             execute(doctorAdviceList);
+            return RespDTO.onSuc(doctorAdviceDtoList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return doctorAdviceDtoList;
     }
 
     public void execute(List<DoctorAdvice> doctorAdviceList){
@@ -63,13 +78,15 @@ public class ADoctorAdviceFacade {
             doctorAdviceList.stream().forEach(s -> {
                 QueryWrapper<DoctorAdvice> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("doctor_advice_id", s.getDoctorAdviceId());
+                queryWrapper.eq("hospital_id", s.getHospitalId());
+                queryWrapper.eq("is_deleted",IsDeleteEnum.N);
                 DoctorAdvice doctorAdvice = doctorAdviceServiceImpl.getOne(queryWrapper);
                 if (doctorAdvice != null) {
                     s.setGmtModified(new Date());
-                    doctorAdviceServiceImpl.save(s);
+                    doctorAdviceServiceImpl.update(s,queryWrapper);
                 } else {
                     s.setGmtCreate(new Date());
-                    doctorAdviceServiceImpl.updateById(s);
+                    doctorAdviceServiceImpl.save(s);
                 }
             });
         }

+ 8 - 4
src/main/java/com/diagbot/facade/AHomeDiagnoseInfoFacade.java

@@ -1,6 +1,7 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AHomeDiagnoseDTO;
 import com.diagbot.entity.HomeDiagnoseInfo;
 import com.diagbot.service.impl.HomeDiagnoseInfoServiceImpl;
@@ -44,15 +45,18 @@ public class AHomeDiagnoseInfoFacade {
      * @param list
      * @return
      */
-    public List<AHomeDiagnoseDTO> executeHomeDiagnose(List<AHomeDiagnoseVO> list) {
-        List<HomeDiagnoseInfo> homeDiagnoseList=Lists.newArrayList();
-        List<AHomeDiagnoseDTO> homeDiagnoseDtoList=Lists.newArrayList();
+    public RespDTO<List<AHomeDiagnoseDTO>> executeHomeDiagnose(List<AHomeDiagnoseVO> list) {
         if(list!=null && list.size()>0){
+            List<HomeDiagnoseInfo> homeDiagnoseList=Lists.newArrayList();
+            List<AHomeDiagnoseDTO> homeDiagnoseDtoList=Lists.newArrayList();
+
             homeDiagnoseList=BeanUtil.listCopyTo(list,HomeDiagnoseInfo.class);
             homeDiagnoseDtoList=BeanUtil.listCopyTo(list,AHomeDiagnoseDTO.class);
             execute(homeDiagnoseList);
+            return RespDTO.onSuc(homeDiagnoseDtoList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return homeDiagnoseDtoList;
     }
 
     public void execute(List<HomeDiagnoseInfo> homeDiagnoseList){

+ 130 - 5
src/main/java/com/diagbot/facade/AHomePageFacade.java

@@ -1,11 +1,20 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AHomePageDTO;
+import com.diagbot.entity.DoctorAdvice;
+import com.diagbot.entity.HomeDiagnoseInfo;
+import com.diagbot.entity.HomeOperationInfo;
 import com.diagbot.entity.HomePage;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.HomeDiagnoseInfoServiceImpl;
+import com.diagbot.service.impl.HomeOperationInfoServiceImpl;
 import com.diagbot.service.impl.HomePageServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.TZDBConn;
+import com.diagbot.vo.data.AHomeDiagnoseVO;
+import com.diagbot.vo.data.AHomeOperationVO;
 import com.diagbot.vo.data.AHomePageVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +30,14 @@ public class AHomePageFacade {
     @Qualifier("homePageServiceImpl")
     private HomePageServiceImpl homePageServiceImpl;
 
+    @Autowired
+    @Qualifier("homeDiagnoseInfoServiceImpl")
+    private HomeDiagnoseInfoServiceImpl homeDiagnoseInfoServiceImpl;
+
+    @Autowired
+    @Qualifier("homeOperationInfoServiceImpl")
+    private HomeOperationInfoServiceImpl homeOperationInfoServiceImpl;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -47,26 +64,82 @@ public class AHomePageFacade {
      * @param list
      * @return
      */
-    public List<AHomePageDTO> executeHomePage(List<AHomePageVO> list) {
-        List<HomePage> homePageList=Lists.newArrayList();
-        List<AHomePageDTO> homePageDtoList=Lists.newArrayList();
+    public RespDTO<List<AHomePageDTO>> executeHomePage(List<AHomePageVO> list) {
         if(list!=null && list.size()>0){
+            //循环验证数据有效性
+            for (AHomePageVO aHomePageVO:list) {
+                if("".equals(aHomePageVO.getHomePageId())) {
+                    return RespDTO.onError("请输入病案首页编号!");
+                }else if(aHomePageVO.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(aHomePageVO.getBehospitalCode())){
+                    return RespDTO.onError("请输入病人住院编码!");
+                }
+                //出院诊断
+                if(aHomePageVO.getLeaveDiags()!=null && aHomePageVO.getLeaveDiags().size()>0){
+                    for (AHomeDiagnoseVO aHomeDiagnoseVO:aHomePageVO.getLeaveDiags()){
+                        if("".equals(aHomeDiagnoseVO.getHomePageId())) {
+                            return RespDTO.onError("出院诊断未输入病案首页编号!");
+                        }else if(aHomeDiagnoseVO.getHospitalId()==null){
+                            return RespDTO.onError("出院诊断未输入医院编码!");
+                        }else if("".equals(aHomeDiagnoseVO.getDiagnoseOrderNo())){
+                            return RespDTO.onError("出院诊断未输入顺序号!");
+                        }
+                    }
+                };
+
+                //住院手术
+                if(aHomePageVO.getOperations()!=null && aHomePageVO.getOperations().size()>0){
+                    for (AHomeOperationVO aHomeOperationVO:aHomePageVO.getOperations()){
+                        if("".equals(aHomeOperationVO.getHomePageId())) {
+                            return RespDTO.onError("住院手术未输入病案首页编号!");
+                        }else if(aHomeOperationVO.getHospitalId()==null){
+                            return RespDTO.onError("住院手术未输入医院编码!");
+                        }else if("".equals(aHomeOperationVO.getOperationOrderNo())){
+                            return RespDTO.onError("住院手术未输入顺序号!");
+                        }
+                    }
+                }
+            }
+            //装载数据
+            List<HomePage> homePageList=Lists.newArrayList();
+            List<AHomePageDTO> homePageDtoList=Lists.newArrayList();
             homePageList=BeanUtil.listCopyTo(list,HomePage.class);
             homePageDtoList=BeanUtil.listCopyTo(list,AHomePageDTO.class);
+
             execute(homePageList);
+
+            list.stream().forEach(s->{
+                List<HomeDiagnoseInfo> homeDiagnoseList=BeanUtil.listCopyTo(s.getLeaveDiags(),HomeDiagnoseInfo.class);
+                List<HomeOperationInfo> homeOperationList=BeanUtil.listCopyTo(s.getOperations(),HomeOperationInfo.class);
+
+                executeDiagnose(homeDiagnoseList);
+                executeOperation(homeOperationList);
+            });
+
+            return RespDTO.onSuc(homePageDtoList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return homePageDtoList;
+
     }
 
+    /**
+     * 病案首页
+     * @param homePageList
+     */
     public void execute(List<HomePage> homePageList){
         if (homePageList != null && homePageList.size() > 0) {
             homePageList.stream().forEach(s -> {
                 QueryWrapper<HomePage> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("home_page_id", s.getHomePageId());
+                queryWrapper.eq("hospital_id", s.getHospitalId());
+                queryWrapper.eq("behospital_code", s.getBehospitalCode());
+                queryWrapper.eq("is_deleted",IsDeleteEnum.N);
                 HomePage homePage = homePageServiceImpl.getOne(queryWrapper);
                 if (homePage != null) {
                     s.setGmtModified(new Date());
-                    homePageServiceImpl.updateById(s);
+                    homePageServiceImpl.update(s,queryWrapper);
                 } else {
                     s.setGmtCreate(new Date());
                     homePageServiceImpl.save(s);
@@ -74,4 +147,56 @@ public class AHomePageFacade {
             });
         }
     }
+
+    /**
+     * 出院诊断
+     * @param homeDiagnoseList
+     */
+    public void executeDiagnose(List<HomeDiagnoseInfo> homeDiagnoseList){
+        if (homeDiagnoseList != null && homeDiagnoseList.size() > 0) {
+            homeDiagnoseList.stream().forEach(s -> {
+                if(s.getHomePageId()!=null && !"".equals(s.getDiagnoseOrderNo())){
+                    QueryWrapper<HomeDiagnoseInfo> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("home_page_id", s.getHomePageId());
+                    queryWrapper.eq("diagnose_order_no", s.getDiagnoseOrderNo());
+                    queryWrapper.eq("hospital_id", s.getHospitalId());
+                    queryWrapper.eq("is_deleted",IsDeleteEnum.N);
+                    HomeDiagnoseInfo diagnoseInfo = homeDiagnoseInfoServiceImpl.getOne(queryWrapper);
+                    if (diagnoseInfo != null) {
+                        s.setGmtModified(new Date());
+                        homeDiagnoseInfoServiceImpl.update(s,queryWrapper);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        homeDiagnoseInfoServiceImpl.save(s);
+                    }
+                }
+            });
+        }
+    }
+
+    /**
+     * 手术情况
+     * @param homeOperationList
+     */
+    public void executeOperation(List<HomeOperationInfo> homeOperationList){
+        if (homeOperationList != null && homeOperationList.size() > 0) {
+            homeOperationList.stream().forEach(s -> {
+                if(s.getHomePageId()!=null && !"".equals(s.getOperationOrderNo())) {
+                    QueryWrapper<HomeOperationInfo> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("home_page_id", s.getHomePageId());
+                    queryWrapper.eq("operation_order_no", s.getOperationOrderNo());
+                    queryWrapper.eq("hospital_id", s.getHospitalId());
+                    queryWrapper.eq("is_deleted",IsDeleteEnum.N);
+                    HomeOperationInfo operationInfo = homeOperationInfoServiceImpl.getOne(queryWrapper);
+                    if (operationInfo != null) {
+                        s.setGmtModified(new Date());
+                        homeOperationInfoServiceImpl.update(s,queryWrapper);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        homeOperationInfoServiceImpl.save(s);
+                    }
+                }
+            });
+        }
+    }
 }

+ 23 - 12
src/main/java/com/diagbot/facade/AMedRecordTypeFacade.java

@@ -1,8 +1,11 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AMedicalRecordTypeDTO;
+import com.diagbot.entity.BasDoctorInfo;
 import com.diagbot.entity.MedRecordType;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedRecordTypeServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.TZDBConn;
@@ -45,15 +48,27 @@ public class AMedRecordTypeFacade {
      * @param list
      * @return
      */
-    public List<AMedicalRecordTypeDTO> executeMRType(List<AMedicalRecordTypeVO> list) {
-        List<MedRecordType> medRecordTypeList=Lists.newArrayList();
-        List<AMedicalRecordTypeDTO> medRecordTypeDtoList=Lists.newArrayList();
+    public RespDTO<List<AMedicalRecordTypeDTO>> executeMRType(List<AMedicalRecordTypeVO> list) {
         if(list!=null && list.size()>0){
+            List<MedRecordType> medRecordTypeList=Lists.newArrayList();
+            List<AMedicalRecordTypeDTO> medRecordTypeDtoList=Lists.newArrayList();
             medRecordTypeList=BeanUtil.listCopyTo(list,MedRecordType.class);
             medRecordTypeDtoList=BeanUtil.listCopyTo(list,AMedicalRecordTypeDTO.class);
+            //循环验证数据有效性
+            for (MedRecordType medRecordType:medRecordTypeList) {
+                if("".equals(medRecordType.getTypeId())) {
+                    return RespDTO.onError("请输入文书类型编码!");
+                }else if(medRecordType.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(medRecordType.getTypeName())){
+                    return RespDTO.onError("请文书类型名称!");
+                }
+            }
             execute(medRecordTypeList);
+            return RespDTO.onSuc(medRecordTypeDtoList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return medRecordTypeDtoList;
     }
 
     public void executeMRTypePort(){
@@ -67,19 +82,15 @@ public class AMedRecordTypeFacade {
             medRecordTypeList.stream().forEach(s -> {
                 QueryWrapper<MedRecordType> queryWrapper = new QueryWrapper<>();
                 queryWrapper.in("type_id", s.getTypeId());
+                queryWrapper.eq("hospital_id", s.getHospitalId());
+                //queryWrapper.eq("is_deleted",IsDeleteEnum.N);
                 MedRecordType mrType = medRecordTypeServiceImpl.getOne(queryWrapper);
                 if (mrType != null) {
-                    updateE.add(s);
+                    medRecordTypeServiceImpl.update(s,queryWrapper);
                 } else {
-                    add.add(s);
+                    medRecordTypeServiceImpl.save(s);
                 }
             });
-            if (add != null && add.size() != 0) {
-                medRecordTypeServiceImpl.saveBatch(add);
-            }
-            if (updateE != null && updateE.size() != 0) {
-                medRecordTypeServiceImpl.updateBatchById(updateE);
-            }
         }
     }
 }

+ 149 - 63
src/main/java/com/diagbot/facade/AMedicalRecordFacade.java

@@ -1,18 +1,22 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AMedicalRecordDTO;
-import com.diagbot.entity.BehospitalInfo;
-import com.diagbot.entity.MedicalRecord;
-import com.diagbot.entity.MedicalRecordContent;
-import com.diagbot.entity.QcModelHospital;
+import com.diagbot.dto.data.AMrContentDTO;
+import com.diagbot.entity.*;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
 import com.diagbot.service.impl.MedicalRecordContentServiceImpl;
 import com.diagbot.service.impl.MedicalRecordServiceImpl;
 import com.diagbot.service.impl.QcModelHospitalServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ReadProperties;
 import com.diagbot.util.TZDBConn;
+import com.diagbot.vo.AnalyzeApiVO;
+import com.diagbot.vo.data.AMedicalRecordContentVO;
 import com.diagbot.vo.data.AMedicalRecordVO;
+import com.diagbot.vo.data.AMrContentVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -45,6 +49,15 @@ public class AMedicalRecordFacade {
     @Autowired
     private AMedicalRecordContentFacade aMedicalRecordContentFacade;
 
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+
+    @Autowired
+    private QcAbnormalFacade qcAbnormalFacade;
+
+    @Autowired
+    private ReadProperties readProperties;
+
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -68,19 +81,104 @@ public class AMedicalRecordFacade {
     }
 
     /**
-     * 数据引擎-通过接口更新病历记录
+     * 通过接口更新病历记录
      * @param list
      * @return
      */
-    public List<AMedicalRecordDTO> executeMrRecord(List<AMedicalRecordVO> list) {
-        List<MedicalRecord> medicalRecordList=Lists.newArrayList();
-        List<AMedicalRecordDTO> medicalRecordDtoList=Lists.newArrayList();
-        if(list!=null && list.size()>0){
-            medicalRecordList=BeanUtil.listCopyTo(list,MedicalRecord.class);
-            medicalRecordDtoList=BeanUtil.listCopyTo(list,AMedicalRecordDTO.class);
-            execute(medicalRecordList);
+    public RespDTO<List<AMedicalRecordDTO>> executeMrRecordView(List<AMedicalRecordVO> list) {
+        if(list!=null && list.size()>0) {
+            //循环验证数据有效性
+            for (AMedicalRecordVO aMedicalRecordVO : list) {
+                if ("".equals(aMedicalRecordVO.getRecId())) {
+                    return RespDTO.onError("请输入文书序号!");
+                } else if (aMedicalRecordVO.getHospitalId() == null) {
+                    return RespDTO.onError("请输入医院编码!");
+                } else if ("".equals(aMedicalRecordVO.getBehospitalCode())) {
+                    return RespDTO.onError("请输入病人住院编码!");
+                } else if ("".equals(aMedicalRecordVO.getRecTypeId())) {
+                    return RespDTO.onError("请输入病历类别编号!");
+                } else if ("".equals(aMedicalRecordVO.getRecTitle())) {
+                    return RespDTO.onError("请输入病历标题!");
+                } else if (aMedicalRecordVO.getContents() == null || aMedicalRecordVO.getContents().size() == 0) {
+                    return RespDTO.onError("请输入文书详情!");
+                }
+            }
+            //装载数据
+            initData(list);
+            List<AMedicalRecordDTO> medicalRecordDTOList = Lists.newArrayList();
+            medicalRecordDTOList = BeanUtil.listCopyTo(list, AMedicalRecordDTO.class);
+            return RespDTO.onSuc(medicalRecordDTOList);
+        }else{
+            return RespDTO.onError("未接收到数据!");
         }
-        return medicalRecordDtoList;
+    }
+
+    /**
+     * 数据引擎-通过接口更新病历记录
+     * @param aMrContentVO
+     * @return
+     */
+    public RespDTO<Map<String, Object>> executeMrRecord(AMrContentVO aMrContentVO) {
+        if(aMrContentVO.getRecords()!=null && aMrContentVO.getRecords().size()>0){
+            AMrContentDTO aMrContentDTO=new AMrContentDTO();
+            //循环验证数据有效性
+            for (AMedicalRecordVO aMedicalRecordVO : aMrContentVO.getRecords()) {
+                if ("".equals(aMedicalRecordVO.getRecId())) {
+                    return RespDTO.onError("请输入文书序号!");
+                } else if (aMedicalRecordVO.getHospitalId() == null) {
+                    return RespDTO.onError("请输入医院编码!");
+                } else if ("".equals(aMedicalRecordVO.getBehospitalCode())) {
+                    return RespDTO.onError("请输入病人住院编码!");
+                } else if ("".equals(aMedicalRecordVO.getRecTypeId())) {
+                    return RespDTO.onError("请输入病历类别编号!");
+                } else if ("".equals(aMedicalRecordVO.getRecTitle())) {
+                    return RespDTO.onError("请输入病历标题!");
+                } else if (aMedicalRecordVO.getContents() == null || aMedicalRecordVO.getContents().size() == 0) {
+                    return RespDTO.onError("请输入文书详情!");
+                }
+            }
+            //装载数据
+            initData(aMrContentVO.getRecords());
+
+            String behospitalCode =aMrContentVO.getRecords().get(0).getBehospitalCode();
+            Long hospitalId=aMrContentVO.getRecords().get(0).getHospitalId();
+            MedicalRecord medicalRecord=new MedicalRecord();
+            BeanUtil.copyProperties(aMrContentVO.getRecords().get(0),medicalRecord);
+            Long modeId=initModeId(medicalRecord);
+            if(aMrContentVO.getDockModeType().equals("1")){
+                if(modeId==0 || modeId==null){
+                    return RespDTO.onError("无对应的文书类型");
+                }
+                //页面模式
+                String url=readProperties.getProcessQcUrl()+"?behospitalCode="+behospitalCode+"&hospitalId="+hospitalId+"&modeId="+modeId;
+                Map<String,Object> map=new HashMap<String,Object>();
+                map.put("url",url);
+                return RespDTO.onSuc(map);
+            }else if(aMrContentVO.getDockModeType().equals("2")){
+                AnalyzeApiVO analyzeApiVO=new AnalyzeApiVO();
+                analyzeApiVO.setBehospitalCode(behospitalCode);
+                analyzeApiVO.setHospitalId(hospitalId);
+                Map<String, Object> map=behospitalInfoFacade.analyzeApi(analyzeApiVO);
+                //接口引擎模式
+                return RespDTO.onSuc(map);
+            }
+            return RespDTO.onSuc("");
+        }else{
+            return RespDTO.onError("未接收到数据!");
+        }
+    }
+
+    private void initData(List<AMedicalRecordVO> list){
+        List<MedicalRecord> medicalRecordList = Lists.newArrayList();
+        medicalRecordList = BeanUtil.listCopyTo(list, MedicalRecord.class);
+
+        execute(medicalRecordList);
+        list.stream().forEach(s -> {
+            List<MedicalRecordContent> contents = Lists.newArrayList();
+            contents = BeanUtil.listCopyTo(s.getContents(), MedicalRecordContent.class);
+
+            executeContent(contents);
+        });
     }
 
     public void execute(List<MedicalRecord> medicalRecordList){
@@ -88,6 +186,13 @@ public class AMedicalRecordFacade {
             medicalRecordList.stream().forEach(s -> {
                 //初始化mode_id
                 Long modeId=initModeId(s);
+                //新增类型到监测表中
+                QcAbnormal qcAbnormal=new QcAbnormal();
+                qcAbnormal.setHospitalId(s.getHospitalId());
+                qcAbnormal.setBehospitalCode(s.getBehospitalCode());
+                qcAbnormal.setType(1);
+                qcAbnormal.setDescription(s.getRecTitle());
+                qcAbnormalFacade.save(qcAbnormal);
                 s.setModeId(modeId);
                 //新增或修改
                 saveOrUpdate(s);
@@ -95,75 +200,56 @@ public class AMedicalRecordFacade {
         }
     }
 
-    /**
-     * 页面推送-通过接口更新病历记录
-     * @param list
-     * @return
-     */
-    public Map<String,Object> executeMrRecordView(List<AMedicalRecordVO> list) {
-        Map<String,Object> data=new HashMap<String,Object>();
-        Long hospitalId=tzDBConn.HOSPITAL_ID;
-        String behospitalCode=null;
-        Long modeId=null;
-        if (list != null && list.size() > 0){
-            AMedicalRecordVO medicalRecordVO=list.get(0);
-            MedicalRecord mrRecord=new MedicalRecord();
-            BeanUtil.copyProperties(medicalRecordVO,mrRecord);
-            //初始化mode_id
-            modeId=initModeId(mrRecord);
-            mrRecord.setModeId(modeId);
-
-            //新增或修改病历记录
-            saveOrUpdate(mrRecord);
-
-            //更新病历内容
-            if (medicalRecordVO.getContents() != null && medicalRecordVO.getContents().size() > 0) {
-                List<MedicalRecordContent> mrContentList=Lists.newArrayList();
-                mrContentList=BeanUtil.listCopyTo(medicalRecordVO.getContents(),MedicalRecordContent.class);
-                aMedicalRecordContentFacade.execute(mrContentList);
-            }
-
-            behospitalCode=mrRecord.getBehospitalCode();
-            hospitalId=mrRecord.getHospitalId();
-
-            //查看病人住院记录是否存在或质控类型是否正常匹配,非0或非空
-            QueryWrapper<BehospitalInfo> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("behospital_code", behospitalCode);
-            queryWrapper.eq("hospital_id", hospitalId);
-            BehospitalInfo behospitalInfo = behospitalInfoServiceImpl.getOne(queryWrapper);
-            if (behospitalInfo == null || behospitalInfo.getQcTypeId()==null && behospitalInfo.getQcTypeId()==0) {
-                modeId=null;
-            }
-
-        }
-        String url="?behospitalCode="+behospitalCode+"&hospitalId="+hospitalId;
-        if(modeId ==null || modeId.equals("0")){
-            data.put("url",null);
-        }else{
-            url+="";
-            data.put("url",url);
+    public void executeContent(List<MedicalRecordContent> mrContentList){
+        if (mrContentList != null && mrContentList.size() > 0) {
+            mrContentList.stream().forEach(s -> {
+                QueryWrapper<MedicalRecordContent> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("rec_id", s.getRecId());
+                queryWrapper.eq("hospital_id", s.getHospitalId());
+                queryWrapper.eq("is_deleted",IsDeleteEnum.N);
+                MedicalRecordContent mrContent = medicalRecordContentServiceImpl.getOne(queryWrapper);
+                if (mrContent != null) {
+                    s.setGmtModified(new Date());
+                    medicalRecordContentServiceImpl.update(s,queryWrapper);
+                } else {
+                    s.setGmtCreate(new Date());
+                    medicalRecordContentServiceImpl.save(s);
+                }
+            });
         }
-        return data;
     }
 
+    /**
+     * 新增或修改文书信息
+     * @param medicalRecord
+     */
     private void saveOrUpdate(MedicalRecord medicalRecord){
         QueryWrapper<MedicalRecord> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("rec_id", medicalRecord.getRecId());
+        queryWrapper.eq("hospital_id", medicalRecord.getHospitalId());
+        queryWrapper.eq("behospital_code", medicalRecord.getBehospitalCode());
+        queryWrapper.eq("is_deleted",IsDeleteEnum.N);
         MedicalRecord mRecord = medicalRecordServiceImpl.getOne(queryWrapper);
         if (mRecord != null) {
             medicalRecord.setGmtModified(new Date());
-            medicalRecordServiceImpl.updateById(medicalRecord);
+            medicalRecordServiceImpl.update(medicalRecord,queryWrapper);
         } else {
             medicalRecord.setGmtCreate(new Date());
             medicalRecordServiceImpl.save(medicalRecord);
         }
     }
 
+    /**
+     * 初始化模型ID
+     * @param medicalRecord
+     * @return
+     */
     private Long initModeId(MedicalRecord medicalRecord){
         Long modeId=Long.valueOf("0");
         QueryWrapper<QcModelHospital> wrapper = new QueryWrapper<>();
-        wrapper.eq("hospital_id",tzDBConn.HOSPITAL_ID);
+        wrapper.eq("hospital_id",medicalRecord.getHospitalId());
         wrapper.eq("hospital_model_name",medicalRecord.getRecTitle());
+        //wrapper.eq("is_deleted",IsDeleteEnum.N);
         QcModelHospital mode=qcModelHospitalServiceImpl.getOne(wrapper);
         if(mode!=null){
             modeId=mode.getStandModelId();

+ 7 - 1
src/main/java/com/diagbot/util/ReadProperties.java

@@ -26,6 +26,9 @@ public class ReadProperties {
 	@Value(value="${jdbc.password}")
 	public String jdbcPassword;
 
+	@Value(value="${process.qc.url}")
+	public String processQcUrl;
+
 	public String getRemoteAddressVer() {
 		return remoteAddressVer;
 	}
@@ -37,6 +40,9 @@ public class ReadProperties {
 	@Value(value="${his.patient.url}")
 	public String hisPatientUrl;
 
+
+
+
 	public String getHisPatientUrl() {
 		return hisPatientUrl;
 	}
@@ -57,6 +63,6 @@ public class ReadProperties {
 		return jdbcPassword;
 	}
 	
-	
+	public String getProcessQcUrl(){return processQcUrl;}
 	
 }

+ 7 - 0
src/main/java/com/diagbot/vo/data/ABasDoctorInfoVO.java

@@ -1,7 +1,10 @@
 package com.diagbot.vo.data;
 
 import lombok.Data;
+import lombok.NonNull;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 @Data
@@ -30,5 +33,9 @@ public class ABasDoctorInfoVO {
      * 职称
      */
     private String professor;
+    /**
+     * 职业医师资格
+     */
+    private String occup;
 
 }

+ 15 - 2
src/main/java/com/diagbot/vo/data/AHomePageVO.java

@@ -1,10 +1,13 @@
 package com.diagbot.vo.data;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.util.Date;
+import java.util.List;
 
-@Data
+@Getter
+@Setter
 public class AHomePageVO {
     /**
      * 病案首页编号
@@ -635,4 +638,14 @@ public class AHomePageVO {
      * 转归情况
      */
     private String returnToType;
+
+    /**
+     * 出院诊断
+     */
+    private List<AHomeDiagnoseVO> leaveDiags;
+
+    /**
+     * 手术情况
+     */
+    private List<AHomeOperationVO> operations;
 }

+ 9 - 6
src/main/java/com/diagbot/vo/data/AMedicalRecordContentVO.java

@@ -1,13 +1,11 @@
 package com.diagbot.vo.data;
 
 import java.sql.Blob;
-import java.util.Date;
-
 import lombok.Data;
 
 @Data
 public class AMedicalRecordContentVO {
-	/**
+    /**
      * 病历ID
      */
     private String recId;
@@ -26,9 +24,14 @@ public class AMedicalRecordContentVO {
      * 病历文本(文本)
      */
     private String contentText;
-    
+
+    /**
+     * html文本信息
+     */
+    private String htmlText;
+
     /**
-     * 记录创建时间
+     * xml文本信息
      */
-    private Date gmtCreate;
+    private String xmlText;
 }

+ 4 - 2
src/main/java/com/diagbot/vo/data/AMedicalRecordVO.java

@@ -2,9 +2,11 @@ package com.diagbot.vo.data;
 
 import java.util.List;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
-@Data
+@Getter
+@Setter
 public class AMedicalRecordVO {
 
 	private String recId;

+ 16 - 0
src/main/java/com/diagbot/vo/data/AMrContentVO.java

@@ -0,0 +1,16 @@
+package com.diagbot.vo.data;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.util.List;
+
+@Getter
+@Setter
+public class AMrContentVO {
+    @NotBlank(message = "对接模式类型编码不能为空")
+    private String dockModeType;//对接模式类型编码,1:页面模式,2:接口引擎模式
+
+    private List<AMedicalRecordVO> records;
+}

+ 25 - 28
src/main/java/com/diagbot/web/DataController.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.data.*;
 import com.diagbot.facade.*;
 import com.diagbot.vo.data.*;
 import io.swagger.annotations.ApiOperation;
+import jdk.nashorn.internal.ir.annotations.Ignore;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import io.swagger.annotations.Api;
 
+import javax.validation.Valid;
 import java.util.List;
 import java.util.Map;
 
@@ -56,77 +58,72 @@ public class DataController {
     @PostMapping("/sendDoctorInfos")
     @SysLogger("sendDoctorInfos")
     public RespDTO<List<ABasDoctorInfoDTO>> sendDoctorInfos(@RequestBody List<ABasDoctorInfoVO> list){
-        return RespDTO.onSuc(aBasDoctorInfoFacade.executeDoctor(list));
+        return aBasDoctorInfoFacade.executeDoctor(list);
     }
 
     @ApiOperation(value = "数据引擎-获取医院所有有效科室的基本信息")
     @PostMapping("/sendDeptInfos")
     @SysLogger("sendDeptInfos")
     public RespDTO<List<ABasDeptInfoDTO>> sendDeptInfos(@RequestBody List<ABasDeptInfoVO> list){
-        return RespDTO.onSuc(aBasDeptInfoFacade.executeDept(list));
+        return aBasDeptInfoFacade.executeDept(list);
     }
 
     @ApiOperation(value = "数据引擎-获取医院所有文书模板基本信息")
     @PostMapping("/sendRecordTypes")
     @SysLogger("sendRecordTypes")
     public RespDTO<List<AMedicalRecordTypeDTO>> sendRecordTypes(@RequestBody List<AMedicalRecordTypeVO> list){
-        return RespDTO.onSuc(aMedRecordTypeFacade.executeMRType(list));
+        return aMedRecordTypeFacade.executeMRType(list);
     }
 
     @ApiOperation(value = "数据引擎-获取医院病人住院记录信息")
     @PostMapping("/sendPatientInfo")
     @SysLogger("sendPatientInfo")
     public RespDTO<List<ABehospitalInfoDTO>> sendPatientInfo(@RequestBody List<ABehospitalInfoVO> list){
-        return RespDTO.onSuc(aBehospitalInfoFacade.executeBehospital(list));
+        return aBehospitalInfoFacade.executeBehospital(list);
     }
 
     @ApiOperation(value = "数据引擎-获取医院医生医嘱信息")
     @PostMapping("/sendDoctorAdvice")
     @SysLogger("sendDoctorAdvice")
     public RespDTO<List<ADoctorAdviceDTO>> sendDoctorAdvice(@RequestBody List<ADoctorAdviceVO> list){
-        return RespDTO.onSuc(aDoctorAdviceFacade.executeDoctorAdvice(list));
+        return aDoctorAdviceFacade.executeDoctorAdvice(list);
+    }
+
+    @ApiOperation(value = "支持评分-获取病历记录")
+    @PostMapping("/sendMedicalRecord")
+    @SysLogger("sendMedicalRecord")
+    public RespDTO<Map<String, Object>> sendMedicalRecord(@Valid @RequestBody AMrContentVO aMrContentVO){
+        return aMedicalRecordFacade.executeMrRecord(aMrContentVO);
+    }
+
+    @ApiOperation(value = "支持数据同步-获取病历记录")
+    @PostMapping("/sendMrContent")
+    @SysLogger("sendMrContent")
+    public RespDTO<List<AMedicalRecordDTO>> sendMrContent(@RequestBody List<AMedicalRecordVO> list){
+        return aMedicalRecordFacade.executeMrRecordView(list);
     }
 
     @ApiOperation(value = "数据引擎-获取病案首页")
     @PostMapping("/sendHomePage")
     @SysLogger("sendHomePage")
     public RespDTO<List<AHomePageDTO>> sendHomePage(@RequestBody List<AHomePageVO> list){
-        return RespDTO.onSuc(aHomePageFacade.executeHomePage(list));
+        return aHomePageFacade.executeHomePage(list);
     }
 
     @ApiOperation(value = "数据引擎-获取病案首页诊断")
     @PostMapping("/sendHomeDiagnose")
     @SysLogger("sendHomeDiagnose")
+    @Ignore
     public RespDTO<List<AHomeDiagnoseDTO>> sendHomeDiagnose(@RequestBody List<AHomeDiagnoseVO> list){
-        return RespDTO.onSuc(aHomeDiagnoseInfoFacade.executeHomeDiagnose(list));
+        return aHomeDiagnoseInfoFacade.executeHomeDiagnose(list);
     }
 
     @ApiOperation(value = "数据引擎-获取病案首页手术")
     @PostMapping("/sendHomeOperation")
     @SysLogger("sendHomeOperation")
+    @Ignore
     public RespDTO<List<AHomeOperationDTO>> sendHomeOperation(@RequestBody List<AHomeOperationVO> list){
         return RespDTO.onSuc(aHomeOperationInfoFacade.executeHomeOperation(list));
     }
 
-    @ApiOperation(value = "数据引擎-获取病历记录")
-    @PostMapping("/sendMedicalRecord")
-    @SysLogger("sendMedicalRecord")
-    public RespDTO<List<AMedicalRecordDTO>> sendMedicalRecord(@RequestBody List<AMedicalRecordVO> list){
-        return RespDTO.onSuc(aMedicalRecordFacade.executeMrRecord(list));
-    }
-
-    @ApiOperation(value = "数据引擎-获取病历内容")
-    @PostMapping("/sendMrContent")
-    @SysLogger("sendMrContent")
-    public RespDTO<List<AMedicalRecordContentDTO>> sendMrContent(@RequestBody List<AMedicalRecordContentVO> list){
-        return RespDTO.onSuc(aMedicalRecordContentFacade.executeMrRecordContent(list));
-    }
-
-    @ApiOperation(value = "页面推送-获取病历记录")
-    @PostMapping("/sendMrView")
-    @SysLogger("sendMrView")
-    public RespDTO<Map<String,Object>> sendMrView(@RequestBody List<AMedicalRecordVO> list){
-        return RespDTO.onSuc(aMedicalRecordFacade.executeMrRecordView(list));
-    }
-
 }

+ 1 - 1
src/main/resources/application-local.yml

@@ -58,7 +58,7 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://192.168.100.157:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://192.168.5.177:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
       # 连接池的配置信息

+ 2 - 0
src/main/resources/jdbc.properties

@@ -18,5 +18,7 @@ jdbc.password=zjlt@2020
 remote.address.ver=http://192.18.101.207:2030/index.html
 remote.address.hor=http://192.18.101.207:2030/indexHorizontal.html
 
+process.qc.url=http://192.168.100.157:1489/index.html
+
 #his\u65b9\u60a3\u8005\u63a5\u53e3\u5730\u5740
 his.patient.url=

+ 1 - 0
src/main/resources/mapper/BasDoctorInfoMapper.xml

@@ -9,6 +9,7 @@
         <result column="dept_id" property="deptId" />
         <result column="name" property="name" />
         <result column="professor" property="professor" />
+        <result column="occup" property="occup" />
         <result column="is_deleted" property="isDeleted" />
         <result column="gmt_create" property="gmtCreate" />
         <result column="gmt_modified" property="gmtModified" />

+ 1 - 1
src/test/java/com/diagbot/CodeGeneration.java

@@ -56,7 +56,7 @@ public class CodeGeneration {
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "med_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "qc_model_hospital"}); // 需要生成的表
+        strategy.setInclude(new String[] { "bas_doctor_info"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);