Browse Source

患者列表

master
zhizhi wu 4 years ago
parent
commit
03ee81fbe5
  1. 2
      src/main/java/com/ccsens/carbasics/bean/dto/PatientDto.java
  2. 35
      src/main/java/com/ccsens/carbasics/bean/vo/FirstAidLogVo.java
  3. 29
      src/main/java/com/ccsens/carbasics/bean/vo/PatientVo.java
  4. 49
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidDao.java
  5. 22
      src/main/java/com/ccsens/carbasics/persist/dao/FirstAidLogDao.java
  6. 37
      src/main/java/com/ccsens/carbasics/service/FirstAidService.java
  7. 155
      src/main/resources/mapper_dao/FirstAidDao.xml
  8. 35
      src/main/resources/mapper_dao/FirstAidLogDao.xml

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

@ -32,7 +32,7 @@ public class PatientDto {
@ApiModelProperty("第几页")
@Min(value = 1)
private int page = 1;
private int pageNum = 1;
@ApiModelProperty("每页多少条")
@Min(value = 1)
@Max(value=100)

35
src/main/java/com/ccsens/carbasics/bean/vo/FirstAidLogVo.java

@ -0,0 +1,35 @@
package com.ccsens.carbasics.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2021/8/31 11:25
*/
public class FirstAidLogVo {
@ApiModel("参与者")
@Data
public static class JoinMember{
@ApiModelProperty("急救ID")
private Long firstAidId;
@ApiModelProperty("参与者信息")
private List<Member> doctors;
}
@ApiModel("参与者-成员")
@Data
public static class Member{
@ApiModelProperty("日志ID")
private Long id;
@ApiModelProperty("角色 0:分诊护士 1:神内医生 2:神外医生")
private byte role;
@ApiModelProperty("医生名字")
private String name;
}
}

29
src/main/java/com/ccsens/carbasics/bean/vo/PatientVo.java

@ -16,8 +16,6 @@ public class PatientVo {
@Data
@ApiModel("医院下的患者列表")
public static class QueryPatientList{
@ApiModelProperty("id")
private Long id;
@ApiModelProperty("急救id")
private Long firstAidId;
@ApiModelProperty("名称")
@ -34,28 +32,15 @@ public class PatientVo {
private byte dataStatus;
@ApiModelProperty("模板类型 0:神内 1:神外")
private byte type;
@ApiModelProperty("发病时间")
private String morbidityTime;
@ApiModelProperty("启动绿道时间")
private String greenWayTime;
@ApiModelProperty("转归去向")
private String transformation;
@ApiModelProperty("转归时间")
private String transformationTime;
@ApiModelProperty("急救:发病时间 转归:出院时间")
private String record1;
@ApiModelProperty("急救:到院时间 转归:离院方式")
private String record2;
@ApiModelProperty("参与者")
private List<FirstAidLogVo.Member> doctors;
}
@Data
@ApiModel("到场医生的信息")
public static class Doctor{
@ApiModelProperty("医生id")
private Long id;
@ApiModelProperty("医生职位")
private int post;
@ApiModelProperty("医生姓名")
private String name;
}
@Data
@ApiModel("急救记录信息")

49
src/main/java/com/ccsens/carbasics/persist/dao/FirstAidDao.java

@ -1,6 +1,8 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.bean.dto.PatientDto;
import com.ccsens.carbasics.bean.dto.StatisticalDto;
import com.ccsens.carbasics.bean.vo.PatientVo;
import com.ccsens.carbasics.bean.vo.StatisticalVo;
import com.ccsens.carbasics.persist.mapper.FirstAidMapper;
import org.apache.ibatis.annotations.Param;
@ -14,49 +16,12 @@ import java.util.List;
*/
@Repository
public interface FirstAidDao extends FirstAidMapper {
/**
* 根据急救ID查询所有的成员ID
* @param aidId 急救ID
* @return userID
*/
List<Long> getUserIdById(@Param("aidId") Long aidId);
/**
* 根据项目id查询急救id
* @param projectId 项目id
* @return 急救id
*/
Long getIdByProjectId(@Param("projectId") Long projectId);
/**
* 查询质控报告
* @param param 查询条件
* @param hospitalId 医院ID
* @return 质控报告
*/
List<StatisticalVo.Quality> queryQuality(@Param("param") StatisticalDto.Quality param, @Param("hospitalId") Long hospitalId);
/**
* 查询指定时间的溶栓中位数
* @param date 日期
* @param type 0月质控 1周质控 2日质控
* @return 中位数
* 查询和用户相关的患者信息
* @param param 条件
* @param userId 用户
* @return 患者基础信息
*/
BigDecimal getMedian(@Param("date") String date, @Param("type") byte type);
/**
* 查询溶栓的日期
* @return 日期
* @param hospitalId 医院ID
*/
List<String> queryThrombolyticDay(@Param("hospitalId") Long hospitalId);
/**
* 根据急救ID查询患者名字
* @param id 急救ID
* @return 患者名字
*/
String getPatientName(@Param("id") Long id);
List<Integer> selResult(@Param("hospitalId") Long hospitalId, @Param("year") String year);
List<PatientVo.QueryPatientList> querySelf(@Param("param") PatientDto.QueryPatient param, @Param("userId") Long userId);
}

22
src/main/java/com/ccsens/carbasics/persist/dao/FirstAidLogDao.java

@ -0,0 +1,22 @@
package com.ccsens.carbasics.persist.dao;
import com.ccsens.carbasics.bean.vo.FirstAidLogVo;
import com.ccsens.carbasics.persist.mapper.FirstAidLogMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @description:
* @author: whj
* @time: 2021/8/31 11:32
*/
public interface FirstAidLogDao extends FirstAidLogMapper {
/**
* 查询参与急救的医生\护士信息
* @param firstAidIds 急救列表
* @return 医生信息
*/
List<FirstAidLogVo.JoinMember> queryMember(@Param("firstAidIds") List<Long> firstAidIds);
}

37
src/main/java/com/ccsens/carbasics/service/FirstAidService.java

@ -1,11 +1,16 @@
package com.ccsens.carbasics.service;
import cn.hutool.core.collection.CollectionUtil;
import com.ccsens.carbasics.bean.dto.PatientDto;
import com.ccsens.carbasics.bean.vo.FirstAidLogVo;
import com.ccsens.carbasics.bean.vo.OrganizationVo;
import com.ccsens.carbasics.bean.vo.PatientVo;
import com.ccsens.carbasics.persist.dao.FirstAidDao;
import com.ccsens.carbasics.persist.dao.FirstAidLogDao;
import com.ccsens.carbasics.persist.dao.OrganizationDao;
import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -13,6 +18,10 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@ -21,6 +30,10 @@ public class FirstAidService implements IFirstAidService{
@Resource
private OrganizationDao organizationDao;
@Resource
private FirstAidDao firstAidDao;
@Resource
private FirstAidLogDao firstAidLogDao;
@Override
public PageInfo<PatientVo.QueryPatientList> querySelf(PatientDto.QueryPatient param, Long userId) {
@ -29,6 +42,28 @@ public class FirstAidService implements IFirstAidService{
if (basic == null) {
throw new BaseException(DefaultCodeError.NO_DATA_MODIFY_PRIVILEGE);
}
return null;
// 基础信息
PageHelper.startPage(param.getPageNum(), param.getPageSize());
List<PatientVo.QueryPatientList> list = firstAidDao.querySelf(param, userId);
if (CollectionUtil.isEmpty(list)) {
return new PageInfo<>(list);
}
log.info("查询日志");
List<Long> firstAidIds = new ArrayList<>();
Map<Long, PatientVo.QueryPatientList> map = new HashMap<>();
list.forEach(aid -> {
firstAidIds.add(aid.getFirstAidId());
map.put(aid.getFirstAidId(), aid);
});
// 查询医生信息
List<FirstAidLogVo.JoinMember> members = firstAidLogDao.queryMember(firstAidIds);
if (CollectionUtil.isEmpty(members)) {
return new PageInfo<>(list);
}
members.forEach(member -> {
map.get(member.getFirstAidId()).setDoctors(member.getDoctors());
});
log.info("设置成员");
return new PageInfo<>(list);
}
}

155
src/main/resources/mapper_dao/FirstAidDao.xml

@ -1,132 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.carbasics.persist.dao.FirstAidDao">
<select id="getUserIdById" resultType="Long">
SELECT
m.user_id
FROM
t_qcp_first_aid a,
t_pro_member m
WHERE
a.project_id = m.project_id
AND a.id = #{aidId}
AND a.rec_status = 0
AND m.rec_status = 0
</select>
<select id="queryQuality" resultType="com.ccsens.carbasics.bean.vo.StatisticalVo$Quality">
select
<select id="querySelf" resultType="com.ccsens.carbasics.bean.vo.PatientVo$QueryPatientList">
select a.id as firstAidId, a.name, a.gender, a.age, a.data_status as dataStatus,
a.value_type as demonstrate, a.type as type, r1.answer as record1, r2.answer as record2
from
t_qcp_first_aid a
left join t_qcp_first_aid_member m
on a.id = m.first_aid_id and m.rec_status = 0
<choose>
<when test="param.type == 0">
DATE_FORMAT(a.created_at,'%Y-%m') as date,
and m.create_user_id = #{userId}
</when>
<when test="param.type == 1">
and m.record_user_id in (1000, 0)
</when>
<otherwise>
concat(DATE_FORMAT(a.created_at,'%Y-'), week(a.created_at)) as date,
</otherwise>
</choose>
count(a.id) as total,
count(r.id) as rongshuan,
max(r.answer - a.arrive_hospital_time)/60000 as max,
min(r.answer - a.arrive_hospital_time)/60000 as min,
avg(r.answer - a.arrive_hospital_time)/60000 as avg,
count(if(r.answer - a.arrive_hospital_time &lt;= 3600000, 1, null)) as dabiao
from t_qcp_first_aid a left join t_qcp_patient p on a.patient_id = p.id
left join t_qcp_first_aid_record r on a.id = r.first_aid_id and r.question_code = 'JMRSSJ' and r.rec_status = 0
where p.hospital_id = #{hospitalId} and a.rec_status = 0 and p.rec_status = 0
<if test="param.startTime != null and param.startTime != 0">
and unix_timestamp(a.created_at)*1000 &gt;= #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != 0">
and unix_timestamp(a.created_at)*1000 &lt;= #{param.endTime}
</if>
<choose>
<when test="param.type == 0">
and DATE_FORMAT(a.created_at,'%Y-%m') = FROM_UNIXTIME(r.answer/1000,'%Y-%m')
GROUP BY DATE_FORMAT(a.created_at,'%Y-%m')
</when>
<otherwise>
and concat(DATE_FORMAT(a.created_at,'%Y-'), week(a.created_at)) = concat(DATE_FORMAT(from_unixtime(r.answer/1000),'%Y-'), week(from_unixtime(r.answer/1000)))
GROUP BY DATE_FORMAT(a.created_at,'%Y-%m')
</otherwise>
</choose>
</select>
<select id="getMedian" resultType="java.math.BigDecimal">
SELECT AVG(dd.val) as median_val
FROM (
SELECT d.val, @rownum:=@rownum+1 as `row_number`, @total_rows:=@rownum
FROM
(select r.answer/60000 as val from t_qcp_first_aid a, t_qcp_first_aid_record r
where a.id = r.first_aid_id and r.question_code = 'JMRSSJ'
<choose>
<when test="type == 0">and FROM_UNIXTIME(r.answer/1000,'%Y-%m') = #{date} </when>
<when test="type == 1">and concat(DATE_FORMAT(a.created_at,'%Y-'), week(a.created_at)) = #{date} </when>
<when test="type == 2">and FROM_UNIXTIME(r.answer/1000,'%Y-%m-%d') = #{date} </when>
</choose>
) d,
(SELECT @rownum:=0) r
WHERE d.val is NOT NULL
ORDER BY d.val
) as dd
WHERE dd.row_number IN ( FLOOR((@total_rows+1)/2), FLOOR((@total_rows+2)/2) );
</select>
<select id="queryThrombolyticDay" resultType="java.lang.String">
select distinct FROM_UNIXTIME(r.answer/1000,'%Y-%m-%d') as day
from t_qcp_first_aid a, t_qcp_first_aid_record r, t_qcp_patient p
where a.id = r.first_aid_id and a.patient_id = p.id and p.hospital_id = #{hospitalId}
and r.question_code = 'JMRSSJ' and a.rec_status = 0 and p.rec_status = 0 and r.rec_status = 0
</select>
<select id="getIdByProjectId" resultType="java.lang.Long">
SELECT
id
FROM
t_qcp_first_aid AS a
WHERE
rec_status = 0
AND project_id = #{projectId}
LIMIT 1
</select>
<select id="getPatientName" resultType="java.lang.String">
SELECT
p.NAME
FROM
t_qcp_first_aid a,
t_qcp_patient p
WHERE
a.patient_id = p.id
AND a.id = #{id}
AND a.rec_status = 0
AND p.rec_status = 0
</select>
<select id="selResult" resultType="java.lang.Integer">
select
if(tfa.num is NULL,0,tfa.num) as num
FROM
(SELECT
concat( #{year}, `name` ) AS `name`
FROM
t_statistics_month ) tsm
LEFT JOIN (
SELECT
tfa.da,
count( tfa.da ) AS num
FROM
(
SELECT
FROM_UNIXTIME( a.time / 1000, '%Y-%m' ) AS da
FROM
`t_qcp_first_aid` a LEFT JOIN t_qcp_patient p on a.patient_id = p.id and p.rec_status = 0
WHERE
a.rec_status = 0
AND p.hospital_id = #{hospitalId}
AND FROM_UNIXTIME( time / 1000, '%Y' ) = #{year}
) tfa
GROUP BY
tfa.da
ORDER BY
tfa.da
) tfa on tsm.`name`=tfa.`da`
left join t_qcp_first_aid_record r
on a.id = r.first_aid_id
and r.question_code = 'CYQK-CYSJ' and r.rec_status = 0
left join t_qcp_first_aid_record r1 on a.id = r1.first_aid_id and r1.rec_status = 0
<choose>
<when test="param.firstAidType == 0">and r1.question_code='JBXX-FBSJ'</when>
<when test="param.firstAidType == 1">and r1.question_code='CYQK-CYSJ'</when>
</choose>
left join t_qcp_first_aid_record r2 on a.id = r2.first_aid_id and r2.rec_status = 0
<choose>
<when test="param.firstAidType == 0">and r2.question_code='JBXX-DYSJ'</when>
<when test="param.firstAidType == 1">and r2.question_code='CYQK-LYFS'</when>
</choose>
where
<choose>
<when test="param.firstAidType == 0">r.id is null</when>
<when test="param.firstAidType == 1"> r.id is not null</when>
<otherwise>r.id is null</otherwise>
</choose>
<if test="param.name != null and param.name != ''">
and a.name like concat('%', #{param.name}, '%')
</if>
</select>
</mapper>

35
src/main/resources/mapper_dao/FirstAidLogDao.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ccsens.carbasics.persist.dao.FirstAidLogDao">
<resultMap id="memberMap" type="com.ccsens.carbasics.bean.vo.FirstAidLogVo$JoinMember">
<id column="first_aid_id" property="firstAidId"/>
<collection property="doctors" ofType="com.ccsens.carbasics.bean.vo.FirstAidLogVo$Member">
<id column="id" property="id"/>
<result column="role" property="role"/>
<result column="name" property="name"/>
</collection>
</resultMap>
<select id="queryMember" resultMap="memberMap">
SELECT
l.id,
l.first_aid_id,
l.operation_role as role,
m.name
FROM
t_qcp_first_aid_log l,
t_organization_member m
WHERE
l.operation_user_id = m.user_id
AND l.operation_type IN ( 0, 7 )
AND l.operation_role IN ( 0, 1, 2 )
AND l.first_aid_id IN
<foreach collection="firstAidIds" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
AND l.rec_status = 0
AND m.rec_status = 0
</select>
</mapper>
Loading…
Cancel
Save