|
|
@@ -3,7 +3,6 @@ package cn.hnthyy.thmz.service.impl.his.mz;
|
|
|
import cn.hnthyy.thmz.Utils.CloneUtil;
|
|
|
import cn.hnthyy.thmz.Utils.DateUtil;
|
|
|
import cn.hnthyy.thmz.Utils.JsonUtil;
|
|
|
-import cn.hnthyy.thmz.Utils.StringUtil;
|
|
|
import cn.hnthyy.thmz.common.Constants;
|
|
|
import cn.hnthyy.thmz.common.SpringUtil;
|
|
|
import cn.hnthyy.thmz.entity.MzException;
|
|
|
@@ -293,7 +292,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
throw new MzException("病人编号和就诊次数不能为空!");
|
|
|
}
|
|
|
List<MzYjReq> mzYjReqs = mzYjReqService.queryNotPayMzYjReq(new MzYjReq(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes()));
|
|
|
- List<MzChargeDetail> mzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), null, PayMarkEnum.NO_CHARGE.code);
|
|
|
+ List<MzChargeDetail> mzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail",mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), null, PayMarkEnum.NO_CHARGE.code);
|
|
|
return getMzChargeDetails(mzChargeDetail, yesNo, receiptNo, mzYjReqs, mzChargeDetailList);
|
|
|
}
|
|
|
|
|
|
@@ -475,7 +474,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
mzChargeDetailMapper.setTempDataReceiptNo(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), receiptNo);
|
|
|
mzChargeDetailMapper.updateMzChargeDetailFull(mzChargeDetail);
|
|
|
//入库收费明细数据结束
|
|
|
- List<MzChargeDetail> mzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), null, PayMarkEnum.NO_CHARGE.code);
|
|
|
+ List<MzChargeDetail> mzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail",mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), null, PayMarkEnum.NO_CHARGE.code);
|
|
|
//所有应收费用的明细 将所有费用按照类型归类
|
|
|
Map<String, BigDecimal> feeMap = new HashMap<>();
|
|
|
//实际应付金额
|
|
|
@@ -949,7 +948,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
tempMap.put("cyJssm", mzChargeDetail.getCyJssm() != null ? mzChargeDetail.getCyJssm() : "");
|
|
|
SupplyTypeEnum supplyTypeEnum = SupplyTypeEnum.getSupplyTypeByCode(mzChargeDetail.getCyDj());
|
|
|
tempMap.put("cyDj", supplyTypeEnum != null ? supplyTypeEnum.name : "");
|
|
|
- CyFysmEnum cyFysmEnum = CyFysmEnum.geteCyFysmByCode(mzChargeDetail.getCyFysm().toString());
|
|
|
+ CyFysmEnum cyFysmEnum = CyFysmEnum.geteCyFysmByCode(mzChargeDetail.getCyFysm()==null?null:mzChargeDetail.getCyFysm().toString());
|
|
|
tempMap.put("cyFysm", cyFysmEnum != null ? cyFysmEnum.name : "");
|
|
|
tempMap.put("detail", new ArrayList<>());
|
|
|
zyPrescription.add(tempMap);
|
|
|
@@ -1084,8 +1083,11 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
getIndex(zyPrescription, sbd, 1);
|
|
|
}
|
|
|
if(zlPrescription.size()>0){
|
|
|
- sbd.append("医技与诊疗:");
|
|
|
- getIndex(zlPrescription, sbd, 0);
|
|
|
+ List<String> detail = (List<String>) zlPrescription.get(0).get("detail");
|
|
|
+ if(detail!=null && detail.size()>0){
|
|
|
+ sbd.append("医技与诊疗:");
|
|
|
+ getIndex(zlPrescription, sbd, 0);
|
|
|
+ }
|
|
|
}
|
|
|
mzPrescriptionVo.getMzBlRecord().setEmrProcess(sbd.toString());
|
|
|
}
|
|
|
@@ -1685,22 +1687,56 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
//只需要构造病历信息,不需要设置用药和诊疗信息
|
|
|
return mzPrescriptionVo;
|
|
|
}
|
|
|
- List<MzChargeDetail> mzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId(patientId, times, null, payMark);
|
|
|
- List<MzChargeDetail> removeList = null;
|
|
|
- for (MzChargeDetail mzChargeDetail : mzChargeDetailList) {
|
|
|
- if (PayMarkEnum.CHARGED.code.equals(payMark)) {
|
|
|
- //对于已经收费的药品记录查询,只需要查询医生开立的药品,给要方式等记录需要过滤
|
|
|
- if (removeList == null) {
|
|
|
- removeList = new ArrayList<>();
|
|
|
+ List<MzChargeDetail> mzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail",patientId, times, null, payMark);
|
|
|
+ if(PayMarkEnum.CHARGED.code.equals(payMark)){
|
|
|
+ List<MzChargeDetail> hisMzChargeDetailList = mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail_b",patientId, times, null, payMark);
|
|
|
+ Set<String> temSet = new HashSet<>();
|
|
|
+ StringBuilder sbd = new StringBuilder();
|
|
|
+ if(mzChargeDetailList!=null && mzChargeDetailList.size()>0){
|
|
|
+ for(MzChargeDetail mzChargeDetail : mzChargeDetailList){
|
|
|
+ sbd.setLength(0);
|
|
|
+ temSet.add(sbd.append(mzChargeDetail.getPatientId()).append("_").append(mzChargeDetail.getTimes()).append("_").append(mzChargeDetail.getReceiptNo()).append("_").append(mzChargeDetail.getItemNo()).append("_").append(mzChargeDetail.getChargeItemCode()).toString());
|
|
|
}
|
|
|
- if (YesNoEnum.YES.code != (mzChargeDetail.getGroupId())) {
|
|
|
- removeList.add(mzChargeDetail);
|
|
|
+ }
|
|
|
+ if(hisMzChargeDetailList!=null && hisMzChargeDetailList.size()>0){
|
|
|
+ for(MzChargeDetail mzChargeDetail : hisMzChargeDetailList){
|
|
|
+ if(temSet.contains(sbd.append(mzChargeDetail.getPatientId()).append("_").append(mzChargeDetail.getTimes()).append("_").append(mzChargeDetail.getReceiptNo()).append("_").append(mzChargeDetail.getItemNo()).append("_").append(mzChargeDetail.getChargeItemCode()).toString())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ mzChargeDetailList.add(mzChargeDetail);
|
|
|
}
|
|
|
}
|
|
|
- if ("2".equals(mzChargeDetail.getJzFlag())) {
|
|
|
- mzChargeDetail.setGroupNo("111");
|
|
|
- } else if ("3".equals(mzChargeDetail.getJzFlag())) {
|
|
|
- mzChargeDetail.setGroupNo("131");
|
|
|
+ }
|
|
|
+ List<MzChargeDetail> removeList = null;
|
|
|
+ if(mzChargeDetailList!=null && mzChargeDetailList.size()>0){
|
|
|
+ //麻、精一
|
|
|
+ List<MzZdYpYsh> mjyList = mzZdYpYshMapper.selectMjyByCommonParams(null, null, null, null);
|
|
|
+ Set<String> mjySet = null;
|
|
|
+ if (mjyList != null) {
|
|
|
+ mjySet = mjyList.stream().map(m -> m.getCode()).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
+ //精二
|
|
|
+ List<MzZdYpYsh> jeList = mzZdYpYshMapper.selectJeByCommonParams(null, null, null, null);
|
|
|
+ Set<String> jeSet = null;
|
|
|
+ if (jeList != null) {
|
|
|
+ jeSet = jeList.stream().map(m -> m.getCode()).collect(Collectors.toSet());
|
|
|
+ }
|
|
|
+ for (MzChargeDetail mzChargeDetail : mzChargeDetailList) {
|
|
|
+ if (PayMarkEnum.CHARGED.code.equals(payMark)) {
|
|
|
+ //对于已经收费的药品记录查询,只需要查询医生开立的药品,给要方式等记录需要过滤
|
|
|
+ if (removeList == null) {
|
|
|
+ removeList = new ArrayList<>();
|
|
|
+ }
|
|
|
+ if ((Constants.YJ_GROUP_NO.equals(mzChargeDetail.getGroupNo()) && !(mzChargeDetail.getReqNo()==null || Integer.valueOf(0).equals(mzChargeDetail.getReqNo()))) || Constants.SSWRF.equals(mzChargeDetail.getBillItemCode())) {
|
|
|
+ //医技收费 和四舍五入的目录移除
|
|
|
+ removeList.add(mzChargeDetail);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (mjySet.contains(mzChargeDetail.getChargeItemCode())) {
|
|
|
+ mzChargeDetail.setGroupNo("111");
|
|
|
+ } else if (jeSet.contains(mzChargeDetail.getChargeItemCode())) {
|
|
|
+ mzChargeDetail.setGroupNo("131");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (PayMarkEnum.CHARGED.code.equals(payMark) && removeList != null) {
|
|
|
@@ -1964,7 +2000,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
|
|
|
@Override
|
|
|
public List<MzChargeDetail> queryChargeDetail(MzChargeDetail mzChargeDetail) {
|
|
|
- return mzChargeDetailMapper.selectMzChargeDetailByPatientId(mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo(), mzChargeDetail.getPayMark());
|
|
|
+ return mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail",mzChargeDetail.getPatientId(), mzChargeDetail.getTimes(), mzChargeDetail.getReceiptNo(), mzChargeDetail.getPayMark());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -2005,7 +2041,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
throw new MzException("退费失败,特门收费必须全退!");
|
|
|
}
|
|
|
List<String> chargeItemCodeList = mzChargeDetails.stream().filter(u -> StringUtils.isNotBlank(u.getChargeItemCode())).map(u -> u.getChargeItemCode()).collect(Collectors.toList());
|
|
|
- List<MzChargeDetail> oriMzChargeDetails = mzChargeDetailMapper.selectMzChargeDetailByPatientId(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo(), PayMarkEnum.CHARGED.code);
|
|
|
+ List<MzChargeDetail> oriMzChargeDetails = mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail",mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo(), PayMarkEnum.CHARGED.code);
|
|
|
Date now = new Date();
|
|
|
List<MzChargeDetail> tcMzChargeDetails = new ArrayList<>();
|
|
|
List<MzChargeDetail> removeMzChargeDetails = new ArrayList<>();
|
|
|
@@ -2429,7 +2465,7 @@ public class MzChargeDetailServiceImpl implements MzChargeDetailService {
|
|
|
if (chargeItemCodeList == null || chargeItemCodeList.size() == 0) {
|
|
|
throw new MzException("没有选择需要退费的收费明细,无法退费");
|
|
|
}
|
|
|
- List<MzChargeDetail> mzChargeDetails = mzChargeDetailMapper.selectMzChargeDetailByPatientId(mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo(), PayMarkEnum.CHARGED.code);
|
|
|
+ List<MzChargeDetail> mzChargeDetails = mzChargeDetailMapper.selectMzChargeDetailByPatientId("mz_charge_detail",mzDepositFileVo.getPatientId(), mzDepositFileVo.getTimes(), mzDepositFileVo.getReceiptNo(), PayMarkEnum.CHARGED.code);
|
|
|
if (mzChargeDetails == null || mzChargeDetails.size() == 0) {
|
|
|
throw new MzException("当前病人无可退费用,无法退费");
|
|
|
}
|