From 9f291b28455af5e8cd6c819977a2a6b03dada5da Mon Sep 17 00:00:00 2001 From: zhizhi wu <2377881365@qq.com> Date: Thu, 11 Mar 2021 18:52:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=AE=A4=E7=9F=A5=E6=B5=8B?= =?UTF-8?q?=E8=AF=84=E5=88=86=E6=95=B0=E6=9F=A5=E8=AF=A2=E6=82=A3=E8=80=85?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/StatisticalAnalysisController.java | 2 +- .../com/ccsens/tcm/bean/dto/PatientDto.java | 17 +++++ .../com/ccsens/tcm/bean/dto/StatisticDto.java | 2 + .../ccsens/tcm/persist/dao/PatientDao.java | 3 +- .../ccsens/tcm/service/PatientService.java | 6 +- .../main/resources/mapper_dao/PatientDao.xml | 66 ++++++++++++++++++- 6 files changed, 89 insertions(+), 7 deletions(-) diff --git a/tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java b/tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java index 5feec3c1..19020bb9 100644 --- a/tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java +++ b/tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java @@ -42,7 +42,7 @@ public class StatisticalAnalysisController { log.info("统计每日病例调用完成"); return JsonResponse.newInstance().ok(countCase); } - @MustLogin +// @MustLogin @ApiOperation(value = "病例分析", notes = "w:病例分析") @RequestMapping(value = "/countAnalysis", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) public JsonResponse countAnalysis(@ApiParam @Validated @RequestBody QueryDto params) { diff --git a/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java b/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java index fe447190..1451ba1d 100644 --- a/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java +++ b/tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.Max; import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; @@ -104,6 +105,9 @@ public class PatientDto { private List conditionList; @ApiModelProperty("搜索条件集合,是包含时间格式的条件") private List conditionListDate; + @ApiModelProperty("认知报告单相关参数") + private List reportParams; + @Min(1) @ApiModelProperty("当前页") private Integer pageNum=1; @@ -112,6 +116,19 @@ public class PatientDto { @ApiModelProperty("每页数量") private Integer pageSize=10; } + + @Data + @ApiModel("搜索报告单参数-请求") + public static class Search { + @ApiModelProperty("报告单类型") + @NotEmpty(message="请选择查询类型") + private String code; + @ApiModelProperty("最低分数") + private Integer start; + @ApiModelProperty("最高分数") + private Integer end; + } + @Data @ApiModel("查询患者的搜索条件详情") public static class Condition{ diff --git a/tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java b/tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java index b67cde28..fb740465 100644 --- a/tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java +++ b/tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java @@ -41,6 +41,8 @@ public class StatisticDto { private List conditionList; @ApiModelProperty("搜索条件集合,是包含时间格式的条件") private List conditionListDate; + @ApiModelProperty("认知报告单相关参数") + private List reportParams; @ApiModelProperty("对照组id") private Long[] inpatientId; @ApiModelProperty("试题id") diff --git a/tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java b/tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java index 956f23c4..fc088e5d 100644 --- a/tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java +++ b/tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java @@ -30,6 +30,7 @@ public interface PatientDao { * * @param conditionList 没有时间条件 * @param conditionListDate 有时间条件 + * @param reportParams 认知量表 * @param inpatientId 对照组id * @param testQuestionsId 测试题id * @param hospitalization 住院号 @@ -37,7 +38,7 @@ public interface PatientDao { * @param hospitalId 医院id * @return */ - List countAnalysis(@Param("conditionList")List conditionList, @Param("conditionListDate")List conditionListDate, @Param("inpatientId")Long inpatientId, @Param("testQuestionsId")Long testQuestionsId,@Param("hospitalization")String hospitalization,@Param("inputStatus")Byte inputStatus,@Param("hospitalId")Long hospitalId); + List countAnalysis(@Param("conditionList")List conditionList, @Param("conditionListDate")List conditionListDate, @Param("reportParams") List reportParams, @Param("inpatientId")Long inpatientId, @Param("testQuestionsId")Long testQuestionsId,@Param("hospitalization")String hospitalization,@Param("inputStatus")Byte inputStatus,@Param("hospitalId")Long hospitalId); /** * 统计病例完成情况 * @param hospitalId 医院id diff --git a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java index 8e26868c..d57d95c9 100644 --- a/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java +++ b/tcm/src/main/java/com/ccsens/tcm/service/PatientService.java @@ -270,10 +270,10 @@ public class PatientService implements IPatientService { @Override public List countAnalysis(StatisticDto.SelBinLCount param, Long userId) { List selGroupNumsList= new ArrayList(); - if(param.getInpatientId()!=null && param.getInpatientId().length==0) { + if(param.getInpatientId() ==null || param.getInpatientId().length==0) { StatisticVo.SelGroupNum selGroupNum =new StatisticVo.SelGroupNum(); selGroupNum.setName("总人数"); - List selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(),null,param.getTestQuestionsId(),param.getHospitalization(),param.getInputStatus(),param.getHospitalId()); + List selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(), param.getReportParams(),null,param.getTestQuestionsId(),param.getHospitalization(),param.getInputStatus(),param.getHospitalId()); selGroupNum.setInpatientId(null); selGroupNum.setList(selGroupList); selGroupNumsList.add(selGroupNum); @@ -282,7 +282,7 @@ public class PatientService implements IPatientService { for (int i = 0; i < param.getInpatientId().length; i++) { StatisticVo.SelGroupNum selGroupNum =new StatisticVo.SelGroupNum(); selGroupNum.setName(inpatientMapper.selectByPrimaryKey(param.getInpatientId()[i]).getName()); - List selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(),param.getInpatientId()[i],param.getTestQuestionsId(),param.getHospitalization(),param.getInputStatus(),param.getHospitalId()); + List selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(), param.getReportParams(),param.getInpatientId()[i],param.getTestQuestionsId(),param.getHospitalization(),param.getInputStatus(),param.getHospitalId()); selGroupNum.setInpatientId(param.getInpatientId()[i]); selGroupNum.setList(selGroupList); selGroupNumsList.add(selGroupNum); diff --git a/tcm/src/main/resources/mapper_dao/PatientDao.xml b/tcm/src/main/resources/mapper_dao/PatientDao.xml index 76b77606..fbfab283 100644 --- a/tcm/src/main/resources/mapper_dao/PatientDao.xml +++ b/tcm/src/main/resources/mapper_dao/PatientDao.xml @@ -64,7 +64,7 @@ and tpi.input_status=#{inputStatus} - + and tpi.id IN ( SELECT DISTINCT ( t.patient_id ) @@ -106,6 +106,37 @@ INTERSECT + + + + SELECT + r.patient_id + FROM + question.t_ht_patient_score s, + question.t_ht_question q, + question.t_ht_patient_report r + WHERE + s.question_id = q.id + AND s.patient_report_id = r.id + AND s.question_parent_code = #{item.code} + AND s.type IN ( 0, 2 ) + AND s.is_del = 0 + AND q.is_del = 0 + GROUP BY + patient_report_id + HAVING + + + sum( score ) >= #{item.start} AND + + + sum( score ) <= #{item.end} AND + + + INTERSECT + + + ) t ) @@ -196,7 +227,7 @@ and tpi.input_status=#{inputStatus} - + and tpi.id IN ( SELECT DISTINCT ( t.patient_id ) @@ -238,6 +269,37 @@ INTERSECT + + + + SELECT + r.patient_id + FROM + question.t_ht_patient_score s, + question.t_ht_question q, + question.t_ht_patient_report r + WHERE + s.question_id = q.id + AND s.patient_report_id = r.id + AND s.question_parent_code = #{item.code} + AND s.type IN ( 0, 2 ) + AND s.is_del = 0 + AND q.is_del = 0 + GROUP BY + patient_report_id + HAVING + + + sum( score ) >= #{item.start} AND + + + sum( score ) <= #{item.end} AND + + + INTERSECT + + + ) t )