|
@ -28,9 +28,7 @@ import com.yihu.wlyy.repository.doctor.DoctorTeamMemberDao;
|
|
|
import com.yihu.wlyy.repository.patient.SignFamilyDao;
|
|
|
import com.yihu.wlyy.service.app.health.PatientHealthGuidanceService;
|
|
|
import com.yihu.wlyy.service.app.talk.TalkGroupService;
|
|
|
import com.yihu.wlyy.util.HttpClientUtil;
|
|
|
import com.yihu.wlyy.util.HttpUtil;
|
|
|
import com.yihu.wlyy.util.SystemConf;
|
|
|
import com.yihu.wlyy.util.*;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.http.NameValuePair;
|
|
|
import org.apache.http.message.BasicNameValuePair;
|
|
@ -53,7 +51,8 @@ import org.springside.modules.persistence.SearchFilter.Operator;
|
|
|
import org.springside.modules.utils.Clock;
|
|
|
|
|
|
import com.yihu.wlyy.task.PushMsgTask;
|
|
|
import com.yihu.wlyy.util.MessageType;
|
|
|
|
|
|
import javax.print.Doc;
|
|
|
|
|
|
/**
|
|
|
* 網絡諮詢类.
|
|
@ -88,6 +87,8 @@ public class ConsultTeamService extends ConsultService {
|
|
|
private PatientHealthGuidanceService guidanceService;
|
|
|
@Autowired
|
|
|
private TalkGroupService talkGroupService;
|
|
|
@Autowired
|
|
|
private com.yihu.wlyy.service.common.account.DoctorService doctorService;
|
|
|
|
|
|
/**
|
|
|
* 查询患者是否还有未结束的三师咨询
|
|
@ -658,6 +659,7 @@ public class ConsultTeamService extends ConsultService {
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public int addTeamConsult(ConsultTeam ct, String patient) throws Exception {
|
|
|
JSONObject users = new JSONObject();
|
|
|
// 咨询三师
|
|
|
if (ct.getType() == 1) {
|
|
|
// 查询三师签约信息
|
|
@ -671,13 +673,20 @@ public class ConsultTeamService extends ConsultService {
|
|
|
//查找病人所在的团队
|
|
|
DoctorTeam doctorTeam = doctorTeamDao.findBySanshiParientCode(patient);
|
|
|
//得到团队的健康管理师
|
|
|
DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorSanshi2ByTeam(doctorTeam.getCode(), 3);
|
|
|
|
|
|
if (doctorTeamMember == null) {
|
|
|
doctorTeamMember = doctorTeamDoctor.findDoctorSanshi2ByTeam(doctorTeam.getCode(), 2);
|
|
|
DoctorTeamMember doctorTeamMemberHealthy = doctorTeamDoctor.findDoctorSanshi2ByTeam(doctorTeam.getCode(), 3);
|
|
|
DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorSanshi2ByTeam(doctorTeam.getCode(), 2);
|
|
|
if (doctorTeamMemberHealthy == null) {
|
|
|
ct.setDoctor(doctorTeamMember.getMemberCode());
|
|
|
users.put(doctorTeamMember.getMemberCode(),0);
|
|
|
}else{
|
|
|
users.put(doctorTeamMemberHealthy.getMemberCode(),0);
|
|
|
if(doctorTeamMember!=null){
|
|
|
users.put(doctorTeamMember.getMemberCode(),1);
|
|
|
}
|
|
|
ct.setDoctor(doctorTeamMemberHealthy.getMemberCode());
|
|
|
}
|
|
|
// 设置家庭医生
|
|
|
ct.setDoctor(doctorTeamMember.getMemberCode());
|
|
|
|
|
|
ct.setAdminTeamId(sc.getAdminTeamId());
|
|
|
} else if (ct.getType() == 2) {
|
|
|
// 咨询家庭医生
|
|
@ -690,14 +699,19 @@ public class ConsultTeamService extends ConsultService {
|
|
|
//查找病人所在的团队
|
|
|
DoctorTeam doctorTeam = doctorTeamDao.findByParientCode(patient);
|
|
|
//得到团队的健康管理师
|
|
|
DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorJiating2ByTeam(doctorTeam.getCode(), 3);
|
|
|
|
|
|
if (doctorTeamMember == null) {
|
|
|
doctorTeamMember = doctorTeamDoctor.findDoctorJiating2ByTeam(doctorTeam.getCode(), 2);
|
|
|
DoctorTeamMember doctorTeamMemberHealthy = doctorTeamDoctor.findDoctorJiating2ByTeam(doctorTeam.getCode(), 3);
|
|
|
DoctorTeamMember doctorTeamMember = doctorTeamDoctor.findDoctorJiating2ByTeam(doctorTeam.getCode(), 2);
|
|
|
if (doctorTeamMemberHealthy == null) {
|
|
|
ct.setDoctor(doctorTeamMember.getMemberCode());
|
|
|
users.put(doctorTeamMemberHealthy.getMemberCode(),0);
|
|
|
}else{
|
|
|
users.put(doctorTeamMemberHealthy.getMemberCode(),0);
|
|
|
if(doctorTeamMember!=null){
|
|
|
users.put(doctorTeamMember.getMemberCode(),1);
|
|
|
}
|
|
|
ct.setDoctor(doctorTeamMemberHealthy.getMemberCode());
|
|
|
}
|
|
|
ct.setTeam(sf.getTeamCode());
|
|
|
// 设置家庭医生
|
|
|
ct.setDoctor(doctorTeamMember.getMemberCode());
|
|
|
ct.setAdminTeamId(sf.getAdminTeamId());
|
|
|
}
|
|
|
// 设置患者信息
|
|
@ -733,23 +747,14 @@ public class ConsultTeamService extends ConsultService {
|
|
|
cd.setTo(ct.getDoctor());
|
|
|
// 添加医生咨询日志
|
|
|
String content = addLogs(ct);
|
|
|
//推送给IM文字消息
|
|
|
String returnJson = sendIM(ct.getPatient(), ct.getDoctor(), "6", content);
|
|
|
JSONObject jo = new JSONObject(returnJson);
|
|
|
if (jo.has("startId")) {
|
|
|
//设置消息ID
|
|
|
ct.setStartMsgId(jo.getInt("startId"));
|
|
|
//推送给IM图片
|
|
|
if (StringUtils.isNotEmpty(ct.getImages())) {
|
|
|
String[] images = ct.getImages().split(",");
|
|
|
for (String image : images) {
|
|
|
if (StringUtils.isNoneEmpty(image)) {
|
|
|
sendIM(ct.getPatient(), ct.getDoctor(), "2", image);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//推送给IM去创建议题,取得成员消息
|
|
|
JSONObject messages = ImUtill.getCreateTopicMessage(patient,tempPatient.getName(),consult.getTitle(),consult.getSymptoms(),consult.getImages());
|
|
|
users.put(patient,0);
|
|
|
JSONObject obj = ImUtill.createTopics(patient+"_consult_"+ct.getType(),consult.getCode(),"咨询问题:"+consult.getSymptoms(),users,messages,"1");
|
|
|
if(obj==null){
|
|
|
throw new RuntimeException("IM消息结束异常!");
|
|
|
}
|
|
|
|
|
|
ct.setStartMsgId(obj.get("start_msg_id").toString());
|
|
|
consultTeamDao.save(ct);
|
|
|
consultDao.save(consult);
|
|
|
consultTeamDoctorDao.save(cd);
|
|
@ -949,7 +954,7 @@ public class ConsultTeamService extends ConsultService {
|
|
|
throw new Exception("send consult finished IM message failed");
|
|
|
} else {
|
|
|
JSONObject jo = new JSONObject(returnJson); //设置消息ID
|
|
|
consultTeam.setEndMsgId(jo.getInt("startId"));
|
|
|
consultTeam.setEndMsgId(jo.getInt("startId")+"");
|
|
|
consultTeam.setEndOperator(endOperator);
|
|
|
consultTeam.setEndType(endType);
|
|
|
}
|
|
@ -1212,7 +1217,7 @@ public class ConsultTeamService extends ConsultService {
|
|
|
;
|
|
|
JSONObject jo = new JSONObject(returnJson);
|
|
|
//设置消息ID
|
|
|
ct.setStartMsgId(jo.getInt("startId"));
|
|
|
ct.setStartMsgId(jo.getInt("startId")+"");
|
|
|
//推送给IM图片
|
|
|
if (StringUtils.isNotEmpty(ct.getImages())) {
|
|
|
String[] images = ct.getImages().split(",");
|
|
@ -1345,7 +1350,7 @@ public class ConsultTeamService extends ConsultService {
|
|
|
sendIM(ct.getPatient(), ct.getDoctor(), "6", content);
|
|
|
jo = new JSONObject(returnJson);
|
|
|
//设置消息ID
|
|
|
ct.setStartMsgId(jo.getInt("startId"));
|
|
|
ct.setStartMsgId(jo.getInt("startId")+"");
|
|
|
//推送给IM图片
|
|
|
if (StringUtils.isNotEmpty(ct.getImages())) {
|
|
|
String[] images = ct.getImages().split(",");
|
|
@ -1429,4 +1434,227 @@ public class ConsultTeamService extends ConsultService {
|
|
|
public List findByTeam(String consult){
|
|
|
return consultTeamDao.findByTeamAndType(consult, 10);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 全科医生求助专科医生(同团队)
|
|
|
* @param ct
|
|
|
* @param uid
|
|
|
* @param oldConsultCode
|
|
|
*/
|
|
|
public void addSeekHelpTeam(ConsultTeam ct, String uid,String oldConsultCode){
|
|
|
ct.setPatient(uid);
|
|
|
//推送给IM文字消息
|
|
|
JSONObject participants = new JSONObject();
|
|
|
participants.put(ct.getPatient(),0);
|
|
|
participants.put(ct.getDoctor(),0);
|
|
|
Doctor doctor = doctorService.findDoctorByCode(uid);
|
|
|
JSONObject sessionJson = ImUtill.createSession(participants,"2",doctor.getName()+"发起求助!","");
|
|
|
if(sessionJson.getInt("status")==-1){
|
|
|
throw new RuntimeException(sessionJson.getString("message"));
|
|
|
}
|
|
|
JSONObject session = sessionJson.getJSONObject("data");
|
|
|
if(StringUtils.isNotEmpty(oldConsultCode)){
|
|
|
ConsultTeam oldConsult = consultTeamDao.findByConsult(oldConsultCode);
|
|
|
if(oldConsult!=null){
|
|
|
ImUtill.sendImMsg(ct.getPatient(), ct.getDoctor(), session.getString("id"),"1","居民问题:" +oldConsult.getSymptoms());
|
|
|
//推送给IM图片
|
|
|
if (StringUtils.isNotEmpty(oldConsult.getImages())) {
|
|
|
String[] images = oldConsult.getImages().split(",");
|
|
|
for (String image : images) {
|
|
|
if (StringUtils.isNoneEmpty(image)) {
|
|
|
ImUtill.sendImMsg(ct.getPatient(), ct.getDoctor(), session.getString("id"), "2",image);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
ImUtill.sendImMsg(ct.getPatient(), ct.getDoctor(), session.getString("id"),"1","咨询问题:"+ ct.getSymptoms());
|
|
|
//推送给IM图片
|
|
|
if (StringUtils.isNotEmpty(ct.getImages())) {
|
|
|
String[] images = ct.getImages().split(",");
|
|
|
for (String image : images) {
|
|
|
if (StringUtils.isNoneEmpty(image)) {
|
|
|
ImUtill.sendImMsg(ct.getPatient(), ct.getDoctor(), session.getString("id"), "2",image);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 全科医生求助专科医生(不同团队)
|
|
|
* @param ct
|
|
|
* @param uid
|
|
|
* @param oldConsultCode
|
|
|
*/
|
|
|
public void addSeekHelpOtherTeam(ConsultTeam ct, String uid,String oldConsultCode) throws Exception{
|
|
|
// 设置患者信息
|
|
|
ct.setPatient(uid);
|
|
|
Doctor doctorTemp = doctorDao.findByCode(uid);
|
|
|
// 设置医生姓名
|
|
|
ct.setName(doctorTemp.getName());
|
|
|
// 设置医生生日
|
|
|
ct.setBirthday(doctorTemp.getBirthday());
|
|
|
//新增性别
|
|
|
ct.setSex(doctorTemp.getSex());
|
|
|
// 设置医生头像
|
|
|
ct.setPhoto(doctorTemp.getPhoto());
|
|
|
// 设置操作日期
|
|
|
ct.setCzrq(new Date());
|
|
|
ct.setDel("1");
|
|
|
ct.setStatus(0);
|
|
|
// 医生未读数量为1
|
|
|
ct.setDoctorRead(1);
|
|
|
// 患者未读数量为0
|
|
|
ct.setPatientRead(0);
|
|
|
// 添加咨询记录
|
|
|
Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
|
|
|
// 设置咨询标识
|
|
|
ct.setConsult(consult.getCode());
|
|
|
// 添加咨询转发记录
|
|
|
ConsultTeamDoctor cd = new ConsultTeamDoctor();
|
|
|
cd.setConsult(consult.getCode());
|
|
|
cd.setDel("1");
|
|
|
cd.setCzrq(new Date());
|
|
|
cd.setTo(ct.getDoctor());
|
|
|
// 添加医生咨询日志
|
|
|
String content = addLogs(ct);
|
|
|
JSONObject messages = ImUtill.getCreateTopicMessage(doctorTemp.getCode(),doctorTemp.getName(),consult.getTitle(),content,consult.getImages());
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put(ct.getPatient(),0);
|
|
|
jsonObject.put(ct.getDoctor(),0);
|
|
|
//设置消息ID
|
|
|
JSONObject obj = ImUtill.createTopics(null,consult.getCode(),doctorTemp.getName(),jsonObject,messages,"2");
|
|
|
if(obj==null||obj.getInt("status")==-1){
|
|
|
throw new RuntimeException("im消息创建异常!"+obj==null?"":obj.getString("message"));
|
|
|
}
|
|
|
ct.setStartMsgId(obj.get("start_msg_id").toString());
|
|
|
//转发咨询问题
|
|
|
if(StringUtils.isNotBlank(oldConsultCode)){
|
|
|
Consult oldConsult = consultDao.findByCode(oldConsultCode);
|
|
|
if(oldConsult!=null){
|
|
|
ImUtill.sendImMsg(doctorTemp.getCode(),doctorTemp.getName(),String.valueOf(jsonObject.hashCode()),"6",content);
|
|
|
if(StringUtils.isNotBlank(oldConsult.getImages())){
|
|
|
String imgs[] = oldConsult.getImages().split(",");
|
|
|
for(String url :imgs)
|
|
|
ImUtill.sendImMsg(doctorTemp.getCode(),doctorTemp.getName(),String.valueOf(jsonObject.hashCode()),"2",url);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
consultTeamDao.save(ct); // 保存医生咨询信息
|
|
|
consultTeamDoctorDao.save(cd);
|
|
|
consultDao.save(consult);
|
|
|
}
|
|
|
|
|
|
public int finishConsult(String consult, String endOperator, int endType){
|
|
|
ConsultTeam consultTeam = consultTeamDao.findByConsult(consult);
|
|
|
String endName = "";
|
|
|
String endId = "";
|
|
|
//推送给IM文字消息
|
|
|
if (endType == 1) {
|
|
|
Patient p = patientDao.findByCode(endOperator);
|
|
|
endName = p.getName();
|
|
|
endId = p.getCode();
|
|
|
} else {
|
|
|
Doctor d = doctorDao.findByCode(endOperator);
|
|
|
endId = d.getCode();
|
|
|
endName = d.getName();
|
|
|
}
|
|
|
JSONObject obj = ImUtill.endTopics(consultTeam.getPatient(),endId,endName,consultTeam.getConsult());
|
|
|
if(obj==null){
|
|
|
throw new RuntimeException("IM消息结束异常!");
|
|
|
}
|
|
|
if(obj.getInt("status")==-1){
|
|
|
throw new RuntimeException(obj.getString("message"));
|
|
|
}
|
|
|
consultTeam.setType(endType);
|
|
|
consultTeam.setEndMsgId(obj.getString("id"));
|
|
|
return consultTeamDao.updateStatusByConsult(consult);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 新增名医咨询
|
|
|
* @param ct
|
|
|
* @param uid
|
|
|
* @param type 1患者 2医生
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public void famousConsult(ConsultTeam ct, String uid, String type) throws Exception {
|
|
|
// 设置患者信息
|
|
|
ct.setPatient(uid);
|
|
|
String senderId="";
|
|
|
String senderName="";
|
|
|
if ("1".equals(type)) {
|
|
|
// 查询患者信息
|
|
|
Patient tempPatient = patientDao.findByCode(uid);
|
|
|
// 设置患者姓名
|
|
|
ct.setName(tempPatient.getName());
|
|
|
// 设置患者生日
|
|
|
ct.setBirthday(tempPatient.getBirthday());
|
|
|
//新增性别
|
|
|
ct.setSex(tempPatient.getSex());
|
|
|
// 设置患者头像
|
|
|
ct.setPhoto(tempPatient.getPhoto());
|
|
|
|
|
|
senderId = tempPatient.getCode();
|
|
|
|
|
|
senderName = tempPatient.getName();
|
|
|
|
|
|
} else if ("2".equals(type)) {
|
|
|
Doctor doctorTemp = doctorDao.findByCode(uid);
|
|
|
// 设置医生姓名
|
|
|
ct.setName(doctorTemp.getName());
|
|
|
// 设置医生生日
|
|
|
ct.setBirthday(doctorTemp.getBirthday());
|
|
|
//新增性别
|
|
|
ct.setSex(doctorTemp.getSex());
|
|
|
// 设置医生头像
|
|
|
ct.setPhoto(doctorTemp.getPhoto());
|
|
|
|
|
|
senderId = doctorTemp.getCode();
|
|
|
|
|
|
senderName = doctorTemp.getName();
|
|
|
}
|
|
|
// 设置操作日期
|
|
|
ct.setCzrq(new Date());
|
|
|
ct.setDel("1");
|
|
|
ct.setStatus(0);
|
|
|
// 医生未读数量为1
|
|
|
ct.setDoctorRead(1);
|
|
|
// 患者未读数量为0
|
|
|
ct.setPatientRead(0);
|
|
|
// 添加咨询记录
|
|
|
Consult consult = addConsult(ct.getPatient(), null, ct.getSymptoms(), ct.getImages(), ct.getType());
|
|
|
// 设置咨询标识
|
|
|
ct.setConsult(consult.getCode());
|
|
|
// 添加咨询转发记录
|
|
|
ConsultTeamDoctor cd = new ConsultTeamDoctor();
|
|
|
cd.setConsult(consult.getCode());
|
|
|
cd.setDel("1");
|
|
|
cd.setCzrq(new Date());
|
|
|
cd.setTo(ct.getDoctor());
|
|
|
// 添加医生咨询日志
|
|
|
String content = addLogs(ct);
|
|
|
//推送给IM文字消息
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put(ct.getPatient(),0);
|
|
|
jsonObject.put(ct.getDoctor(),0);
|
|
|
|
|
|
JSONObject messages = ImUtill.getCreateTopicMessage(senderId,senderName,senderName+"发起咨询",content,ct.getImages());
|
|
|
|
|
|
JSONObject obj = ImUtill.createTopics(null,consult.getCode(),consult.getSymptoms(),jsonObject,messages,"2");
|
|
|
if(obj==null){
|
|
|
throw new RuntimeException("im消息创建异常!");
|
|
|
}
|
|
|
if(obj.getInt("status")==-1){
|
|
|
throw new RuntimeException(obj.getString("message"));
|
|
|
}
|
|
|
//设置消息ID
|
|
|
ct.setStartMsgId(obj.getString("start_msg_id"));
|
|
|
consultTeamDao.save(ct); // 保存医生咨询信息
|
|
|
consultTeamDoctorDao.save(cd);
|
|
|
consultDao.save(consult);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|