chenweida 7 vuotta sitten
vanhempi
commit
2d1a83ca4d

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

@ -9,6 +9,7 @@ import com.yihu.wlyy.entity.consult.Consult;
import com.yihu.wlyy.entity.consult.ConsultTeam;
import com.yihu.wlyy.entity.consult.ConsultTeamDoctor;
import com.yihu.wlyy.entity.consult.ConsultTeamLog;
import com.yihu.wlyy.entity.device.PatientDevice;
import com.yihu.wlyy.entity.discussion.WlyyTalkGroup;
import com.yihu.wlyy.entity.doctor.profile.Doctor;
import com.yihu.wlyy.entity.doctor.team.sign.DoctorTeam;
@ -17,14 +18,18 @@ import com.yihu.wlyy.entity.education.HealthEduArticle;
import com.yihu.wlyy.entity.patient.Patient;
import com.yihu.wlyy.entity.patient.PatientFamilyMember;
import com.yihu.wlyy.entity.patient.SignFamily;
import com.yihu.wlyy.entity.patient.prescription.Prescription;
import com.yihu.wlyy.repository.consult.ConsultTeamDao;
import com.yihu.wlyy.repository.consult.ConsultTeamDoctorDao;
import com.yihu.wlyy.repository.consult.ConsultTeamLogDao;
import com.yihu.wlyy.repository.doctor.DoctorPatientDao;
import com.yihu.wlyy.repository.doctor.DoctorTeamDao;
import com.yihu.wlyy.repository.doctor.DoctorTeamMemberDao;
import com.yihu.wlyy.repository.message.MessageDao;
import com.yihu.wlyy.repository.patient.PatientDeviceDao;
import com.yihu.wlyy.repository.patient.PatientFamilyMemberDao;
import com.yihu.wlyy.repository.patient.SignFamilyDao;
import com.yihu.wlyy.repository.prescription.PrescriptionDao;
import com.yihu.wlyy.service.app.health.HealthEduArticleService;
import com.yihu.wlyy.service.app.health.PatientHealthGuidanceService;
import com.yihu.wlyy.service.app.talk.TalkGroupService;
@ -98,6 +103,12 @@ public class ConsultTeamService extends ConsultService {
    private TalkGroupService talkGroupService;
    @Autowired
    private com.yihu.wlyy.service.common.account.DoctorService doctorService;
    @Autowired
    private PatientDeviceDao patientDeviceDao;
    @Autowired
    private MessageDao messageDao;
    @Autowired
    private PrescriptionDao prescriptionDao;
    @Autowired
    WeiXinAccessTokenUtils accessTokenUtils;
@ -957,6 +968,125 @@ 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
     *

+ 5 - 1
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/patient/consult/ConsultController.java

@ -67,7 +67,10 @@ public class ConsultController extends WeixinBaseController {
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorDao doctorDao;
    @Autowired
    private SignFamilyDao signFamilyDao;
    @Autowired
    private DoctorDao doctorDao;
    /**
     * 患者咨询记录查询
     *
@ -329,6 +332,7 @@ public class ConsultController extends WeixinBaseController {
            return error(-1,"添加失败");
        }
    }
    /**
     * 三师咨询添加接口
     *