ソースを参照

医生信息每天定时拉取,住院登记信息docktorId如果是加密的话 采用之前的数据,病案首页进来时根据医师姓名反查医生id并更新住院登记信息的医生id,文书一致性修改

shiyue 3 年 前
コミット
fdb67adc1f

+ 13 - 0
src/main/java/com/diagbot/entity/BasDoctorInfo.java

@@ -48,6 +48,10 @@ public class BasDoctorInfo implements Serializable {
      * 职业医师资格
      */
     private String occup;
+    /**
+     * 医疗组id
+     */
+    private String groupId;
 
     /**
      * 是否删除,N:未删除,Y:删除
@@ -161,6 +165,7 @@ public class BasDoctorInfo implements Serializable {
                 ", name=" + name +
                 ", professor=" + professor +
                 ", occup=" + occup +
+                ", groupId=" + groupId +
                 ", isDeleted=" + isDeleted +
                 ", gmtCreate=" + gmtCreate +
                 ", gmtModified=" + gmtModified +
@@ -168,4 +173,12 @@ public class BasDoctorInfo implements Serializable {
                 ", modifier=" + modifier +
                 "}";
     }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
 }

+ 8 - 2
src/main/java/com/diagbot/facade/OldDataFacade.java

@@ -66,8 +66,8 @@ public class OldDataFacade {
                     .eq("is_deleted",IsDeleteEnum.N.getKey()));
             String sql ="select count(*) as count from v_jkcdss_bl_bingli where behospitalCode = "+code;
             Integer count =tzDBConn.getCount(sql);
-            if (count!=0 && myCount !=0){
-                if (count!=myCount){
+            if (count!=0){
+                if (count != myCount){
                     aMedicalRecordFacade.remove(new QueryWrapper<MedicalRecord>()
                                     .eq("behospital_code",code)
                                     .eq("hospital_id",Long.valueOf("14")));
@@ -80,5 +80,11 @@ public class OldDataFacade {
 
         }
 
+    }
+    /**
+     * 每天同步医生信息
+     */
+    public void DoctorExecute(){
+
     }
 }

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

@@ -33,7 +33,7 @@ public class ABasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
      * 同步历史数据
      */
     public void executeDoctorPast() {
-        String sql="select * from gi_userinfo";
+        String sql="select * from v_gy_zgxx_ys";
         List<BasDoctorInfo> basDeptInfoList = tzDBConn.getBasDoctorInfo(sql);
         execute(basDeptInfoList);
 

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABehospitalInfoDTO;
+import com.diagbot.entity.BasDoctorInfo;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.entity.QcType;
@@ -32,9 +33,12 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @Component
 public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
@@ -51,6 +55,8 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
     private AMedicalRecordFacade aMedicalRecordFacade;
     @Autowired
     private SendDataDealFacade sendDataDealFacade;
+    @Autowired
+    private ABasDoctorInfoFacade aBasDoctorInfoFacade;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -140,7 +146,13 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
                     .eq("behospital_code", s.getBehospitalCode())
                     .eq("hospital_id", s.getHospitalId())
                     .eq("is_deleted",IsDeleteEnum.N), false);
