From 0b832311f44ce98714fdbd4d83d520b36a939606 Mon Sep 17 00:00:00 2001 From: "litao@lymsh.com" Date: Thu, 7 Dec 2017 15:06:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=80=E7=B3=96=E8=A1=80=E5=8E=8B=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/common/enums/ErrorPatientEnums.java | 39 ++++- .../com/lyms/platform/common/utils/DateUtil.java | 2 + .../operate/web/controller/RemoteController.java | 8 +- .../platform/operate/web/facade/RemoteFacade.java | 157 ++++++++++++++++----- .../platform/operate/web/facade/TempFacade.java | 6 +- .../web/service/impl/BloodPressureServiceImpl.java | 2 +- .../web/service/impl/BloodSugarServiceImpl.java | 2 +- 7 files changed, 169 insertions(+), 47 deletions(-) diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/ErrorPatientEnums.java b/platform-common/src/main/java/com/lyms/platform/common/enums/ErrorPatientEnums.java index 5d9833d..30215d5 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/enums/ErrorPatientEnums.java +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/ErrorPatientEnums.java @@ -4,5 +4,42 @@ package com.lyms.platform.common.enums; * 健康异常孕妇 */ public enum ErrorPatientEnums { - PATIENT_WEIGHT, TEMP, BLOOD_PRESSURE, BLOOD_SUGAR; + PATIENT_WEIGHT(1, "体重"), TEMP(2, "体温"), BLOOD_PRESSURE(3, "血压"), BLOOD_SUGAR(4, "血糖"); + + private Integer id; + private String name; + + ErrorPatientEnums(Integer id, String name) { + this.id = id; + this.name = name; + } + + public static String getName(Integer id) { + if(id == null) { + return null; + } + ErrorPatientEnums[] values = ErrorPatientEnums.values(); + for (ErrorPatientEnums value : values) { + if (value.getId() == id) { + return value.getName(); + } + } + return null; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java index deab65e..429f6cc 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/DateUtil.java @@ -1407,6 +1407,8 @@ public class DateUtil { System.out.println(" end>> " + getyyyy_MM_dd(map.get("end"))); }*/ + Date yesterday = DateUtil.getYesterday(); + System.out.println(yesterday.toLocaleString()); System.out.println(getBetweenDay(7)); Date date = parseDate("2017-11-30"); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RemoteController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RemoteController.java index 0a92f9b..be30710 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RemoteController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RemoteController.java @@ -6,6 +6,8 @@ import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.result.RespBuilder; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.MessageUtil; import com.lyms.platform.common.utils.PropertiesUtils; @@ -53,9 +55,9 @@ public class RemoteController extends BaseController { public static final String center_statistics_url= PropertiesUtils.getPropertyValue("center_statistics_url"); @ResponseBody - @RequestMapping(value = "/error/fy/list/{operaterId}", method = RequestMethod.GET) - public List> errorYfList(@PathVariable String operaterId) { - return remoteFacade.errorYfList(operaterId); + @RequestMapping(value = "/error/fy/list", method = RequestMethod.GET) + public BaseResponse errorYfList(@RequestParam String operaterId, String parentIds) { + return RespBuilder.buildSuccess(remoteFacade.errorYfList(operaterId, parentIds)); } @RequestMapping(value = "/bookArchive",method = RequestMethod.GET) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RemoteFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RemoteFacade.java index 0675f50..9c5188a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RemoteFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RemoteFacade.java @@ -1,12 +1,11 @@ package com.lyms.platform.operate.web.facade; +import com.lyms.platform.common.enums.BloodSugarEnums; import com.lyms.platform.common.enums.ErrorPatientEnums; import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.operate.web.utils.CollectionUtils; import com.lyms.platform.operate.web.utils.MathUtil; -import com.lyms.platform.pojo.BloodPressure; -import com.lyms.platform.pojo.PatientWeight; -import com.lyms.platform.pojo.Patients; -import com.lyms.platform.pojo.TempModel; +import com.lyms.platform.pojo.*; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -24,51 +23,112 @@ import java.util.*; @Component public class RemoteFacade { + private static final String ID_SEPARATOR = "_"; + @Autowired private MongoTemplate mongoTemplate; - public List> errorYfList(String operaterId) { + public List> errorYfList(String operaterId, String parentIds) { Date yesterday = DateUtil.getYesterday(); List> restList = new ArrayList<>(); + Query pwQuery = Query.query(Criteria.where("operaterId").is(operaterId)).with(new Sort(Sort.Direction.ASC, "created")); + Query bpQuery = Query.query(Criteria.where("operaterId").is(operaterId).and("modified").gt(yesterday)).with(new Sort(Sort.Direction.ASC, "created")); + Query bsQuery = Query.query(Criteria.where("operaterId").is(operaterId).and("modified").gt(yesterday)).with(new Sort(Sort.Direction.ASC, "created")); + Query tempQuery = Query.query(Criteria.where("operaterId").is(operaterId).and("modified").gt(yesterday)).with(new Sort(Sort.Direction.ASC, "created")); + if(StringUtils.isNotEmpty(parentIds)) { + List list = CollectionUtils.asList(parentIds, String.class); + pwQuery.addCriteria(Criteria.where("patientId").in(list)); + bpQuery.addCriteria(Criteria.where("parentId").in(list)); + tempQuery.addCriteria(Criteria.where("parentId").in(list)); + } + + /** 体重未记录修改日期 所以全表扫描 */ + List patientWeights = mongoTemplate.find(pwQuery, PatientWeight.class); + List bloodPressures = mongoTemplate.find(bpQuery, BloodPressure.class); + List bloodSugars = mongoTemplate.find(bsQuery, BloodSugar.class); + List tempModels = mongoTemplate.find(tempQuery, TempModel.class); + + /** 血压 */ + for (BloodPressure bloodPressure : bloodPressures) { + Map temp = new HashMap<>(); + Patients patients = null; + for (Map.Entry> entry : bloodPressure.getInfos().entrySet()) { + if(DateUtil.parseYMD(entry.getKey()).getTime() >= yesterday.getTime()) { + String bpStatus = getBpStatus(entry.getValue().get("ssy").toString(), entry.getValue().get("szy").toString()); + if(StringUtils.isNotEmpty(bpStatus)) { + patients = (patients == null ? mongoTemplate.findById(bloodPressure.getParentId(), Patients.class) : patients); + setTempInfo(bloodPressure.getId() + ID_SEPARATOR + entry.getKey(), temp, patients, + entry.getValue().get("ssy") + "/" + entry.getValue().get("szy") + "mmHg", bpStatus, "(收缩压:90-140 舒张压:60-90)", ErrorPatientEnums.BLOOD_PRESSURE); + } + } + } + if(temp != null) { + restList.add(temp); + } + } - List patientWeights = mongoTemplate.find(Query.query(Criteria.where("operaterId").is(operaterId)).with(new Sort(Sort.Direction.DESC, "created")), PatientWeight.class); - List bloodPressures = mongoTemplate.find(Query.query(Criteria.where("operaterId").is(operaterId)).with(new Sort(Sort.Direction.DESC, "created")), BloodPressure.class); - List tempModels = mongoTemplate.find(Query.query(Criteria.where("operaterId").is(operaterId)).with(new Sort(Sort.Direction.DESC, "created")), TempModel.class); + /** 血糖 */ + Map> bloodSugarCache = new HashMap<>(); + for (BloodSugar bloodSugar : bloodSugars) { + Integer type = bloodSugar.getBloodSugarType(); + Double min = 0D; + Double max = 0D; + if(type == BloodSugarEnums.A.getId()) { + min = 3.3D; + max = 5.6D; + } else if(type == BloodSugarEnums.B.getId() || type == BloodSugarEnums.D.getId() || type == BloodSugarEnums.F.getId() ) { + min = 3.3D; + max = 5.8D; + } else if(type == BloodSugarEnums.I.getId()) { + min = 6.1D; + max = 7.8D; + } else { + min = 4.4D; + max = 6.7D; + } + if(Double.parseDouble(bloodSugar.getBloodSugar()) > max || Double.parseDouble(bloodSugar.getBloodSugar()) < min) { + Map temp = new HashMap<>(); + temp.put("name", BloodSugarEnums.getName(bloodSugar.getBloodSugarType())); + bloodSugarCache.put(bloodSugar.getId(), temp); + setTempInfo(bloodSugar.getId(), temp, mongoTemplate.findById(bloodSugar.getParentId(), Patients.class), bloodSugar.getBloodSugar(), Double.parseDouble(bloodSugar.getBloodSugar()) > max ? "高血糖" : "低血糖", + "(" + min +"-" + max + ")", ErrorPatientEnums.BLOOD_SUGAR); + } + } + restList.addAll(bloodSugarCache.values()); + /** 体重 */ for (PatientWeight patientWeight : patientWeights) { - Patients patients = mongoTemplate.findById(patientWeight.getPatientId(), Patients.class); + Patients patients = null; String bmi = patientWeight.getBmi(); Map highMap = new LinkedHashMap<>(); Map lowMap = new LinkedHashMap<>(); setMapInfo(highMap, lowMap, bmi); Map dayWeights = patientWeight.getDayWeights(); Map temp = new HashMap<>(); - for (Map.Entry entry : dayWeights.entrySet()) { - if(DateUtil.parseYMD(entry.getKey()).getTime() >= yesterday.getTime()) { - Integer week = DateUtil.getWeek2(patients.getLastMenses(), DateUtil.parseYMD(entry.getKey())); - Double addWeight = getAddWeight(patientWeight.getBeforeWeight(), entry.getValue()); - Double low = lowMap.get(week); - Double high = highMap.get(week); - if(addWeight < low || addWeight > high) { - temp.put("username", patients.getUsername()); - temp.put("week", DateUtil.getWeekDesc(patients.getLastMenses(), new Date())); - temp.put("parentId", patientWeight.getPatientId()); - temp.put("id", patientWeight.getId()); - temp.put("day", entry.getKey()); - temp.put("desc", addWeight < low ? "增重过少" : "增重过多"); - temp.put("beforeWeight", patientWeight.getBeforeWeight()); - temp.put("nowWeight", patientWeight.getNowWeight()); - temp.put("addWeight", addWeight); - temp.put("ckz", "(" + lowMap.get(0) + "~" + highMap.get(0) + ")"); - temp.put("type", ErrorPatientEnums.PATIENT_WEIGHT); + if(MapUtils.isNotEmpty(dayWeights)) { + for (Map.Entry entry : dayWeights.entrySet()) { + if(DateUtil.parseYMD(entry.getKey()).getTime() >= yesterday.getTime()) { + patients = (patients == null ? mongoTemplate.findById(patientWeight.getPatientId(), Patients.class) : patients); + Integer week = DateUtil.getWeek2(patients.getLastMenses(), DateUtil.parseYMD(entry.getKey())); + Double addWeight = getAddWeight(patientWeight.getBeforeWeight(), entry.getValue()); + Double low = lowMap.get(week); + Double high = highMap.get(week); + if(addWeight < low || addWeight > high) { + setTempInfo(patientWeight.getId() + ID_SEPARATOR + entry.getKey(), temp, patients, null, addWeight < low ? "增重过少" : "增重过多", + "(" + lowMap.get(0) + "~" + highMap.get(0) + ")", ErrorPatientEnums.PATIENT_WEIGHT); + temp.put("beforeWeight", patientWeight.getBeforeWeight()); + temp.put("nowWeight", patientWeight.getNowWeight()); + temp.put("addWeight", addWeight); + } } } - } - if(MapUtils.isNotEmpty(temp)) { - restList.add(temp); + if(MapUtils.isNotEmpty(temp)) { + restList.add(temp); + } } } + /** 体温 */ for (TempModel tempModel : tempModels) { Map temp = new HashMap<>(); LinkedHashMap tempList = tempModel.getTempList(); @@ -77,15 +137,8 @@ public class RemoteFacade { if(DateUtil.parseYMD(entry.getKey()).getTime() >= yesterday.getTime()) { if(entry.getValue() < 36D || entry.getValue() > 38.5D ) { patients = (patients == null ? mongoTemplate.findById(tempModel.getParentId(), Patients.class) : patients); - temp.put("username", patients.getUsername()); - temp.put("week", DateUtil.getWeekDesc(patients.getLastMenses(), new Date())); - temp.put("parentId", tempModel.getParentId()); - temp.put("id", tempModel.getId()); - temp.put("day", entry.getKey()); - temp.put("desc", entry.getValue() < 36D ? "低热" : "高热"); - temp.put("temp", entry.getValue()); - temp.put("ckz", "(36-37.4)"); - temp.put("type", ErrorPatientEnums.TEMP); + setTempInfo(tempModel.getId() + ID_SEPARATOR + entry.getKey(), temp, patients, entry.getValue() + " °C", entry.getValue() < 36D ? "低热" : "高热", + "(36-37.4)", ErrorPatientEnums.TEMP); } } } @@ -96,6 +149,32 @@ public class RemoteFacade { return restList; } + private void setTempInfo(String id, Map temp, Patients patients, String value, String desc, String ckz, ErrorPatientEnums errorPatientEnums) { + if(patients == null) return; + temp.put("id", id); + temp.put("username", patients.getUsername()); + temp.put("week", DateUtil.getWeekDesc(patients.getLastMenses(), new Date())); + temp.put("parentId", patients.getId()); + temp.put("value", value); + temp.put("desc", desc); + temp.put("ckz", ckz); + temp.put("type", errorPatientEnums.getId()); + } + + private String getBpStatus(String ssy, String szy) { + String status = null; + if(StringUtils.isNotEmpty(ssy) && StringUtils.isNotEmpty(szy)) { + if(Double.parseDouble(ssy) < 90 || Double.parseDouble(szy) < 60) { + status = "低血压"; + } else if(Double.parseDouble(ssy) > 140 || Double.parseDouble(szy) < 90) { + status = "高血压"; + } else { + status = "正常"; + } + } + return status; + } + /** * 获取两个体重之间相差的数值 */ diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java index 2509840..10790aa 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TempFacade.java @@ -245,7 +245,7 @@ public class TempFacade { if(patients != null) { tempModel.setPid(patients.getPid()); } - mongoTemplate.save(tempModel); + tempService.addOneTemp(tempModel); } return RespBuilder.buildSuccess(); } @@ -262,6 +262,8 @@ public class TempFacade { restList.add(map); } } - return RespBuilder.buildSuccess(restList); + Object[] objects = restList.toArray(); + CollectionUtils.reverseArray(objects); + return RespBuilder.buildSuccess(objects); } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java index b8db39a..6db7630 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodPressureServiceImpl.java @@ -51,13 +51,13 @@ public class BloodPressureServiceImpl extends BaseServiceImpl implements IBloodP public BaseResponse addOrUpdate(Integer userId, BloodPressure bloodPressure) { String hospitalId = autoMatchFacade.getHospitalId(userId); Map temp = new LinkedHashMap<>(); + bloodPressure.setModified(new Date()); temp.put("szy", bloodPressure.getSzy()); temp.put("ssy", bloodPressure.getSsy()); temp.put("pulse", bloodPressure.getPulse()); temp.put("timestamp", DateUtil.getyyyy_MM_dd_hms(new Date())); temp.put("hospitalId", hospitalId); BloodPressure bp = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(bloodPressure.getParentId()).and("yn").ne(0)), BloodPressure.class); - bloodPressure.setModified(new Date()); if(bp == null) { String parentId = mongoUtil.doHidePatient(bloodPressure.getParentId(), hospitalId); bloodPressure.setParentId(parentId); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java index 05534e8..c7f8913 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BloodSugarServiceImpl.java @@ -230,7 +230,7 @@ public class BloodSugarServiceImpl extends BaseServiceImpl implements IBloodSuga for (BloodSugar bloodSugar : bloodSugars) { Map temp = new HashMap<>(); temp.put("bloodSugar", bloodSugar.getBloodSugar()); - temp.put("craeted", bloodSugar.getCreated()); + temp.put("craeted", DateUtil.getyyyy_MM_dd_hms(bloodSugar.getCreated())); temp.put("type", bloodSugar.getBloodSugarType()); restList.add(temp); } -- 1.8.3.1