Browse Source

给药方式校验

xiaochan 1 year ago
parent
commit
083b93344f

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

@@ -945,12 +945,13 @@ public interface YiZhuLuRuDao {
             "                           else isnull(stock_amount, 0) end                as stock_amount, " +
             "                       cast(isnull(nullif(visible_flag_zy, ''), 0) as int) as visible_flag_zy," +
             "                       cast(isnull(NULLIF(kss_flag, ''), 0) as int)        as kss_flag, " +
-            "    deptRestrictions = (select count(1) from yp_zd_dept where code = yp_zd_dept.charge_code and dept_code = '${dept}') " +
+            "    deptRestrictions = (select count(1) from yp_zd_dept where code = yp_zd_dept.charge_code and dept_code = '${dept}')," +
+            "    supplyCode = ( select isnull(del_flag, 0) from yz_supply_type where supply_code = '${supplyCode}') " +
             "from yp_zd_dict a " +
             "         with (NOLOCK) " +
             "         left join yp_base_yf b on (code = b.charge_code and a.serial = b.serial) " +
             "where rtrim(code) + rtrim(a.serial) + rtrim(group_no) = #{code} ")
-    XinZhenYzActOrder drugDataOne(String code, String dept);
+    XinZhenYzActOrder drugDataOne(String code, String dept, String supplyCode);
 
     @Select("select          rtrim(inpatient_no) as inpatient_no, " +
             "                admiss_times, " +

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

@@ -572,7 +572,7 @@ public class YiZhuLuRuServer {
     private void setTempInfo(CacheOnce<XinZhenYzActOrder> drug, XinZhenYzActOrder data, XinZhenYiZhu patInfo) {
         XinZhenYzActOrder feiYongXinXi = drug.get(
                 data.getOrderCode().trim() + data.getSerial().trim() + data.getGroupNo().trim(),
-                (temp) -> dao.drugDataOne(temp, patInfo.getZkWard())
+                (temp) -> dao.drugDataOne(temp, patInfo.getZkWard() , null)
         );
         YiZhuCheckData.calculateDrugAmount(data, feiYongXinXi);
     }

+ 21 - 14
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/yizhuverify/YiZhuCheckData.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.service.zhuyuanyisheng.yizhuverify;
 
+import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import thyyxxk.webserver.constants.Capacity;
 import thyyxxk.webserver.dao.his.zhuyuanyisheng.YiZhuLuRuDao;
@@ -10,6 +11,7 @@ import thyyxxk.webserver.entity.zhuyuanyisheng.yizhuluru.YzZdOrderItemConfirm;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.function.Consumer;
 
@@ -52,12 +54,14 @@ public class YiZhuCheckData {
     List<String> warningMessage = new ArrayList<>();
     Map<String, Object> returnMap = new HashMap<>();
     private UserInfo userInfo;
+    @Getter
     private Boolean passTheAudit = true;
     private final List<String> groupList = Arrays.asList("71", "73");
 
     /**
      * 全排斥医嘱
      */
+    @Getter
     private Repel repel = null;
     private final String ONCE = "ONCE";
 
@@ -176,25 +180,32 @@ public class YiZhuCheckData {
     }
 
     private void drugCheck(XinZhenYzActOrder item) {
-        String key = item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim();
-        XinZhenYzActOrder detailsOfDrugs = getDrugData(key);
+
         if (StringUtil.isBlank(item.getGroupNo())) {
             errorMessage.add("没有药房请重新开。");
+            return;
+        }
+
+        if (!groupList.contains(item.getGroupNo())) {
+            errorMessage.add("药房错误,请重新选择药房。");
         }
 
+        String key = item.getOrderCode().trim() + item.getSerial().trim() + item.getGroupNo().trim();
+        XinZhenYzActOrder detailsOfDrugs = getDrugData(key, item.getSupplyCode());
+
         if (BigUtils.bigXiaoYu(item.getDose(), 0)) {
             errorMessage.add(String.format("医嘱:【%s】,计量不能开负数", item.getOrderName()));
         }
 
-        if (!groupList.contains(item.getGroupNo())) {
-            errorMessage.add("药房错误,请重新选择药房。");
-        }
+
 
         if (StringUtil.isBlank(item.getDrugSpecification())) {
             errorMessage.add("药品规格不能为空");
         }
         if (StringUtil.isBlank(item.getSupplyCode())) {
             errorMessage.add("给药方式不能为空");
+        } else if (detailsOfDrugs.getSupplyCode() == null || "1".equals(detailsOfDrugs.getSupplyCode())) {
+            errorMessage.add("给药方式已被停用。");
         }
         if (item.getDose() == null || BigUtils.dengYu(item.getDose(), 0)) {
             errorMessage.add("一次计量不能为空");
@@ -307,7 +318,11 @@ public class YiZhuCheckData {
 
 
     public XinZhenYzActOrder getDrugData(String code) {
-        return drug.get(code, (temp) -> dao.drugDataOne(temp, patientInformation != null ? patientInformation.getZkWard() : ""));
+        return drug.get(code, (temp) -> dao.drugDataOne(temp, patientInformation != null ? patientInformation.getZkWard() : "", null));
+    }
+
+    public XinZhenYzActOrder getDrugData(String code, String supplyCode) {
+        return drug.get(code, (temp) -> dao.drugDataOne(temp, patientInformation != null ? patientInformation.getZkWard() : "", supplyCode));
     }
 
     public static void calculateDrugAmount(XinZhenYzActOrder item, XinZhenYzActOrder feiYongXinXi) {
@@ -356,18 +371,10 @@ public class YiZhuCheckData {
         return returnMap;
     }
 
-    public Boolean getPassTheAudit() {
-        return passTheAudit;
-    }
-
     public Boolean getFailed() {
         return !passTheAudit;
     }
 
-    public Repel getRepel() {
-        return repel;
-    }
-
     public Boolean multipleExclusions() {
         if (repel == null) {
             return false;