| 
					
				 | 
			
			
				@@ -21,6 +21,7 @@ import thyyxxk.webserver.dao.his.inpatient.casefrontsheet.SheetCreatedDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.ResultVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.chronicDisease.CrmPatientMi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.chronicDisease.CrmPatientTzxx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.entity.chronicDisease.CrmPatientVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.chronicDisease.CrmVisitRecordVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.dictionary.CodeName; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -426,11 +427,7 @@ public class ChronicDiseaseService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Optional<CodeName> w = way.stream().filter(codeName -> codeName.getCode().equals(mi.getPType())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         w.ifPresent(codeName -> mi.setPtName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<CodeName> disease = dao.getCrmClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String[] cd = mi.getChronicDiseaseType().split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for(String diseaseType : cd){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Optional<CodeName> c = disease.stream().filter(codeName -> codeName.getCode().equals(diseaseType)).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            c.ifPresent(codeName -> mi.setChronicDiseaseName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        callDiseaseTypeName(disease, mi); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return ResultVoUtil.success(mi); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -509,4 +506,95 @@ public class ChronicDiseaseService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return ResultVoUtil.success(resultMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Description 根据关键字查询慢病首次登记信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Author hsh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param vo 查询条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return CrmPatientMi 慢病首次登记信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Date 2024/1/10 16:19 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public ResultVo<List<CrmPatientMi>> selectChronicDisease(CrmPatientVo vo){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<CrmPatientMi> miList = cpmDao.selectChronicDisease(vo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        callCrmPatientMiFormat(miList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return ResultVoUtil.success(miList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Description 格式化慢病首次登记信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Author hsh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param miList 慢病首次登记信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @Date 2024/1/10 16:20 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void callCrmPatientMiFormat(List<CrmPatientMi> miList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(null != miList && !miList.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CodeName> sex = createdDao.getSexCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CodeName> way = dao.getAdmissWay(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CodeName> disease = dao.getCrmClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 省 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CodeName> pr = dao.getProvince(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 市 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CodeName> ct = dao.getCity(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 区 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<CodeName> ar = dao.getArea(""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(CrmPatientMi mi : miList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Optional<CodeName> s = sex.stream().filter(codeName -> codeName.getCode().equals(mi.getSex())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                s.ifPresent(codeName -> mi.setSexValue(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Optional<CodeName> w = way.stream().filter(codeName -> codeName.getCode().equals(mi.getPType())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                w.ifPresent(codeName -> mi.setPtName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Optional<CodeName> p = pr.stream().filter(codeName -> codeName.getCode().equals(mi.getProvinceCode())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                p.ifPresent(codeName -> mi.setProvinceName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Optional<CodeName> c = ct.stream().filter(codeName -> codeName.getCode().equals(mi.getCityCode())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                c.ifPresent(codeName -> mi.setCityName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Optional<CodeName> a = ar.stream().filter(codeName -> codeName.getCode().equals(mi.getAreaCode())).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                a.ifPresent(codeName -> mi.setAreaName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                callDiseaseTypeName(disease, mi); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 时间优化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(StringUtil.notBlank(mi.getLastDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    mi.setLastDate(DateUtil.format(DateUtil.parseDate(mi.getLastDate()), "yyyy-MM-dd")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(StringUtil.notBlank(mi.getBirthDate())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    mi.setBirthDate(DateUtil.format(DateUtil.parseDate(mi.getBirthDate()), "yyyy-MM-dd")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(StringUtil.notBlank(mi.getVisitDate())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    mi.setVisitDate(DateUtil.format(DateUtil.parseDate(mi.getVisitDate()), "yyyy-MM-dd")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 血压拼接 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mi.setBloodPressure((mi.getBloodPressureLow() == null ? "--" : mi.getBloodPressureLow() + "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        + "/" + (mi.getBloodPressureHigh() == null ? "--" : mi.getBloodPressureHigh() + "")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 计算距离下次随访时间天数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(StringUtil.notBlank(mi.getVisitDate())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 判断两个日期相差的天数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     * 最后一个参数isReset: false 表示不包含时分秒的计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     * 比如:2016-02-01 23:59:59和2016-02-02 00:00:00相差一秒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     * 如果isReset为{@code false}相差天数为0。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     * 如果isReset为{@code true}相差天数将被计算为1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    long days = DateUtil.betweenDay(DateUtil.parseDate(mi.getVisitDate()), new Date(), false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(DateUtil.date().before(DateUtil.parseDate(mi.getVisitDate()))){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mi.setDays(days); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        mi.setDays(-days); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 格式化慢病类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void callDiseaseTypeName(List<CodeName> disease, CrmPatientMi mi) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(StringUtil.notBlank(mi.getChronicDiseaseType())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String[] dType = mi.getChronicDiseaseType().split(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(String diseaseType : dType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Optional<CodeName> c = disease.stream().filter(codeName -> codeName.getCode().equals(diseaseType)).findFirst(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                c.ifPresent(codeName -> mi.setChronicDiseaseName(codeName.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |