Pārlūkot izejas kodu

医嘱查询优化

xiaochan 2 gadi atpakaļ
vecāks
revīzija
4da0edbb3a

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>11.1.3</version>
+    <version>11.1.4</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

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

@@ -86,7 +86,6 @@ public class YizhuLuRuController {
         return server.huoQuXiangMu(code, groupNo);
     }
 
-
     @GetMapping("/getFrequency")
     @PassToken
     public ResultVo<List<GetDropdownBox>> getFrequency() {
@@ -105,7 +104,7 @@ public class YizhuLuRuController {
             return ResultVoUtil.success();
         }
         String[] str = queryCode.split("_");
-        return server.huoQuFeiYongXinXi(str[0], str[1], str[2], str[3], str[4]);
+        return server.huoQuFeiYongXinXi(str[0], str[1], str[2], str[3], str[4], str[5]);
     }
 
     @PostMapping("/deleteMultipleOrders")

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

@@ -7,6 +7,7 @@ import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.SelectV2;
 import thyyxxk.webserver.entity.datamodify.YzActOrder;
 import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
+import thyyxxk.webserver.entity.heliyongyao.YaoPin;
 import thyyxxk.webserver.entity.inpatient.patient.Overview;
 import thyyxxk.webserver.entity.inpatient.patient.Patient;
 import thyyxxk.webserver.entity.login.UserInfo;
@@ -352,6 +353,9 @@ public interface YiZhuLuRuDao {
             "where act_order_no = #{orderNo} ")
     XinZhenYzActOrder getActOrderNoOne(String orderNo);
 
+    @Select("select frequ_code from yz_act_order where act_order_no = ${orderNo} ")
+    String selectParentNo(String orderNo);
+
     @Select("select cast(cast(act_order_no as decimal) as varchar) " +
             "from yz_act_order with (NOLOCK) " +
             "where parent_no = #{orderNo}")
