Browse Source

拉代码

recovery
wang1007152140 5 years ago
parent
commit
c41929054b
  1. 11
      tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java
  2. 15
      tcm/src/main/java/com/ccsens/tcm/bean/dto/StatisticDto.java
  3. 6
      tcm/src/main/java/com/ccsens/tcm/bean/vo/StatisticVo.java
  4. 3
      tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java
  5. 2
      tcm/src/main/java/com/ccsens/tcm/service/IPatientService.java
  6. 23
      tcm/src/main/java/com/ccsens/tcm/service/PatientService.java
  7. 4
      tcm/src/main/resources/application.yml
  8. 51
      tcm/src/main/resources/mapper_dao/PatientDao.xml

11
tcm/src/main/java/com/ccsens/tcm/api/StatisticalAnalysisController.java

@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author wang
@ -40,5 +41,13 @@ public class StatisticalAnalysisController {
log.info("统计每日病例调用完成");
return JsonResponse.newInstance().ok(countCase);
}
@MustLogin
@ApiOperation(value = "病例分析", notes = "w:病例分析")
@RequestMapping(value = "/countAnalysis", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<List<StatisticVo.SelGroupNum>> countAnalysis(@ApiParam @Validated @RequestBody QueryDto<StatisticDto.SelBinLCount> params) {
log.info("病例分析参数:{}",params);
List<StatisticVo.SelGroupNum> selGroupNum= patientService.countAnalysis(params.getParam(),params.getUserId());
log.info("病例分析调用完成");
return JsonResponse.newInstance().ok(selGroupNum);
}
}

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

