EmrControlRuleSever.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package thyyxxk.webserver.service.zhuyuanyisheng.emr;
  2. import com.alibaba.fastjson.JSON;
  3. import com.baomidou.dynamic.datasource.annotation.DS;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.metadata.IPage;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.jetbrains.annotations.NotNull;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import thyyxxk.webserver.config.auth.PassToken;
  12. import thyyxxk.webserver.config.exception.BizException;
  13. import thyyxxk.webserver.config.exception.ExceptionEnum;
  14. import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrControlDao;
  15. import thyyxxk.webserver.entity.ResultVo;
  16. import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrLimitUnlock;
  17. import thyyxxk.webserver.entity.zhuyuanyisheng.emrcontrolrule.*;
  18. import thyyxxk.webserver.utils.*;
  19. import javax.servlet.http.HttpServletResponse;
  20. import java.util.*;
  21. /**
  22. * @author Administrator
  23. */
  24. @Service
  25. @Slf4j
  26. public class EmrControlRuleSever {
  27. private final EmrControlDao dao;
  28. public EmrControlRuleSever(EmrControlDao dao) {
  29. this.dao = dao;
  30. }
  31. @Transactional(rollbackFor = Exception.class)
  32. public ResultVo<String> requestToUnlockMedicalRecords(EmrLimitUnlock param) {
  33. param.setApplicant(TokenUtil.getInstance().getTokenUserId());
  34. param.setApplicationTime(new Date());
  35. log.info("数据:{}", JSON.toJSONString(param));
  36. // 把原来地申请取消
  37. int count = dao.updateUnlockOld(param);
  38. String str = "申请成功,等待医务部审核。";
  39. if (count > 0) {
  40. str = "原申请已顶替,申请成功,等待医务部审核。";
  41. }
  42. int insert = dao.applicationUnlock(param);
  43. if (insert == 0) {
  44. throw new BizException(ExceptionEnum.ERROR_MESSAGE, "申请错误。");
  45. }
  46. return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, str);
  47. }
  48. public ResultVo<IPage<EmrLimitUnlock>> getApplicationData(SelectUnlockParam param) {
  49. IPage<EmrLimitUnlock> iPage = new Page<>(param.getCurrentPage(), param.getPageSize(), param.getTotal() == 0);
  50. QueryWrapper<EmrLimitUnlock> qw = getEmrLimitUnlockQueryWrapper(param);
  51. iPage.setTotal(param.getTotal());
  52. return ResultVoUtil.success(dao.selectUnlock(iPage, qw));
  53. }
  54. @NotNull
  55. private static QueryWrapper<EmrLimitUnlock> getEmrLimitUnlockQueryWrapper(SelectUnlockParam param) {
  56. QueryWrapper<EmrLimitUnlock> qw = new QueryWrapper<>();
  57. if (ListUtil.notBlank(param.getDateRange())) {
  58. qw.ge("application_time", param.getDateRange().get(0));
  59. qw.lt("application_time", param.getDateRange().get(1));
  60. }
  61. if (param.getFlag() > -1) {
  62. qw.eq("state", param.getFlag());
  63. }
  64. return qw;
  65. }
  66. public void exportExcelUnlock(HttpServletResponse response, SelectUnlockParam param) {
  67. IPage<EmrLimitUnlock> iPage = new Page<>(param.getCurrentPage(), -1, false);
  68. QueryWrapper<EmrLimitUnlock> qw = getEmrLimitUnlockQueryWrapper(param);
  69. iPage = dao.selectUnlock(iPage, qw);
  70. if (ListUtil.isBlank(iPage.getRecords())) {
  71. return;
  72. }
  73. String[] title = {"住院号", "住院次数", "申请人", "申请时间", "申请权限", "申请编辑时间", "申请备注", "状态", "审核人", "审核时间", "审核备注"};
  74. String[][] content = new String[iPage.getRecords().size()][];
  75. for (int i = 0; i < iPage.getRecords().size(); i++) {
  76. content[i] = new String[title.length];
  77. EmrLimitUnlock index = iPage.getRecords().get(i);
  78. content[i][0] = index.getPatNo();
  79. content[i][1] = String.valueOf(index.getTimes());
  80. content[i][2] = index.getApplicantName();
  81. content[i][3] = DateUtil.formatDatetime(index.getApplicationTime());
  82. content[i][4] = index.getUnlockJson();
  83. content[i][5] = DateUtil.formatDatetime(index.getEffectiveTime());
  84. content[i][6] = index.getRequestRemarks();
  85. content[i][7] = index.getStateName();
  86. content[i][8] = index.getApproveName();
  87. content[i][9] = DateUtil.formatDatetime(index.getReviewTime());
  88. content[i][10] = index.getReviewNotes();
  89. }
  90. ExcelUtil.exportExcel(response, title, content);
  91. log.info("数据:{}", JSON.toJSONString(iPage));
  92. }
  93. public ResultVo<String> reviewMedicalRecordsToUnlock(EmrLimitUnlock param) {
  94. EmrLimitUnlock emrLimitUnlock = dao.selectUnlockById(param.getId());
  95. if (emrLimitUnlock.getState().equals(3)) {
  96. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该数据已经被申请人删除了,无法审核。");
  97. }
  98. if (emrLimitUnlock.getState().equals(param.getState())) {
  99. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请勿重复操作。");
  100. }
  101. param.setApprove(TokenUtil.getInstance().getTokenUserId());
  102. dao.updateUnlockByIdNew(param);
  103. log.info("电子病历质控审核:{}", JSON.toJSONString(param));
  104. return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
  105. }
  106. public ResultVo<EmrLimitUnlock> getMyUnlockByPatNo(String patNo, Integer times) {
  107. return ResultVoUtil.success(dao.selectMyUnlockReqByPatNo(patNo, times, TokenUtil.getInstance().getTokenUserId()));
  108. }
  109. }