@@ -588,18 +592,24 @@ public interface YiZhuLuRuDao {
     void insertEntryOrder(XinZhenYiZhu patInfo, XinZhenYzActOrder pa, String userCode);
 
     @Update("update yz_act_order set " +
-            "frequ_code = #{frequCode}," +
-            "supply_code = dbo.get_child_supply(${actOrderNo})," +
-            "exec_unit = #{execUnit}," +
-            "order_time = #{orderTime}," +
-            "start_time = #{startTime,jdbcType=TIMESTAMP}," +
-            "end_time = #{endTime,jdbcType=TIMESTAMP}," +
-            "group_no = #{groupNo}," +
-            "modifier = #{modifier} " +
-            "where  inpatient_no = #{inpatientNo} " +
-            " and admiss_times = #{admissTimes}  " +
-            " and parent_no = #{actOrderNo,jdbcType=REAL} ")
-    void howOftenTheSubPhysicianOrderIsModified(XinZhenYzActOrder pa);
+            "frequ_code = #{pa.frequCode}," +
+            "supply_code = #{supplyCode}," +
+            "exec_unit = #{pa.execUnit}," +
+            "order_time = #{pa.orderTime}," +
+            "start_time = #{pa.startTime,jdbcType=TIMESTAMP}," +
+            "end_time = #{pa.endTime,jdbcType=TIMESTAMP}," +
+            "group_no = #{pa.groupNo}," +
+            "modifier = #{pa.modifier} " +
+            "where  inpatient_no = #{pa.inpatientNo} " +
+            " and admiss_times = #{pa.admissTimes}  " +
+            " and parent_no = #{pa.actOrderNo,jdbcType=REAL} ")
+    void howOftenTheSubPhysicianOrderIsModified(@Param("pa") XinZhenYzActOrder pa,
+                                                @Param("supplyCode") String supplyCode);
+
+    @Select("select isnull(nullif(supply_child, ''), '044') " +
+            "from yz_supply_type " +
+            "where supply_code = '${code}'")
+    String selectSupplyCode(String code);
 
 
     @Select("SELECT rtrim(a.order_code) + '00' as id," +
@@ -711,8 +721,8 @@ public interface YiZhuLuRuDao {
     Integer shiFouPaiChiYiZhu(String code);
 
 
-    @Select("select " +
-            "         drug_flag, categories_flag," +
+    @Select("select                 drug_flag, " +
+            "                       categories_flag, " +
             "                       a.serial, " +
             "    /* 医保自费 */ " +
             "                       cast(isnull(NULLIF(self_flag_yb, " +
@@ -772,16 +782,19 @@ public interface YiZhuLuRuDao {
             "    supply_code_name = (select supply_name " +
             "                        from yz_supply_type with (NOLOCK) " +
             "                        where yz_supply_type.supply_code = supply_type), " +
-            "                       national_code, " +
-            "                       stock_amount," +
-            "                       cast(isnull(nullif(visible_flag_zy, ''), 0) as int) as visible_flag_zy  " +
+            "                       national_code " +
             "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) = #{code}  " +
-            "  and cast(isnull(NULLIF(del_flag, ''), 0) as int) = 0 " +
-            "  and group_no = #{groupNo} ")
-    YaoPinXinXi huoQuYaoPin(@Param("code") String code,
-                            @Param("groupNo") String groupNo);
+            "where rtrim(code) + rtrim(a.serial) = '${code}' " +
+            "  and cast(isnull(NULLIF(del_flag, ''), 0) as int) = 0")
+    YaoPinXinXi huoQuYaoPin(@Param("code") String code);
+
+
+    @Select("select stock_amount, cast(isnull(nullif(visible_flag_zy, ''), 0) as int) as visible_flag_zy " +
+            "from yp_base_yf " +
+            "where rtrim(charge_code) + rtrim(serial) = '${code}' " +
+            "  and group_no = '${groupNo}'")
+    YaoPinXinXi huoQuJinYongXinXi(@Param("code") String code,
+                                  @Param("groupNo") String groupNo);
 
     @Select("select count(1) " +
             "from yp_zd_dept " +

+ 1 - 4
src/main/java/thyyxxk/webserver/service/heliyongyao/RationalUseServer.java

@@ -60,9 +60,7 @@ public class RationalUseServer {
 
         // 获取新开的医嘱
         patInfo.setList(orderDao.selectOrderNo(qw));
-        // todo 历史医嘱先不给,影响我这里开医嘱
-        // List<XinZhenYzActOrder> historicalData = dao.getHistoricalMedicalOrders(patNo, times);
-        List<XinZhenYzActOrder> historicalData = new ArrayList<>();
+        List<XinZhenYzActOrder> historicalData = dao.getHistoricalMedicalOrders(patNo, times);
 
         JSONObject js = verify(patInfo, historicalData);
         return ResultVoUtil.success(js);
@@ -98,7 +96,6 @@ public class RationalUseServer {
         );
         String detailsXml = drugInfoFunc(param.getInpatientNo(), param.getAdmissTimes(), param.getList(), doctXml, drugMap, historicalData);
         String js = String.format("{\"BaseXml\": \"%s\", \"DetailsXml\" : \"%s\"}", baseXml, detailsXml);
-//        log.info("js:{}", js);
         return http.rationalUse(js);
     }
 

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

@@ -201,6 +201,7 @@ public class YiZhuLuRuServer {
      * @param times 次数
      * @return 返回父医嘱
      */
+    @Deprecated
     public ResultVo<List<XinZhenYzActOrder>> getParentOrders(String patNo, Integer times) {
         return ResultVoUtil.success(dao.getParentOrders(patNo, times));
     }
@@ -404,16 +405,13 @@ public class YiZhuLuRuServer {
             return ResultVoUtil.fail(ExceptionEnum.ERROR_MESSAGE, "请修改有错误的医嘱。", errorMessageMap);
         }
 
+        // 如果是 子医嘱 的话就拿到父医嘱的频率
         if (data.getParentNo() != null) {
-            XinZhenYzActOrder parentOrder = dao.getActOrderNoOne(data.getParentNo().stripTrailingZeros().toPlainString());
-            if (parentOrder != null) {
-                data.setFrequCode(parentOrder.getFrequCode());
+            String frequCode = dao.selectParentNo(data.getParentNo().stripTrailingZeros().toPlainString());
+            if (StringUtil.notBlank(frequCode)) {
+                data.setFrequCode(frequCode);
             }
         }
-        // 删除抗菌药物信息
-        dao.deleteAntimicrobialInformation(param.getActOrderNo());
-        // 先删除转科在插入
-        dao.deleteTransferOrder(param.getActOrderNo());
 
         if (checkData.getPassTheAudit()) {
             if (ZK_CODE.equals(data.getOrderCode())) {
@@ -424,6 +422,8 @@ public class YiZhuLuRuServer {
                         .setNewWard(data.getZkWardCode())
                         .setOldWard(huanZheXinXi.getDeptCode())
                         .setOldDept(huanZheXinXi.getSmallDept());
+                // 先删除转科在插入
+                dao.deleteTransferOrder(param.getActOrderNo());
                 dao.insertDoctorSOrder(transferData);
             }
             // 判断是不是抗菌药物
@@ -435,6 +435,8 @@ public class YiZhuLuRuServer {
                 kss.setYyfs(data.getYyfs());
                 kss.setSsqk(data.getSsqk());
                 kss.setYysj(data.getYysj());
+                // 删除抗菌药物信息
+                dao.deleteAntimicrobialInformation(param.getActOrderNo());
                 dao.insertAntimicrobialInformation(param.getActOrderNo(),
                         kss, userCode, param.getInpatientNo(), param.getAdmissTimes());
             }
@@ -442,12 +444,19 @@ public class YiZhuLuRuServer {
 
         dao.deleteOrderNo(param.getActOrderNo());
         dao.insertEntryOrder(huanZheXinXi, param.getData(), userCode);
+
+        // 更新授权医生
         if (StringUtil.notBlank(param.getData().getSuperiorDoctor())) {
             dao.updateAuthorizedDoctor(param.getData().getActOrderNo(), param.getData().getSuperiorDoctor());
         }
-        if (param.getData().getParentNo() == null) {
+        // 项目不触发
+        if (param.getData().getParentNo() == null && !param.getData().getSerial().equals("00")) {
+            String selectSupplyCode = dao.selectSupplyCode(param.getData().getSupplyCode().trim());
+            if (StringUtil.isBlank(selectSupplyCode)) {
+                selectSupplyCode = "044";
+            }
             // 子医嘱跟随父医嘱
-            dao.howOftenTheSubPhysicianOrderIsModified(param.getData());
+            dao.howOftenTheSubPhysicianOrderIsModified(param.getData(), selectSupplyCode);
         }
 
         QueryWrapper<?> qw = new QueryWrapper<>();
@@ -658,16 +667,25 @@ public class YiZhuLuRuServer {
         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "存在医嘱时间为空的医嘱请检查。", map);
     }
 
+    private Integer a = 0;
 
     /**
      * 获取某一个费用的详细信息
      *
-     * @param code   编码
-     * @param serial 00-项目 01-小包装的药品 99-大包装
+     * @param code         编码
+     * @param serial       00-项目 01-小包装的药品 99-大包装
+     * @param deptCode     科室编码
+     * @param groupNo      药房编码
+     * @param seniorDoctor 授权医生
+     * @param flag         医嘱状态标志
      * @return 返回该费用的一些详细信息,以及一些提示信息。
      */
     @DS("his")
-    public ResultVo<Map<String, Object>> huoQuFeiYongXinXi(String code, String serial, String deptCode, String groupNo, String seniorDoctor) {
+    public ResultVo<Map<String, Object>> huoQuFeiYongXinXi(String code, String serial,
+                                                           String deptCode,
+                                                           String groupNo,
+                                                           String seniorDoctor,
+                                                           String flag) {
         Map<String, Object> map = new HashMap<>();
         // 一些提示
         List<String> prompt = new ArrayList<>();
@@ -685,52 +703,78 @@ public class YiZhuLuRuServer {
                 }
             }
             if (ListUtil.isBlank(xiangMu)) {
-                Integer paiChiYiZhu = dao.shiFouPaiChiYiZhu(code);
-                if (paiChiYiZhu != null) {
-                    switch (paiChiYiZhu) {
-                        case 1:
-                            prompt.add("全排斥医嘱");
-                            break;
-                        case 2:
-                            prompt.add("单组排斥医嘱");
-                            break;
-                        case 3:
-                            prompt.add("多组斥医嘱");
-                            break;
-                        default:
-                            break;
+                if (flag.equals("1")) {
+                    Integer paiChiYiZhu = dao.shiFouPaiChiYiZhu(code);
+                    if (paiChiYiZhu != null) {
+                        switch (paiChiYiZhu) {
+                            case 1:
+                                prompt.add("全排斥医嘱");
+                                break;
+                            case 2:
+                                prompt.add("单组排斥医嘱");
+                                break;
+                            case 3:
+                                prompt.add("多组斥医嘱");
+                                break;
+                            default:
+                                break;
+                        }
                     }
                 }
             }
         } else {
-            YaoPinXinXi yp = dao.huoQuYaoPin(code.trim() + serial.trim(), groupNo);
-            if (StringUtil.notBlank(deptCode)) {
-                if (dao.restrictedUseInTheDepartment(code.trim(), deptCode) > 0) {
-                    return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "该药品禁止在患者所在的科室使用。");
+            String key = code.trim() + serial.trim();
+            YaoPinXinXi yp = dao.huoQuYaoPin(key);
+            // 新开的医嘱才需要判断这个
+            if (flag.equals("1")) {
+                if (yp == null) {
+                    return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "该医嘱下的药品,可能已经被停用了,请联系药剂科。");
                 }
-            }
-            if (yp == null) {
-                return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "该医嘱下的药品,可能已经被停用了,请联系药剂科。");
-            }
-            yp.setDrugFlag(getDrugFlagByLargeCategories(yp.getCategoriesFlag()));
+                yp.setDrugFlag(getDrugFlagByLargeCategories(yp.getCategoriesFlag()));
 
-            if (yp.getVisibleFlagZy() == 1) {
-                return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "该药品禁止住院使用。");
-            }
-            Integer yiShenDengJi = dao.huoQuYiShenDengJi(TokenUtil.getTokenUserId());
-            int yiShen = yiShenDengJi == null ? 0 : yiShenDengJi;
+                YaoPinXinXi disable = dao.huoQuJinYongXinXi(key, groupNo);
 
-            int superior = 0;
+                if (disable != null && disable.getVisibleFlagZy() == 1) {
+                    return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "该药品禁止住院使用。");
+                }
+                if (StringUtil.notBlank(deptCode)) {
+                    if (dao.restrictedUseInTheDepartment(code.trim(), deptCode) > 0) {
+                        return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "该药品禁止在患者所在的科室使用。");
+                    }
+                }
+                Integer yiShenDengJi = dao.huoQuYiShenDengJi(TokenUtil.getTokenUserId());
+                int yiShen = yiShenDengJi == null ? 0 : yiShenDengJi;
 
-            if (StringUtil.notBlank(seniorDoctor) && !"null".equals(seniorDoctor)) {
-                Integer superiorRank = dao.huoQuYiShenDengJi(seniorDoctor);
-                superior = superiorRank == null ? 0 : superiorRank;
-            }
+                int superior = 0;
 
-            if (yp.getYpLevel() > yiShen && yp.getYpLevel() > superior) {
-                permissionPrompt = true;
-            }
+                if (StringUtil.notBlank(seniorDoctor) && !"null".equals(seniorDoctor)) {
+                    Integer superiorRank = dao.huoQuYiShenDengJi(seniorDoctor);
+                    superior = superiorRank == null ? 0 : superiorRank;
+                }
+
+                if (yp.getYpLevel() > yiShen && yp.getYpLevel() > superior) {
+                    permissionPrompt = true;
+                }
 
+                if (yp.getKjywFlag() == 1) {
+                    prompt.add("抗菌药物,需填写抗菌药物医嘱附注");
+                }
+                if (yp.getSelfFlagYb() == 1) {
+                    prompt.add("该药品医保自费药品,如符合条件请填写记账,不是请填写自费");
+                }
+                if (StringUtil.isBlank(yp.getNationalCode())) {
+                    prompt.add("该药品医保没有匹配医保码");
+                } else {
+                    prompt.add(String.format("药品医保码为:【%s】", yp.getNationalCode()));
+                }
+                if (disable != null && disable.getStockAmount() != null && BigUtils.bigXiaoYu(disable.getStockAmount(), 10)) {
+                    prompt.add(String.format("该药品剩余数量为:【%s】", disable.getStockAmount().stripTrailingZeros().toPlainString()));
+                }
+                if (yp.getPsFlag() == 1) {
+                    prompt.add("此药品为皮试药品");
+                    map.put("piShi", dao.piShiGeiYaoFangShi());
+                }
+            }
             List<YaoPingJiLiang> yaoPingJiLiang = new ArrayList<>();
             if (StringUtil.notBlank(yp.getWeighUnit())) {
                 yaoPingJiLiang.add(new YaoPingJiLiang(yp.getWeighUnit(), yp.getWeighUnitName(), yp.getWeight()));
@@ -742,24 +786,6 @@ public class YiZhuLuRuServer {
                 yaoPingJiLiang.add(new YaoPingJiLiang(yp.getPackUnit(), yp.getPackUnitName(), yp.getPackSize()));
             }
 
-            if (yp.getKjywFlag() == 1) {
-                prompt.add("抗菌药物,需填写抗菌药物医嘱附注");
-            }
-            if (yp.getSelfFlagYb() == 1) {
-                prompt.add("该药品医保自费药品,如符合条件请填写记账,不是请填写自费");
-            }
-            if (StringUtil.isBlank(yp.getNationalCode())) {
-                prompt.add("该药品医保没有匹配医保码");
-            } else {
-                prompt.add(String.format("药品医保码为:【%s】", yp.getNationalCode()));
-            }
-            if (yp.getStockAmount() != null && BigUtils.bigXiaoYu(yp.getStockAmount(), 10)) {
-                prompt.add(String.format("该药品剩余数量为:【%s】", yp.getStockAmount().stripTrailingZeros().toPlainString()));
-            }
-            if (yp.getPsFlag() == 1) {
-                prompt.add("此药品为皮试药品");
-                map.put("piShi", dao.piShiGeiYaoFangShi());
-            }
             map.put("yaoPingJiLiang", yaoPingJiLiang);
             map.put("data", yp);
         }

+ 0 - 1
src/main/java/thyyxxk/webserver/service/zhuyuanyisheng/emr/EmrAuditServer.java

@@ -27,7 +27,6 @@ public class EmrAuditServer {
     public EmrAuditServer(EmrAuditDao dao) {
         this.dao = dao;
     }
-
     public ResultVo<JSONObject> getAuditMessages(String id, String code, Integer finalControl) {
         List<EmrAuditDetail> auditData = dao.selectedMessage(id, finalControl);
         List<EmrAuditDetail> templateData = dao.selectedLink(code);