yeguodong před 2 týdny
rodič
revize
c379542d0a

+ 3 - 0
src/main/java/thyyxxk/simzfeeoprnsystm/dao/SiMzDao.java

@@ -41,6 +41,9 @@ public interface SiMzDao {
             "from t_si_pat_info a, mz_visit_table b where a.pat_no=#{patNo} and a.times=#{times} " +
             "and a.pat_no=b.patient_id and a.times=b.times")
     Regstrtn selectRegstrtn(String patNo, int times);
+
+    @Select("select yb_name as ybName from a_employee_mi where code=#{code}")
+    String getYbName(String code);
     
     @Select("select psn_no, mdtrtCertType='02', " +
             "certno as mdtrtCertNo,psn_cert_type,certno,psn_name,mdtrt_id, " +

+ 39 - 0
src/main/java/thyyxxk/simzfeeoprnsystm/service/SiMzFeeService.java

@@ -73,6 +73,18 @@ public class SiMzFeeService {
             regstrtn = mzDao.selectRegstrtn(p.getPatNo(), p.getTimes());
         }
 
+        // 当医生有医保姓名时,优先使用医保姓名
+        try {
+            String ybName = mzDao.getYbName(p.getDoctorCode());
+            if(StringUtil.isNotEmpty(ybName) && regstrtn != null) {
+                log.info("门诊挂号医生{},使用医保姓名:{}", p.getDoctorName(), ybName);
+                regstrtn.setDrName(ybName);
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            log.error("获取医保姓名出错:{}", p.getDoctorCode());
+        }
+
         if (null == regstrtn) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR,
                     "mz_visit_table或t_si_pat_info 信息为空,请联系医生重开处方。");
@@ -230,6 +242,19 @@ public class SiMzFeeService {
                 base.setDiseDorNo(dor.getCode());
                 base.setDiseDorName(dor.getName());
             }
+
+            // 当有医保姓名时,优先使用医保姓名
+            try {
+                String ybName = mzDao.getYbName(base.getDiseDorNo());
+                if(StringUtil.isNotEmpty(ybName)){
+                    log.info("门诊就诊信息上传医生{},使用医保姓名:{}", base.getDiseDorName(), ybName);
+                    base.setDiseDorName(ybName);
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                log.error("获取医保姓名出错:{}", base.getDiseDorNo());
+            }
+
             String[] icds = icdCodeNew.split(",");
             for (int i = 0; i < icds.length; i++) {
                 String icd = icds[i];
@@ -244,6 +269,7 @@ public class SiMzFeeService {
                 diag.setDiagTime(base.getDiagTime());
                 diag.setDiseDorNo(base.getDiseDorNo());
                 diag.setDiseDorName(base.getDiseDorName());
+
                 diagnosesList.add(diag);
             }
         } else {
@@ -317,9 +343,22 @@ public class SiMzFeeService {
             item.setRxCircFlag(YesOrNo.NO.getCodeStr());
             item.setBilgDeptCodg(mzVisit.getVisitDeptCode());
             item.setBilgDeptName(mzVisit.getVisitDeptName());
+
             if (siPatInfo.getMedType().equals("51")) {
                 item.setMatnFeeFlag("1");
             }
+
+            // 当医生有医保姓名时,优先使用医保姓名
+            try {
+                String ybName = mzDao.getYbName(item.getBilgDrCodg());
+                if(StringUtil.isNotEmpty(ybName)) {
+                    log.info("门诊费用上传医生{},使用医保姓名:{}", item.getBilgDrName(), ybName);
+                    item.setBilgDrName(ybName);
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage());
+                log.error("获取医保姓名出错:{}", item.getBilgDrCodg());
+            }
         });
         JSONObject input = exec.makeTradeHeaderWithInsureArea(SiFunction.UPLOAD_OUTPATIENT_FEE_DETAILS,
                 siPatInfo.getInsuplcAdmdvs(), p.getStaffId());