chenweida vor 8 Jahren
Ursprung
Commit
615e0adfdd

+ 2 - 2
patient-co-statistics-es/src/main/resources/application.yml

@ -6,11 +6,11 @@ spring:
    name: quota-es
  boot:
    admin:
      url: http://172.19.103.87:8082
      url: http://localhost:8082
      username: jkzl
      password: jkzlehr
      client:
        service-url: http://172.19.103.87:8082
        service-url: http://localhost:8082
  datasource:
    primaryReadWrite:

+ 8 - 8
patient-co-statistics/pom.xml

@ -9,7 +9,7 @@
    <modelVersion>4.0.0</modelVersion>
    <!--打成war包需要的配置-->
    <packaging>war</packaging>
    <packaging>jar</packaging>
    <!--<packaging>jar</packaging>-->
    <name>patient-co-statistics</name>
@ -383,7 +383,7 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>${version.spring-boot}</version>
            <scope>provided</scope>
            <!--<scope>provided</scope>-->
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
@ -415,12 +415,12 @@
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <!--<plugin>-->
                <!--<artifactId>maven-war-plugin</artifactId>-->
                <!--<configuration>-->
                    <!--<failOnMissingWebXml>false</failOnMissingWebXml>-->
                <!--</configuration>-->
            <!--</plugin>-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>

+ 2 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java

@ -152,4 +152,6 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    @Query("select d from Doctor d where d.del = 1 and d.password is null")
    List<Doctor> findAllNoPasswordDoctors();
    @Query(value = "SELECT d.* from wlyy_admin_team a,wlyy_doctor d WHERE a.id = ?1 and a.leader_code = d.`code` ORDER BY d.id LIMIT 1",nativeQuery = true)
    Doctor findByAdminTeamId(Long adminTeamId);
}

+ 5 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/message/MessageDao.java

@ -14,6 +14,7 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.Date;
import java.util.List;
public interface MessageDao extends PagingAndSortingRepository<Message, Long>, JpaSpecificationExecutor<Message> {
@ -68,4 +69,8 @@ public interface MessageDao extends PagingAndSortingRepository<Message, Long>, J
    @Query("update Message a set a.read = 0,a.over = '0' where a.receiver = ?1 and a.type not in (1,2)")
    @Modifying
    int setSysMessageReaded(String doctor);
    //查询患者最近7天的体征异常记录
    @Query(value = "SELECT COUNT(1) FROM wlyy_message WHERE type = '2' and sender = ?1 and create_time>=date_add(now(),interval -7 day) ",nativeQuery = true)
    int findTzMessage(String patient);
}

+ 7 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/patient/SignFamilyServerDao.java

@ -2,11 +2,18 @@ package com.yihu.wlyy.repository.patient;
import com.yihu.wlyy.entity.patient.SignFamilyServer;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by Trick on 2017/7/14.
 */
public interface SignFamilyServerDao extends PagingAndSortingRepository<SignFamilyServer, Long>, JpaSpecificationExecutor<SignFamilyServer> {
    //根据签约code,查询糖尿病和高血压
    @Query("select f from SignFamilyServer f where f.signCode = ?1 and f.serverType in (4,5)")
    List<SignFamilyServer> findBySignCodeAndType(String signCode);
}

+ 127 - 5
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/app/consult/ConsultTeamService.java

