| 
					
				 | 
			
			
				@@ -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; 
			 |