|
@ -65,6 +65,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
@ -299,7 +300,7 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
|
|
|
message.put("orgType",orgDO.getType());
|
|
|
}
|
|
|
|
|
|
|
|
|
String url = "/sos/info?id="+assistanceDO.getId()+"&OrderType=20&patient="+assistanceDO.getPatient()+"&patientName="+assistanceDO.getPatientName();
|
|
|
for (BaseDoctorDO doctorDO:doctorDOS){
|
|
|
try {
|
|
|
if (StringUtils.isNotBlank(doctorDO.getMobile())){
|
|
@ -308,7 +309,8 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
|
|
|
}catch (Exception e){}
|
|
|
String body = "您好,"+assistanceDO.getPatientName()+"居民发起紧急呼叫,请关注并及时处理。";
|
|
|
String dingDingBody = "您好,"+assistanceDO.getPatientName()+"居民发起紧急呼叫,请及时处理。";
|
|
|
messageUtil.sendDoctorGetuiMessage(doctorDO.getId(),"2","/sos/index?tabActive=1","紧急呼叫",body);
|
|
|
|
|
|
messageUtil.sendDoctorGetuiMessage(doctorDO.getId(),"2",url,"紧急呼叫",body);
|
|
|
messageUtil.sendDoctorDingdingMessage(doctorDO,null,"text","2",dingDingBody,null,null);
|
|
|
imUtill.sendMDTSocketMessageToDoctor(doctorDO.getId(),message.toString());
|
|
|
}
|
|
@ -447,6 +449,13 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
|
|
|
emergencyOrderVO.setEmergencyWarnConclusionDO(conclusionDO);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//复核
|
|
|
List<BaseEmergencyWarnLogDO> review = logDao.findByOrderIdAndType(assistanceDO.getId(),7);
|
|
|
if(review.size()>0){
|
|
|
emergencyOrderVO.setReviewWarnLogDO(review.get(0));
|
|
|
}
|
|
|
|
|
|
//附加信息 紧急救助无
|
|
|
//通知对象
|
|
|
List<Map<String,Object>> noticePersons = new ArrayList<>();
|
|
@ -1121,6 +1130,101 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 记录预警核实日志
|
|
|
*/
|
|
|
public void addWarnLog(String sessionId,String doctor,Integer type,String content,String ext1){
|
|
|
BaseDoctorDO doctorDO = doctorDao.findById(doctor);
|
|
|
if(doctorDO==null){
|
|
|
return;
|
|
|
}
|
|
|
String sql = "SELECT e.id from base_emergency_assistance_order e " +
|
|
|
"WHERE e.session_id = ? and e.`status` = 1 " +
|
|
|
"UNION " +
|
|
|
"SELECT s.id from im_internet_hospital.topics t,wlyy_consult c,base_security_monitoring_order s " +
|
|
|
"WHERE t.session_id = ? and t.id = c.id " +
|
|
|
"and c.relation_code = s.id and s.`status` = 1 ";
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql,new Object[]{sessionId,sessionId});
|
|
|
for (Map<String,Object> map:list){
|
|
|
String orderId = map.get("id")+"";
|
|
|
if(type==8){
|
|
|
List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdAndType(orderId,type);
|
|
|
if(logDOS.size()==0){
|
|
|
//新增 type =8 9
|
|
|
BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
|
|
|
logDO.setUserCode(doctor);
|
|
|
logDO.setUserName(doctorDO.getName());
|
|
|
logDO.setOrderId(orderId);
|
|
|
logDO.setUserType(2);
|
|
|
logDO.setCreateTime(new Date());
|
|
|
logDO.setContent("发起im会话");
|
|
|
logDO.setType(type);
|
|
|
logDao.save(logDO);
|
|
|
}
|
|
|
}else {
|
|
|
List<BaseEmergencyWarnLogDO> logDOS = logDao.findByOrderIdAndExt1(orderId,ext1);
|
|
|
if(logDOS.size()==0){
|
|
|
BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
|
|
|
logDO.setUserCode(doctor);
|
|
|
logDO.setUserName(doctorDO.getName());
|
|
|
logDO.setOrderId(orderId);
|
|
|
logDO.setUserType(2);
|
|
|
logDO.setCreateTime(new Date());
|
|
|
logDO.setContent(content);
|
|
|
logDO.setType(type);
|
|
|
logDO.setExt1(ext1);
|
|
|
logDao.save(logDO);
|
|
|
}else if(type==9){
|
|
|
//更新9
|
|
|
BaseEmergencyWarnLogDO logDO = logDOS.get(0);
|
|
|
logDO.setContent(content);
|
|
|
logDao.save(logDO);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 预警复核
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject preWarningReview(String orderId,String doctor,String content){
|
|
|
JSONObject result = new JSONObject();
|
|
|
EmergencyAssistanceDO one = emergencyAssistanceDao.findOne(orderId);
|
|
|
if (one==null){
|
|
|
String failMsg = "工单不存在" ;
|
|
|
result.put("resultFlag", 0);
|
|
|
result.put("resultMsg", failMsg);
|
|
|
return result;
|
|
|
}
|
|
|
String orgCode = permissionService.getDoctorOrg(doctor);
|
|
|
if(!orgCode.equals(one.getOrgCode())){
|
|
|
String failMsg = "该操作没权限" ;
|
|
|
result.put("resultFlag", 0);
|
|
|
result.put("resultMsg", failMsg);
|
|
|
return result;
|
|
|
}
|
|
|
BaseDoctorDO doctorDO = doctorDao.findById(doctor);
|
|
|
if (null!=doctorDO){
|
|
|
BaseEmergencyWarnLogDO logDO = new BaseEmergencyWarnLogDO();
|
|
|
logDO.setUserCode(doctor);
|
|
|
logDO.setUserName(doctorDO.getName());
|
|
|
logDO.setOrderId(orderId);
|
|
|
logDO.setUserType(2);
|
|
|
logDO.setCreateTime(new Date());
|
|
|
logDO.setContent(content);
|
|
|
logDO.setType(7);
|
|
|
logDao.save(logDO);
|
|
|
}
|
|
|
result.put("resultFlag", 1);
|
|
|
result.put("resultMsg", "success");
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public JSONObject responseOrder(String orderId,String doctor){
|
|
|
JSONObject result = new JSONObject();
|
|
|
EmergencyAssistanceDO one = emergencyAssistanceDao.findOne(orderId);
|
|
@ -1504,43 +1608,199 @@ public class EmergencyAssistanceService extends BaseJpaService<EmergencyAssistan
|
|
|
}
|
|
|
|
|
|
public JSONObject getEmergencyAssistanceProcess(String orderId,String orderType){
|
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
String eaSql = " ";
|
|
|
List<Map<String, Object>> maps = new ArrayList<>();
|
|
|
if ("20".equals(orderType)){
|
|
|
eaSql = "SELECT `status`,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') AS createTime,complete_time AS completeTime " +
|
|
|
"from base_emergency_assistance_order WHERE id = '"+orderId+"'";
|
|
|
|
|
|
eaSql = "SELECT o.`status`,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') AS createTime,o.patient,o.team_code,'紧急呼叫' AS serveDesc,dd.photo " +
|
|
|
"from base_emergency_assistance_order o " +
|
|
|
"LEFT JOIN wlyy_devices wd on wd.device_code=o.device_sn " +
|
|
|
"LEFT JOIN dm_device dd on dd.category_code = wd.category_code " +
|
|
|
" WHERE o.id = ?";
|
|
|
}
|
|
|
if ("22".equals(orderType)){
|
|
|
eaSql = "SELECT `status`,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%S') AS createTime,complete_time AS completeTime " +
|
|
|
"from base_security_monitoring_order WHERE id = '"+orderId+"'";
|
|
|
eaSql = "SELECT o.`status`,DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%S') AS createTime,o.patient,o.team_code,o.serve_desc serveDesc,dd.photo " +
|
|
|
"from base_security_monitoring_order o " +
|
|
|
"LEFT JOIN wlyy_devices wd on wd.device_code=o.device_sn " +
|
|
|
"LEFT JOIN dm_device dd on dd.category_code = wd.category_code " +
|
|
|
" WHERE o.id = ?";
|
|
|
}
|
|
|
maps = jdbcTemplate.queryForList(eaSql);
|
|
|
maps = jdbcTemplate.queryForList(eaSql,new Object[]{orderId});
|
|
|
if (maps.size()==0) {
|
|
|
return null;
|
|
|
}
|
|
|
for (Map<String, Object> map : maps) {
|
|
|
jsonObject.put("status",map.get("status"));
|
|
|
jsonObject.put("createTime",map.get("createTime"));
|
|
|
//发起预警
|
|
|
JSONObject start = new JSONObject();
|
|
|
Map<String, Object> startMap = maps.get(0);
|
|
|
String createTime = startMap.get("createTime")+"";
|
|
|
start.put("createTime",createTime);
|
|
|
start.put("photo",startMap.get("photo"));
|
|
|
start.put("serveDesc",startMap.get("serveDesc"));
|
|
|
jsonObject.put("start",start);
|
|
|
String patient = startMap.get("patient")+"";
|
|
|
String teamCode = startMap.get("team_code")+"";
|
|
|
|
|
|
//预警推送
|
|
|
JSONObject pushLog = new JSONObject();
|
|
|
pushLog.put("family",patientFamilyPushLog(patient,orderId,createTime));
|
|
|
pushLog.put("docotr",doctorPushLog(orderId,teamCode,createTime));
|
|
|
jsonObject.put("pushLog",pushLog);
|
|
|
|
|
|
//其他日志
|
|
|
List<BaseEmergencyWarnLogDO> warnLogDOList = logDao.findByOrderId(orderId);
|
|
|
Map<Integer,List<BaseEmergencyWarnLogDO>> resultMap = warnLogDOList.stream().collect(Collectors.groupingBy(e -> e.getType()));
|
|
|
//预警核实
|
|
|
List<BaseEmergencyWarnLogDO> check = new ArrayList<>();
|
|
|
if(resultMap.containsKey(8)){
|
|
|
check.addAll(resultMap.get(8));
|
|
|
}
|
|
|
if(resultMap.containsKey(9)){
|
|
|
check.addAll(resultMap.get(9));
|
|
|
}
|
|
|
|
|
|
if(resultMap.containsKey(10)){
|
|
|
check.addAll(resultMap.get(10));
|
|
|
}
|
|
|
if(check.size()>0){
|
|
|
check.forEach(logDO->{
|
|
|
if(logDO.getUserType()==1){
|
|
|
logDO.setUserTypeName("居民");
|
|
|
}else{
|
|
|
logDO.setUserTypeName("社工");
|
|
|
}
|
|
|
});
|
|
|
check = check.stream().sorted(Comparator.comparing(BaseEmergencyWarnLogDO::getCreateTime)).collect(Collectors.toList());
|
|
|
jsonObject.put("check",check);
|
|
|
}
|
|
|
String sql = "select user_name AS userName,create_time AS createTime,content,type from base_emergency_warn_log where (user_type = 2 and order_id = '"+orderId+"' and type IS NOT NULL) " +
|
|
|
" OR (user_type = 1 AND order_id = '"+orderId+"' and type IS NOT NULL) order by create_time,type ASC ";
|
|
|
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
|
|
|
|
|
|
jsonObject.put("type5_status",0);
|
|
|
jsonObject.put("result",result);
|
|
|
for (Map<String, Object> map : result) {
|
|
|
if (map.get("type").equals(5)) {
|
|
|
jsonObject.put("type5_status",1);
|
|
|
//预警处置
|
|
|
List<BaseEmergencyWarnLogDO> dealWith = new ArrayList<>();
|
|
|
if(resultMap.containsKey(2)){
|
|
|
dealWith.addAll(resultMap.get(2));
|
|
|
}
|
|
|
if(resultMap.containsKey(3)){
|
|
|
dealWith.addAll(resultMap.get(3));
|
|
|
}
|
|
|
if(resultMap.containsKey(4)){
|
|
|
dealWith.addAll(resultMap.get(4));
|
|
|
}
|
|
|
if(dealWith.size()>0){
|
|
|
dealWith.forEach(logDO->{
|
|
|
if(logDO.getUserType()==1){
|
|
|
logDO.setUserTypeName("居民");
|
|
|
}else{
|
|
|
logDO.setUserTypeName("社工");
|
|
|
}
|
|
|
});
|
|
|
dealWith = dealWith.stream().sorted(Comparator.comparing(BaseEmergencyWarnLogDO::getCreateTime)).collect(Collectors.toList());
|
|
|
jsonObject.put("dealWith",dealWith);
|
|
|
}
|
|
|
|
|
|
//处置结论
|
|
|
List<BaseEmergencyWarnLogDO> conclusion = resultMap.get(5);
|
|
|
if(conclusion!=null){
|
|
|
BaseEmergencyWarnLogDO logDO = conclusion.get(0);
|
|
|
if(logDO.getUserType()==1){
|
|
|
logDO.setUserTypeName("居民");
|
|
|
}else{
|
|
|
logDO.setUserTypeName("社工");
|
|
|
}
|
|
|
jsonObject.put("conclusion",logDO);
|
|
|
}
|
|
|
|
|
|
//预警复核
|
|
|
List<BaseEmergencyWarnLogDO> review = resultMap.get(7);
|
|
|
if(review!=null){
|
|
|
BaseEmergencyWarnLogDO logDO = review.get(0);
|
|
|
if(logDO.getUserType()==1){
|
|
|
logDO.setUserTypeName("居民");
|
|
|
}else{
|
|
|
logDO.setUserTypeName("社工");
|
|
|
}
|
|
|
jsonObject.put("review",logDO);
|
|
|
}
|
|
|
|
|
|
//取消
|
|
|
List<BaseEmergencyWarnLogDO> cancel = resultMap.get(6);
|
|
|
if(cancel!=null){
|
|
|
BaseEmergencyWarnLogDO logDO = cancel.get(0);
|
|
|
if(logDO.getUserType()==1){
|
|
|
logDO.setUserTypeName("居民");
|
|
|
}else{
|
|
|
logDO.setUserTypeName("社工");
|
|
|
}
|
|
|
jsonObject.put("cancel",logDO);
|
|
|
}
|
|
|
|
|
|
jsonObject = JSONObject.parseObject(JSON.toJSONStringWithDateFormat(jsonObject,"yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue));
|
|
|
return jsonObject;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 家属推送日志
|
|
|
* @param patient
|
|
|
* @param orderId
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> patientFamilyPushLog(String patient,String orderId,String createTime){
|
|
|
List<Map<String, Object>> noticePersons = new ArrayList<>();
|
|
|
JSONArray familyArr = familyMemberService.getPatientMembers(patient, null, null, null, "3");
|
|
|
for (int i = 0; i < familyArr.size(); i++) {
|
|
|
String patientId = familyArr.getJSONObject(i).getString("id");
|
|
|
BasePatientDO patientDO1 = patientDao.findById(patientId);
|
|
|
Map<String, Object> noticeObj = new HashMap<>();
|
|
|
noticeObj.put("type", "0");
|
|
|
noticeObj.put("typeName", "家属");
|
|
|
noticeObj.put("id", patientDO1.getId());
|
|
|
noticeObj.put("name", patientDO1.getName());
|
|
|
noticeObj.put("photo", patientDO1.getPhoto());
|
|
|
noticeObj.put("mobile", patientDO1.getMobile());
|
|
|
noticeObj.put("status", 0);
|
|
|
noticeObj.put("statusName", "未读");
|
|
|
noticeObj.put("createTime",createTime);
|
|
|
SystemMessageDO messageDO = systemMessageDao.findByRelationCodeAndReceiver(orderId, patientId);
|
|
|
if (messageDO != null) {
|
|
|
noticeObj.put("createTime",DateUtil.dateToStrLong(messageDO.getCreateTime()));
|
|
|
if (StringUtils.isNotBlank(messageDO.getIsRead())) {
|
|
|
noticeObj.put("status", Integer.parseInt(messageDO.getIsRead()));
|
|
|
if (Integer.parseInt(messageDO.getIsRead()) == 1) {
|
|
|
noticeObj.put("statusName", "已读");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
noticePersons.add(noticeObj);
|
|
|
}
|
|
|
return noticePersons;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 医生推送日志
|
|
|
* @return
|
|
|
*/
|
|
|
public List<Map<String, Object>> doctorPushLog(String orderId,String teamCode,String createTime){
|
|
|
List<Map<String, Object>> noticePersons = new ArrayList<>();
|
|
|
List<BaseDoctorDO> doctorDOS = baseTeamMemberDao.findAllMembersByLevel(teamCode,2);
|
|
|
for (BaseDoctorDO doctorDO:doctorDOS) {
|
|
|
Map<String,Object> noticeObj = new HashMap<>();
|
|
|
noticeObj.put("type","1");
|
|
|
noticeObj.put("typeName","社工");
|
|
|
noticeObj.put("id",doctorDO.getId());
|
|
|
noticeObj.put("name",doctorDO.getName());
|
|
|
noticeObj.put("photo",doctorDO.getPhoto());
|
|
|
noticeObj.put("mobile",doctorDO.getMobile());
|
|
|
noticeObj.put("status",0);
|
|
|
noticeObj.put("statusName","未响应");
|
|
|
noticeObj.put("createTime",createTime);
|
|
|
EmergencyWarnDoctorResponseDO logDO = emergencyWarnDoctorResponseDao.findByDoctorAndOrderId(doctorDO.getId(),orderId);
|
|
|
if (logDO!=null){
|
|
|
noticeObj.put("status",1);
|
|
|
noticeObj.put("statusName","已响应");
|
|
|
noticeObj.put("createTime",DateUtil.dateToStrLong(logDO.getResponseTime()));
|
|
|
}
|
|
|
noticePersons.add(noticeObj);
|
|
|
}
|
|
|
return noticePersons;
|
|
|
}
|
|
|
|
|
|
public int phoneLogSave(BaseEmergencyWarnLogDO baseEmergencyWarnLogDO,Integer type){
|
|
|
switch (type) {
|
|
|
case 1:
|