@ -98,16 +98,21 @@ public class ConsultTeamService extends ConsultService {
    private TalkGroupService talkGroupService;
    @Autowired
    private com.yihu.wlyy.service.common.account.DoctorService doctorService;
    @Autowired
    private HttpClientUtil HttpClientUtil;
    @Autowired
    private ImUtill ImUtill;
    @Autowired
    WeiXinAccessTokenUtils accessTokenUtils;
    Map<Integer, String> relations = new HashMap<>();
    @Autowired
    private HttpClientUtil HttpClientUtil;
    @Autowired
    private ImUtill ImUtill;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    private MessageDao messageDao;
    @Autowired
    private PrescriptionDao prescriptionDao;
    @PostConstruct
    public void init() {
        relations.put(0, "其他");
@ -834,7 +839,124 @@ public class ConsultTeamService extends ConsultService {
            return 1;
        }
    }
    /**
     * 添加续方咨询
     * @param jwCode
     * @param patient
     * @param agent
     * @param doctorCode
     * @param reason
     * @return
     */
    public Integer addPrescriptionConsult(String jwCode,String patient,String agent,String doctorCode,ConsultTeam ct,String reason) throws Exception {
        synchronized (jwCode.intern()){
            Doctor doctor = doctorDao.findByCode(doctorCode);
            // 查询患者信息
            Patient p = patientDao.findByCode(patient);
            //获取基位处方详情
            Prescription prescription = new Prescription();
            prescription.setCode(getCode());
            prescription.setHospitalName(doctor.getHospitalName());
            prescription.setHospital(doctor.getHospital());
            prescription.setAdminTeamId(ct.getAdminTeamId());
            prescription.setCreateTime(new Date());
            prescription.setDept(doctor.getDept());
            prescription.setDeptName(doctor.getDeptName());
            prescription.setDoctor(doctor.getCode());
            prescription.setDoctorName(doctor.getName());
            prescription.setJwCode(jwCode);
            prescription.setPatient(p.getCode());
            prescription.setPatientName(p.getName());
            prescription.setReason(reason);
            prescription.setType(2);
            prescription.setStatus(0);
            String symptoms = p.getName()+"申请续方\n体征信息:";
            //获取体征记录
            Iterable<PatientDevice> devices = patientDeviceDao.findByUser(patient);
            if(devices!=null||devices.iterator().hasNext()){
                int count = messageDao.findTzMessage(patient);
                symptoms +="最近七天有"+count+"条异常记录";
            }else{
                symptoms +="居民未绑定体征设备";
            }
            //获取上次续方时间:与平安的“智慧医保的审方系统”对接,判断居民上次续方时间,点击跳转上次续方记录。(此功能需与第三方系统对接,如果本次版本无法实现,则消息中不显示此条信息)
            //创建咨询
            JSONObject users = new JSONObject();//咨询参与者
            users.put(patient, 0);
            users.put(doctorCode, 0);
            if(patient.equals(agent)){
                agent = null;
            }
            ct.setDoctor(doctorCode);
            ct.setDoctorName(doctor.getName());
            // 设置患者信息
            ct.setPatient(patient);
            ct.setSymptoms(symptoms);
            // 设置患者姓名
            ct.setName(p.getName());
            // 设置患者生日
            ct.setBirthday(p.getBirthday());
            //新增性别
            ct.setSex(p.getSex());
            // 设置患者头像
            ct.setPhoto(p.getPhoto());
            // 设置操作日期
            ct.setCzrq(new Date());
            ct.setDel("1");
            ct.setStatus(0);
            // 医生未读数量为1
            ct.setDoctorRead(1);
            // 添加咨询记录
            Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
            // 设置关联指导
            consult.setGuidance(ct.getGuidance());
            // 设置咨询标识
            ct.setConsult(consult.getCode());
            //推送给IM去创建议题,取得成员消息
            JSONObject messages = ImUtill.getCreateTopicMessage(patient, p.getName(), consult.getTitle(), consult.getSymptoms(), consult.getImages(),agent);
            //续方咨询的sessionid为居民code+续方code+咨询类型
            JSONObject obj = ImUtill.createTopics(patient + "_" + prescription.getCode() + "_" + ct.getType(), consult.getCode(), p.getName(), users, messages, ImUtill.SESSION_TYPE_PRESCRIPTION);
            if (obj == null) {
                throw new RuntimeException("IM消息发送异常!");
            }
            if(obj.getInt("status")==-1){//im议题创建失败
                throw new RuntimeException(obj.getString("message"));
            }
            ct.setStartMsgId(obj.get("start_msg_id").toString());
            consultTeamDao.save(ct);
            consultDao.save(consult);
            //记录咨询的医生详情
            ConsultTeamDoctor cd = new ConsultTeamDoctor();
            cd.setConsult(consult.getCode());
            cd.setDel("1");
            cd.setCzrq(new Date());
            cd.setTo(doctorCode);
            consultTeamDoctorDao.save(cd);
            //3、保存续方记录
            prescription.setConsult(ct.getConsult());
            prescriptionDao.save(prescription);
            // 保存医生咨询信息
            // 添加咨询转发记录
            // 添加医生咨询日志
            String content = addLogs(ct);
            return 1;
        }
    }
    /**
     * 发送消息给IM
     *

+ 1 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/util/ImUtill.java

@ -414,6 +414,7 @@ public class ImUtill {
    public static final String SESSION_TYPE_P2P = "2";
    public static final String SESSION_TYPE_GROUP = "3";
    public static final String SESSION_TYPE_SYSTEM = "0";
    public static final String SESSION_TYPE_PRESCRIPTION = "5";//续方
    public static final String SESSION_STATUS_PROCEEDINGS = "0";
    public static final String SESSION_STATUS_END = "1";

+ 5 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/util/MessageType.java

@ -115,6 +115,11 @@ public class MessageType {
	public static enum MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_DOCTOR {
		D_CT_04, 名医咨询, 您有新的名医咨询
	};
	//新的续方咨询
	public static enum MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_PRESCRIPTION {
		D_CT_05, 续方咨询, 您有新的续方咨询
	};
	// 患者回复指定咨询√
	public static enum MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_REPLY {
		D_CT_02, 名医咨询, 您有新的消息

+ 10 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/account/PatientController.java

@ -4,7 +4,9 @@ import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.admin.AdminTeam;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.SignFamilyServer;
import com.yihu.wlyy.entity.security.Token;
import com.yihu.wlyy.repository.patient.SignFamilyServerDao;
import com.yihu.wlyy.repository.security.TokenDao;
import com.yihu.wlyy.service.app.account.PatientInfoService;
import com.yihu.wlyy.service.app.sign.FamilyContractService;
@ -64,6 +66,8 @@ public class PatientController extends WeixinBaseController {
    PatientService patientService;
    @Autowired
    private SMSService smsService;
    @Autowired
    private SignFamilyServerDao signFamilyServerDao;
    /**
     * 患者基本信息查询接口
@ -80,11 +84,16 @@ public class PatientController extends WeixinBaseController {
            Patient temp = patientInfoService.findByCode(getRepUID());
            SignFamily sanshi = familyContractService.findByPatientByType(getRepUID(), 1);
            SignFamily jiating = familyContractService.findByPatientByType(getRepUID(), 2);
            int prescription = 0;
            int sign = 0;
            if (sanshi != null && jiating != null) {
                sign = 3;
            } else if (jiating != null) {
                sign = 2;
                List<SignFamilyServer> list = signFamilyServerDao.findBySignCodeAndType(jiating.getCode());
                if(list!=null&&list.size()>0){
                    prescription = 1;
                }
            } else if (sanshi != null) {
                sign = 1;
            }
@ -127,6 +136,7 @@ public class PatientController extends WeixinBaseController {
                json.put("address", temp.getAddress());
                // 设置签约状态:0未签约,1三师,2家庭,3三师和家庭
                json.put("sign", sign);
                json.put("prescription", prescription);//是否可以续方咨询0不可以、1可以
                json.put("countryCode",temp.getSickVillage()==null?"":temp.getSickVillage());
                json.put("countryName",temp.getSickVillageName()==null?"":temp.getSickVillageName());
                json.put("idcardAll", temp.getIdcard());//完整身份证

+ 76 - 8
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/consult/ConsultController.java

@ -22,7 +22,6 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
@ -58,14 +57,16 @@ public class ConsultController extends WeixinBaseController {
    @Autowired
    private DoctorWorkTimeService doctorWorkTimeService;
    @Autowired
    PatientDao patientDao;
    private  PatientDao patientDao;
    @Autowired
    private CommonUtil CommonUtil;
    @Autowired
    private ImUtill ImUtill;
    @Autowired
    private HttpUtil httpUtil;
    private HttpUtil httpUtil; @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorDao doctorDao;
    /**
     * 患者咨询记录查询
@ -259,7 +260,75 @@ public class ConsultController extends WeixinBaseController {
            return error(-1, "查询失败");
        }
    }
    @RequestMapping(value = "isPrescriptionConsult",method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation("是否可以续方咨询")
    public String isPrescriptConsult(String patient){
        try{
            SignFamily signFamily = signFamilyDao.findByPatient(patient);
            if(signFamily==null){
                return error(-1,"您还未签约,不能发起续方咨询!");
            }
            //点击后判断,如果用户当前存在可申请续方的处方记录,则进入续方申请流程,若不存在可续方记录,alert“当前没有可以申请续方的处方记录”
            Doctor doctor = doctorDao.findByAdminTeamId(signFamily.getAdminTeamId());
            JSONObject json = new JSONObject();
            json.put("doctor",doctor.getCode());
            json.put("doctorName",doctor.getName());
            json.put("adminTeamId",signFamily.getAdminTeamId());
            json.put("hospital",doctor.getHospital());
            json.put("hospitalName",doctor.getHospitalName());
            return write(200, "查询成功!", "data", json);
        }catch (Exception e){
            error(e);
            return error(-1,"查询失败");
        }
    }
    @RequestMapping(value = "addPrescriptionConsult",method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation("添加续方咨询")
    public String addPrescriptionConsult(@ApiParam(name = "patient", value = "居民code", defaultValue = "1")
                                         @RequestParam(value = "patient", required = true) String patient,
                                         @ApiParam(name = "jwCode", value = "基位处方code", defaultValue = "10")
                                         @RequestParam(value = "jwCode", required = true) String jwCode,
                                         @ApiParam(name = "doctor", value = "咨询医生(开方医生、审核医生)", defaultValue = "86225d1365e711e69f7c005056850d66")
                                         @RequestParam(value = "doctor", required = true) String doctor,
                                         @ApiParam(name = "adminTeamId", value = "签约行政团队id", defaultValue = "224")
                                         @RequestParam(value = "adminTeamId", required = true) Long adminTeamId,
                                         @ApiParam(name = "reason", value = "续方说明", defaultValue = "续方申请")
                                         @RequestParam(value = "reason", required = false) String reason){
        try{
            ConsultTeam consult = new ConsultTeam();
            consult.setType(8);//续方咨询
            consult.setAdminTeamId(adminTeamId);
            // 保存到数据库
            int res = consultTeamService.addPrescriptionConsult(jwCode, "a663d0cf7f8c4d38a8327cedc921e65f","a663d0cf7f8c4d38a8327cedc921e65f",doctor,consult,reason);
//            int res = consultTeamService.addPrescriptionConsult(jwCode, getRepUID(),getUID(),doctor,consult,reason);
            if (res == -1) {
                return error(-1, "家庭签约信息不存在或已过期,无法进行家庭医生咨询!");
            }
//            Doctor doctor = doctorService.findDoctorByCode(consult.getDoctor());
//            // 添加到统计队列
//            if (consult.getType() == 2) {
//                DoctorStatisticsTask.getInstance(doctorStatisticsService).put(consult.getDoctor(), 1, 1, 0);
//            }
            // 推送消息给医生
            PushMsgTask.getInstance().put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_NEW_CONSULT_TEAM.D_CT_01.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_PRESCRIPTION.续方咨询.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_PRESCRIPTION.您有新的续方咨询.name(), consult.getConsult());
            BusinessLogs.info(BusinessLogs.BusinessType.consult, getRepUID(), getUID(), new JSONObject(consult));
            return write(200, "提交成功", "data", consult);
        }catch (Exception e){
            error(e);
            return error(-1,"添加失败");
        }
    }
    /**
     * 三师咨询添加接口
     *
@ -782,8 +851,7 @@ public class ConsultController extends WeixinBaseController {
            return invalidUserException(e, -1, "查询失败!");
        }
    }
    @Value("${im.im_list_get}")
    private String im_list_get;
    /**
     * 查找单个咨询记录
     *
@ -800,9 +868,9 @@ public class ConsultController extends WeixinBaseController {
                return error(-1, "咨询记录不存在!");
            }
            String url =im_list_get
            String url = SystemConf.getInstance().getSystemProperties().getProperty("im_list_get")
                    + "api/v1/chats/message";
            String reG = httpUtil.sendGet(url, "id=" + logId + "&type=" + msgType);
            String reG = HttpUtil.sendGet(url, "id=" + logId + "&type=" + msgType);
            JSONObject obj = null;
            if (!org.springframework.util.StringUtils.isEmpty(reG)) {
                obj = new JSONObject(new String(reG.getBytes(), "utf-8"));