LIJU 2 周之前
父節點
當前提交
f02b3a0a4d

+ 96 - 22
src/main/java/cn/hnthyy/thmz/controller/mz/MzPharmacyController.java

@@ -8,6 +8,7 @@ import cn.hnthyy.thmz.entity.his.mz.Employee;
 import cn.hnthyy.thmz.entity.his.mz.MzBlRecord;
 import cn.hnthyy.thmz.entity.his.mz.MzChargeDetail;
 import cn.hnthyy.thmz.entity.his.mz.MzDrugTracCodg;
+import cn.hnthyy.thmz.entity.his.mz.MzOrderDetail;
 import cn.hnthyy.thmz.entity.his.mz.MzOrderFrequency;
 import cn.hnthyy.thmz.entity.his.mz.MzPatientMi;
 import cn.hnthyy.thmz.entity.his.mz.MzVisitTable;
@@ -28,6 +29,7 @@ import cn.hnthyy.thmz.service.his.mz.EmployeeService;
 import cn.hnthyy.thmz.service.his.mz.MzBlRecordService;
 import cn.hnthyy.thmz.service.his.mz.MzChargeDetailService;
 import cn.hnthyy.thmz.service.his.mz.MzDrugTracCodgService;
+import cn.hnthyy.thmz.service.his.mz.MzOrderDetailService;
 import cn.hnthyy.thmz.service.his.mz.MzOrderFrequencyService;
 import cn.hnthyy.thmz.service.his.mz.MzPatientMiService;
 import cn.hnthyy.thmz.service.his.mz.MzPharmacyService;
