AssessmentService.java 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package thyyxxk.wxservice_server.service;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import thyyxxk.wxservice_server.dao.AssessmentDao;
  6. import thyyxxk.wxservice_server.config.exception.ExceptionEnum;
  7. import thyyxxk.wxservice_server.dao.assessment.InpatientQuestionnaireDao;
  8. import thyyxxk.wxservice_server.dao.assessment.OutpatientQuestionnaireDao;
  9. import thyyxxk.wxservice_server.entity.ResultVo;
  10. import thyyxxk.wxservice_server.entity.assessment.OutpatientQuestionnaire;
  11. import thyyxxk.wxservice_server.entity.assessment.ComplaintsAndSuggestions;
  12. import thyyxxk.wxservice_server.entity.assessment.DepressionQuestionnaire;
  13. import thyyxxk.wxservice_server.entity.assessment.InpatientQuestionnaire;
  14. import thyyxxk.wxservice_server.utils.ResultVoUtil;
  15. import thyyxxk.wxservice_server.utils.StringUtil;
  16. import thyyxxk.wxservice_server.utils.TokenUtil;
  17. import java.util.Objects;
  18. /**
  19. * @author dj
  20. */
  21. @Slf4j
  22. @Service
  23. public class AssessmentService {
  24. private final AssessmentDao dao;
  25. private final OutpatientQuestionnaireDao outpatientQuestionnaireDao;
  26. private final InpatientQuestionnaireDao inpatientQuestionnaireDao;
  27. private static final String EMERGENCY_CLINIC = "1070000";
  28. @Autowired
  29. public AssessmentService(AssessmentDao dao, OutpatientQuestionnaireDao outpatientQuestionnaireDao, InpatientQuestionnaireDao inpatientQuestionnaireDao) {
  30. this.dao = dao;
  31. this.outpatientQuestionnaireDao = outpatientQuestionnaireDao;
  32. this.inpatientQuestionnaireDao = inpatientQuestionnaireDao;
  33. }
  34. public ResultVo<String> submitDepressionAssessment(DepressionQuestionnaire depressionQuestionnaire) {
  35. log.info("SDS抑郁自评量:{}", depressionQuestionnaire);
  36. Integer dateDiff = dao.getDateDiff(depressionQuestionnaire.getIdcard());
  37. if (null == dateDiff || dateDiff > 0) {
  38. dao.insertNewDepressionAssessment(depressionQuestionnaire);
  39. return ResultVoUtil.success();
  40. } else {
  41. return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "您今天已提交过此问卷,请明天再试。");
  42. }
  43. }
  44. public ResultVo<String> submitOutpatientQuestionnaire(OutpatientQuestionnaire questionnaire) {
  45. log.info("门诊服务满意度调查:{}", questionnaire);
  46. String deptCode = dao.selectLastVisitDept(questionnaire.getPatientId());
  47. if (Objects.equals(deptCode, EMERGENCY_CLINIC)) {
  48. questionnaire.setJzFlag(1);
  49. }
  50. questionnaire.setDeptCode(deptCode);
  51. outpatientQuestionnaireDao.insert(questionnaire);
  52. return ResultVoUtil.success();
  53. }
  54. public ResultVo<String> submitInpatientQuestionnaire(InpatientQuestionnaire questionnaire) {
  55. log.info("住院服务满意度调查:{}", questionnaire);
  56. if (Objects.equals(questionnaire.getInpatientNo(), "unknown")) {
  57. fillInpatientNo(questionnaire);
  58. }
  59. String deptCode = dao.getDismissDept(questionnaire.getInpatientNo(), questionnaire.getTimes());
  60. if (StringUtil.isBlank(deptCode)) {
  61. deptCode = dao.getDismissDept2(questionnaire.getInpatientNo(), questionnaire.getTimes());
  62. }
  63. questionnaire.setDeptCode(deptCode);
  64. inpatientQuestionnaireDao.insert(questionnaire);
  65. return ResultVoUtil.success();
  66. }
  67. public ResultVo<String> submitComplaintsAndSuggestions(ComplaintsAndSuggestions suggestions) {
  68. log.info("投诉与建议:{}", suggestions);
  69. suggestions.setOpenid(TokenUtil.getInstance().getUserOpenid());
  70. dao.insertComplaintsAndSuggestions(suggestions);
  71. return ResultVoUtil.success();
  72. }
  73. private void fillInpatientNo(InpatientQuestionnaire questionnaire) {
  74. String patNo = dao.getInpatientNo(questionnaire.getPatientId());
  75. if (StringUtil.notBlank(patNo)) {
  76. int times = dao.getAdmissTimes(patNo);
  77. questionnaire.setInpatientNo(patNo);
  78. questionnaire.setTimes(times);
  79. }
  80. }
  81. }