Browse Source

一键停止医嘱,和数据优化,全排斥医嘱优化

xiaochan 2 years ago
parent
commit
e39555ff0a

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

@@ -13,6 +13,7 @@ import thyyxxk.webserver.entity.datamodify.YzActOrder;
 import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
 import thyyxxk.webserver.entity.inpatient.patient.Overview;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
+import thyyxxk.webserver.entity.zhuyuanyisheng.OneClickOrder;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.*;
 import thyyxxk.webserver.service.zhuyuanyisheng.YiZhuLuRuServer;
 import thyyxxk.webserver.utils.ResultVoUtil;
@@ -229,4 +230,9 @@ public class YizhuLuRuController {
         return server.queryFeeByOrderNo(actOrderNo);
     }
 
+    @PostMapping("/oneClickStopOrder")
+    public ResultVo<String> oneClickStopOrder(@RequestBody OneClickOrder param) {
+        return server.oneClickStopOrder(param);
+    }
+
 }

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

@@ -11,6 +11,7 @@ import thyyxxk.webserver.entity.inpatient.patient.Overview;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
 import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.entity.zhuyuanyisheng.DoctorSOrderFee;
+import thyyxxk.webserver.entity.zhuyuanyisheng.OneClickOrder;
 import thyyxxk.webserver.entity.zhuyuanyisheng.ZyOrderZk;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.*;
 
