瀏覽代碼

健康咨询接口提交

huangwenjie 5 年之前
父節點
當前提交
9fcf133dc9

+ 14 - 4
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -962,11 +962,15 @@ public class ImService {
			//4、创建咨询
			JSONObject users = new JSONObject();//咨询参与者
			
			String consultTitle = "";
			//协同门诊
			if("2".equals(wlyyOutpatientDO.getOutpatientType())){
				users.put(wlyyOutpatientDO.getGeneralDoctor(),0);
				ct.setType(12);
				consultTitle = "申请协同门诊";
			}else{
				users.put(patient, 0);
				consultTitle = "申请复诊";
			}
			users.put(doctorCode, 0);
			//关联业务code
@ -994,7 +998,7 @@ public class ImService {
			// 医生未读数量为1
			ct.setDoctorRead(1);
			// 添加咨询记录
			ConsultDo consult = addConsult(ct.getPatient(), "申请复诊", ct.getSymptoms(), ct.getImages(), ct.getType());
			ConsultDo consult = addConsult(ct.getPatient(), consultTitle, ct.getSymptoms(), ct.getImages(), ct.getType());
			// 设置关联指导
			consult.setGuidance(ct.getGuidance());
			//关联业务code
@ -1005,19 +1009,25 @@ public class ImService {
			//推送给IM去创建议题,取得成员消息
			
			JSONObject messages =  new JSONObject();
			JSONObject obj = new JSONObject();
			String sessionId = "";
			//协同门诊
			if("2".equals(wlyyOutpatientDO.getOutpatientType())){
				BaseDoctorDO generalDoctor = baseDoctorDao.findById(wlyyOutpatientDO.getGeneralDoctor());
				messages = imUtil.getCreateTopicMessage(generalDoctor.getId(),generalDoctor.getName(), consult.getTitle(), content, consult.getImages(), doctorCode);
				//5、(im创建咨询) 续方咨询的sessionid为居民code+就诊code+12(图文,视频,图文+视频)
				sessionId = patient + "_" + outpatientCode + "_" + ct.getType();
				obj = imUtil.createTopics(sessionId, consult.getId(), p.getName(), users, messages, imUtil.SESSION_TYPE_COLLABORATION_HOSPITAL);
			}else{
				messages = imUtil.getCreateTopicMessage(patient, p.getName(), consult.getTitle(), content, consult.getImages(), doctorCode);
				//5、(im创建咨询) 续方咨询的sessionid为居民code+就诊code+9(图文,视频,图文+视频)
				sessionId = patient + "_" + outpatientCode + "_" + ct.getType();
				obj = imUtil.createTopics(sessionId, consult.getId(), p.getName(), users, messages, imUtil.SESSION_TYPE_EXAMINATION);
			}
			
			
			//5、(im创建咨询) 续方咨询的sessionid为居民code+就诊code+咨询类型(图文,视频,图文+视频)
			String sessionId = patient + "_" + outpatientCode + "_" + ct.getType();
			JSONObject obj = imUtil.createTopics(sessionId, consult.getId(), p.getName(), users, messages, imUtil.SESSION_TYPE_EXAMINATION);
			if (obj == null) {
				throw new RuntimeException("IM消息发送异常!");
			}

+ 1 - 0
business/im-service/src/main/java/com/yihu/jw/im/util/ImUtil.java

@ -675,6 +675,7 @@ public class ImUtil {
	public static final String SESSION_TYPE_ONDOOR_NURSING = "11";//上门护理
	public static final String SESSION_TYPE_COLLABORATION_HOSPITAL = "12";///互联网医院协同门诊
	public static final String SESSION_TYPE_GUIDANCE_HOSPITAL = "14";//互联网医院居民导诊聊天
	public static final String SESSION_TYPE_GENERAL_EXPERT = "15";//全科医生发起求助专科医生的专家咨询
	public static final String SESSION_STATUS_PROCEEDINGS = "0";
	public static final String SESSION_STATUS_END = "1";
	

+ 7 - 1
common/common-request-mapping/src/main/java/com/yihu/jw/rm/hospital/BaseHospitalRequestMapping.java

@ -382,8 +382,14 @@ public class BaseHospitalRequestMapping {
        //医生咨询记录查询
        public static final String records ="/records";
        
        //添加复诊咨询
        //添加(复诊咨询,协同门诊)
        public static final String addPrescriptionConsult ="/addPrescriptionConsult";
    
        //全科医生发起求助专科医生的专家咨询
        public static final String generalAddExpertConsult = "/generalAddExpertConsult";
    
        //查询全科医生与专科医生是否存在未结束的咨询
        public static final String isExistsUnfinishedConsult ="/isExistsUnfinishedConsult";
        
        //医生可接单列表(图文复诊、视频复诊、协同门诊)
        public static final String findWaitingRoomOutpatientByDoctor = "findWaitingRoomOutpatientByDoctor";

+ 52 - 42
svr/svr-internet-hospital/src/main/java/com/yihu/jw/hospital/endpoint/consult/DoctorConsultEndpoint.java

@ -116,7 +116,7 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
	}
	
	@PostMapping(value = BaseHospitalRequestMapping.DodtorIM.addPrescriptionConsult)
	@ApiOperation(value = "添加复诊咨询", notes = "添加复诊咨询")
	@ApiOperation(value = "添加(复诊咨询,协同门诊)", notes = "添加(复诊咨询,协同门诊)")
	public Envelop addPrescriptionConsult(@ApiParam(name = "outpatientCode", value = "HIS就诊记录CODE", defaultValue = "1")
			@RequestParam(value = "outpatientCode", required = true) String outpatientCode,
			@ApiParam(name = "patientCode", value = "复诊居民", defaultValue = "9638fa184ad14a71ba7e4bf931670778")
@ -153,50 +153,60 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
				//2.
				result = imService.addPrescriptionConsult(outpatientCode, patientCode,doctorCode,consult,reason,type);
			}
//			if (res == -1) {
//				failed("该处方存在未审核的处方,无法进行复诊咨询!");
////				return error(-1, "该处方存在未审核的续方,无法进行续方咨询!");
//			} if (res == -3) {
//				failed("您当天有未完成的处方,不能发起复诊!");
////				return error(-1, "您当天有未完成的续方,不能发起续方咨询!");
//			}
//            Doctor doctor = doctorService.findDoctorByCode(consult.getDoctor());
//            // 添加到统计队列
//            if (consult.getType() == 2) {
//                DoctorStatisticsTask.getInstance(doctorStatisticsService).put(consult.getDoctor(), 1, 1, 0);
//            }
//
//			if(messageService.getMessageNoticeSettingByMessageType(doctor,"1",MessageNoticeSetting.MessageTypeEnum.prescriptionSwitch.getValue())){
//				// 推送消息给医生
//				pushMsgTask.put(doctor, MessageType.MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_PRESCRIPTION.D_CT_05.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_PRESCRIPTION.续方咨询.name(), MessageType.MESSAGE_TYPE_DOCTOR_NEW_FAMOUS_CONSULT_TEAM_PRESCRIPTION.您有新的续方咨询.name(), consult.getConsult());
//				try {
//					//            新增发送医生助手模板消息 v1.4.0 by wujunjie
//					Doctor doctor1 = doctorDao.findByCode(doctor);
//					Patient patient = patientDao.findByCode(getRepUID());
//					String doctorOpenID = doctor1.getOpenid();
//					if (StringUtils.isNotEmpty(doctorOpenID)) {
//						String url = doctorAssistant + "/wlyy/feldsher/sendDoctorTemplates";
//						List<NameValuePair> params = new ArrayList<>();
//						params.add(new BasicNameValuePair("type", "9"));
//						params.add(new BasicNameValuePair("openId", doctorOpenID));
//						params.add(new BasicNameValuePair("url", targetUrl));
//						params.add(new BasicNameValuePair("first", doctor1.getName() + "医生您好。您的签约居民"+patient.getName()+"申请线上续方,请尽快审核。"));
//						params.add(new BasicNameValuePair("remark", "请进入手机APP查看"));
//						SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
//						String keywords = "续方审核" + "," + doctor1.getHospitalName()+","+doctor1.getName();
//						params.add(new BasicNameValuePair("keywords", keywords));
//
//						httpClientUtil.post(url, params, "UTF-8");
//					}
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//			BusinessLogs.info(BusinessLogs.BusinessType.consult, getRepUID(), getUID(), new org.json.JSONObject(consult));
			return success("操作成功",result);
	}
	
	@PostMapping(value = BaseHospitalRequestMapping.PatientIM.add)
	@ApiOperation(value = "居民添加咨询接口", notes = "居民添加咨询接口")
	public Envelop add(
			@ApiParam(name = "patient", value = "居民CODE")
			@RequestParam(value = "patient",required = false) String patient,
			@ApiParam(name = "doctor", value = "医生CODE")
			@RequestParam(value = "doctor",required = true) String doctor,
			@ApiParam(name = "when", value = "发病时间")
			@RequestParam(value = "when",required = false) String when,
			@ApiParam(name = "symptoms", value = "主述")
			@RequestParam(value = "symptoms",required = false) String symptoms,
			@ApiParam(name = "images", value = "图片")
			@RequestParam(value = "images",required = false) String images,
			@ApiParam(name = "voice", value = "语音")
			@RequestParam(value = "voice",required = false) String voice,
			@ApiParam(name = "type", value = "咨询类型:1专家咨询 14导诊助手")
			@RequestParam(value = "type",required = false) Integer type)throws Exception{
		
		System.out.println("symptoms="+symptoms);
		
		if (type == null) {
			type = 1;
		}
//		if (type != 1 && type != 2) {
//			return error(-1, "无效请求!");
//		}
		
		ConsultTeamDo consult = new ConsultTeamDo();
		// 设置咨询类型:1专家咨询  14导诊助手
		consult.setType(type);
		// 设置发病时间
		consult.setWhen(when);
		// 设置主要症状
		consult.setSymptoms(symptoms);
		// 设置咨询图片URL
		consult.setImages(images);
		// 设置咨询语音URL
		consult.setVoice(voice);
		
		// 保存到数据库
//		int res = 0;
//		JSONArray dts = null;
		synchronized (patient.intern()){//新增同步方法。设备保存写在service层但是不生效,写在controller层才生效
			JSONObject re = null;
			re = imService.addTeamConsult(consult, patient,doctor);
//			res = re.getInteger("status");
//			dts = re.containsKey("doctor")?re.getJSONArray("doctor"):null;
		}
		return success("操作成功", consult);
	}
	
	@PostMapping(value = BaseHospitalRequestMapping.DodtorIM.finish)
	@ApiOperation(value = "医生结束咨询", notes = "医生结束咨询")
	public Envelop finish(