123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package thyyxxk.webserver.service.casefrontsheet;
- import com.alibaba.fastjson.JSON;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import thyyxxk.webserver.config.exception.ExceptionEnum;
- import thyyxxk.webserver.dao.his.casefrontsheet.HuiZhenShenQingDao;
- import thyyxxk.webserver.entity.ResultVo;
- import thyyxxk.webserver.entity.casefrontsheet.YshHzRecord;
- import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
- import thyyxxk.webserver.service.PublicServer;
- import thyyxxk.webserver.utils.ListUtil;
- import thyyxxk.webserver.utils.ResultVoUtil;
- import thyyxxk.webserver.utils.StringUtil;
- import thyyxxk.webserver.utils.TokenUtil;
- import java.math.BigDecimal;
- import java.util.Date;
- import java.util.List;
- /**
- * <p>
- * 描述: 会诊申请
- * </p>
- *
- * @author xc
- * @date 2021-05-07 11:01
- */
- @Service
- @Slf4j
- public class HuiZhenShenQingService {
- private final HuiZhenShenQingDao dao;
- private final PublicServer publicServer;
- public HuiZhenShenQingService(HuiZhenShenQingDao dao, PublicServer publicServer) {
- this.dao = dao;
- this.publicServer = publicServer;
- }
- /**
- * @return 返回会诊级别
- */
- public ResultVo<List<GetDropdownBox>> huiZhenLeiBie() {
- return ResultVoUtil.success(dao.getYshZdHzLevel());
- }
- /**
- * 远程搜索科室
- *
- * @param code 模糊查询
- * @return 返回科室
- */
- public ResultVo<List<GetDropdownBox>> queryDept(String code) {
- return ResultVoUtil.success(dao.getZdUnitCode(StringUtil.isContainChinese(code)));
- }
- /**
- * 会诊申请
- *
- * @param param 申请需要插入的数据
- * @return 返回状态
- */
- public ResultVo<String> submitHuiZhenShenQing(YshHzRecord param) {
- log.info("会诊申请====>申请人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONString(param));
- publicServer.huanZheJieSuan(param.getInpatientNo(), param.getAdmissTimes());
- /*
- * 获取一个新的医嘱号
- * 需要一套指令 先把表锁住 在查询出医嘱号 在加一更新加一就完事了
- */
- dao.lockTable();
- float actOrderNo = dao.getActOrderNo() + 1;
- dao.updateActOrderNo(actOrderNo);
- //下面是给申请次数 加一
- param.setReqTimes(dao.getMaxReqTimes(param.getInpatientNo(), param.getAdmissTimes()) + 1);
- param.setInputDate(new Date());
- param.setActOrderNo((int) actOrderNo);
- param.setInputId(TokenUtil.getTokenUserId());
- param.setReqDate(param.getInputDate());
- param.setOrderCode(getOrderCode("00" + param.getHzType()));
- param.setOrderName(String.format("请%s进行院内会诊", param.getReqDeptName()));
- //插入会诊申请
- dao.chaRuHuiZhenShenQing(param);
- //申请成功了就还需要插入一条医嘱
- dao.chaRuYiZhu(param);
- log.info("插入数据:{}", JSON.toJSONString(param));
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "会诊申请成功,正在通知会诊医生。 <p>(〜^㉨^)〜</p>");
- }
- /**
- * 查询会诊的信息
- *
- * @param inpatientNo 住院号
- * @param admissTimes 住院次数
- * @return 返回
- */
- public ResultVo<List<YshHzRecord>> chaKanHuiZhenShenQing(String inpatientNo, int admissTimes) {
- return ResultVoUtil.success(dao.chaKanHuiZhenShenQing(inpatientNo, admissTimes, null));
- }
- /**
- * 删除会诊申请 要同时删除 会诊申请 和 一条医嘱
- *
- * @param inpatientNo 住院号
- * @param admissTimes 住院次数
- * @param actOrderNo 医嘱号
- * @param reqTimes 申请次数
- * @return 返回
- */
- public ResultVo<Boolean> shanChuHuiZhenShenQing(String inpatientNo, int admissTimes, BigDecimal actOrderNo, int reqTimes) {
- List<YshHzRecord> huiZhenXinXi = dao.chaKanHuiZhenShenQing(inpatientNo, admissTimes, actOrderNo);
- if (ListUtil.isBlank(huiZhenXinXi)) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有查询到对应信息可能已经被删除了。");
- }
- if (StringUtil.notBlank(huiZhenXinXi.get(0).getStatusFlag()) && huiZhenXinXi.get(0).getStatusFlag().trim().equals("2")) {
- return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "该会诊已经完成了无法删除。");
- }
- //会诊申请是根据 住院号,住院次数,申请次数 来获取到 一条
- dao.shanChuShenQing(inpatientNo, admissTimes, reqTimes);
- //医嘱 只要根据医嘱号来删除
- dao.shanChuYiZhu(actOrderNo);
- log.info("删除会诊申请==》操作人:{},住院号:{},住院次数:{},医嘱号:{},申请次数:{}", TokenUtil.getTokenUserId(), inpatientNo, admissTimes, actOrderNo, reqTimes);
- return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "删除成功");
- }
- /**
- * 查询会诊的医生
- *
- * @param deptCode 科室的code
- * @param hzType 会诊的级别
- * @return 返回 医生的code 和 name
- */
- public ResultVo<List<GetDropdownBox>> huiZhenYiSheng(String deptCode, String hzType) {
- return ResultVoUtil.success(dao.huiZhenYiSheng(deptCode, "00" + hzType));
- }
- /**
- * 获取患者的主诊断
- *
- * @param patNo 住院号
- * @param times 住院次数
- * @param flag 1-本院诊断 2-医保诊断
- * @return 对应数据
- */
- public ResultVo<List<GetDropdownBox>> huoQuHuanZheZhuYaoZhenDuan(String patNo, Integer times, Integer flag) {
- return ResultVoUtil.success(dao.huoQuHuanZheZhuYaoZhenDuan(patNo, times, flag == 1 ? "ba_first_page1" : "zy_dis_diag_yb"));
- }
- /**
- * 用来获取 order_code 这个是写死的
- *
- * @param hzType 会诊的级别
- * @return 返回 order_code
- */
- public String getOrderCode(String hzType) {
- switch (hzType) {
- case "001":
- return "01425";
- case "002":
- return "01426";
- case "003":
- return "01427";
- default:
- return "500";
- }
- }
- }
|