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