|  | @@ -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()));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 |