Browse Source

电子病历出院超 7 天编辑申请

DESKTOP-0GD05B0\Administrator 2 years ago
parent
commit
554cada24a

+ 32 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/EmrController.java

@@ -6,6 +6,7 @@ import org.springframework.web.bind.annotation.*;
 import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
+import thyyxxk.webserver.entity.zhuyuanyisheng.emr.DischargedEmrModifyApply;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
 import thyyxxk.webserver.service.PublicServer;
 import thyyxxk.webserver.service.zhuyuanyisheng.EmrServer;
@@ -108,4 +109,35 @@ public class EmrController {
     }
 
 
+    @GetMapping("/getDisReqEmr")
+    public ResultVo<List<DischargedEmrModifyApply>> getDisReqEmr(@RequestParam("flag") Integer flag) {
+        return server.getDisReqEmr(flag);
+    }
+
+    @PostMapping("/saveDisEmrReq")
+    public ResultVo<String> saveDisEmrReq(@RequestBody DischargedEmrModifyApply param) {
+        return server.saveDisEmrReq(param);
+    }
+
+    @GetMapping("/deleteDisEmrDis")
+    public ResultVo<String> deleteDisEmrDis(@RequestParam("patNo") String patNo) {
+        return server.deleteDisEmrDis(patNo);
+    }
+
+    @GetMapping("/adoptEmrDisReq")
+    public ResultVo<String> adoptEmrDisReq(@RequestParam("patNo") String patNo) {
+        return server.adoptEmrDisReq(patNo);
+    }
+
+    @GetMapping("/refuseEmrDisReq")
+    public ResultVo<String> refuseEmrDisReq(@RequestParam("patNo") String patNo,
+                                            @RequestParam("reviewNotes") String reviewNotes) {
+        return server.refuseEmrDisReq(patNo, reviewNotes);
+    }
+
+    @GetMapping("/isDisReqEdit")
+    public ResultVo<Boolean> isDisReqEdit(String patNo) {
+        return server.isDisReqEdit(patNo);
+    }
+
 }

+ 1 - 0
src/main/java/thyyxxk/webserver/controller/zhuyuanyizheng/YizhuLuRuController.java

@@ -95,6 +95,7 @@ public class YizhuLuRuController {
     }
 
     @GetMapping("/huoQuXiangMu")
+    @PassToken
     public ResultVo<List<YiZhuMingChen>> huoQuXiangMu(@RequestParam("code") String code,
                                                       @RequestParam("groupNo") String groupNo) {
         return server.huoQuXiangMu(code, groupNo);

+ 22 - 0
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/EmrPatientDao.java

@@ -1,8 +1,11 @@
 package thyyxxk.webserver.dao.his.zhuyuanyisheng;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import org.apache.ibatis.annotations.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import thyyxxk.webserver.entity.drg.AuxiliaryFillingOfDiagnosis;
+import thyyxxk.webserver.entity.zhuyuanyisheng.emr.DischargedEmrModifyApply;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataElement;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataExtract;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
@@ -210,4 +213,23 @@ public interface EmrPatientDao {
     void updateDeleteFlag(Integer id);
 
 
+    @Select("select pat_no, req_remarks, req_status, req_id, edit_date, review_notes  " +
+            "from discharged_emr_modify_apply ${ew.customSqlSegment} ")
+    List<DischargedEmrModifyApply> getDisReqEmr(@Param(Constants.WRAPPER) QueryWrapper<?> queryWrapper);
+
+    @Delete("delete discharged_emr_modify_apply where pat_no = #{patNo} ")
+    int deleteRequest(String patNo);
+
+    @Insert("insert into discharged_emr_modify_apply (pat_no, req_remarks, req_id, edit_date) " +
+            "values (#{dis.patNo},#{dis.reqRemarks},#{dis.reqId},#{dis.editDate})")
+    void insertApplicationEmrDis(@Param("dis") DischargedEmrModifyApply dis);
+
+    @Update("update discharged_emr_modify_apply " +
+            "set req_status   = #{status}, " +
+            "    review_notes = #{reviewNotes} " +
+            "where pat_no = #{patNo} ")
+    int adoptEmrDisReq(String patNo,
+                       String reviewNotes,
+                       int status);
+
 }

+ 1 - 1
src/main/java/thyyxxk/webserver/dao/his/zhuyuanyisheng/YiZhuLuRuDao.java

@@ -327,7 +327,7 @@ public interface YiZhuLuRuDao {
             "FROM view_yp_zd_dict_base_yf a with (NOLOCK) " +
             "WHERE isnull(a.visible_flag_zy, '') <> '1' " +
             "  and (a.py_code like #{code} or a.name like #{code} or code like #{code}) " +
-            "  and group_no in ('${groupNo}') ")
+            "  and group_no = '${groupNo}' ")
     List<YiZhuMingChen> yiZhuYaoPing(@Param("code") String code,
                                      @Param("groupNo") String groupNo);
 

+ 82 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/emr/DischargedEmrModifyApply.java

@@ -0,0 +1,82 @@
+package thyyxxk.webserver.entity.zhuyuanyisheng.emr;
+
+import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class DischargedEmrModifyApply implements Serializable {
+    // 出院患者是否可以编辑
+
+    private static final long serialVersionUID = 5582662383769602062L;
+
+    /**
+     * 使用住院号和住院次数拼接例如:040121_1
+     */
+    private String patNo;
+
+    /**
+     * 申请备注
+     */
+    private String reqRemarks;
+
+    /**
+     * 申请状态 0-默认值 1-通过 2-拒绝
+     */
+    private Integer reqStatus;
+
+    /**
+     * 申请人
+     */
+    private String reqId;
+    private String reqName;
+
+    /**
+     * 可以编辑的时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    /**
+     * 审核备注
+     */
+    private String reviewNotes;
+
+    public String getReqStatusName() {
+        if (reqStatus == null) {
+            return "";
+        }
+        switch (reqStatus) {
+            case 0:
+                return "待审";
+            case 1:
+                return "通过";
+            case 2:
+                return "拒绝";
+            default:
+                return "";
+        }
+    }
+
+    public String getReqStatusHtml() {
+        if (reqStatus == null) {
+            return "";
+        }
+        switch (reqStatus) {
+            case 0:
+                return "<span style='color: white;padding: 5px;background-color: #909399'>待审</span>";
+            case 1:
+                return "<span style='color: white;padding: 5px;background-color: #67C23A'>通过</span>";
+            case 2:
+                return "<span style='color: white;padding: 5px;background-color: #F56C6C'>拒绝</span>";
+            default:
+                return "";
+        }
+    }
+
+}

+ 13 - 1
src/main/java/thyyxxk/webserver/service/redislike/RedisLikeService.java

@@ -1,9 +1,13 @@
 package thyyxxk.webserver.service.redislike;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import thyyxxk.webserver.dao.his.redislike.RedisLikeDao;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.login.UserInfo;
+import thyyxxk.webserver.service.externalhttp.CorpWxSrvc;
 import thyyxxk.webserver.utils.StringUtil;
 import thyyxxk.webserver.utils.TokenUtil;
 
@@ -11,6 +15,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 @Service
+@Slf4j
 public class RedisLikeService {
 
     public final static String SCROLLING_MESSAGES = "scrollingMessages";
@@ -26,6 +31,7 @@ public class RedisLikeService {
     private final static Map<String, String> COUNTRY_MAP = new HashMap<>();
     private final static Map<String, UserInfo> USER_MAP = new HashMap<>();
     private final RedisLikeDao dao;
+    private final CorpWxSrvc srvc;
 
     private final static Map<String, String> MESSAGE = new HashMap<>(2);
 
@@ -37,8 +43,9 @@ public class RedisLikeService {
         return MESSAGE;
     }
 
-    public RedisLikeService(RedisLikeDao dao) {
+    public RedisLikeService(RedisLikeDao dao, CorpWxSrvc srvc) {
         this.dao = dao;
+        this.srvc = srvc;
     }
 
     public String getEmployeeName(String code) {
@@ -166,6 +173,11 @@ public class RedisLikeService {
             userInfo.setRoles(dao.selectUserRoles(code));
             USER_MAP.put(code, userInfo);
         }
+        try {
+            JSONObject json = srvc.getUserinfo(TokenUtil.getWeComAddressBookToken(), userInfo.getCodeRs());
+            userInfo.setAvatar(json.getString("avatar"));
+        } catch (Exception ignored) {
+        }
         return userInfo;
     }
 

+ 100 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/EmrServer.java

@@ -6,8 +6,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.client.RestTemplate;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
@@ -17,6 +19,7 @@ import thyyxxk.webserver.dao.his.zhuyuanyisheng.EmrPatientDao;
 import thyyxxk.webserver.entity.ResultVo;
 import thyyxxk.webserver.entity.dictionary.CodeName;
 import thyyxxk.webserver.entity.drg.AuxiliaryFillingOfDiagnosis;
+import thyyxxk.webserver.entity.zhuyuanyisheng.emr.DischargedEmrModifyApply;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataElement;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrDataExtract;
 import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
@@ -438,4 +441,101 @@ public class EmrServer {
         }
     }
 
+    /**
+     * 查询出院患者的申请
+     *
+     * @param flag 1 只查询自己的 2 查询审核的
+     * @return 提示
+     */
+    public ResultVo<List<DischargedEmrModifyApply>> getDisReqEmr(Integer flag) {
+        QueryWrapper<?> qw = new QueryWrapper<>();
+        if (flag == 1) {
+            qw.eq("req_id", TokenUtil.getTokenUserId());
+        } else if (flag == 2) {
+            qw.eq("req_status", 0);
+        }
+        qw.ge("edit_date", DateUtil.formatDatetime(new Date(), DateUtil.DATE));
+        return ResultVoUtil.success(dao.getDisReqEmr(qw));
+    }
+
+
+    /**
+     * 申请出院患者修改
+     *
+     * @param param 参数
+     * @return 提示
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public ResultVo<String> saveDisEmrReq(DischargedEmrModifyApply param) {
+        param.setReqId(TokenUtil.getTokenUserId());
+        log.info("申请出院患者修改病历:{}", JSON.toJSONString(param));
+        int num = dao.deleteRequest(param.getPatNo());
+        dao.insertApplicationEmrDis(param);
+        if (num > 0) {
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "修改原申请成功。");
+        } else {
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "申请成功。");
+        }
+    }
+
+    /**
+     * 删除申请
+     *
+     * @param patNo 住院号
+     * @return 提示
+     */
+    public ResultVo<String> deleteDisEmrDis(String patNo) {
+        dao.deleteRequest(patNo);
+        return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "操作成功。");
+    }
+
+    /**
+     * 通过申请
+     *
+     * @param patNo 住院号
+     * @return 提示
+     */
+    public ResultVo<String> adoptEmrDisReq(String patNo) {
+        int num = dao.adoptEmrDisReq(patNo, null, 1);
+        if (num > 0) {
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
+        }
+        return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "操作失败,原申请可能已经被删除了。");
+    }
+
+    /**
+     * 拒绝出院患者申请
+     *
+     * @param patNo       住院号
+     * @param reviewNotes 审核信息
+     * @return 提示
+     */
+    public ResultVo<String> refuseEmrDisReq(String patNo, String reviewNotes) {
+        int num = dao.adoptEmrDisReq(patNo, reviewNotes, 2);
+        if (num > 0) {
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
+        }
+        return ResultVoUtil.fail(ExceptionEnum.INTERNAL_SERVER_ERROR, "操作失败,原申请可能已经被删除了。");
+    }
+
+
+    /**
+     * 查询出院患者是否已经通过了编辑
+     *
+     * @param patNo 住院号
+     * @return Boolean
+     */
+    public ResultVo<Boolean> isDisReqEdit(String patNo) {
+        QueryWrapper<?> qw = new QueryWrapper<>();
+        qw.eq("pat_no", patNo);
+        qw.eq("req_status", 1);
+        qw.ge("edit_date", DateUtil.formatDatetime(new Date(), DateUtil.DATE));
+        List<DischargedEmrModifyApply> list = dao.getDisReqEmr(qw);
+        if (ListUtil.isBlank(list)) {
+            return ResultVoUtil.success(false);
+        } else {
+            return ResultVoUtil.success(true);
+        }
+    }
+
 }

+ 9 - 0
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/YiZhuLuRuServer.java

@@ -68,6 +68,7 @@ public class YiZhuLuRuServer {
     private final String ONCE = "ONCE";
     private final int 出院带药限制天数 = 15;
     private final int 出院带药限制数量 = 4;
+    private final List<String> groupList = Arrays.asList("71", "73");
 
     private final String ITEM = "00";
     private final String SMALL_PACKAGE = "01";
@@ -925,6 +926,12 @@ public class YiZhuLuRuServer {
                 if (detailsOfDrugs.getYpLevel() > 医生级别) {
                     errorMessage.add("您没有开此药品的权限");
                 }
+                if (ITEM.equals(item.getGroupNo().trim())) {
+                    errorMessage.add("药房错误请重新选择药房,");
+                }
+                if (!groupList.contains(item.getGroupNo())) {
+                    errorMessage.add("药房错误,请重新选择药房。");
+                }
                 if (StringUtil.isBlank(detailsOfDrugs.getNationalCode())) {
                     warningMessage.add("该药品没有医保编码");
                 }
@@ -1431,6 +1438,8 @@ public class YiZhuLuRuServer {
         if (order.getParentNo() != null) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "操作失败,父医嘱不能为子医嘱。");
         }
+//        order.setOrderTime(DateUtil.timePlusSecond(order.getOrderTime(), 1));
+//        order.setStartTime(DateUtil.timePlusSecond(order.getStartTime(), 1));
         param.getAssociatedGroup().forEach(item -> {
             dao.associateOrders(item, order);
         });

+ 7 - 0
src/main/java/thyyxxk/webserver/utils/DateUtil.java

@@ -329,6 +329,13 @@ public class DateUtil {
         return format.format(date);
     }
 
+    public static Date timePlusSecond(Date date, int second) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.add(Calendar.SECOND, second);
+        return cal.getTime();
+    }
+
     public static Date addDateMinut(Date day, int hour) {
         if (day == null) {
             return null;