@@ -131,6 +133,9 @@ public class MzPharmacyController {
     
     @Autowired
     private YbController ybController;
+    
+    @Autowired
+    private MzOrderDetailService mzOrderDetailService;
     /**
      * 查询处方信息
      *
@@ -480,14 +485,30 @@ public class MzPharmacyController {
                             }
                         }
                         
-                        // 获取医院审批标志(从mz_charge_detail表获取)
-                        if (mzChargeDetail.getHospApprFlag() != null) {
-                            // 映射医院审批标志到就诊结算类型
-                            if (mzChargeDetail.getHospApprFlag() == 0) {
-                                mzChargeDetail.setMdtrtSetlType(1); // 医保结算
-                            } else if (mzChargeDetail.getHospApprFlag() == 2) {
-                                mzChargeDetail.setMdtrtSetlType(2); // 自费结算
+                        // 根据处方类型设置就诊结算类型
+                        MzOrderDetail mzOrderDetail = mzOrderDetailService.queryByEntity(MzOrderDetail.builder()
+                                .patientId(mzChargeDetail.getPatientId())
+                                .times(mzChargeDetail.getTimes())
+                                .receiptNo(mzChargeDetail.getReceiptNo())
+                                .build()).stream().findFirst().orElse(null);
+                        
+                        if (mzOrderDetail != null) {
+                            // 根据处方类型设置就诊结算类型
+                            if (mzOrderDetail.getOrderType() != null) {
+                                if (mzOrderDetail.getOrderType() == 2) {
+                                    // 门诊统筹 - 医保结算
+                                    mzChargeDetail.setMdtrtSetlType(1);
+                                } else {
+                                    // 普通处方、特门处方、GCP实验等 - 自费结算
+                                    mzChargeDetail.setMdtrtSetlType(2);
+                                }
+                            } else {
+                                // 默认自费结算
+                                mzChargeDetail.setMdtrtSetlType(2);
                             }
+                        } else {
+                            // 查询不到处方类型信息,默认自费结算
+                            mzChargeDetail.setMdtrtSetlType(2);
                         }
                         // 查询今日排队发药状态
                         YpPdQueue pdQueue = ypPdQueueService.selectYpPdQueueByPatientId(mzChargeDetail.getPatientId());
@@ -557,14 +578,30 @@ public class MzPharmacyController {
                         }
                     }
                     
-                    // 获取医院审批标志(从mz_charge_detail表获取)
-                    if (chargeDetailInfoVo.getHospApprFlag() != null) {
-                        // 映射医院审批标志到就诊结算类型
-                        if (chargeDetailInfoVo.getHospApprFlag() == 0) {
-                            chargeDetailInfoVo.setMdtrtSetlType(1); // 医保结算
-                        } else if (chargeDetailInfoVo.getHospApprFlag() == 2) {
-                            chargeDetailInfoVo.setMdtrtSetlType(2); // 自费结算
+                    // 根据处方类型设置就诊结算类型
+                    MzOrderDetail mzOrderDetail = mzOrderDetailService.queryByEntity(MzOrderDetail.builder()
+                            .patientId(chargeDetailInfoVo.getPatientId())
+                            .times(chargeDetailInfoVo.getTimes())
+                            .receiptNo(chargeDetailInfoVo.getReceiptNo())
+                            .build()).stream().findFirst().orElse(null);
+                    
+                    if (mzOrderDetail != null) {
+                        // 根据处方类型设置就诊结算类型
+                        if (mzOrderDetail.getOrderType() != null) {
+                            if (mzOrderDetail.getOrderType() == 2) {
+                                // 门诊统筹 - 医保结算
+                                chargeDetailInfoVo.setMdtrtSetlType(1);
+                            } else {
+                                // 普通处方、特门处方、GCP实验等 - 自费结算
+                                chargeDetailInfoVo.setMdtrtSetlType(2);
+                            }
+                        } else {
+                            // 默认自费结算
+                            chargeDetailInfoVo.setMdtrtSetlType(2);
                         }
+                    } else {
+                        // 查询不到处方类型信息,默认自费结算
+                        chargeDetailInfoVo.setMdtrtSetlType(2);
                     }
 
                     // 查询今日排队发药状态
@@ -726,14 +763,30 @@ public class MzPharmacyController {
                     }
                 }
                 
-                // 获取医院审批标志(从mz_charge_detail表获取)
-                if (mzSendMedicineVo.getHospApprFlag() != null) {
-                    // 映射医院审批标志到就诊结算类型
-                    if (mzSendMedicineVo.getHospApprFlag() == 0) {
-                        mzSendMedicineVo.setMdtrtSetlType(1); // 医保结算
-                    } else if (mzSendMedicineVo.getHospApprFlag() == 2) {
-                        mzSendMedicineVo.setMdtrtSetlType(2); // 自费结算
+                // 根据处方类型设置就诊结算类型
+                MzOrderDetail mzOrderDetail = mzOrderDetailService.queryByEntity(MzOrderDetail.builder()
+                        .patientId(mzSendMedicineVo.getPatientId())
+                        .times(mzSendMedicineVo.getTimes())
+                        .receiptNo(mzSendMedicineVo.getReceiptNo())
+                        .build()).stream().findFirst().orElse(null);
+                
+                if (mzOrderDetail != null) {
+                    // 根据处方类型设置就诊结算类型
+                    if (mzOrderDetail.getOrderType() != null) {
+                        if (mzOrderDetail.getOrderType() == 2) {
+                            // 门诊统筹 - 医保结算
+                            mzSendMedicineVo.setMdtrtSetlType(1);
+                        } else {
+                            // 普通处方、特门处方、GCP实验等 - 自费结算
+                            mzSendMedicineVo.setMdtrtSetlType(2);
+                        }
+                    } else {
+                        // 默认自费结算
+                        mzSendMedicineVo.setMdtrtSetlType(2);
                     }
+                } else {
+                    // 查询不到处方类型信息,默认自费结算
+                    mzSendMedicineVo.setMdtrtSetlType(2);
                 }
             }
             resultMap.put("code", 0);
@@ -2098,7 +2151,28 @@ public class MzPharmacyController {
                     selinfoSold.setPharName(getCurrentUserName(params));
                     selinfoSold.setPharPracCertNo(getPharPracCertNo(params));
                     selinfoSold.setSelRetnOpterName(getCurrentUserName(params));
-                    selinfoSold.setMdtrtSetlType(item.get("mdtrtSetlType") != null ? (String) item.get("mdtrtSetlType") : "2");
+                    // 根据处方类型设置就诊结算类型
+                    String patientId = (String) item.get("patient_id");
+                    Integer times = timesObj instanceof Short ? ((Short) timesObj).intValue() : (Integer) timesObj;
+                    Integer receiptNo = itemReceiptNoObj instanceof Short ? ((Short) itemReceiptNoObj).intValue() : (Integer) itemReceiptNoObj;
+                    
+                    MzOrderDetail mzOrderDetail = mzOrderDetailService.queryByEntity(MzOrderDetail.builder()
+                            .patientId(patientId)
+                            .times(times)
+                            .receiptNo(receiptNo)
+                            .build()).stream().findFirst().orElse(null);
+                    
+                    String mdtrtSetlType = "2"; // 默认自费结算
+                    if (mzOrderDetail != null && mzOrderDetail.getOrderType() != null) {
+                        if (mzOrderDetail.getOrderType() == 2) {
+                            // 门诊统筹 - 医保结算
+                            mdtrtSetlType = "1";
+                        } else {
+                            // 普通处方、特门处方、GCP实验等 - 自费结算
+                            mdtrtSetlType = "2";
+                        }
+                    }
+                    selinfoSold.setMdtrtSetlType(mdtrtSetlType);
                     selinfoSold.setRxFlag(item.get("rx_flag") != null ? (String) item.get("rx_flag") : "0");
                     //selinfoSold.setTrdnFlag(item.get("cl_flag") != null ? (String) item.get("cl_flag") : "0");
                     // 基于serial字段正确判断拆零标志

+ 2 - 1
src/main/resources/static/js/mz/west_pharmacy_send.js

@@ -3342,7 +3342,8 @@ function callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name,
             selRetnOpterName: currentUserName,
             
             // 就诊结算类型(1-医保结算 2-自费结算)
-            mdtrtSetlType: item.mdtrtSetlType || '2',
+            // 根据处方类型判断:普通处方(1)、特门处方(3)、GCP实验(4)为自费,门诊统筹(2)为医保
+            mdtrtSetlType: (item.mdtrtSetlType && item.mdtrtSetlType === 1) ? '1' : '2',
             
             // 处方药标志
             // rxFlag: item.rxFlag || '1',