Browse Source

根据认知测评分数查询患者信息

recovery
zhizhi wu 4 years ago
parent
commit
9f291b2845
  1. 2
      tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java
  2. 17
      tcm/src/main/java/com/ccsens/tcm/bean/dto/PatientDto.java
  3. 2
      tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java
  4. 3
      tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java
  5. 6
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  6. 66
      tcm/src/main/resources/mapper_dao/PatientDao.xml

2
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<StatisticVo.SelGroupNumAdd> countAnalysis(@ApiParam @Validated @RequestBody QueryDto<StatisticDto.SelBinLCount> params) {

17
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<Condition> conditionList;
@ApiModelProperty("搜索条件集合,是包含时间格式的条件")
private List<ConditionDate> conditionListDate;
@ApiModelProperty("认知报告单相关参数")
private List<Search> 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{

2
tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java

@ -41,6 +41,8 @@ public class StatisticDto {
private List<PatientDto.Condition> conditionList;
@ApiModelProperty("搜索条件集合,是包含时间格式的条件")
private List<PatientDto.ConditionDate> conditionListDate;
@ApiModelProperty("认知报告单相关参数")
private List<PatientDto.Search> reportParams;
@ApiModelProperty("对照组id")
private Long[] inpatientId;
@ApiModelProperty("试题id")

3
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<StatisticVo.SelGroupList> countAnalysis(@Param("conditionList")List<PatientDto.Condition> conditionList, @Param("conditionListDate")List<PatientDto.ConditionDate> conditionListDate, @Param("inpatientId")Long inpatientId, @Param("testQuestionsId")Long testQuestionsId,@Param("hospitalization")String hospitalization,@Param("inputStatus")Byte inputStatus,@Param("hospitalId")Long hospitalId);
List<StatisticVo.SelGroupList> countAnalysis(@Param("conditionList")List<PatientDto.Condition> conditionList, @Param("conditionListDate")List<PatientDto.ConditionDate> conditionListDate, @Param("reportParams") List<PatientDto.Search> reportParams, @Param("inpatientId")Long inpatientId, @Param("testQuestionsId")Long testQuestionsId,@Param("hospitalization")String hospitalization,@Param("inputStatus")Byte inputStatus,@Param("hospitalId")Long hospitalId);
/**
* 统计病例完成情况
* @param hospitalId 医院id

6
tcm/src/main/java/com/ccsens/tcm/service/PatientService.java

@ -270,10 +270,10 @@ public class PatientService implements IPatientService {
@Override
public List<StatisticVo.SelGroupNum> countAnalysis(StatisticDto.SelBinLCount param, Long userId) {
List<StatisticVo.SelGroupNum> selGroupNumsList= new ArrayList<StatisticVo.SelGroupNum>();
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<StatisticVo.SelGroupList> selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(),null,param.getTestQuestionsId(),param.getHospitalization(),param.getInputStatus(),param.getHospitalId());
List<StatisticVo.SelGroupList> 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<StatisticVo.SelGroupList> selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(),param.getInpatientId()[i],param.getTestQuestionsId(),param.getHospitalization(),param.getInputStatus(),param.getHospitalId());
List<StatisticVo.SelGroupList> 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);

66
tcm/src/main/resources/mapper_dao/PatientDao.xml

@ -64,7 +64,7 @@
<if test="inputStatus !=null">
and tpi.input_status=#{inputStatus}
</if>
<if test="(conditionList!=null and conditionList.size()!=0 ) or (conditionListDate != null and conditionListDate.size() !=0 )">
<if test="(conditionList!=null and conditionList.size()!=0 ) or (conditionListDate != null and conditionListDate.size() !=0 ) or (reportParams != null and reportParams.size() != 0)">
and tpi.id IN (
SELECT DISTINCT
( t.patient_id )
@ -106,6 +106,37 @@
INTERSECT
</foreach>
</if>
<if test="reportParams != null and reportParams.size() != 0">
<foreach collection="reportParams" item="item">
<if test="item.code != null and item.code != '' and (item.start != null or item.end != null)">
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
<trim suffixOverrides="AND">
<if test="item.start != null">
sum( score ) &gt;= #{item.start} AND
</if>
<if test="item.end != null">
sum( score ) &lt;= #{item.end} AND
</if>
</trim>
INTERSECT
</if>
</foreach>
</if>
</trim>
) t
)
@ -196,7 +227,7 @@
<if test="inputStatus !=null">
and tpi.input_status=#{inputStatus}
</if>
<if test="(conditionList!=null and conditionList.size()!=0 ) or (conditionListDate != null and conditionListDate.size() !=0 )">
<if test="(conditionList!=null and conditionList.size()!=0 ) or (conditionListDate != null and conditionListDate.size() !=0 ) or (reportParams != null and reportParams.size() != 0)">
and tpi.id IN (
SELECT DISTINCT
( t.patient_id )
@ -238,6 +269,37 @@
INTERSECT
</foreach>
</if>
<if test="reportParams != null and reportParams.size() != 0">
<foreach collection="reportParams" item="item">
<if test="item.code != null and item.code != '' and (item.start != null or item.end != null)">
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
<trim suffixOverrides="AND">
<if test="item.start != null">
sum( score ) &gt;= #{item.start} AND
</if>
<if test="item.end != null">
sum( score ) &lt;= #{item.end} AND
</if>
</trim>
INTERSECT
</if>
</foreach>
</if>
</trim>
) t
)

Loading…
Cancel
Save