Forráskód Böngészése

湘雅三院每天晚上同步医生信息,根据入院登记信息和病案首页入参传进来的时候,反查doctorId添加数据

shiyue 3 éve
szülő
commit
4d5ef6a5d8

+ 5 - 0
src/main/java/com/diagbot/facade/ViewFacade.java

@@ -81,6 +81,8 @@ public class ViewFacade {
     private AMedicalRecordContentFacade aMedicalRecordContentFacade;
     @Autowired
     private ABehospitalInfoFacade aBehospitalInfoFacade;
+    @Autowired
+    private ABasDoctorInfoFacade aBasDoctorInfoFacade;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -102,6 +104,9 @@ public class ViewFacade {
             //得到全部的科室信息并添加修改
             this.getDeptInfo(deptSql);
 
+            //获取医生信息并修改添加
+            aBasDoctorInfoFacade.executeDoctorPast();
+
             //得到前一天的医嘱信息并添加修改
             this.getDoctorAdvice(doctorAdviceSql);
 

+ 10 - 7
src/main/java/com/diagbot/facade/data/ABasDoctorInfoFacade.java

@@ -33,9 +33,9 @@ public class ABasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
      * 同步历史数据
      */
     public void executeDoctorPast() {
-        String sql="select * from gi_userinfo";
-//        List<BasDoctorInfo> basDeptInfoList = tzDBConn.getBasDoctorInfo(sql);
-//        execute(basDeptInfoList);
+        String sql="select * from doctor_hos";
+        List<BasDoctorInfo> basDeptInfoList = tzDBConn.getDoctorInfo(sql);
+        execute(basDeptInfoList);
 
     }
     /**
@@ -87,14 +87,17 @@ public class ABasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
         List<BasDoctorInfo> updateE=Lists.newArrayList();
         basDoctorInfoList.stream().forEach(s -> {
             BasDoctorInfo basDoctorInfo =this.baseMapper.selectOne(new QueryWrapper<BasDoctorInfo>()
-                    .eq("doctor_id", s.getDoctorId())
-                    .eq("hospital_id", s.getHospitalId()));
+                    .eq("doctor_id", s.getDoctorId()));
             if (basDoctorInfo != null) {
                 s.setGmtModified(new Date());
-                updateE.add(s);
+                QueryWrapper<BasDoctorInfo> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("doctor_id",s.getDoctorId());
+                this.update(s,queryWrapper);
+//                updateE.add(s);
             } else {
                 s.setGmtCreate(new Date());
-                addE.add(s);
+                this.save(s);
+//                addE.add(s);
             }
         });
         if(updateE.size()>0){

+ 5 - 0
src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java

@@ -43,6 +43,8 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
     @Value("${log_switch.enable}")
     private boolean logSwitch;
+    @Autowired
+    private AHomePageFacade aHomePageFacade;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -132,6 +134,9 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
             if (null != s.getLeaveHospitalDate()){
                 s.setIsPlacefile("1");
             }
+            if (StringUtils.isNotEmpty(s.getDoctorName())){
+                s.setDoctorId(aHomePageFacade.getDoctorId(s.getDoctorName()));
+            }
             BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
                     .eq("behospital_code", s.getBehospitalCode())
                     .eq("hospital_id", s.getHospitalId()));

+ 42 - 0
src/main/java/com/diagbot/facade/data/AHomePageFacade.java

@@ -3,9 +3,12 @@ package com.diagbot.facade.data;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.diagbot.dto.AnalyzeRunDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AHomePageDTO;
+import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.entity.HomePage;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.facade.BehospitalInfoFacade;
@@ -14,6 +17,7 @@ import com.diagbot.util.*;
 import com.diagbot.vo.AnalyzeRunVO;
 import com.diagbot.vo.data.*;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
@@ -45,6 +49,8 @@ public class AHomePageFacade extends HomePageServiceImpl{
 
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
+    @Autowired
+    private ABasDoctorInfoFacade aBasDoctorInfoFacade;
 
     @Value("${log_switch.enable}")
     private boolean logSwitch;
@@ -264,7 +270,27 @@ public class AHomePageFacade extends HomePageServiceImpl{
                         s.setGmtCreate(new Date());
                         addE.add(s);
                     }
+                    //从病案首页同步入院登记表中的住院医生behospitalDoctor,主治医生attendingDoctor和主任医生directorDoctor和ID
+                    String behospitalDoctor= StringUtils.isEmpty(s.getBehospitalDoctor()) ? "" : s.getBehospitalDoctor();//获取住院医师姓名
+                    String attendingDoctor= StringUtils.isEmpty(s.getAttendingDoctor()) ? "" : s.getAttendingDoctor();//获取主治医师姓名
+                    String directorDoctor= StringUtils.isEmpty(s.getDirectorDoctor()) ? "" : s.getDirectorDoctor();//获取主任医师姓名
+                    String behospitalDoctorID=this.getDoctorId(behospitalDoctor);//获取住院医师id
+                    String attendingDoctorID=this.getDoctorId(attendingDoctor);//获取主治医师id
+                    String directorDoctorID=this.getDoctorId(directorDoctor);//获取主任医师id
+
+                    UpdateWrapper<BehospitalInfo> updateWrapper=new UpdateWrapper<>();
+                    updateWrapper.eq("behospital_code",s.getBehospitalCode())
+                            .eq("hospital_id", homePage.getHospitalId())
+                            .eq("is_deleted",IsDeleteEnum.N)
+                            .set("beh_doctor_name",behospitalDoctor)
+                            .set("doctor_name",attendingDoctor)
+                            .set("director_doctor_name",directorDoctor)
+                            .set("beh_doctor_id",behospitalDoctorID)
+                            .set("doctor_id",attendingDoctorID)
+                            .set("director_doctor_id",directorDoctorID);
+                    behospitalInfoFacade.update(updateWrapper);
                 });
+
             }
             if(addE.size()>0){
                 homePageService.saveBatch(addE);
@@ -278,6 +304,22 @@ public class AHomePageFacade extends HomePageServiceImpl{
         }
     }
 
+    /**
+     * 根据docktorName获取docktorID
+     * @param doctorName
+     * @return
+     */
+    public String getDoctorId(String doctorName){
+        QueryWrapper<BasDoctorInfo> queryWrapper = Wrappers.query();
+        queryWrapper.eq("name",doctorName);
+        BasDoctorInfo doctorInfo =aBasDoctorInfoFacade.getOne(queryWrapper);
+        if (doctorInfo !=null && StringUtils.isNotEmpty(doctorInfo.getDoctorId())){
+            return doctorInfo.getDoctorId();
+        }else {
+            return "-";
+        }
+    }
+
     public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
         try {
             //验证数据是否存在

+ 28 - 1
src/main/java/com/diagbot/util/TZDBConn.java

@@ -135,8 +135,35 @@ public class TZDBConn {
 		}
 		return basDeptInfoList;
 	}
+
 	/**
-	 * 从视图中获取医院科室数据,根据修改时间同步数据
+	 * 从视图中获取医院医生信息
+	 * @return
+	 */
+	public List<BasDoctorInfo> getDoctorInfo(String sql) {
+		List<BasDoctorInfo> basDoctorInfos=Lists.newLinkedList();
+		try {
+			TZDBConn dbconn=new TZDBConn();
+			ResultSet rs =dbconn.Query(sql, null);
+			while(rs.next()){
+				BasDoctorInfo basDoctorInfo =new BasDoctorInfo();
+				basDoctorInfo.setDoctorId(rs.getString("user_id"));//医生id
+				basDoctorInfo.setDeptId(rs.getString("dept_code"));//医生所在科室
+				basDoctorInfo.setName(rs.getString("name"));//医师姓名
+				basDoctorInfo.setProfessor(rs.getString("title"));//医师职称
+				basDoctorInfo.setOccup(rs.getString("certificate"));//是否有职业医师资格
+				basDoctorInfos.add(basDoctorInfo);
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}finally {
+			close();
+		}
+		return basDoctorInfos;
+	}
+
+	/**
+	 * 查询文书数量
 	 * @return
 	 */
 	public Integer getCount(String sql) {