瀏覽代碼

项目录入中优化药品的判断方式,以及药品可以仅退费不退药。

DESKTOP-0GD05B0\Administrator 2 年之前
父節點
當前提交
6ff44986af

+ 8 - 10
src/main/java/thyyxxk/webserver/dao/his/inpatient/XiangMuLuRuDao.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.*;
-import thyyxxk.webserver.entity.datamodify.FeiYongLeiXin;
 import thyyxxk.webserver.entity.datamodify.GetDropdownBox;
 import thyyxxk.webserver.entity.datamodify.ZyDetailCharge;
 import thyyxxk.webserver.entity.inpatient.FeeSelect;
@@ -651,15 +650,6 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
                       @Param("infantFlag") int infantFlag,
                       @Param("ledgerSn") Integer ledgerSn);
 
-    @Select("<script>" +
-            "SELECT charge_code charge_code_mx,group_no,serial FROM yp_base_yf WHERE charge_code in " +
-            "<foreach collection='list' item='item' index='index' open='(' close=')' separator=','>" +
-            "#{item.chargeCodeMx}" +
-            "</foreach>" +
-            "</script>")
-    List<ZyDetailCharge> yaoFang(List<ZyDetailCharge> yaoPingCode);
-
-
     @Select("<script>" +
             "select code                                                                              as charge_code_mx, " +
             "       CASE infusion_flag " +
@@ -674,6 +664,14 @@ public interface XiangMuLuRuDao extends BaseMapper<ZyDetailCharge> {
     List<ZyDetailCharge> getDrugClass(List<ZyDetailCharge> yaoPingCode);
 
 
+    @Select("select b.class as class_code," +
+            "       a.drug_flag as drug_class " +
+            "from yz_act_order a, " +
+            "     yz_supply_type b " +
+            "where a.supply_code = b.supply_code " +
+            "  and a.act_order_no = #{order} ")
+    ZyDetailCharge selectDrugClassByOrderNo(BigDecimal order);
+
     @Insert("<script>" +
             "insert into zy_drug ( inpatient_no , admiss_times , ledger_sn , detail_sn , charge_date , op_id_code , charge_code , infant_flag , " +
             "charge_fee , self_flag , separate_flag , supress_flag , ward_code , dept_code , ope_flag , exec_unit , retprice , amount , zy_serial_no , " +

+ 11 - 1
src/main/java/thyyxxk/webserver/entity/datamodify/ZyDetailCharge.java

@@ -242,7 +242,7 @@ public class ZyDetailCharge implements Serializable {
     private Date admissDate;
 
     /**
-     * 这里面是 存放需要退费 小丑竟是我自己
+     * 这里面是 存放需要退费
      */
     private List<ZyDetailCharge> list;
 
@@ -351,6 +351,16 @@ public class ZyDetailCharge implements Serializable {
      */
     private String specification;
 
+    /**
+     * 药品的类型 1 = 口服不能退
+     */
+    private String classCode;
+
+    /**
+     * refundOnly 药品仅退费标识
+     */
+    private String refundFlag;
+
 
     public BigDecimal getOrderNo() {
         if (orderNo == null) {

+ 16 - 15
src/main/java/thyyxxk/webserver/service/inpatient/XiangMuLuRuService.java

@@ -204,31 +204,32 @@ public class XiangMuLuRuService {
                         medicalTechnologyDrugReturnForm.add(item);
                     }
                 } else {
-                    // 数量设置为负数
-                    item.setChargeAmount(item.getChargeAmount().negate());
-                    drug.add(item);
-                    updateDrugLabel.add(item.getDetailSn());
+                    // 仅退费不退药品
+                    if ("refundOnly".equals(param.getRefundFlag())) {
+                        maxDetailSn = setRefund(project, tuiFeiList, updateRefundFlag, maxDetailSn, item);
+                    } else {
+                        // 数量设置为负数
+                        item.setChargeAmount(item.getChargeAmount().negate());
+                        drug.add(item);
+                        updateDrugLabel.add(item.getDetailSn());
+                    }
                 }
-
             }
         }
 
         // 护士退药单
         if (ListUtil.notBlank(drug)) {
-            Map<String, ZyDetailCharge> getDrugClass = dao.getDrugClass(drug).stream().collect(
-                    Collectors.toMap(ZyDetailCharge::getChargeCodeMx, a -> a, (k1, k2) -> k1)
-            );
-
             for (ZyDetailCharge item : drug) {
-                ZyDetailCharge a = getDrugClass.get(item.getChargeCodeMx());
+                ZyDetailCharge a = dao.selectDrugClassByOrderNo(item.getOrderNo());
                 if (a == null) {
-                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费 原因没有查询到原药品请联系药库,编码为:【%s】。", item.getDetailSn(), item.getChargeCodeMx()));
+                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因没有查询到原药品对应的医嘱,编码为:【%s】。", item.getDetailSn(), item.getChargeCodeMx()));
                 } else {
                     // 口服药无法退费
-                    if ("d".equals(a.getDrugClass())) {
-                        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因口服药无法退费,开退费医嘱也不行", item.getDetailSn()));
+                    if ("1".equals(a.getClassCode())) {
+                        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("流水号:【%s】,药品无法退费,原因原医嘱的给药方式为口服药,口服无法退费。", item.getDetailSn()));
                     }
-                    item.setDrugClass(a.getDrugClass());
+                    // 医嘱表中会有 z 所以把所有 z 的换成 j
+                    item.setDrugClass("z".equals(a.getDrugClass()) ? "j" : a.getDrugClass());
                 }
             }
 
@@ -251,13 +252,13 @@ public class XiangMuLuRuService {
             dao.shenQingYaoPing(param, medicalTechnologyDrugReturnForm, infantFlag, ledgerSn, TokenUtil.getTokenUserId());
         }
 
+        // 项目退费
         if (ListUtil.notBlank(project)) {
             List<List<ZyDetailCharge>> fenGe = ListUtils.partition(project, 20);
             fenGe.forEach(dao::xiangMuTuiFei);
             dao.genXinZhenShuTuiFeiLiuShui(param.getInpatientNo(), param.getAdmissTimes(), ledgerSn, updateRefundFlag, -1);
             log.info("项目录入==》项目退费,操作人:{},数据:{}", TokenUtil.getTokenUserId(), JSON.toJSONStringWithDateFormat(project, DateUtil.DEFAULT_PATTERN));
         }
-
         return ResultVoUtil.success(ExceptionEnum.SUCCESS_AND_NOTIFICATION, "退费成功。");
     }
 

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

@@ -539,18 +539,16 @@ public class JianYanJianChaShenQingServer {
     public ResultVo<Map<String, Object>> queryCheckTextResults(String patNo, Integer times, String reqNo) {
         String jcId = dao.getJcIdByPatNo(patNo);
         if (StringUtil.isBlank(jcId)) {
-            return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "没有获取到患者的检查id");
+            return ResultVoUtil.fail(ExceptionEnum.NULL_POINTER, "没有获取到患者的检查id");
         }
         YjJcRecord yjJcRecord = dao.getJcRecord(reqNo, jcId);
         if (yjJcRecord == null) {
             return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST, "没有查询到检查结果。");
         }
         YjJcRecordReport report = dao.getJcRecordReportByReportNo(yjJcRecord.getReportNo());
-
 //        log.info("诊断意见:{}", JSON.toJSONString(yjJcRecord));
 //        log.info("检查所见:{}", JSON.toJSONString(report));
 //        log.info("住院号:{},次数:{},申请单号:{}", patNo, times, reqNo);
-
         Map<String, Object> map = new HashMap<>(Capacity.TWO);
         map.put("record", yjJcRecord);
         map.put("recordReport", report);