Sfoglia il codice sorgente

急诊监护费限制

yeguodong 1 settimana fa
parent
commit
142557c342

+ 19 - 1
src/main/java/cn/hnthyy/thmz/service/impl/his/mz/MzChargeDetailServiceImpl.java

@@ -240,6 +240,8 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
     private boolean setUnitPrice;
     @Resource
     private MzVisitListService mzVisitListService;
+    @Autowired
+    private ZdChargeItemMapper zdChargeItemMapper;
 
     @Override
     public int countMzChargeDetail(MzChargeDetailPageDto mzChargeDetailPageDto) {
@@ -7566,15 +7568,31 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
             throw new MzException("开具商城套餐处方,不能和其他处方合开,必须单独开具!");
         }
 
-        // todo 当收取急诊监护费时,不收挂号费
         List<MzChargeDetail> mzChargeDetailList = mzPrescriptionVo.getMzChargeDetailList();
+
+        // 当收取急诊监护费时,不收挂号费
+        ZdChargeItem zdChargeItem = null;
         for(MzChargeDetail mzChargeDetail : mzChargeDetailList) {
             if("020200000D".equalsIgnoreCase(mzChargeDetail.getChargeItemCode())) {
+                zdChargeItem = zdChargeItemMapper.selectZdChargeItemByCode(mzChargeDetail.getChargeItemCode());
                 mzPrescriptionVo.setGhFeeFlag("0");
                 break;
             }
         }
 
+        // 当收取急诊监护费时,不能收急诊诊察费、门急诊留观床位费、及所有项目名称带护理两字的护理费用
+        if(zdChargeItem != null && StringUtils.isNotBlank(zdChargeItem.getRepelOrder())) {
+            String[] repelOrders = zdChargeItem.getRepelOrder().split(",");
+            java.util.Set<String> repelOrderSet = new java.util.HashSet<>(Arrays.asList(repelOrders));
+
+            for (MzChargeDetail mzChargeDetail : mzChargeDetailList) {
+                String chargeItemCode = mzChargeDetail.getChargeItemCode();
+                if (repelOrderSet.contains(chargeItemCode)) {
+                    throw new MzException("当收取急诊监护费时,不能收急诊诊察费、门急诊留观床位费、及所有项目名称带护理两字的护理费用!");
+                }
+            }
+        }
+
         //计算处方总金额是否为0
         Map<String, Object> tempPrescription = getMzChargeDetailService().getAmountForTempPrescription(mzPrescriptionVo);
         BigDecimal totalFee = (BigDecimal) tempPrescription.get("amount");