@@ -470,16 +471,16 @@ public interface YiZhuLuRuDao {
      * @param orderNo 医嘱号
      * @return 数据
      */
-    @Select("select count(1) " +
+    @Select("select rtrim(status_flag) status_flag, order_name, act_order_no,frequ_code " +
             "from yz_act_order with (NOLOCK) " +
             "where inpatient_no = #{patNo} " +
             "  and admiss_times = #{times} " +
             "  and status_flag in (1, 2)" +
             "  and frequ_code <> 'ONCE' " +
             "  and act_order_no <> #{orderNo}")
-    Integer thereAreUnexecutedOrders(String patNo,
-                                     Integer times,
-                                     BigDecimal orderNo);
+    List<XinZhenYzActOrder> thereAreUnexecutedOrders(String patNo,
+                                                     Integer times,
+                                                     BigDecimal orderNo);
 
     @Select("select count(1) " +
             "from yz_act_order " +
@@ -956,7 +957,8 @@ public interface YiZhuLuRuDao {
             "    ledger_sn = (select max(ledger_sn) " +
             "                 from zy_ledger_file with (NOLOCK) " +
             "                 where zy_actpatient.inpatient_no = zy_ledger_file.inpatient_no " +
-            "                   and zy_actpatient.admiss_times = zy_ledger_file.admiss_times) " +
+            "                   and zy_actpatient.admiss_times = zy_ledger_file.admiss_times)," +
+            "consult_physician,zy_serial_no " +
             " from zy_actpatient with (NOLOCK) " +
             "where inpatient_no = #{patNo} " +
             "  and admiss_times = #{times} ")
@@ -1419,5 +1421,27 @@ public interface YiZhuLuRuDao {
             "  and admiss_times = #{yz.admissTimes} order by charge_date desc ")
     List<ZyDetailCharge> selectOrderFee(@Param("yz") XinZhenYzActOrder yz);
 
-
+    @Update("update yz_act_order " +
+            "set modifier           = #{userCode}, " +
+            "    end_time           = '', " +
+            "    exclu_act_order_no = '' " +
+            "where inpatient_no = #{param.patNo} " +
+            "  and admiss_times = #{param.times} " +
+            "  and status_flag in ('3', '4') " +
+            "  and frequ_code <> 'ONCE' " +
+            "  and end_time is null")
+    int oneClickStopOrder(@Param("param") OneClickOrder param,
+                          @Param("userCode") String userCode);
+
+    @Insert("insert into yz_act_order (act_order_no, inpatient_no, admiss_times, order_code, order_time, frequ_code, enter_time, " +
+            "                          enter_oper, start_time, end_time, infant_flag, drug_flag, " +
+            "                          physician, confirm_time, signer, modifier, status_flag, status_time, " +
+            "                          instruction, order_name, pay_self, serial, group_no, ward_code, " +
+            "                          doctor_flag, dept_code, exec_unit, zy_serial_no, refer_physician, consult_physician) " +
+            "values (#{one.orderNo}, #{one.patNo}, #{one.times}, '10507', #{one.nowDate}, 'ONCE', #{one.nowDate}," +
+            " #{one.userCode},#{one.nowDate}, null, #{p.infantFlag}, 'o'," +
+            " #{one.userCode}, #{one.nowDate}, #{one.userCode}, #{one.userCode}, '5', #{one.nowDate}," +
+            " '一键停止医嘱' +  N'${one.dateStr}'  , #{one.name}, '0','00', '00', #{p.deptCode}, '1', #{p.deptCode}, #{p.zkWard}, '', #{p.referPhysician}, #{p.consultPhysician})")
+    void insertOneClickStopOrder(@Param("one") OneClickOrder one,
+                                 @Param("p") XinZhenYiZhu p);
 }

+ 28 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/OneClickOrder.java

@@ -0,0 +1,28 @@
+package thyyxxk.webserver.entity.zhuyuanyisheng;
+
+import lombok.Data;
+import thyyxxk.webserver.utils.DateUtil;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 一键停止医嘱
+ */
+@Data
+public class OneClickOrder {
+    private String patNo;
+    private Integer times;
+    private Date date;
+    private String name;
+    private BigDecimal orderNo;
+
+    private Date nowDate;
+    private String userCode;
+
+    public String getDateStr() {
+        if (date == null) return "";
+        return DateUtil.formatDatetime(date);
+    }
+
+}

+ 8 - 0
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/yizhuluru/XinZhenYiZhu.java

@@ -114,6 +114,14 @@ public class XinZhenYiZhu {
      */
     private String groupNo;
 
+    /**
+     * 住院流水号
+     */
+    private String zySerialNo;
+
+    private String consultPhysician;
+
+
     /**
      * 医嘱关联数组
      */

+ 11 - 3
src/main/java/thyyxxk/webserver/entity/zhuyuanyisheng/yizhuluru/XinZhenYzActOrder.java

@@ -368,13 +368,10 @@ public class XinZhenYzActOrder {
      * 删除标志
      */
     private Integer delFlag;
-
-
     /**
      * 转科病房
      */
     private String zkWardCode;
-
     /**
      * 转科科室
      */
@@ -389,4 +386,15 @@ public class XinZhenYzActOrder {
 
     private int newOrderFlag;
 
+    public String getStatusFlagName() {
+        if (statusFlag == null) return "";
+        if (statusFlag.equals("1")) {
+            return "录入";
+        }
+        if (statusFlag.equals("2")) {
+            return "确认";
+        }
+        return "";
+    }
+
 }

+ 0 - 6
src/main/java/thyyxxk/webserver/scheduled/FetchAccessTokenTask.java

@@ -72,15 +72,9 @@ public class FetchAccessTokenTask {
         param.put("userCode", "9995");
         param.put("password", "1");
         JSONObject js = outpatientBookingHttp.getToken(param);
-
         if (js.getInteger("code").equals(0)) {
             THMZ_TOKEN = js.getString("token");
         }
-        log.info("门诊登录:{} ", js);
-
-        JSONObject re = outpatientBookingHttp.getAmpmByDateAndDeptCode(FetchAccessTokenTask.THMZ_TOKEN, "2023-06-01", "1002030");
-        log.info("测试:{}", re);
-
     }
 
 

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

@@ -1,5 +1,7 @@
 package thyyxxk.webserver.service.zhuyuanyisheng;
 
+import cn.hutool.Hutool;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
@@ -11,6 +13,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.ListUtils;
 import org.jetbrains.annotations.NotNull;
+import org.slf4j.helpers.MessageFormatter;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,6 +35,7 @@ import thyyxxk.webserver.entity.inpatient.patient.Overview;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
 import thyyxxk.webserver.entity.login.UserInfo;
 import thyyxxk.webserver.entity.zhuyuanyisheng.DoctorSOrderFee;
+import thyyxxk.webserver.entity.zhuyuanyisheng.OneClickOrder;
 import thyyxxk.webserver.entity.zhuyuanyisheng.ZyOrderZk;
 import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.*;
 import thyyxxk.webserver.service.PublicServer;
@@ -284,9 +288,17 @@ public class YiZhuLuRuServer {
         Repel repel = checkData.getRepel();
 
         if (repel != null && repel.getCount() > 0) {
-            dao.stopOrder(param.getInpatientNo(), param.getAdmissTimes(), repel.getDate(), userCode, repel.getOrderNo());
-            dao.stopNotConfirmedOrder(param.getInpatientNo(), param.getAdmissTimes(), repel.getDate(), userCode, repel.getOrderNo());
-            dao.confirmOrders(repel.getOrderNo(), userCode, new Date());
+            List<XinZhenYzActOrder> list = dao.thereAreUnexecutedOrders(param.getInpatientNo(), param.getAdmissTimes(), repel.getOrderNo());
+
+            if (ListUtil.notBlank(list)) {
+                StringBuilder sb = new StringBuilder();
+                list.forEach(item -> {
+                    sb.append(StrUtil.format("医嘱名:【{}】,频次:【{}】,状态:【{}】,医嘱号:【{}】<br>", item.getOrderName(), item.getFrequCode(), item.getStatusFlagName(), item.getActOrderNo()));
+                });
+                sb.append("有未确认和未执行的医嘱,请护士先执行医嘱后开全排斥医嘱。");
+                return ResultVoUtil.fail(ExceptionEnum.LOGICAL_HTML_ERROR, sb.toString());
+            }
+
             return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "全排斥医嘱确认成功,之前医嘱已被停止。");
         }
 
@@ -1264,12 +1276,6 @@ public class YiZhuLuRuServer {
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION);
     }
 
-    private void setCopyExecUnit(XinZhenYzActOrder v, String dept) {
-        if (StringUtil.notBlank(dept)) {
-            v.setExecUnit(dept);
-        }
-    }
-
     @Transactional(rollbackFor = Exception.class)
     public void insertATemplate(List<XinZhenYzActOrder> list, XinZhenYiZhu patInfo) {
         String userCode = TokenUtil.getTokenUserId();
@@ -1347,5 +1353,25 @@ public class YiZhuLuRuServer {
         return ResultVoUtil.success(feeList);
     }
 
+    public ResultVo<String> oneClickStopOrder(OneClickOrder param) {
+        param.setOrderNo(publicServer.getActOrderNo());
+        param.setNowDate(new Date());
+        param.setUserCode(TokenUtil.getTokenUserId());
+        return getThis().executeOneClickStopOrder(param);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public ResultVo<String> executeOneClickStopOrder(OneClickOrder param) {
+        // 10507 固定医嘱号
+        int count = dao.oneClickStopOrder(param, param.getUserCode());
+        if (count > 0) {
+            // 生成医嘱
+            XinZhenYiZhu patInfo = dao.queryPatientInfo(param.getPatNo(), param.getTimes());
+            dao.insertOneClickStopOrder(param, patInfo);
+            return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "操作成功,正在执行的长期医嘱停止到了【" + param.getDateStr() + "】");
+        }
+        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有需要停止的长期医嘱操作失败。");
+    }
+
 
 }