Browse Source

上传优化

lihong 2 years ago
parent
commit
e4b473ce90

+ 11 - 0
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/UpIdCollectionDao.java

@@ -1080,4 +1080,15 @@ public interface UpIdCollectionDao extends BaseMapper<SetlinfoUpld> {
             " select create_name, create_code, create_time, remark, audit_flag, audit_type, pat_no, times,#{delCode},#{delName}\n" +
             " from t_setl_audit_log where pat_no = #{patNo} and times = #{times}")
     void insertAuditLogsDel(@Param("patNo") String patNo, @Param("times") Integer times, @Param("delCode") String delCode, @Param("delName") String delName);
+
+    @Select("    select   duty_nurse from      t_case_frontsheet_main where bah=#{patNo}  and admiss_times = #{times}\n" +
+            "    union all\n" +
+            "   select  job_nurse duty_nurse from      batj_ba2 where bah=#{patNo} and zycs = #{times}\n" +
+            "   union all\n" +
+            "    select  job_nurse duty_nurse from      zy_inactpatient where inpatient_no=#{patNo} and admiss_times  = #{times}\n" +
+            "   union all\n" +
+            "   select  quality_control_nurse duty_nurse from      t_case_frontsheet_main where bah=#{patNo} and admiss_times = #{times}\n" +
+            "   union all\n" +
+            "   select  zkhs duty_nurse from      batj_ba2 where bah=#{patNo} and zycs = #{times}")
+    List<String> getRespNursCode(@Param("patNo") String patNo, @Param("times") Integer times);
 }

+ 73 - 5
src/main/java/thyyxxk/webserver/service/medicalinsurance/SetlListUpldService.java

@@ -3,6 +3,7 @@ package thyyxxk.webserver.service.medicalinsurance;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.copier.CopyOptions;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.ReflectUtil;
@@ -207,6 +208,33 @@ public class SetlListUpldService {
         return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("医保中心报错的:【%s】 ", errMsg));
     }
 
