diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfModel.java index 1b5b10e..07022d5 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfModel.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; /** + * 产后康复评估记录 * Created by Administrator on 2021-05-18. */ @Document(collection = "lyms_postkf") diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfPgModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfPgModel.java new file mode 100644 index 0000000..2c843d5 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/PostkfPgModel.java @@ -0,0 +1,100 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 产后康复上一评估的医生和这次医生的对比不一样的记录 + * + * Created by Administrator on 2021-05-18. + */ +@Document(collection = "lyms_postkfpg") +public class PostkfPgModel extends BaseModel { + private String id; + //PostkfModel的主键 + private String pgId; + //分娩id + private String mid; + private String pid; + private String patientId; + private String upDoctorId;//上一次医生 + private String currentDoctorId;//本次医生 + private String hospitalId; + private Date created; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMid() { + return mid; + } + + public void setMid(String mid) { + this.mid = mid; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + + public String getPgId() { + return pgId; + } + + public void setPgId(String pgId) { + this.pgId = pgId; + } + + public String getUpDoctorId() { + return upDoctorId; + } + + public void setUpDoctorId(String upDoctorId) { + this.upDoctorId = upDoctorId; + } + + public String getCurrentDoctorId() { + return currentDoctorId; + } + + public void setCurrentDoctorId(String currentDoctorId) { + this.currentDoctorId = currentDoctorId; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostkfController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostkfController.java index b6f6ede..51adfbc 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostkfController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PostkfController.java @@ -4,6 +4,7 @@ import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.operate.web.facade.PostkfFaccade; +import com.lyms.platform.operate.web.request.PostKfRequest; import com.lyms.platform.pojo.BabyAssessModel; import com.lyms.platform.pojo.PostkfModel; import org.springframework.beans.factory.annotation.Autowired; @@ -50,6 +51,20 @@ public class PostkfController extends BaseController { /** + * 产后康复列表 + * @param request + * @param postKfRequest + * @return + */ + @TokenRequired + @ResponseBody + @RequestMapping(value = "/getPostKfList", method = RequestMethod.POST) + public BaseResponse getPostKfList(HttpServletRequest request,@RequestBody PostKfRequest postKfRequest) { + return postkfFaccade.getPostKfList(postKfRequest, getUserId(request)); + } + + + /** * 添加儿童评估表 * @param request * @param babyAssessModel @@ -75,4 +90,17 @@ public class PostkfController extends BaseController { public BaseResponse getBabyAssess(HttpServletRequest request,@RequestParam(required = true) String babyId) { return postkfFaccade.getBabyAssess(babyId, getUserId(request)); } + + + /** + * 产后康复上一评估的医生和这次医生的对比不一样的记录 + * @param request + * @return + */ + @TokenRequired + @ResponseBody + @RequestMapping(value = "/getPostPgRecord", method = RequestMethod.GET) + public BaseResponse getPostPgRecord(HttpServletRequest request,@RequestParam(required = true) Integer page,@RequestParam(required = true) Integer limit) { + return postkfFaccade.getPostPgRecord(getUserId(request),page,limit); + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PostkfFaccade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PostkfFaccade.java index 1a80d61..f2bae17 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PostkfFaccade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PostkfFaccade.java @@ -1,27 +1,42 @@ package com.lyms.platform.operate.web.facade; +import com.lyms.platform.biz.service.BabyService; import com.lyms.platform.biz.service.MatDeliverService; +import com.lyms.platform.biz.service.PatientsService; import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.BaseQuery; +import com.lyms.platform.common.enums.CfEnums; +import com.lyms.platform.common.enums.FmTypeEnums; +import com.lyms.platform.common.enums.RenShenJieJuEnums; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; -import com.lyms.platform.common.utils.MongoConvertHelper; -import com.lyms.platform.common.utils.ReflectionUtils; -import com.lyms.platform.common.utils.StringUtils; -import com.lyms.platform.pojo.BabyAssessModel; -import com.lyms.platform.pojo.MaternalDeliverModel; -import com.lyms.platform.pojo.PostkfModel; +import com.lyms.platform.common.utils.*; +import com.lyms.platform.operate.web.request.PostKfRequest; +import com.lyms.platform.operate.web.result.ChildbirthManagerQueryModel; +import com.lyms.platform.operate.web.result.DefectiveChildModelResult; +import com.lyms.platform.operate.web.worker.MaterDeliverWorker; +import com.lyms.platform.permission.service.UsersService; +import com.lyms.platform.pojo.*; +import com.lyms.platform.query.BabyModelQuery; import com.lyms.platform.query.MatDeliverQuery; +import com.lyms.platform.query.PatientsQuery; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; /** * Created by Administrator on 2021-05-18. @@ -30,6 +45,16 @@ import java.util.List; public class PostkfFaccade { @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; + + @Autowired + private PatientsService patientsService; + @Autowired + private BabyService babyService; + @Autowired + private UsersService usersService; + @Autowired private MongoTemplate mongoTemplate; @Autowired private AutoMatchFacade autoMatchFacade; @@ -99,4 +124,212 @@ public class PostkfFaccade { return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(CollectionUtils.isNotEmpty(babyAssessModels) ? babyAssessModels.get(0) : null); } + + public BaseResponse getPostKfList(PostKfRequest postKfRequest, Integer userId) { + + + String hospitalId = autoMatchFacade.getHospitalId(userId); + Query query = new Query(); + Integer status = postKfRequest.getStatus(); + if (status != null) { + query.addCriteria(Criteria.where("status").in(status)); + } + if (StringUtils.isNotEmpty(postKfRequest.getItem()) && StringUtils.isNotEmpty(postKfRequest.getType()) && postKfRequest.getResult() != null) + { + query.addCriteria(Criteria.where(postKfRequest.getItem()+"."+postKfRequest.getType()).is(String.valueOf(postKfRequest.getResult()))); + if (StringUtils.isNotEmpty(postKfRequest.getDoctorId())) + { + query.addCriteria(Criteria.where(postKfRequest.getItem()+"."+postKfRequest.getType()+"doctor").is(postKfRequest.getDoctorId())); + } + } + + if (StringUtils.isNotEmpty(postKfRequest.getQueryNo())) + { + PatientsQuery query1 = new PatientsQuery(); + query1.setQueryNo(postKfRequest.getQueryNo()); + List patientses = patientsService.queryPatient(query1); + if (CollectionUtils.isNotEmpty(patientses)) + { + List patientIds = new ArrayList<>(); + for (Patients pat : patientses) + { + patientIds.add(pat.getId()); + } + query.addCriteria(Criteria.where("patientId").in(patientIds)); + } + } + + query.addCriteria(Criteria.where("hospitalId").is(hospitalId)); + + query.with(new Sort(Sort.Direction.DESC, "created")); + long count = mongoTemplate.count(query, DefectiveChildModel.class); + postKfRequest.mysqlBuild((int) count); + query.skip(postKfRequest.getOffset()).limit(postKfRequest.getLimit()); + List datas = new LinkedList<>(); + + List models = mongoTemplate.find(query, PostkfModel.class); + + int batchSize = 5; + int end = 0; + List futures = new ArrayList <>(); + for (int i = 0; i < models.size(); i += batchSize) { + end = (end + batchSize); + if (end > models.size()) { + end = models.size(); + } + final List postkfModels = models.subList(i, end); + Future f = commonThreadPool.submit(new Callable() { + @Override + public Object call() throws Exception { + List results = new LinkedList(); + if (CollectionUtils.isNotEmpty(postkfModels)) + { + for (PostkfModel model : postkfModels){ + ChildbirthManagerQueryModel childbirthManagerQueryModel = new ChildbirthManagerQueryModel(); + + MatDeliverQuery matDeliverQuery = new MatDeliverQuery(); + matDeliverQuery.setId(model.getMid()); + matDeliverQuery.setYn(YnEnums.YES.getId()); + List list2 = matDeliverService.query(matDeliverQuery); + if (CollectionUtils.isNotEmpty(list2)) + { + MaternalDeliverModel maternalDeliverModel = list2.get(0); + + Patients patients = patientsService.findOnePatientById(maternalDeliverModel.getParentId()); + if (patients == null) + { + continue; + } + + childbirthManagerQueryModel.setPid(patients.getPid()); + childbirthManagerQueryModel.setPatientId(patients.getId()); + childbirthManagerQueryModel.setMaternalDeliverId(maternalDeliverModel.getId()); + childbirthManagerQueryModel.setTireNumber(maternalDeliverModel.getTireNumber()); + + // 分娩日期 + childbirthManagerQueryModel.setDueDate(DateUtil.getyyyy_MM_dd(maternalDeliverModel.getDueDate1())); + childbirthManagerQueryModel.setAge(DateUtil.getAge(patients.getBirth())); + // name + childbirthManagerQueryModel.setName(patients.getUsername()); + childbirthManagerQueryModel.setCardNo(patients.getCardNo()); + + String week = (patients.getFmWeek() / 7) + ""; + int day = (patients.getFmWeek() % 7); + childbirthManagerQueryModel.setDueWeek("孕" + week + "周" + (day > 0 ? "+" + day + "天" : "")); + + String handDueWeek = ""; + Map handDueWeekMap = maternalDeliverModel.getHandDueWeek(); + if (handDueWeekMap != null && handDueWeekMap.size() > 0 && handDueWeekMap.get("week") != null && StringUtils.isNotEmpty(String.valueOf(handDueWeekMap.get("week")))) + { + handDueWeek = "孕"+String.valueOf(handDueWeekMap.get("week"))+"周"+((handDueWeekMap.get("day") == null + || String.valueOf(handDueWeekMap.get("day")).equals("0") || String.valueOf(handDueWeekMap.get("day")).equals("")) ? "" : "+"+String.valueOf(handDueWeekMap.get("day"))+"天" ); + } + childbirthManagerQueryModel.setHandDueWeek(handDueWeek); + + String deliveryModeJson = maternalDeliverModel.getDeliveryMode(); + Map deliveryModeMap = JsonUtil.getMap(deliveryModeJson); + if (MapUtils.isNotEmpty(deliveryModeMap) && org.apache.commons.lang.StringUtils.isNotEmpty(deliveryModeMap.get("fmfs"))) { + for (FmTypeEnums fmTypeEnums : FmTypeEnums.values()) { + if (fmTypeEnums.getId().equals(deliveryModeMap.get("fmfs"))) { + childbirthManagerQueryModel.setDeliveryMode(fmTypeEnums.getName()); + break; + } + } + if(deliveryModeMap.get("scfs") != null){ + String scfs = deliveryModeMap.get("scfs").toString(); + childbirthManagerQueryModel.setDeliveryMode1(FmTypeEnums.getFmScNameById(scfs)); + } + } else { + childbirthManagerQueryModel.setDeliveryMode(""); + } + + childbirthManagerQueryModel.setRhloseBloodL(maternalDeliverModel.getrHloseBloodL()); + + if (org.apache.commons.lang.StringUtils.isNotBlank(maternalDeliverModel.getMaternalInfo())) { + for (CfEnums cfEnums : CfEnums.values()) { + if (cfEnums.getId().equals(maternalDeliverModel.getMaternalInfo())) { + childbirthManagerQueryModel.setMaternalInfo(cfEnums.getName()); + break; + } + } + } + + BabyModelQuery babyModelQuery = new BabyModelQuery(); + babyModelQuery.setParentId(patients.getId()); + babyModelQuery.setDataStatus(false); + babyModelQuery.setPregnancyOut(RenShenJieJuEnums.O.getId()); + List babyModelList = babyService.queryBabyWithQuery(babyModelQuery); + if (CollectionUtils.isNotEmpty(babyModelList)) { + childbirthManagerQueryModel.setLivingNumber(babyModelList.size()); + } else { + if (childbirthManagerQueryModel.getTireNumber() == null) { + childbirthManagerQueryModel.setLivingNumber(null); + } else { + childbirthManagerQueryModel.setLivingNumber(0); + } + } + childbirthManagerQueryModel.setDeliverDoctor(usersService.getUsers(Integer.valueOf(maternalDeliverModel.getDeliverDoctor())).getName()); + childbirthManagerQueryModel.setPhone(patients.getPhone()); + } + + results.add(childbirthManagerQueryModel); + } + } + return results; + } + }); + if (f != null) { + futures.add(f); + } + } + + if (CollectionUtils.isNotEmpty(futures)) { + for (Future f : futures) { + try { + datas.addAll((List) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "fm list error."); + } + } + } + BaseListResponse baseListResponse = new BaseListResponse(); + baseListResponse.setData(datas); + baseListResponse.setPageInfo(postKfRequest.getPageInfo()); + return baseListResponse; + } + + public BaseResponse getPostPgRecord(Integer userId,Integer page,Integer limit) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + Query query = new Query(); + BaseQuery baseQuery = new BaseQuery(); + baseQuery.setPage(page); + baseQuery.setLimit(limit); + query.addCriteria(Criteria.where("hospitalId").is(hospitalId)); + query.addCriteria(Criteria.where("upDoctorId").is(String.valueOf(userId))); + + query.with(new Sort(Sort.Direction.DESC, "created")); + long count = mongoTemplate.count(query, DefectiveChildModel.class); + baseQuery.mysqlBuild((int) count); + query.skip(baseQuery.getOffset()).limit(limit); + List datas = new LinkedList<>(); + + List models = mongoTemplate.find(query, PostkfPgModel.class); + if (CollectionUtils.isNotEmpty(models)) + { + for (PostkfPgModel model : models) + { + Map data = new HashMap(); + data.put("created",DateUtil.getyyyy_MM_dd(model.getCreated())); + data.put("mid",model.getMid()); + data.put("upDoctor",usersService.getUsers(Integer.valueOf(model.getUpDoctorId())).getName()); + data.put("currentDoctor",usersService.getUsers(Integer.valueOf(model.getCurrentDoctorId())).getName()); + data.put("id",model.getId()); + datas.add(data); + } + } + BaseListResponse baseListResponse = new BaseListResponse(); + baseListResponse.setData(datas); + baseListResponse.setPageInfo(baseQuery.getPageInfo()); + return baseListResponse; + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PostKfRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PostKfRequest.java new file mode 100644 index 0000000..7961c4e --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/PostKfRequest.java @@ -0,0 +1,72 @@ +package com.lyms.platform.operate.web.request; + +import com.lyms.platform.common.dao.BaseQuery; + +/** + * Created by Administrator on 2021-05-20. + */ +public class PostKfRequest extends BaseQuery { + + private String doctorId; + //产后复查评估 状态 1 出院前评估 2 产后7天评估 3 产后14天评估 4 产后28天评估 5 产后42天评估 + private Integer status; + + //评估项目 + private String item; + + //评估类型 + private String type; + + //评估的结果 + private Integer result; + + private String queryNo; + + public String getDoctorId() { + return doctorId; + } + + public void setDoctorId(String doctorId) { + this.doctorId = doctorId; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getResult() { + return result; + } + + public void setResult(Integer result) { + this.result = result; + } + + public String getQueryNo() { + return queryNo; + } + + public void setQueryNo(String queryNo) { + this.queryNo = queryNo; + } +}