+            //判断doctorId是否为数字,不为数字的情况下采用之前的doctorId
+            Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*");
+            Matcher isNum = pattern.matcher(StringUtils.isNotEmpty(s.getDoctorId())?s.getDoctorId():"-");
             if (behospitalInfo != null) {
+                if (!isNum.matches()){
+                    s.setDoctorId(StringUtils.isNotEmpty(behospitalInfo.getDoctorId())?behospitalInfo.getDoctorId():"-");
+                }
                 s.setGmtModified(new Date());
                 s.setQcTypeId(initQcTypeId(s));
                 updateE.add(s);

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

@@ -3,9 +3,11 @@ 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.entity.MedPacsResult;
@@ -51,6 +53,9 @@ public class AHomePageFacade extends HomePageServiceImpl{
     @Autowired
     private SendDataDealFacade sendDataDealFacade;
 
+    @Autowired
+    private ABasDoctorInfoFacade aBasDoctorInfoFacade;
+
     @Value("${log_switch.enable}")
     private boolean logSwitch;
 
@@ -159,17 +164,24 @@ public class AHomePageFacade extends HomePageServiceImpl{
 
                 sendDataDealFacade.sendInfo(s.getBehospitalCode());
 
-                //从病案首页同步入院登记表中的住院医生behospitalDoctor,主治医生attendingDoctor和主任医生directorDoctor
-                String behospitalDoctor= StringUtils.isEmpty(homePage.getBehospitalDoctor()) ? "" : homePage.getBehospitalDoctor();
-                String attendingDoctor= StringUtils.isEmpty(homePage.getAttendingDoctor()) ? "" : homePage.getAttendingDoctor();
-                String directorDoctor= StringUtils.isEmpty(homePage.getDirectorDoctor()) ? "" : homePage.getDirectorDoctor();
+                //从病案首页同步入院登记表中的住院医生behospitalDoctor,主治医生attendingDoctor和主任医生directorDoctor和ID
+                String behospitalDoctor= StringUtils.isEmpty(homePage.getBehospitalDoctor()) ? "" : homePage.getBehospitalDoctor();//获取住院医师姓名
+                String attendingDoctor= StringUtils.isEmpty(homePage.getAttendingDoctor()) ? "" : homePage.getAttendingDoctor();//获取主治医师姓名
+                String directorDoctor= StringUtils.isEmpty(homePage.getDirectorDoctor()) ? "" : homePage.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",homePage.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("director_doctor_name",directorDoctor)
+                        .set("beh_doctor_id",behospitalDoctorID)
+                        .set("doctor_id",attendingDoctorID)
+                        .set("director_doctor_id",directorDoctorID);
                 behospitalInfoFacade.update(updateWrapper);
 
                 homePageList.add(homePage);
@@ -189,6 +201,22 @@ public class AHomePageFacade extends HomePageServiceImpl{
         }
     }
 
+    /**
+     * 根据docktorName获取docktorID
+     * @param doctorName
+     * @return
+     */
+    public String getDoctorId(String doctorName){
+        QueryWrapper<BasDoctorInfo> queryWrapper = Wrappers.query();
+        queryWrapper.eq("",doctorName);
+        BasDoctorInfo doctorInfo =aBasDoctorInfoFacade.getOne(queryWrapper);
+        if (doctorInfo !=null && StringUtils.isNotEmpty(doctorInfo.getDoctorId())){
+            return doctorInfo.getDoctorId();
+        }else {
+            return "-";
+        }
+    }
+
     /**
      * 评分后返回结构体
      * @param aHomePageIngVO

+ 80 - 0
src/main/java/com/diagbot/task/DoctorTask.java

@@ -0,0 +1,80 @@
+package com.diagbot.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.facade.OldDataFacade;
+import com.diagbot.facade.SysTaskCronFacade;
+import com.diagbot.facade.data.ABasDoctorInfoFacade;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.TaskVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.Trigger;
+import org.springframework.scheduling.TriggerContext;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @Description:
+ * 每天同步更新doctorInfo信息
+ * @author: gaodm
+ * @time: 2020/4/15 17:45
+ */
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务
+@Slf4j
+public class DoctorTask implements SchedulingConfigurer {
+    @Autowired
+    private SysTaskCronFacade sysTaskCronFacade;
+
+    private SysTaskCron task = new SysTaskCron();
+
+    private String param = "";
+
+    @Autowired
+    private ABasDoctorInfoFacade aBasDoctorInfoFacade;
+
+    /**
+     * 执行定时任务.
+     */
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.addTriggerTask(new Runnable() {
+            @Override
+            public void run() {
+                //1.添加任务内容(Runnable)
+                if (null != task
+                        && task.getIsDeleted().equals(IsDeleteEnum.N.getKey())
+                        && task.getIsUsed().equals(1)) {
+                    log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
+                    TaskVO taskVO = new TaskVO();
+                    aBasDoctorInfoFacade.executeDoctorPast();
+
+                }
+            }
+        }, new Trigger() {
+            @Override
+            public Date nextExecutionTime(TriggerContext triggerContext) {
+                //2.1 从数据库获取执行周期
+                task = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
+                        .eq("cron_code", "dcotor_task"), false);
+                String cron = "0 0 23 * * ? ";
+                //2.2 合法性校验.
+                if (null != task && StringUtil.isNotBlank(task.getCron())) {
+                    cron = task.getCron();
+                    param = task.getParam();
+                }
+                CronTrigger trigger = new CronTrigger(cron);
+                return trigger.nextExecutionTime(triggerContext);
+            }
+        });
+    }
+}

+ 5 - 4
src/main/java/com/diagbot/util/TZDBConn.java

@@ -115,11 +115,12 @@ public class TZDBConn {
 			rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				BasDoctorInfo basDoctorInfo=new BasDoctorInfo();
-				basDoctorInfo.setDoctorId(rs.getString("YHRYBH"));//医生ID
+				basDoctorInfo.setDoctorId(rs.getString("ZGID"));//医生ID
 				basDoctorInfo.setHospitalId(HOSPITAL_ID);//医院ID
-				//basDoctorInfoVO.setDeptId(rs.getString("ZZKSID"));//科室ID
-				basDoctorInfo.setName(rs.getString("YHRYMC"));//医生姓名
-				basDoctorInfo.setProfessor(rs.getString("YHRYZC"));//职称
+				basDoctorInfo.setDeptId(rs.getString("KSDM"));//科室ID
+				basDoctorInfo.setName(rs.getString("XM"));//医生姓名
+				basDoctorInfo.setProfessor(rs.getString("MC"));//职称
+				basDoctorInfo.setGroupId(rs.getString("YSZH"));//医疗组id
 
 				basDoctorInfoList.add(basDoctorInfo);
 			}

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

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

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -2,7 +2,7 @@ spring:
   application:
     name: mrqc-sys
   profiles:
-    active: local
+    active: test
   main:
     allow-bean-definition-overriding: true