|
|
@@ -1,5 +1,29 @@
|
|
|
package com.coffee.bus.stats.analyse;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.coffee.bus.entity.BusHospitalConfigEntity;
|
|
|
+import com.coffee.bus.enums.ConfigEnum;
|
|
|
+import com.coffee.bus.enums.StatsAnalyseEnum;
|
|
|
+import com.coffee.bus.enums.StatsTimeUnit;
|
|
|
+import com.coffee.bus.hospital.config.bean.FunctionEvalConfig;
|
|
|
+import com.coffee.bus.service.LocalBusHospitalConfigService;
|
|
|
+import com.coffee.bus.service.LocalBusInfusionHistoryService;
|
|
|
+import com.coffee.bus.service.dto.CombineEvalResult;
|
|
|
+import com.coffee.bus.service.dto.CombineQuery;
|
|
|
+import com.coffee.bus.stats.CommonStats;
|
|
|
+import com.coffee.bus.stats.entity.*;
|
|
|
+import com.coffee.bus.stats.enums.PieEnum;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.Data;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* @author lifang
|
|
|
* @version 1.0.0
|
|
|
@@ -7,5 +31,521 @@ package com.coffee.bus.stats.analyse;
|
|
|
* @Description TODO
|
|
|
* @createTime 2022年06月07日 21:10:00
|
|
|
*/
|
|
|
-public class EvalStatsAnalyse {
|
|
|
+@Data
|
|
|
+@AllArgsConstructor
|
|
|
+@Service
|
|
|
+public class EvalStatsAnalyse implements CommonStats<CombineEvalResult> {
|
|
|
+ private final LocalBusInfusionHistoryService infusionHistoryService;
|
|
|
+ private final LocalBusHospitalConfigService configService;
|
|
|
+ @Override
|
|
|
+ public List<CombineEvalResult> queryResult(CombineQuery query) {
|
|
|
+ return infusionHistoryService.queryStatsEval(query);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public StatsAnalyseEnum getId() {
|
|
|
+ return StatsAnalyseEnum.eval;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<PieResult> handlePie(List<CombineEvalResult> results) {
|
|
|
+ PieResult result = PieResult.of(PieEnum.total.name(),PieEnum.total.getText());
|
|
|
+ //keys由历史数据和常量维护信息表并集构成
|
|
|
+ BusHospitalConfigEntity config = evalConfig();
|
|
|
+ if(config==null){
|
|
|
+ return Arrays.asList(result);
|
|
|
+ }
|
|
|
+ FunctionEvalConfig evalConfig = JSONUtil.toBean(JSONUtil.toJsonStr(config.getConfig()), FunctionEvalConfig.class);
|
|
|
+ Map<String, Long> resultMap = new HashMap<>();
|
|
|
+ addPieContent(evalConfig,resultMap);
|
|
|
+ computeEvalPie(results,resultMap);
|
|
|
+ resultMap.forEach(result::addContent);
|
|
|
+ return Arrays.asList(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void computeEvalPie(List<CombineEvalResult> results, Map<String, Long> resultMap) {
|
|
|
+ for (CombineEvalResult result : results) {
|
|
|
+ if(null!=result.getStatics()){
|
|
|
+ resultMap.computeIfPresent("静息疼痛",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getActivity()){
|
|
|
+ resultMap.computeIfPresent("活动疼痛",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getCalm()){
|
|
|
+ resultMap.computeIfPresent("镇静评分",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getLeftArm()){
|
|
|
+ resultMap.computeIfPresent("左上肢",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getLeftLeg()){
|
|
|
+ resultMap.computeIfPresent("左下肢",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getRightArm()){
|
|
|
+ resultMap.computeIfPresent("右上肢",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getRightLeg()){
|
|
|
+ resultMap.computeIfPresent("右下肢",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getNauseaVomit()){
|
|
|
+ resultMap.computeIfPresent("恶心呕吐",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getItch()){
|
|
|
+ resultMap.computeIfPresent("瘙痒",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getVertigo()){
|
|
|
+ resultMap.computeIfPresent("眩晕",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getSoreThroat()){
|
|
|
+ resultMap.computeIfPresent("咽喉疼痛",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getUroschesis()){
|
|
|
+ resultMap.computeIfPresent("尿潴留",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getBreathDepression()){
|
|
|
+ resultMap.computeIfPresent("呼吸抑制",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getHoarseness()){
|
|
|
+ resultMap.computeIfPresent("声音嘶哑",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getCognitionObstacle()){
|
|
|
+ resultMap.computeIfPresent("认知障碍",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getShrinkPressure()){
|
|
|
+ resultMap.computeIfPresent("收缩压",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getDiastolicPressure()){
|
|
|
+ resultMap.computeIfPresent("舒张压",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getHeartRate()){
|
|
|
+ resultMap.computeIfPresent("心率",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getFetalHeartRate()){
|
|
|
+ resultMap.computeIfPresent("胎心",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getBreathRate()){
|
|
|
+ resultMap.computeIfPresent("呼吸频率",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ if(null!=result.getBloodOxygenSaturation()){
|
|
|
+ resultMap.computeIfPresent("血氧饱和度",(k,v)->v+1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addPieContent(FunctionEvalConfig evalConfig, Map<String, Long> resultMap) {
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getStatics())){
|
|
|
+ resultMap.put("静息疼痛",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getActivity())){
|
|
|
+ resultMap.put("活动疼痛",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getCalm())){
|
|
|
+ resultMap.put("镇静评分",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getLeftArm())){
|
|
|
+ resultMap.put("左上肢",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getLeftLeg())){
|
|
|
+ resultMap.put("左下肢",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getRightArm())){
|
|
|
+ resultMap.put("右上肢",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getRightLeg())){
|
|
|
+ resultMap.put("右下肢",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getNauseaVomit())){
|
|
|
+ resultMap.put("恶心呕吐",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getItch())){
|
|
|
+ resultMap.put("瘙痒",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getVertigo())){
|
|
|
+ resultMap.put("眩晕",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getSoreThroat())){
|
|
|
+ resultMap.put("咽喉疼痛",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getUroschesis())){
|
|
|
+ resultMap.put("尿潴留",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getBreathDepression())){
|
|
|
+ resultMap.put("呼吸抑制",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getHoarseness())){
|
|
|
+ resultMap.put("声音嘶哑",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getCognitionObstacle())){
|
|
|
+ resultMap.put("认知障碍",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getShrinkPressure())){
|
|
|
+ resultMap.put("收缩压",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getDiastolicPressure())){
|
|
|
+ resultMap.put("舒张压",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getHeartRate())){
|
|
|
+ resultMap.put("心率",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getFetalHeartRate())){
|
|
|
+ resultMap.put("胎心",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getBreathRate())){
|
|
|
+ resultMap.put("呼吸频率",0L);
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(evalConfig.getBloodOxygenSaturation())){
|
|
|
+ resultMap.put("血氧饱和度",0L);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<LineResult> handleLine(List<CombineEvalResult> results, StatsTimeUnit unit) {
|
|
|
+ //对所有结果进行时间划分
|
|
|
+ Map<String, List<CombineEvalResult>> groupByTime = groupByTime(results, unit);
|
|
|
+ //获取所有镇痛信息
|
|
|
+ List<LineResult> result = new ArrayList<>();
|
|
|
+ result.add(addRatio(groupByTime));
|
|
|
+ //只对包含评价的数据进行时间划分
|
|
|
+ Map<String, List<CombineEvalResult>> exitEvalGroupByTime = groupByTime(
|
|
|
+ results
|
|
|
+ .stream()
|
|
|
+ .filter(evalResult -> StrUtil.isNotEmpty(evalResult.getEvalId()))
|
|
|
+ .collect(Collectors.toList())
|
|
|
+ , unit);
|
|
|
+ BusHospitalConfigEntity config = evalConfig();
|
|
|
+ if(config==null){
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ FunctionEvalConfig evalConfig = JSONUtil.toBean(JSONUtil.toJsonStr(config.getConfig()), FunctionEvalConfig.class);
|
|
|
+
|
|
|
+ addEvalLine(exitEvalGroupByTime,result,evalConfig);
|
|
|
+ //比率
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<TableResult> handleTable(List<CombineEvalResult> results, StatsTimeUnit unit) {
|
|
|
+ TableResult result = new TableResult();
|
|
|
+ BusHospitalConfigEntity config = evalConfig();
|
|
|
+ FunctionEvalConfig evalConfig = JSONUtil.toBean(JSONUtil.toJsonStr(config.getConfig()), FunctionEvalConfig.class);
|
|
|
+ //根据时间对结果进行区分统计
|
|
|
+ Map<String, List<CombineEvalResult>> groupByTime = groupByTime(results, unit);
|
|
|
+
|
|
|
+ List<StatsColumn> allColumn = getAllColumn(evalConfig);
|
|
|
+
|
|
|
+ List<Map<String, Object>> contents = new ArrayList<>();
|
|
|
+ result.setContent(contents);
|
|
|
+ result.setColumn(allColumn);
|
|
|
+ //根据时间区间对镇痛方式进行统计
|
|
|
+ groupByTime.forEach((timeRange,combineResult)->{
|
|
|
+ BigDecimal totalSize = BigDecimal.valueOf(CollectionUtil.size(combineResult));
|
|
|
+ //表格内容
|
|
|
+ long evalCount = combineResult.stream().filter(r -> StrUtil.isNotEmpty(r.getEvalId())).count();
|
|
|
+ LinkedHashMap<String, Object> contentValues = new LinkedHashMap<>();
|
|
|
+ contentValues.put("time",timeRange);
|
|
|
+ contentValues.put("infusionCount",totalSize);
|
|
|
+ contentValues.put("evalCount",evalCount);
|
|
|
+ contentValues.put("evalRatio",computeRatio(BigDecimal.valueOf(evalCount),totalSize));
|
|
|
+ //获取特定时间区间内
|
|
|
+ EvalTableResult evalTableResult = new EvalTableResult();
|
|
|
+ combineResult.stream()
|
|
|
+ .filter(evalResult -> StrUtil.isNotEmpty(evalResult.getEvalId()))
|
|
|
+ .forEach(evalTableResult::handle);
|
|
|
+ contentValues.putAll(evalTableResult);
|
|
|
+ contents.add(contentValues);
|
|
|
+ });
|
|
|
+
|
|
|
+ return Arrays.asList(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<StatsColumn> getAllColumn(FunctionEvalConfig config) {
|
|
|
+ List<StatsColumn> result = new ArrayList<>();
|
|
|
+ result.add(StatsColumn.of("时间","time"));
|
|
|
+ result.add(StatsColumn.of("输注次数","infusionCount"));
|
|
|
+ result.add(StatsColumn.of("评价次数","evalCount"));
|
|
|
+ result.add(StatsColumn.of("评价率","evalRatio",true));
|
|
|
+ if(Boolean.TRUE.equals(config.getStatics())){
|
|
|
+ result.add(StatsColumn.of("静息疼痛次数","静息疼痛次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getActivity())){
|
|
|
+ result.add(StatsColumn.of("活动疼痛次数","活动疼痛次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getCalm())){
|
|
|
+ result.add(StatsColumn.of("镇静评分次数","镇静评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getLeftArm())){
|
|
|
+ result.add(StatsColumn.of("左上肢评分次数","左上肢评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getLeftLeg())){
|
|
|
+ result.add(StatsColumn.of("左下肢评分次数","左下肢评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getRightArm())){
|
|
|
+ result.add(StatsColumn.of("右上肢评分次数","右上肢评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getRightLeg())){
|
|
|
+ result.add(StatsColumn.of("右下肢评分次数","右下肢评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getNauseaVomit())){
|
|
|
+ result.add(StatsColumn.of("恶心呕吐评分次数","恶心呕吐评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getItch())){
|
|
|
+ result.add(StatsColumn.of("瘙痒评分次数","瘙痒评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getVertigo())){
|
|
|
+ result.add(StatsColumn.of("眩晕评分次数","眩晕评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getSoreThroat())){
|
|
|
+ result.add(StatsColumn.of("咽喉疼痛评分次数","咽喉疼痛评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getUroschesis())){
|
|
|
+ result.add(StatsColumn.of("尿潴留评分次数","尿潴留评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getBreathDepression())){
|
|
|
+ result.add(StatsColumn.of("呼吸抑制评分次数","呼吸抑制评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getHoarseness())){
|
|
|
+ result.add(StatsColumn.of("声音嘶哑评分次数","声音嘶哑评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getCognitionObstacle())){
|
|
|
+ result.add(StatsColumn.of("认知障碍评分次数","认知障碍评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getShrinkPressure())){
|
|
|
+ result.add(StatsColumn.of("收缩压评分次数","收缩压评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getDiastolicPressure())){
|
|
|
+ result.add(StatsColumn.of("舒张压评分次数","舒张压评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getHeartRate())){
|
|
|
+ result.add(StatsColumn.of("心率评分次数","心率评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getFetalHeartRate())){
|
|
|
+ result.add(StatsColumn.of("胎心评分次数","胎心评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getBreathRate())){
|
|
|
+ result.add(StatsColumn.of("呼吸频率评分次数","呼吸频率评分次数"));
|
|
|
+ }
|
|
|
+ if(Boolean.TRUE.equals(config.getBloodOxygenSaturation())){
|
|
|
+ result.add(StatsColumn.of("血氧饱和度评分次数","血氧饱和度评分次数"));
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 描述:添加评价比率
|
|
|
+ * @author lifang
|
|
|
+ * @date 2022/6/8 21:50
|
|
|
+ * @param groupByTime
|
|
|
+ * @return LineResult
|
|
|
+ */
|
|
|
+ private LineResult<BigDecimal> addRatio(Map<String, List<CombineEvalResult>> groupByTime) {
|
|
|
+ LineResult<BigDecimal> result = LineResult.of("ratio",true,false,"评价占比分布图");
|
|
|
+ LineResult.LineContent<BigDecimal> ratioLine = new LineResult.LineContent<>("评价占比");
|
|
|
+ List<String> time = result.getTime();
|
|
|
+
|
|
|
+ //根据时间区间对镇痛方式进行统计
|
|
|
+ groupByTime.forEach((timeRange,combineResult)->{
|
|
|
+ BigDecimal totalSize = BigDecimal.valueOf(CollectionUtil.size(combineResult));
|
|
|
+ //获取特定时间区间内 评价次数
|
|
|
+ long evalCount = combineResult.stream().filter(r -> StrUtil.isNotEmpty(r.getEvalId())).count();
|
|
|
+ ratioLine.addValue(computeRatio(BigDecimal.valueOf(evalCount),totalSize));
|
|
|
+ time.add(timeRange);
|
|
|
+ });
|
|
|
+
|
|
|
+ result.setContent(Arrays.asList(ratioLine));
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addEvalLine(Map<String, List<CombineEvalResult>> groupByTime ,List<LineResult> result, FunctionEvalConfig evalConfig) {
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getStatics())) {
|
|
|
+ LineResult<BigDecimal> staticsLine = LineResult.of("staticsLine",false,false,"静息疼痛评分走势图");
|
|
|
+
|
|
|
+ handleMixPolyLines(groupByTime,staticsLine,
|
|
|
+ evalResult -> evalResult.getStatics()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getStatics()));
|
|
|
+ result.add(staticsLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getActivity())) {
|
|
|
+ LineResult<BigDecimal> activityLine =LineResult.of("activityLine",false,false,"活动疼痛评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,activityLine,
|
|
|
+ evalResult -> evalResult.getActivity()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getActivity()));
|
|
|
+ result.add(activityLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getCalm())) {
|
|
|
+ LineResult<BigDecimal> clamLine = LineResult.of("clamLine",false,false,"镇静评分评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,clamLine,
|
|
|
+ evalResult -> evalResult.getCalm()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getCalm()));
|
|
|
+ result.add(clamLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getLeftArm())) {
|
|
|
+ LineResult<BigDecimal> leftArmLine = LineResult.of("leftArmLine",false,false,"左上肢肌力评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,leftArmLine,
|
|
|
+ evalResult -> evalResult.getLeftArm()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getLeftArm()));
|
|
|
+ result.add(leftArmLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getRightArm())) {
|
|
|
+ LineResult<BigDecimal> rightArmLine = LineResult.of("rightArmLine",false,false,"右上肢肌力评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,rightArmLine,
|
|
|
+ evalResult -> evalResult.getRightArm()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getRightArm()));
|
|
|
+ result.add(rightArmLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getLeftLeg())) {
|
|
|
+ LineResult<BigDecimal> leftLegLine = LineResult.of("leftLegLine",false,false,"左下肢肌力评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,leftLegLine,
|
|
|
+ evalResult -> evalResult.getLeftLeg()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getLeftLeg()));
|
|
|
+ result.add(leftLegLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getRightLeg())) {
|
|
|
+ LineResult<BigDecimal> rightLegLine = LineResult.of("rightLegLine",false,false,"右下肢肌力评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,rightLegLine,
|
|
|
+ evalResult -> evalResult.getRightLeg()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getRightLeg()));
|
|
|
+ result.add(rightLegLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getNauseaVomit())) {
|
|
|
+ LineResult<BigDecimal> nauseaVomitLine =LineResult.of("nauseaVomitLine",false,false,"恶心呕吐评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,nauseaVomitLine,
|
|
|
+ evalResult -> evalResult.getNauseaVomit()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getNauseaVomit()));
|
|
|
+ result.add(nauseaVomitLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getItch())) {
|
|
|
+ LineResult<BigDecimal> itchLine = LineResult.of("itchLine",false,false,"瘙痒评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,itchLine,
|
|
|
+ evalResult -> evalResult.getItch()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getItch()));
|
|
|
+ result.add(itchLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getVertigo())) {
|
|
|
+ LineResult<BigDecimal> vertigoLine = LineResult.of("vertigoLine",false,false,"眩晕评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,vertigoLine,
|
|
|
+ evalResult -> evalResult.getVertigo()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getVertigo()));
|
|
|
+ result.add(vertigoLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getSoreThroat())) {
|
|
|
+ LineResult<BigDecimal> soreThroatLine = LineResult.of("soreThroatLine",false,false,"咽喉疼痛评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,soreThroatLine,
|
|
|
+ evalResult -> evalResult.getSoreThroat()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getSoreThroat()));
|
|
|
+ result.add(soreThroatLine);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getUroschesis())) {
|
|
|
+ LineResult<BigDecimal> uroschesisLine = LineResult.of("uroschesisLine",false,false,"尿潴留评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,uroschesisLine,
|
|
|
+ evalResult -> evalResult.getUroschesis()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getUroschesis()));
|
|
|
+ result.add(uroschesisLine);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getBreathDepression())) {
|
|
|
+ LineResult<BigDecimal> breathDepressionLine = LineResult.of("breathDepressionLine",false,false,"呼吸抑制评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,breathDepressionLine,
|
|
|
+ evalResult -> evalResult.getBreathDepression()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getBreathDepression()));
|
|
|
+ result.add(breathDepressionLine);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getHoarseness())) {
|
|
|
+ LineResult<BigDecimal> hoarsenessLine = LineResult.of("hoarsenessLine",false,false,"眩晕评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,hoarsenessLine,
|
|
|
+ evalResult -> evalResult.getHoarseness()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getHoarseness()));
|
|
|
+ result.add(hoarsenessLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getCognitionObstacle())) {
|
|
|
+ LineResult<BigDecimal> cognitionObstacleLine = LineResult.of("cognitionObstacleLine",false,false,"认知障碍评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,cognitionObstacleLine,
|
|
|
+ evalResult -> evalResult.getCognitionObstacle()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getCognitionObstacle()));
|
|
|
+ result.add(cognitionObstacleLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getSatisfaction())) {
|
|
|
+ LineResult<BigDecimal> satisfactionLine = LineResult.of("satisfactionLine",false,false,"满意度评分走势图");
|
|
|
+ handleMixPolyLines(groupByTime,satisfactionLine,
|
|
|
+ evalResult -> evalResult.getSatisfaction()!=null,
|
|
|
+ evalResult -> BigDecimal.valueOf(evalResult.getSatisfaction()));
|
|
|
+ result.add(satisfactionLine);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getShrinkPressure())) {
|
|
|
+ LineResult<BigDecimal> shrinkPressureLine = LineResult.of("shrinkPressureLine",false,false,"收缩压走势图");
|
|
|
+ handleMixPolyLines(groupByTime,shrinkPressureLine,
|
|
|
+ evalResult -> evalResult.getShrinkPressure()!=null,
|
|
|
+ CombineEvalResult::getShrinkPressure);
|
|
|
+ result.add(shrinkPressureLine);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getDiastolicPressure())) {
|
|
|
+ LineResult<BigDecimal> diastolicPressureLine = LineResult.of("diastolicPressureLine",false,false,"舒张压走势图");
|
|
|
+ handleMixPolyLines(groupByTime,diastolicPressureLine,
|
|
|
+ evalResult -> evalResult.getDiastolicPressure()!=null,
|
|
|
+ CombineEvalResult::getDiastolicPressure);
|
|
|
+ result.add(diastolicPressureLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getHeartRate())) {
|
|
|
+ LineResult<BigDecimal> heartRateLine =LineResult.of("heartRateLine",false,false,"心率走势图");
|
|
|
+ handleMixPolyLines(groupByTime,heartRateLine,
|
|
|
+ evalResult -> evalResult.getHeartRate()!=null,
|
|
|
+ CombineEvalResult::getHeartRate);
|
|
|
+ result.add(heartRateLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getFetalHeartRate())) {
|
|
|
+ LineResult<BigDecimal> fetalHeartRateLine = LineResult.of("fetalHeartRateLine",false,false,"胎心走势图");
|
|
|
+ handleMixPolyLines(groupByTime,fetalHeartRateLine,
|
|
|
+ evalResult -> evalResult.getFetalHeartRate()!=null,
|
|
|
+ CombineEvalResult::getFetalHeartRate);
|
|
|
+ result.add(fetalHeartRateLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getBreathRate())) {
|
|
|
+ LineResult<BigDecimal> breathRateLine = LineResult.of("breathRateLine",false,false,"呼吸频率走势图");
|
|
|
+ handleMixPolyLines(groupByTime,breathRateLine,
|
|
|
+ evalResult -> evalResult.getBreathRate()!=null,
|
|
|
+ CombineEvalResult::getBreathRate);
|
|
|
+ result.add(breathRateLine);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Boolean.TRUE.equals(evalConfig.getBloodOxygenSaturation())) {
|
|
|
+ LineResult<BigDecimal> bloodOxygenSaturationLine = LineResult.of("bloodOxygenSaturationLine",false,false,"血氧饱和度走势图");
|
|
|
+ handleMixPolyLines(groupByTime,bloodOxygenSaturationLine,
|
|
|
+ evalResult -> evalResult.getBloodOxygenSaturation()!=null,
|
|
|
+ CombineEvalResult::getBloodOxygenSaturation);
|
|
|
+ result.add(bloodOxygenSaturationLine);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private BusHospitalConfigEntity evalConfig(){
|
|
|
+ return configService.getOne(new QueryWrapper<BusHospitalConfigEntity>().lambda().eq(BusHospitalConfigEntity::getType, ConfigEnum.eval));
|
|
|
+ }
|
|
|
}
|