huangwenjie 5 лет назад
Родитель
Сommit
a5ec90ca9e

+ 159 - 0
business/im-service/src/main/java/com/yihu/jw/im/service/ImService.java

@ -1016,6 +1016,7 @@ public class ImService {
				//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(图文,视频,图文+视频)
@ -1793,6 +1794,8 @@ public class ImService {
			throw new RuntimeException(obj.getString("message"));
		}
		ct.setStartMsgId(obj.get("start_msg_id").toString());
		ct.setActualSender(generalDoctor.getId());//实际发起人-全科医生
		ct.setActualSenderName(generalDoctor.getName());//实际发起人-全科医生
		consultTeamDao.save(ct);
		consultDao.save(consult);
		
@ -1843,4 +1846,160 @@ public class ImService {
			return null;
		}
	}
	
	/**
	 * (健康咨询)医生咨询记录查询
	 * @param doctor 医生标识
	 * @param id 会话ID(等同IM表topicId)
	 * @param type 咨询会话类型 : 0 全部
	 * @param status 咨询状态:0全部,1候诊中,2就诊中,3结束
	 * @param pagesize 分页大小
	 * @param title 标题关键字
	 * @param start_time 开始时间
	 * @param end_time 结束时间
	 * @param patient 居民CODE
	 * @return
	 */
	public List<ConsultVO>  findexpertConsultRecordByDoctor(String doctor, String id,
	                                                  Integer type, Integer status,
	                                                  int page,int pagesize,
	                                                  String title,String start_time,String end_time,String patinet) {
		
		if(page >=1){
			page --;
		}
		
		if (pagesize <= 0) {
			pagesize = 10;
		}
		
		String  sql = "SELECT " +
				"a.id AS id," +
				"a.type AS type," +
				"a.title AS title," +
				"a.symptoms AS symptoms," +
				"a.czrq AS czrq," +
				"b.status AS status," +
				"b.evaluate AS evaluate," +
				"d.name AS patientName," +
				"d.id as patientId," +
				"d.idcard as patientIdcard," +
				"d.sex as patientsex," +
				"d.photo AS patientphoto " +
				"FROM wlyy_consult a," +
				"wlyy_consult_team b," +
				"base_patient d, " +
				"WHERE a.id=b.consult " +
				"AND b.patient=d.id AND b.patient='"+patinet+"' "+
				"AND b.actual_sender='"+doctor+"' ";
		List<ConsultVO> result = new ArrayList<>();
		
		if(!StringUtils.isEmpty(title)){
			title="%"+title+"%";
			sql +=" and a.title like '"+title+"'";
		}
		
		if(!StringUtils.isEmpty(start_time)){
			sql +=" and a.czrq >= '"+start_time+"'";
		}
		
		if(!StringUtils.isEmpty(end_time)){
			sql +=" and a.czrq <= '"+end_time+"'";
		}
		
		
		//咨询状态
		if(status != 0){
			
			if(status ==2 ){//就诊中
				sql +=" and b.status = 0 ";
			}else if(status ==3 ){
				sql +=" and b.status = 1 ";
			}else{}
			
		}
		
		//咨询状态
		if(type != 0){
			sql +=" AND a.type="+type;
		}
		
		if (!StringUtils.isEmpty(id)) {
			sql += " and a.id = '" + id + "'";
		}
		sql += " ORDER BY a.czrq desc limit "+page * pagesize+","+pagesize+"";
		
		result = jdbcTemplate.query(sql, new BeanPropertyRowMapper(ConsultVO.class));
		
		return result;
	}
	
	
	/**
	 * (健康咨询)查询患者所有的咨询记录总数
	 * @param doctor 患者标识
	 * @param id 会话ID(等同IM表topicId)
	 * @param type 咨询会话类型
	 * @param status 咨询状态:0全部,1候诊中,2就诊中,3结束
	 * @param pagesize 分页大小
	 * @param title 标题关键字
	 * @param start_time 开始时间
	 * @param end_time 结束时间
	 * @param patient 居民CODE
	 * @return
	 */
	public Long findexpertConsultRecordByDoctor(String doctor, String id,Integer type, Integer status,String title,String start_time,String end_time,String patient) {
		
		String  sql = "SELECT " +
				" COUNT(1) AS total " +
				"FROM wlyy_consult a," +
				"wlyy_consult_team b," +
				"base_patient d," +
				"WHERE a.id=b.consult " +
				"AND b.patient=d.id AND b.patient='"+patient+"' "+
				"AND b.actual_sender='"+doctor+"' ";
		List<ConsultVO> result = new ArrayList<>();
		
		if(!StringUtils.isEmpty(title)){
			title="%"+title+"%";
			sql +=" and a.title like '"+title+"'";
		}
		
		if(!StringUtils.isEmpty(start_time)){
			sql +=" and a.czrq >= '"+start_time+"'";
		}
		
		if(!StringUtils.isEmpty(end_time)){
			sql +=" and a.czrq <= '"+end_time+"'";
		}
		
		//咨询状态
		if(status != 0){
			
			if(status ==2 ){//就诊中
				sql +=" and b.status = 0 ";
			}else if(status ==3 ){
				sql +=" and b.status = 1 ";
			}else{}
			
		}
		
		
		//咨询状态
		if(type != 0){
			sql +=" AND a.type="+type;
		}
		
		if (!StringUtils.isEmpty(id)) {
			sql += " and a.id = '" + id + "'";
		}
		
		List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(sql);
		Long count = 0L;
		if (rstotal != null && rstotal.size() > 0) {
			count = (Long) rstotal.get(0).get("total");
		}
		
		return count;
	}
}

