diff --git a/platform-common/src/main/java/com/lyms/platform/common/enums/TrackDownDateEnums.java b/platform-common/src/main/java/com/lyms/platform/common/enums/TrackDownDateEnums.java index 1ce0df3..f4d75eb 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/enums/TrackDownDateEnums.java +++ b/platform-common/src/main/java/com/lyms/platform/common/enums/TrackDownDateEnums.java @@ -15,6 +15,7 @@ public enum TrackDownDateEnums { I(9, "产前筛查转出",5), J(10, "产后访视转出",-1), K(11, "产后复查转出",-1), + L(12, "孕预期体重异常管理",12), ; TrackDownDateEnums(Integer id, String name,Integer nextid) { diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/TzycTrackDown.java b/platform-dal/src/main/java/com/lyms/platform/pojo/TzycTrackDown.java new file mode 100644 index 0000000..98a0d31 --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/TzycTrackDown.java @@ -0,0 +1,230 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; + +/** + * 体重管理 - 孕预期体重异常管理 -- 追访详情 + */ +@Document(collection="lyms_tzyc_track_down") +public class TzycTrackDown extends BaseModel { + + private static final long serialVersionUID = SerialIdEnum.TrackDown.getCid(); + + /** + * 追访ID 与下面一样 + */ + private String id; + + /** + * 追访ID + */ + private String trackDownRecId; + + private String parentId; + + /** + * 居民健康档案(妇女健康 )模型Id ResidentsArchiveModel + */ + private String residentsArchiveId; + + private String pid; + + private Date created; + + private Date modified; + + private Integer yn; + + private Integer operaterId; + + private String hospitalId; + + /** + * 追访时间 + */ + private Date trackDownDate; + + /** + * 追访人(前端直接传入的string 返回也返回string) + */ + private String trackDownUserId; + + /** + * 追访方式 电话、上门 + */ + private Integer trackDownType; + + /** + * 是否预约 + */ + private boolean isReservat; + + /** + * 预约时间 + */ + private Date reservatDate; + + /** + * 追访结果 + */ + private String result; + + /** + * 追访转接 是否流转 1-当前流程 2-流转至下一流程 3-停止所有流程 + */ + private Integer trackDownTransfer; + + /** + * 追访数据保存的类型 + */ + private Integer trackDownDateType; + + + public String getTrackDownRecId() { + return trackDownRecId; + } + + public void setTrackDownRecId(String trackDownRecId) { + this.trackDownRecId = trackDownRecId; + } + + public String getResidentsArchiveId() { + return residentsArchiveId; + } + + public void setResidentsArchiveId(String residentsArchiveId) { + this.residentsArchiveId = residentsArchiveId; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getParentId() { + return parentId; + } + + public void setParentId(String parentId) { + this.parentId = parentId; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + public Integer getOperaterId() { + return operaterId; + } + + public void setOperaterId(Integer operaterId) { + this.operaterId = operaterId; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public Date getTrackDownDate() { + return trackDownDate; + } + + public void setTrackDownDate(Date trackDownDate) { + this.trackDownDate = trackDownDate; + } + + public String getTrackDownUserId() { + return trackDownUserId; + } + + public void setTrackDownUserId(String trackDownUserId) { + this.trackDownUserId = trackDownUserId; + } + + public Integer getTrackDownType() { + return trackDownType; + } + + public void setTrackDownType(Integer trackDownType) { + this.trackDownType = trackDownType; + } + + public boolean isReservat() { + return isReservat; + } + + public void setReservat(boolean reservat) { + isReservat = reservat; + } + + public Date getReservatDate() { + return reservatDate; + } + + public void setReservatDate(Date reservatDate) { + this.reservatDate = reservatDate; + } + + public Integer getTrackDownTransfer() { + return trackDownTransfer; + } + + public void setTrackDownTransfer(Integer trackDownTransfer) { + this.trackDownTransfer = trackDownTransfer; + } + + public Integer getTrackDownDateType() { + return trackDownDateType; + } + + public void setTrackDownDateType(Integer trackDownDateType) { + this.trackDownDateType = trackDownDateType; + } + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsController.java new file mode 100644 index 0000000..abb7881 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsController.java @@ -0,0 +1,39 @@ +package com.lyms.platform.operate.web.controller; + +import com.lyms.platform.common.annotation.TokenRequired; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.operate.web.facade.BabyStatisticsFacade; +import com.lyms.platform.operate.web.request.BabyStatisticsQueryRequest; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +/** + * 儿保科计算公式统计查询控制类 + * @Author: 武涛涛 + * @Date: 2021/3/20 13:55 + */ +@Controller +@RequestMapping("/babyStatistics") +public class BabyStatisticsController { + @Autowired + private BabyStatisticsFacade babyStatisticsFacade; + + /** + 儿童统计 + * @Author: 武涛涛 + * @Date: 2021/3/20 13:55 + */ + @ResponseBody + @TokenRequired + @RequestMapping(value = "/matchpuerpera", method = RequestMethod.POST) + public BaseResponse matchCommunity(@RequestBody BabyStatisticsQueryRequest babyStatisticsQueryRequest) { + return babyStatisticsFacade.statistics(babyStatisticsQueryRequest); + } + + + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java index f5a6aff..cc0ae89 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/TrackDownController.java @@ -9,6 +9,7 @@ import com.lyms.platform.operate.web.facade.TrackDownJobFacade; import com.lyms.platform.operate.web.request.TrackDownQueryRequest; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.pojo.TrackDown; +import com.lyms.platform.pojo.TzycTrackDown; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -41,7 +42,6 @@ public class TrackDownController extends BaseController { return downFacade.mother(parentId, trackType, getUserId(request)); } - /** * 追访概况查看追访详情 * @@ -70,6 +70,20 @@ public class TrackDownController extends BaseController { return trackDownService.info(parentId, trackType, 0); } + /** + * 体重管理 - 孕预期体重异常管理 -- 其他追访模块查看追访详情 + * + * @param parentId + * @param trackType 产考TrackDownDateEnums里面的值 0代表所有 + * @return + */ + @ResponseBody + @RequestMapping(value = "/tzyc/{parentId}/{trackType}", method = RequestMethod.GET) + @TokenRequired + public BaseResponse infoTzyc(@PathVariable String parentId, @PathVariable Integer trackType) { + return trackDownService.infoTzyc(parentId, trackType, 0); + } + @ResponseBody @RequestMapping(value = "/init", method = RequestMethod.GET) public BaseResponse init() { @@ -108,6 +122,20 @@ public class TrackDownController extends BaseController { public BaseResponse add(TrackDown trackDown, HttpServletRequest request) { return trackDownService.add(getUserId(request), trackDown); } + + /** + * 体重管理 - 孕预期体重异常管理 添加追访详情 + * @param tzycTrackDown + * @param request + * @Author: 武涛涛 + * @Date: 2021/3/20 19:25 + */ + @ResponseBody + @RequestMapping(value = "/addTzyc",method = RequestMethod.POST) + @TokenRequired + public BaseResponse addTzyc(TzycTrackDown tzycTrackDown, HttpServletRequest request) { + return trackDownService.addTzyc(getUserId(request), tzycTrackDown); + } @TokenRequired @RequestMapping(value = "/export", method = RequestMethod.GET) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsFacade.java new file mode 100644 index 0000000..4750263 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsFacade.java @@ -0,0 +1,356 @@ +package com.lyms.platform.operate.web.facade; + +import com.lyms.platform.biz.dal.IPatientDao; +import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.operate.web.request.BabyStatisticsQueryRequest; +import com.lyms.platform.operate.web.service.impl.BaseServiceImpl; +import com.lyms.platform.permission.model.Organization; +import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.permission.service.OrganizationService; +import com.lyms.platform.pojo.BabyCheckModel; +import com.lyms.platform.pojo.BabyModel; +import org.apache.commons.collections.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationOperation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Component; + +import java.text.DecimalFormat; +import java.util.*; + + +@Component +public class BabyStatisticsFacade extends BaseServiceImpl { + private static final Logger logger = LoggerFactory.getLogger(BabyStatisticsFacade.class); + // 儿童建册率分母 + private Long babyfm; + + @Autowired + private OrganizationService organizationService; + @Autowired + private MongoTemplate mongoTemplate; + + @Autowired + private IPatientDao iPatientDao; + + /* + 儿童统计: + 1:高危儿管理率、2:儿童建册率、3:低出生体重儿百分比、 + 4:3岁以下儿童系统管理率、5.1:中重度贫血率、5.2:5岁以下儿童肥胖率、6:听力确诊率、7:听力筛查率 + */ + public BaseResponse statistics(BabyStatisticsQueryRequest queryRequest) { + Map staMaps = new HashMap <>(); + List provinceCityAreaHid = getProvinceCityAreaHid(queryRequest); + //1:高危儿管理率 + Map gwMap = getGwMap(queryRequest, provinceCityAreaHid); + staMaps.put("gwMap", gwMap); + + //2:儿童建册率 + Map babyMap = getBabyMap(queryRequest, provinceCityAreaHid); + staMaps.put("babyMap", babyMap); + + //3:低出生体重儿百分比 + Map dtzMap = getDtzMap(queryRequest, provinceCityAreaHid); + staMaps.put("dtzMap", dtzMap); + + //5.1:中重度贫血率 + Map zdpxMap = getZdpxMap(queryRequest, provinceCityAreaHid); + staMaps.put("zdpxMap", zdpxMap); + + //5.2:5岁以下儿童肥胖率 + Map fplMap = getFplMap(queryRequest, provinceCityAreaHid); + staMaps.put("fplMap", fplMap); + + + + + + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(staMaps); + } + + /** + 5.2:5岁以下儿童肥胖率 + * @Author: 武涛涛 + * @Date: 2021/3/20 14:09 + */ + private Map getFplMap(BabyStatisticsQueryRequest queryRequest, List provinceCityAreaHid) { + Map map = new HashMap <>(); + + try { + //分子 儿保检查 - 儿保检查列表 儿保检查是6-59月龄的儿童,并且体重评价是“上”的儿童人数 + Criteria cz = Criteria.where("hospitalId").in(provinceCityAreaHid).and("yn").ne(YnEnums.NO.getId()) + .and("checkMonth").gte(6).lte(59).and("weightEvaluate").is("上"); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cz = cz.and("checkDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Query queryZ = new Query(); + queryZ.addCriteria(cz); + System.out.println("5.2.1:5岁以下儿童肥胖率 -- 分子 "+queryZ); + Long countZ = mongoTemplate.count(queryZ, BabyCheckModel.class); + map.put("fz",countZ.toString()); + + //分母 儿保检查 - 儿保检查列表 查询时间范围内儿保检查是6-59月龄的儿童检查次数 + Criteria cm = Criteria.where("hospitalId").in(provinceCityAreaHid).and("yn").ne(YnEnums.NO.getId()) + .and("checkMonth").gte(6).lte(59); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cm = cm.and("checkDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Query queryM = new Query(); + queryM.addCriteria(cm); + System.out.println("5.2.2:5岁以下儿童肥胖率 -- 分母 "+queryZ); + Long countM = mongoTemplate.count(queryM, BabyCheckModel.class); + map.put("fm",countM.toString()); + + //分率 + if(countZ !=null && countM !=null){ + Double fld = (double)countZ/countM * 100; + if(fld <=0.01 ){ + fld = 0.01; + } + map.put("fl", new DecimalFormat("0.00").format(fld)+"%"); + } + + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + /** + 5.1:中重度贫血率 + * @Author: 武涛涛 + * @Date: 2021/3/20 14:09 + */ + private Map getZdpxMap(BabyStatisticsQueryRequest queryRequest, List provinceCityAreaHid) { + Map map = new HashMap <>(); + + try { + //分子 儿保检查 - 儿保检查列表 儿保检查中是6-59月龄的并且血红蛋白小于90g/L的检查次数 + Criteria cz = Criteria.where("hospitalId").in(provinceCityAreaHid).and("yn").ne(YnEnums.NO.getId()) + .and("checkMonth").gte(6).lte(59).and("$where").is(String.format("function(){ var hemoglobin = this.hemoglobin; if( hemoglobin > 90){return true;}}")); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cz = cz.and("checkDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Query queryZ = new Query(); + queryZ.addCriteria(cz); + System.out.println("5.1:中重度贫血率 -- 分子 "+queryZ); + Long countZ = mongoTemplate.count(queryZ, BabyCheckModel.class); + map.put("fz",countZ.toString()); + + //分母 + map.put("fm", ""); + + //分率 + map.put("fl", ""); + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + + + /** + 3 低出生体重儿百分比 + * @Author: 武涛涛 + * @Date: 2021/3/20 14:09 + */ + private Map getDtzMap(BabyStatisticsQueryRequest queryRequest, List provinceCityAreaHid) { + Map map = new HashMap <>(); + + try { + //分子 新生儿管理中的出生体重小于2500g的人数,不包括2500g + Criteria cz = Criteria.where("hospitalId").in(provinceCityAreaHid).and("buildType").is(2) + .and("$where").is(String.format("function(){ var babyWeight = this.babyWeight; if( babyWeight > 2.5){return true;}}")); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cz = cz.and("buildDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Criteria criteria2z= Criteria.where("yn").is(YnEnums.YES.getId()); + Criteria criteria1z= Criteria.where("dataStatus").in(1).and("yn").is(YnEnums.NO.getId()); + cz.orOperator(criteria2z,criteria1z); + Query queryZ = new Query(); + queryZ.addCriteria(cz); + System.out.println("3 低出生体重儿百分比 -- 分子 "+queryZ); + Long countZ = mongoTemplate.count(queryZ, BabyModel.class); + map.put("fz",countZ.toString()); + + //分母 + Long countM = getBabyfm();//使用相同的儿童建册率分母 + map.put("fm",countM.toString()); + + //分率 + if(countZ !=null && countM !=null){ + Double fld = (double)countZ/countM * 100; + if(fld <=0.01 ){ + fld = 0.01; + } + map.put("fl", new DecimalFormat("0.00").format(fld)+"%"); + } + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + + + /** + 2 儿童建册率 + * @Author: 武涛涛 + * @Date: 2021/3/20 14:09 + */ + private Map getBabyMap(BabyStatisticsQueryRequest queryRequest, List provinceCityAreaHid) { + Map map = new HashMap <>(); + + try { + // 分子 区域妇幼管理 - 全部儿童管理,建档人数 + Criteria cz = Criteria.where("hospitalId").in(provinceCityAreaHid).and("yn").ne(YnEnums.NO.getId()) + .and("enable").nin(Arrays.asList("1", "2") ); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cz = cz.and("buildDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Criteria criteria2Z= Criteria.where("buildType").is(3).and("enable").is("1"); + Criteria criteria1Z= Criteria.where("buildType").in(Arrays.asList(1,2)); + cz.orOperator(criteria2Z,criteria1Z); + Query queryZ = new Query(); + queryZ.addCriteria(cz); + System.out.println(queryZ); + System.out.println("2 儿童建册率 -- 分子 "+queryZ); + Long countZ = mongoTemplate.count(queryZ, BabyModel.class); + map.put("fz",countZ.toString() ); + + //分母 新生儿活产的人数(分娩儿童) + Criteria cm = Criteria.where("hospitalId").in(provinceCityAreaHid).and("buildType").is(2).and("yn").is(YnEnums.YES.getId()); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cm = cm.and("buildDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Query queryM = new Query(); + queryM.addCriteria(cm); + System.out.println("2 儿童建册率 -- 分母 "+queryM); + Long countM = mongoTemplate.count(queryM, BabyModel.class); + setBabyfm(countM);//公共使用 + map.put("fm",countM.toString()); + + //分率 + if(countZ !=null && countM !=null){ + Double fld = (double)countZ/countM * 100; + if(fld <=0.01 ){ + fld = 0.01; + } + map.put("fl", new DecimalFormat("0.00").format(fld)+"%"); + } + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + + /** + 1 高危儿管理率 + * @Author: 武涛涛 + * @Date: 2021/3/20 14:09 + */ + private Map getGwMap(BabyStatisticsQueryRequest queryRequest, List provinceCityAreaHid) { + Map map = new HashMap <>(); + + try { + //分子 + Criteria cz = Criteria.where("hospitalId").in(provinceCityAreaHid).and("yn").ne(YnEnums.NO.getId()); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cz = cz.and("checkDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + Integer fzsize = 0; + Integer fmsize = 0; + AggregationOperation matchZ = Aggregation.match(cz); + AggregationOperation groupZ = Aggregation.group("buildId");//.count().as("gwegllCount"); + AggregationOperation fieldsZ = Aggregation.project("buildId"); + Aggregation aggregationZ = Aggregation.newAggregation(matchZ, groupZ, fieldsZ); + AggregationResults resultZ = this.mongoTemplate.aggregate(aggregationZ, "lyms_baby_high_ris", HashMap.class); + if(resultZ !=null && CollectionUtils.isNotEmpty(resultZ.getMappedResults())){ + fzsize = resultZ.getMappedResults().size(); + map.put("fz",fzsize.toString() ); + } + + //分母 + Criteria cm = Criteria.where("hospitalId").in(provinceCityAreaHid).and("yn").ne(YnEnums.NO.getId()); + if(StringUtils.isNotEmpty(queryRequest.getTimeStart()) && StringUtils.isNotEmpty(queryRequest.getTimeEnd())){ + cm = cm.and("checkDate").gte(queryRequest.getTimeStart()).lte(queryRequest.getTimeEnd()); + } + AggregationOperation matchM = Aggregation.match(cm); + AggregationOperation groupM = Aggregation.group("buildId");//.count().as("gwegllCount"); + AggregationOperation fieldsM = Aggregation.project("buildId"); + Aggregation aggregationM = Aggregation.newAggregation(matchM, groupM, fieldsM); + AggregationResults resultM = this.mongoTemplate.aggregate(aggregationM, "lyms_babycheck", HashMap.class); + if(resultM !=null && CollectionUtils.isNotEmpty(resultM.getMappedResults())){ + fmsize = resultM.getMappedResults().size(); + map.put("fm", fmsize.toString()); + } + //分率 + if(fmsize !=null && fzsize !=null){ + Double fld = (float)fzsize/fmsize * 100.00; + if(fld <=0.01 ){ + fld = 0.01; + } + map.put("fl", new DecimalFormat("0.00").format(fld)+"%"); + } + } catch (Exception e) { + e.printStackTrace(); + } + return map; + } + + + /** + * 获取省市县下对应的医院id,如果有医院id就只使用医院id + * + * @param babyStatisticsQueryRequest + * @Author: 武涛涛 + * @Date: 2021/3/20 11:18 + */ + private List getProvinceCityAreaHid(BabyStatisticsQueryRequest babyStatisticsQueryRequest) { + List hospitalList = new ArrayList <>(); + if (StringUtils.isNotEmpty(babyStatisticsQueryRequest.gethId())) { + hospitalList.add(babyStatisticsQueryRequest.gethId()); + } else if (StringUtils.isNotEmpty(babyStatisticsQueryRequest.getProvinceId())) { + OrganizationQuery organizationQuery = new OrganizationQuery(); + organizationQuery.setYn(YnEnums.YES.getId()); + organizationQuery.setProvinceId(babyStatisticsQueryRequest.getProvinceId()); + if (StringUtils.isNotEmpty(babyStatisticsQueryRequest.getCityId())) { + organizationQuery.setCityId(babyStatisticsQueryRequest.getCityId()); + if (StringUtils.isNotEmpty(babyStatisticsQueryRequest.getAreaId())) { + organizationQuery.setAreaId(babyStatisticsQueryRequest.getAreaId()); + } + } + List orgId = new ArrayList <>(); + List organizations = organizationService.queryOrganization(organizationQuery); + if (CollectionUtils.isNotEmpty(organizations)) { + for (Organization org : organizations) { + if (null != org.getId()) { + orgId.add(org.getId() + ""); + } + } + } + if (CollectionUtils.isEmpty(orgId)) { + hospitalList = new ArrayList <>(); + } else { + hospitalList.retainAll(orgId); + } + } + return hospitalList; + } + + public Long getBabyfm() { + return babyfm; + } + + public void setBabyfm(Long babyfm) { + this.babyfm = babyfm; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java index bc9bd75..4c68285 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java @@ -1157,6 +1157,21 @@ public class TrackDownFacade { temp.put("yyzfTimeDays", days); /** 追访逾期天数 */ } } + try { + Criteria criteriaTzyc = Criteria.where("yn").is(1).and("parentId").is(downRecord.getParentId()).and("trackDownDateType").is(12); + TzycTrackDown tzycTrackDown = mongoTemplate.findOne(Query.query(criteriaTzyc).with(new Sort(Sort.Direction.DESC, "created")), TzycTrackDown.class); + if (tzycTrackDown != null) { + temp.put("tzycTrackDownTime", tzycTrackDown == null ? "--" : DateUtil.getyyyy_MM_dd(tzycTrackDown.getTrackDownDate())); // 追访时间 + temp.put("tzycResult", StringUtils.isEmpty(tzycTrackDown.getResult()) ? "--" : tzycTrackDown.getResult()); // 追访结果 + }else { + temp.put("tzycTrackDownTime", "--"); + temp.put("tzycResult", "--"); + } + } catch (Exception e) { + e.printStackTrace(); + } + + //如果是产前检查取预约结果 //复诊 AntenatalExaminationModel examinationModel = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(downRecord.getParentId())).with(new Sort(Sort.Direction.DESC, "created")), AntenatalExaminationModel.class); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsQueryRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsQueryRequest.java new file mode 100644 index 0000000..5c20a24 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsQueryRequest.java @@ -0,0 +1,96 @@ +package com.lyms.platform.operate.web.request; + +import com.lyms.platform.common.core.annotation.form.Form; + + +/** + * 儿保科计算公式统计查询入参类 + * + * @Author: 武涛涛 + * @Date: 2021/3/20 10:32 + */ +@Form +public class BabyStatisticsQueryRequest extends BasePageQueryRequest { + + + //排序的字段 + private String sort; + //排序的策略 升序/降序 + private String order; + //省份 + private String provinceId; + //城市 + private String cityId; + //区域 + private String areaId; + // 医院id + private String hId; + //日期访问 + private String timeStart; + private String timeEnd; + + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + public String getOrder() { + return order; + } + + public void setOrder(String order) { + this.order = order; + } + + public String getProvinceId() { + return provinceId; + } + + public void setProvinceId(String provinceId) { + this.provinceId = provinceId; + } + + public String getCityId() { + return cityId; + } + + public void setCityId(String cityId) { + this.cityId = cityId; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String gethId() { + return hId; + } + + public void sethId(String hId) { + this.hId = hId; + } + + public String getTimeStart() { + return timeStart; + } + + public void setTimeStart(String timeStart) { + this.timeStart = timeStart; + } + + public String getTimeEnd() { + return timeEnd; + } + + public void setTimeEnd(String timeEnd) { + this.timeEnd = timeEnd; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java index e2df969..b6d88cd 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/ITrackDownService.java @@ -4,6 +4,7 @@ import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.pojo.TrackDown; import com.lyms.platform.pojo.TrackDownRecord; +import com.lyms.platform.pojo.TzycTrackDown; import javax.servlet.http.HttpServletResponse; import java.util.Date; @@ -13,6 +14,7 @@ public interface ITrackDownService extends IBaseService { boolean addOrupdateTrackDownRecord(Integer userId, TrackDownRecord trackDownRecord); BaseResponse add(Integer userId, TrackDown trackDown); + BaseResponse addTzyc(Integer userId, TzycTrackDown trackDown); BaseObjectResponse list(String provinceId, String cityId, String areaId, String streetId, String key, Integer trackType, Integer page, Integer limit, Integer userId); @@ -25,6 +27,7 @@ public interface ITrackDownService extends IBaseService { Integer followupStatus, String isDeliver, HttpServletResponse response, Integer encryption); BaseObjectResponse info(String patientId, Integer trackType, Integer buildType); + BaseObjectResponse infoTzyc(String patientId, Integer trackType, Integer buildType); BaseObjectResponse init(); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java index 920b620..be0a978 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/TrackDownServiceImpl.java @@ -953,6 +953,24 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS updateTrackCount(trackDown.getParentId()); return RespBuilder.buildSuccess(trackDown.getId()); } + /** + * 体重管理 - 孕预期体重异常管理 -- 新增追访详情 + * + * @param userId + * @param tzycTrackDown + * @return + */ + public BaseResponse addTzyc(Integer userId, TzycTrackDown tzycTrackDown) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + tzycTrackDown.setId(null); + tzycTrackDown.setYn(YnEnums.YES.getId()); + tzycTrackDown.setCreated(new Date()); + tzycTrackDown.setHospitalId(hospitalId); + tzycTrackDown.setOperaterId(userId); + tzycTrackDown.setModified(new Date()); + mongoTemplate.insert(tzycTrackDown); + return RespBuilder.buildSuccess(tzycTrackDown.getId()); + } /** @@ -1243,6 +1261,47 @@ public class TrackDownServiceImpl extends BaseServiceImpl implements ITrackDownS return RespBuilder.buildSuccess(tabList); } } + @Override + public BaseObjectResponse infoTzyc(String patientId, Integer trackType, Integer buildType) { + List> tabList = new ArrayList<>(); + + Criteria criteria = Criteria.where("parentId").is(patientId).and("yn").is(1); + + if (TrackDownDateEnums.C.getId() == trackType) { + criteria.and("trackDownDateType").in(3, 9); + } else if (TrackDownDateEnums.D.getId() == trackType) { + criteria.and("trackDownDateType").in(4, 8); + } else if (TrackDownDateEnums.F.getId() == trackType) { + criteria.and("trackDownDateType").in(6, 11); + } else if (TrackDownDateEnums.G.getId() == trackType) { + criteria.and("trackDownDateType").in(7, 10); + } else { + criteria.and("trackDownDateType").in(trackType); + } + List tzycTrackDowns = mongoTemplate.find(Query.query(criteria).with(new Sort(Sort.Direction.DESC, "created")), TzycTrackDown.class); + + for (TzycTrackDown tzycTrackDown : tzycTrackDowns) { + Map temp = new HashMap<>(); + temp.put("trackDownDate", tzycTrackDown.getTrackDownDate() == null ? "--" : DateUtil.getyyyy_MM_dd(tzycTrackDown.getTrackDownDate())); + temp.put("trackDownUser", StringUtils.isEmpty(tzycTrackDown.getTrackDownUserId()) ? "--" : tzycTrackDown.getTrackDownUserId()); + if (tzycTrackDown.getTrackDownType() == TrackDownDateEnums.H.getId()) { + tzycTrackDown.setTrackDownType(4); + } else if (tzycTrackDown.getTrackDownType() == TrackDownDateEnums.I.getId()) { + tzycTrackDown.setTrackDownType(3); + } else if (tzycTrackDown.getTrackDownType() == TrackDownDateEnums.J.getId()) { + tzycTrackDown.setTrackDownType(7); + } else if (tzycTrackDown.getTrackDownType() == TrackDownDateEnums.K.getId()) { + tzycTrackDown.setTrackDownType(6); + } + + temp.put("trackDownType", TrackDownTypeEnums.getName(tzycTrackDown.getTrackDownType())); + temp.put("result", StringUtils.isEmpty(tzycTrackDown.getResult()) ? "--" : tzycTrackDown.getResult()); + temp.put("reservatDate", tzycTrackDown.getReservatDate() == null ? "--" : DateUtil.getyyyy_MM_dd(tzycTrackDown.getReservatDate())); + tabList.add(temp); + } + return RespBuilder.buildSuccess(tabList); + + } @Override public BaseObjectResponse init() {