@ -1,15 +1,18 @@
package com.ccsens.tcm.bean.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@Data
public class StatisticDto {
@Data
@ApiModel("每日病例统计传参")
public static class SelCount{
@ApiModelProperty("主治大夫id")
private Long userId;
@ -22,4 +25,16 @@ public class StatisticDto {
@ApiModelProperty("结束时间")
private Date endDate;
}
@Data
@ApiModel("病例分析传参")
public static class SelBinLCount{
@ApiModelProperty("搜索条件集合,不包含时间格式的条件")
private List<PatientDto.Condition> conditionList;
@ApiModelProperty("搜索条件集合,是包含时间格式的条件")
private List<PatientDto.ConditionDate> conditionListDate;
@ApiModelProperty("对照组id")
private Long[] inpatientId;
@ApiModelProperty("试题id")
private Long id;
}
}

6
tcm/src/main/java/com/ccsens/tcm/bean/vo/StatisticVo.java

@ -19,13 +19,17 @@ public class StatisticVo {
@Data
@ApiModel("病例分析")
public static class SelGroupNum{
@ApiModelProperty("对照组id")
private Long inpatientId;
@ApiModelProperty("试题数量")
private List<SelGroupList> list;
}
@Data
@ApiModel("病例分析详细数量")
public static class SelGroupList{
private String contents;
@ApiModelProperty("试题内容")
private String content;
@ApiModelProperty("数量")
private Integer nums;
}
}

3
tcm/src/main/java/com/ccsens/tcm/persist/dao/PatientDao.java

@ -23,4 +23,7 @@ public interface PatientDao {
List<PatientVo.SelPatient> selPatientInformationList(PatientDto.SelPatientList param);
Integer countCase(@Param("param") StatisticDto.SelCount param,@Param("inputStatus") byte inputStatus);
StatisticVo.SelGroupList countAnalysis(List<PatientDto.Condition> conditionList, List<PatientDto.ConditionDate> conditionListDate, Long aLong, Long id);
}

2
tcm/src/main/java/com/ccsens/tcm/service/IPatientService.java

@ -28,4 +28,6 @@ public interface IPatientService {
PageInfo<PatientVo.SelPatient> selPatientInformationList(PatientDto.SelPatientList param, Long userId);
StatisticVo.SelCountS countCase(StatisticDto.SelCount param, Long userId);
List<StatisticVo.SelGroupNum> countAnalysis(StatisticDto.SelBinLCount param, Long userId);
}

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

@ -32,6 +32,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@ -84,6 +86,8 @@ public class PatientService implements IPatientService {
PatientInformation patientInformation = patientInformationMapper.selectByPrimaryKey(param.getPatientId());
onsetTime=patientInformation.getCreatedAt();
}
//先查一下需要搜集多少次
//试题只需要记录3次的 9 和30 算分界限 <9 =0 ;<30 =14 ; >30 =90 记录2次的 270 算分界线 <270 算180 ,>270 算365
int one=9;
int two=30;
@ -93,17 +97,16 @@ public class PatientService implements IPatientService {
int three=270;
int threeFront=180;
int threeAfter=365;
//试题只需要记录2次的
if(param.getList().size()>0) {
for (int i = 0; i < param.getList().size(); i++) {
//先查询试题id,查看需要记录的次数
//先查询试题id,查看试题需要记录的次数
ReportCode reportCode = reportCodeMapper.selectByPrimaryKey(param.getList().get(i).getTestQuestionsId());
PatientRecord patientRecord=new PatientRecord();
BeanUtils.copyProperties(param.getList().get(i),patientRecord);
patientRecord.setPatientId(param.getPatientId());
patientRecord.setId(param.getList().get(i).getPatientRecordId());
if(param.getList().get(i).getPatientRecordId()!=null){
//患者记录表的id
patientRecord.setId(param.getList().get(i).getPatientRecordId());
@ -214,6 +217,20 @@ public class PatientService implements IPatientService {
return selCountS;
}
@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)
return selGroupNumsList;
for (int i = 0; i < param.getInpatientId().length; i++) {
StatisticVo.SelGroupNum selGroupNum =new StatisticVo.SelGroupNum();
StatisticVo.SelGroupList selGroupList= patientDao.countAnalysis(param.getConditionList(),param.getConditionListDate(),param.getInpatientId()[i],param.getId());
selGroupNum.setInpatientId(param.getInpatientId()[i]);
selGroupNum.getList().add(selGroupList);
}
return selGroupNumsList;
}
/**
* 换算时间差 返回两个时间 之间差几天要是小于1天按照1的算要是大于1的话小于2的话说的是秒啊按照2的算,进一法啊
* @param bigDate 大时间

4
tcm/src/main/resources/application.yml

@ -1,5 +1,5 @@
spring:
profiles:
active: dev
include: common, util-dev
active: test
include: common, util-test

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

@ -130,4 +130,55 @@
and tpi.update_at &lt; #{param.endDate}
</if>
</select>
<select id="countAnalysis" resultType="com.ccsens.tcm.bean.vo.StatisticVo$SelGroupList">
select if(LOCATE('其他'),'其他',tpr.contents) as content,count(*) as nums from t_patient_information tpi left join t_patient_record tpr on tpi.id=tpr.patient_id and tpr.rec_status=0
where tpi.rec_status=0
and tpi.inpatient_id=#{aLong}
<if test="id!=null and id!=0">
and tpr.test_questions_id=#{id}
</if>
and tpi.id in (
SELECT
tpi.id
FROM
t_patient_information tpi left join t_inpatient ti on ti.rec_status=0 and ti.id=tpi.inpatient_id
WHERE
tpi.rec_status = 0
AND tpi.id IN (
SELECT DISTINCT
( t.patient_id )
FROM
(
<trim suffixOverrides="INTERSECT">
<foreach collection="conditionList" item="item">
SELECT
tpr.patient_id
FROM
t_patient_record tpr
WHERE
tpr.rec_status = 0
AND tpr.test_questions_id = #{item.testQuestionsId}
AND tpr.contents LIKE concat('%',#{item.contents},'%')
INTERSECT
</foreach>
<foreach collection="conditionListDate" item="item1">
SELECT
tpr.patient_id
FROM
t_patient_record tpr
WHERE
tpr.rec_status = 0
AND tpr.test_questions_id = #{item1.testQuestionsId}
AND tpr.contents &gt; #{item1.startTime}
AND tpr.contents &lt; #{item1.endTime}
INTERSECT
</foreach>
</trim>
) t
)
)
<if test="id!=null and id!=0">
group by content
</if>
</select>
</mapper>
Loading…
Cancel
Save