+ 20 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/im/ConsultTeamDo.java

@ -73,6 +73,10 @@ public class ConsultTeamDo extends UuidIdentityEntity {
	
	private String refinementCode;//wlyy_refinement_consult中唯一标识code
	
	private String actualSender;//实际的会话发起人,主要用于(协同门诊、健康咨询)
	
	private String actualSenderName;//实际的会话发起人姓名,主要用于(协同门诊、健康咨询)
	
	public Integer getEvaluate() {
		return evaluate;
	}
@ -387,4 +391,20 @@ public class ConsultTeamDo extends UuidIdentityEntity {
	public void setRefinementCode(String refinementCode) {
		this.refinementCode = refinementCode;
	}
	
	public String getActualSender() {
		return actualSender;
	}
	
	public void setActualSender(String actualSender) {
		this.actualSender = actualSender;
	}
	
	public String getActualSenderName() {
		return actualSenderName;
	}
	
	public void setActualSenderName(String actualSenderName) {
		this.actualSenderName = actualSenderName;
	}
}

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

@ -393,6 +393,9 @@ public class BaseHospitalRequestMapping {
        //查询全科医生与专科医生是否存在未结束的咨询
        public static final String isExistsUnfinishedConsult ="/isExistsUnfinishedConsult";
        
        //(健康咨询)医生咨询记录查询
        public static final String expertConsultRecords ="/records";
        
        //医生可接单列表(图文复诊、视频复诊、协同门诊)
        public static final String findWaitingRoomOutpatientByDoctor = "findWaitingRoomOutpatientByDoctor";
    

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

@ -527,5 +527,86 @@ public class DoctorConsultEndpoint extends EnvelopRestEndpoint {
		return success(session_id);
	}
	
	@GetMapping(value = BaseHospitalRequestMapping.DodtorIM.expertConsultRecords)
	@ApiOperation(value = "(健康咨询)医生咨询记录查询")
	public Envelop expertConsultRecords(
			@ApiParam(name = "patient", value = "居民CODE")
			@RequestParam(value = "patient",required = true) String patient,
			@ApiParam(name = "doctor", value = "医生id")
			@RequestParam(value = "doctor",required = true) String doctor,
			@ApiParam(name = "title", value = "咨询标题关键字")
			@RequestParam(value = "title",required = false) String title,
			@ApiParam(name = "id", value = "咨询ID")
			@RequestParam(value = "id",required = false) String id,
			@ApiParam(name = "type", value = "咨询类型")
			@RequestParam(value = "type",required = true) Integer type,
			@ApiParam(name = "status", value = "咨询状态:0全部,1候诊中,2就诊中,3结束")
			@RequestParam(value = "status",required = true) Integer status,
			@ApiParam(name = "start_time", value = "开始时间 YYYY-MM-DD HH:MM:SS")
			@RequestParam(value = "start_time",required = false) String start_time,
			@ApiParam(name = "end_time", value = "结束时间 YYYY-MM-DD HH:MM:SS")
			@RequestParam(value = "end_time",required = false) String end_time,
			@ApiParam(name = "page", value = "第几页")
			@RequestParam(value = "page",required = false) int page,
			@ApiParam(name = "pagesize", value = "分页大小")
			@RequestParam(value = "pagesize",required = false) int pagesize
	)throws Exception{
		JSONArray array = new JSONArray();
		List<ConsultVO> data = imService.findexpertConsultRecordByDoctor(doctor, id,type,status, page,pagesize, title,start_time,end_time,patient);
		
		if (data != null) {
			for (ConsultVO consult : data) {
				if (consult == null) {
					continue;
				}
				JSONObject json = new JSONObject();
				json.put("id", consult.getId());
				// 设置咨询类型:1专家咨询,9在线复诊,待扩展,13协同门诊
				json.put("type", consult.getType());
				
				//如果是协同门诊,多返回全科医生的详细信息
				if(13 == consult.getType() && StringUtils.isNoneBlank(consult.getGeneralDoctor())){
					BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(consult.getGeneralDoctor());
					json.put("generalDoctorName", baseDoctorDO.getName());
				}
				
				// 设置显示标题
				json.put("title", consult.getTitle());
				// 设置主诉
				json.put("symptoms", consult.getSymptoms());
				// 咨询状态
				json.put("status", consult.getStatus());
				// 设置咨询日期
				json.put("czrq", DateUtil.dateToStrLong(consult.getCzrq()));
				//是否评价
				json.put("evaluate", consult.getEvaluate());
				
				//患者ID
				json.put("patientId", consult.getPatientId());
				//患者性别
				json.put("patientsex", consult.getPatientsex());
				//患者姓名
				json.put("patientName", consult.getPatientName());
				//患者年龄
				json.put("patientAge", DateUtil.getAgeForIdcard(consult.getPatientIdcard()));
				//就诊记录ID
				json.put("outpatientId", consult.getOutpatientid());
				//图文或者视频类型
				json.put("consultType", consult.getConsultType());
				//诊断
				json.put("icd10Name", consult.getIcd10Name());
				
				array.add(json);
			}
		}
		
		Long total = imService.findexpertConsultRecordByDoctor(doctor, id,type,status,title,start_time,end_time,patient);
		
		JSONObject result = new JSONObject();
		result.put("total",total);
		result.put("list",array);
		return success(result);
	}
	
	
}