+    /**
+     * @description: 给责任护士医保码 和名称  补偿机制
+     * @author: lihong
+     * @date: 2023/3/22 15:22
+     * @param: patNo
+     * @param: times
+     * @return: java.lang.String[]
+     **/
+    private void setRespNurs(SetlinfoUpld setlinfoUpld,String patNo,Integer times){
+        List<String> respNursCodeList = dao.getRespNursCode(patNo, times);
+        if (CollUtil.isNotEmpty(respNursCodeList)) {
+            for (int i = 0; i < respNursCodeList.size(); i++) {
+                String ybCode = getYbCode(respNursCodeList.get(i));
+                if (i == (respNursCodeList.size() - 1) && StringUtil.notBlank(ybCode)) {
+                    setlinfoUpld.setRespNursCode(ybCode);
+                    setlinfoUpld.setRespNursName(redisLikeService.getEmployeeName(respNursCodeList.get(i)));
+                    return ;
+                }
+                if (StringUtil.notBlank(ybCode) && ybCode.startsWith("N")) {
+                    setlinfoUpld.setRespNursCode(ybCode);
+                    setlinfoUpld.setRespNursName(redisLikeService.getEmployeeName(respNursCodeList.get(i)));
+                    return ;
+                }
+            }
+        }
+    }
+
 
     public void dealDrgGroup(String patNo, Integer times,Integer ledgerSn, SetlinfoUpld setlinfo) {
         SiLog siLog = null;
@@ -372,6 +400,9 @@ public class SetlListUpldService {
         SetlinfoUpld setlinfoUpld = dao.setlinfo1(patNo, times, ledgerSn);
         dealSetlinfoUpld(patNo, times, setlinfoUpld);
         EntityCopy.Copy(dao.setlinfo2(patNo, times), setlinfoUpld);
+        if(StringUtil.isBlank(setlinfoUpld.getRespNursCode())){
+            setRespNurs(setlinfoUpld,patNo,times);
+        }
         EntityCopy.Copy(dao.setlinfo3(String.format("inpatient_no ='%s'", patNo)), setlinfoUpld);
         EntityCopy.Copy(dao.setlinfo4(patNo, times), setlinfoUpld);
         EntityCopy.Copy(dao.setlinfo5(patNo, times, ledgerSn), setlinfoUpld);
@@ -494,8 +525,23 @@ public class SetlListUpldService {
             if (StringUtil.isBlank(setlinfoUpld.getEmpTel())) {
                 setlinfoUpld.setEmpTel(setlinfoUpld.getConerTel());
             }
+            if(StringUtil.isBlank(setlinfoUpld.getPoscode())){
+                setlinfoUpld.setPoscode("410000");
+            }
+        }
+        //性别
+        try {
+            setlinfoUpld.setGend(IdcardUtil.getGenderByIdCard(setlinfoUpld.getCertno()) == 1 ? "1" : "2");
+        }catch (Exception e){
+
         }
 
+
+        //再31天再住院目的
+        if("-".equals(setlinfoUpld.getDaysRinpPup31())){
+            setlinfoUpld.setDaysRinpPup31("");
+            setlinfoUpld.setDaysRinpFlag31("1");
+        }
         // 呼吸机使用时长
         Integer ventUsedDura = dao.ventilatorUseTime(patNo, times);
         if (ventUsedDura != null) {
@@ -552,11 +598,11 @@ public class SetlListUpldService {
 
     public void dealSetlinfoUpld(String patNo, Integer times, SetlinfoUpld setlinfoUpld) {
         // 患者基本信息 先判断签收表是否有数据
-        Integer existCaseFrontsheetMain = dao.existCaseFrontsheetMain(patNo, times);
-        if(existCaseFrontsheetMain ==null){
+        //Integer existCaseFrontsheetMain = dao.existCaseFrontsheetMain(patNo, times);
+        //if(existCaseFrontsheetMain ==null){
         //    这里使用病案首页数据
             covertCaseFrontsheetMain2SetlinfoUpld(setlinfoUpld,patNo,times);
-        }
+        //}
     }
 
 
@@ -583,7 +629,7 @@ public class SetlListUpldService {
             setlinfoUpld.setEmpName(caseFrontsheetMain.getUnitName());
             setlinfoUpld.setEmpAddr(caseFrontsheetMain.getUnitPlace());
             setlinfoUpld.setEmpTel(caseFrontsheetMain.getUnitPhone());
-            setlinfoUpld.setPoscode(caseFrontsheetMain.getAddrZipCode());
+            setlinfoUpld.setPoscode("310".equals(caseFrontsheetMain.getInsutype()) && StringUtil.isBlank(caseFrontsheetMain.getUnitZipCode()) ? "410000" : caseFrontsheetMain.getUnitZipCode());
             setlinfoUpld.setNaty(redisLikeService.getWjwNation(caseFrontsheetMain.getNation()));
             setlinfoUpld.setConerName(caseFrontsheetMain.getContactName());
             setlinfoUpld.setBrdy(DateUtil.formatDatetime(caseFrontsheetMain.getBirthDate(),"yyyy-MM-dd"));
@@ -1637,6 +1683,7 @@ public class SetlListUpldService {
             }
         }
         log.info("手术信息:{}", JSON.toJSONString(param.getBatjBa4()));
+        SetlinfoUpld setlinfoUpld = dao.setlinfo5(param.getInpatientNo(), param.getAdmissTimes(), param.getLedgerSn());
         for (BatjBa4 item : param.getBatjBa4()) {
             if (item.getSsxh() == null || item.getSsxh() <= 0) {
                 return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "手术排序不能为空,且最小值为 1。");
@@ -1646,6 +1693,10 @@ public class SetlListUpldService {
             if (!item.getNewData()) {
                 if (item.getSsrq() == null) {
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,手术日期不能为空", item.getSsmc()));
+                }else {
+                    if(item.getSsrq() != null && !cn.hutool.core.date.DateUtil.isIn(item.getSsrq(),setlinfoUpld.getAdmTime(),setlinfoUpld.getDscgTime())){
+                        return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,手术日期应在出入院时间范围内", item.getSsmc()));
+                    }
                 }
                 if (StringUtil.isBlank(item.getSsys())) {
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,手术医生不能为空", item.getSsmc()));
@@ -1688,6 +1739,22 @@ public class SetlListUpldService {
                 if (ListUtil.notBlank(a)) {
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,%s", item.getSsmc(), a));
                 }
+                if(item.getOpStartDate() != null && !cn.hutool.core.date.DateUtil.isIn(item.getOpStartDate(),setlinfoUpld.getAdmTime(),setlinfoUpld.getDscgTime())){
+                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,手术开始时间应在出入院时间范围内", item.getSsmc()));
+                }
+
+                if(item.getOpEndDate() != null && !cn.hutool.core.date.DateUtil.isIn(item.getOpEndDate(),setlinfoUpld.getAdmTime(),setlinfoUpld.getDscgTime())){
+                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,手术结束时间应在出入院时间范围内", item.getSsmc()));
+                }
+
+                if(item.getAnstStartDate() != null && !cn.hutool.core.date.DateUtil.isIn(item.getAnstStartDate(),setlinfoUpld.getAdmTime(),setlinfoUpld.getDscgTime())){
+                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,麻醉开始时间应在出入院时间范围内", item.getSsmc()));
+                }
+
+                if(item.getAnstEndDate() != null && !cn.hutool.core.date.DateUtil.isIn(item.getAnstEndDate(),setlinfoUpld.getAdmTime(),setlinfoUpld.getDscgTime())){
+                    return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, String.format("手术:【%s】,麻醉结束时间应在出入院时间范围内", item.getSsmc()));
+                }
+
                 PublicServer.surgeryTimeLimit(item.getSsmc(), item.getOpStartDate(), item.getOpEndDate(), item.getAnstStartDate(), item.getAnstEndDate());
             }
         }
@@ -2273,7 +2340,8 @@ public class SetlListUpldService {
             drgQualityParam.put("oprt_info_list", new ArrayList<>(1));
         }
         log.info("质控测算传参:{}", JSON.toJSONString(drgQualityParam));
-        JSONObject result =  drgWebServices.drgQuality(JSON.parseObject(JSON.toJSONString(drgQualityParam)));
+        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(drgQualityParam));
+        JSONObject result =  drgWebServices.drgQuality(jsonObject);
         resultMap.put("result",result);
         resultMap.put("param",drgQualityParam);
         return resultMap;