PatientCriticalValuesServer.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package thyyxxk.webserver.service.zhuyuanyisheng;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.stereotype.Service;
  6. import thyyxxk.webserver.config.exception.ExceptionEnum;
  7. import thyyxxk.webserver.constants.Message;
  8. import thyyxxk.webserver.dao.his.zhuyuanyisheng.PatientCriticalValuesDao;
  9. import thyyxxk.webserver.entity.ResultVo;
  10. import thyyxxk.webserver.entity.inpatient.patient.Patient;
  11. import thyyxxk.webserver.entity.login.UserInfo;
  12. import thyyxxk.webserver.service.redislike.RedisLikeService;
  13. import thyyxxk.webserver.utils.ListUtil;
  14. import thyyxxk.webserver.utils.ResultVoUtil;
  15. import thyyxxk.webserver.utils.SocketMsg;
  16. import thyyxxk.webserver.utils.StringUtil;
  17. import thyyxxk.webserver.websocket.WebSocketServer;
  18. import java.util.List;
  19. @Service
  20. @Slf4j
  21. public class PatientCriticalValuesServer {
  22. private final PatientCriticalValuesDao dao;
  23. private final RedisLikeService redisLikeService;
  24. public PatientCriticalValuesServer(PatientCriticalValuesDao dao, RedisLikeService redisLikeService) {
  25. this.dao = dao;
  26. this.redisLikeService = redisLikeService;
  27. }
  28. public ResultVo<String> acceptCriticalValues(String data) {
  29. JSONObject strToJson = JSONObject.parseObject(data);
  30. String message = strToJson.getString("Content");
  31. if (StringUtil.isBlank(message)) {
  32. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "消息体为空。");
  33. }
  34. String patNo = message.substring(message.indexOf("住院号") + 4, message.indexOf(",姓名"));
  35. Patient p = dao.selectPatientInfoByPatNo(patNo);
  36. if (p == null) {
  37. return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "未查询到该住院患者信息。");
  38. }
  39. dao.insertAMessage(patNo, p.getAdmissTimes(), message);
  40. List<String> codeList = dao.selectDoctorByDept(p.getDeptCode());
  41. JSONObject js = new JSONObject();
  42. js.put("message", message);
  43. codeList.forEach(item -> {
  44. WebSocketServer.sendMessageByUserCode(item, SocketMsg.socketVo(Message.critical_value, js));
  45. });
  46. return ResultVoUtil.success();
  47. }
  48. public ResultVo<List<JSONObject>> getCriticalValuePatientList(String patNo) {
  49. QueryWrapper<?> qw = new QueryWrapper<>();
  50. UserInfo u = redisLikeService.getUserInfoByToken();
  51. if (StringUtil.isBlank(patNo)) {
  52. qw.eq("b.zk_ward", u.getDeptCode());
  53. } else {
  54. qw.eq("a.pat_no", patNo);
  55. }
  56. List<JSONObject> patientList = dao.selectCriticalValuePatientList(qw);
  57. if (patientList == null) {
  58. return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
  59. }
  60. return ResultVoUtil.success(patientList);
  61. }
  62. }