Browse Source

分项-时间窗患者

master
ma 4 years ago
parent
commit
9155ccfeac
  1. 11
      src/main/java/com/ccsens/carbasics/api/StatisticalController.java
  2. 2
      src/main/java/com/ccsens/carbasics/bean/dto/FirstAidDto.java
  3. 16
      src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java
  4. 10
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java
  5. 8
      src/main/java/com/ccsens/carbasics/service/IStatisticalService.java
  6. 24
      src/main/java/com/ccsens/carbasics/service/StatisticalService.java
  7. 27
      src/main/resources/mapper_dao/FirstAidRecordDao.xml

11
src/main/java/com/ccsens/carbasics/api/StatisticalController.java

@ -72,4 +72,15 @@ public class StatisticalController {
// log.info("分项-溶栓患者/机械再通/脑出血:{}", );
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "分项-时间窗患者", notes = "分项-时间窗患者")
@RequestMapping(value = "/timeWindowsPatient", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<StatisticalVo.Common> timeWindowsPatient(@ApiParam @Validated @RequestBody QueryDto<StatisticalDto.TimeAndType> params) {
log.info("分项-时间窗患者:{}", params);
StatisticalVo.Common common = statisticalService.timeWindowsPatient(params.getParam(), params.getUserId());
log.info("分项-时间窗患者结果:{}", common);
return JsonResponse.newInstance().ok(common);
}
}

2
src/main/java/com/ccsens/carbasics/bean/dto/FirstAidDto.java

@ -24,7 +24,7 @@ public class FirstAidDto {
}
@Data
@ApiModel("加入急救")
@ApiModel("退出急救")
public static class QuitFirstAid{
@NotNull(message = "急救id不能为空")
@ApiModelProperty("急救id")

16
src/main/java/com/ccsens/carbasics/bean/dto/StatisticalDto.java

@ -29,6 +29,22 @@ public class StatisticalDto {
private Long endTime;
}
@Data
@ApiModel("分项-时间窗患者-请求")
public static class TimeAndType {
@NotNull(message = "项目id不能为空")
@ApiModelProperty("项目ID")
private Long projectId;
@NotNull
@ApiModelProperty("开始时间")
private Long startTime;
@NotNull
@ApiModelProperty("开始时间")
private Long endTime;
@NotNull
@ApiModelProperty("统计类型(0-每小时 1-每天 2-每月)")
private Byte countType;
}
@Data
@ApiModel("来院方式统计")
public static class CourtStatistics {

10
src/main/java/com/ccsens/carbasics/persist/dao/FirstAidRecordDao.java

@ -50,4 +50,14 @@ public interface FirstAidRecordDao extends FirstAidRecordMapper {
* @return 返回每个方式的数量
*/
List<StatisticalVo.Item> toCourtStatistics(@Param("hospitalIds")List<Long> hospitalIds, @Param("param")StatisticalDto.CourtStatistics param);
/**
* 分项-统计时间窗患者数
* @param hospitalIds 医院id
* @param startTime 开始时间
* @param endTime 结束时间
* @param type 统计类型
* @return 分项-统计时间窗患者数
*/
List<StatisticalVo.Item> countTimeWindowPatientFx(@Param("hospitalIds") List<Long> hospitalIds,@Param("startTime") Long startTime,@Param("endTime") Long endTime,@Param("type") String type);
}

8
src/main/java/com/ccsens/carbasics/service/IStatisticalService.java

@ -32,4 +32,12 @@ public interface IStatisticalService {
* @return 返回统计的信息
*/
StatisticalVo.Common toCourtStatistics(StatisticalDto.CourtStatistics param, Long userId);
/**
* 分项-时间窗患者
* @param param 请求参数
* @param userId 用户ID
* @return 统计结果
*/
StatisticalVo.Common timeWindowsPatient(StatisticalDto.TimeAndType param, Long userId);
}

24
src/main/java/com/ccsens/carbasics/service/StatisticalService.java

@ -80,7 +80,29 @@ public class StatisticalService implements IStatisticalService {
return common;
}
@Override
public StatisticalVo.Common timeWindowsPatient(StatisticalDto.TimeAndType param, Long userId) {
List<Long> hospitalIds = getHospitalIds(param.getProjectId());
String type = "";
if (0 == param.getCountType()) {
type = "%Y-%m-%d %H";
}
if (1 == param.getCountType()) {
type = "%Y-%m-%d";
}
if (2 == param.getCountType()) {
type = "%Y-%m";
}
List<StatisticalVo.Item> items = firstAidRecordDao.countTimeWindowPatientFx(hospitalIds,param.getStartTime(),param.getEndTime(),type);
StatisticalVo.Common common = new StatisticalVo.Common();
long total = 0L;
for (StatisticalVo.Item item : items) {
total += Integer.parseInt(item.getValue());
}
common.setTotal(total);
common.setList(items);
return common;
}
/**

27
src/main/resources/mapper_dao/FirstAidRecordDao.xml

@ -61,4 +61,31 @@
GROUP BY
r1.answer
</select>
<select id="countTimeWindowPatientFx" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Item">
SELECT
FROM_UNIXTIME(r2.answer / 1000, #{type}) AS name,
count(*) AS value
FROM
t_qcp_first_aid a,
t_qcp_first_aid_record r1,
t_qcp_first_aid_record r2
WHERE
a.id = r1.first_aid_id
AND r1.question_code = '发病时间'
AND a.id = r2.first_aid_id
AND r1.question_code = '到院时间'
AND r2.answer + 0 &gt;= #{startTime}
AND r2.answer + 0 &lt;= #{endTime}
AND a.hospital_id IN
<foreach collection="hospitalIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
AND r2.answer - r1.answer &lt; 6 * 60 * 60 * 1000
AND a.rec_status = 0
AND r1.rec_status = 0
AND r2.rec_status = 0
GROUP BY
FROM_UNIXTIME(r2.answer / 1000, #{type})
</select>
</mapper>

Loading…
Cancel
Save