统计列表:查询、SQL修改及优化、导出功能修改等

master
hujl 4 years ago
parent 43011e6f64
commit 273c88e180

@ -67,9 +67,9 @@ public class VCountController {
@ResponseBody
@RequestMapping(value = "/exportExcel")
public void exportExcel(HttpServletResponse response, V_Count vCount) throws Exception {
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
String[] header = {"科室代码","科室名称","出院人数","已归档","未归档","死亡人数","归档率(%)","2日率(%)","3日率(%)","7日率(%)"};
String[] fileNames = {"deptCode","deptName","outNum","fileNum","unfileNum","deathNum","fileRate","day2Rate","day3Rate","day7Rate"};
response.setContentType("application/vnd.ms-excel;charset=UTF-8");//归档率(%) fileRate
String[] header = {"科室代码","科室名称","在院合计","出院合计","已归档数","未归档数","死亡人数","2日死亡人数","3日死亡人数","归档率(%)","2日率(%)","3日率(%)","7日率(%)","迟交合计","迟交率(%)","及时合计","及时率(%)"};
String[] fileNames = {"deptCode","deptName","inNum","isOutNum","fileNum","unfileNum","deathNum","death2Num","death3Num","fileRate","day2Rate","day3Rate","day7Rate","timeOutNum","timeOutRate","inTime","inTimeRate"};
//文件名
String fileName = "统计数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
//构造excel的数据
@ -82,13 +82,13 @@ public class VCountController {
@RequestMapping(value = "/exportExcel2")
public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception {
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
String[] header = {"名字,入院科室,入院日期,出院科室,出院日期,主管医生"};
String[] header = {"患者姓名","入院科室","入院日期","出院科室","出院日期","主管医生"};
String[] fileNames = {"name","deptAdmissionTo","admissionDateTime","deptName","dischargeDateTime","doctorInCharge"};
//文件名
String fileName = "未归档病历列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
//构造excel的数据
List<Archive_Master_Vo> list = archiveMasterService.selectByUnfileAndColumn(archiveMasterVo,null,null);
Emr_Dictionary dic = new Emr_Dictionary();
/* Emr_Dictionary dic = new Emr_Dictionary();
dic.setEffective(1);
dic.setTypecode("dept_code");
//科室列表
@ -109,7 +109,7 @@ public class VCountController {
list.get(i).setDeptAdmissionTo(dept2);
}
}
}
}*/
ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames);
String result=utils.exportExcelToFilePath(response,utils.listConvert(list));

@ -6,6 +6,8 @@
*/
package com.emr.entity;
import org.apache.commons.lang3.StringUtils;
public class V_Count {
private String deptCode;
@ -21,6 +23,10 @@ public class V_Count {
private Integer deathNum;
private Integer death2Num;
private Integer death3Num;
private String fileRate;
private String day2Rate;
@ -165,6 +171,22 @@ public class V_Count {
this.deathNum = deathNum;
}
public Integer getDeath2Num() {
return death2Num;
}
public void setDeath2Num(Integer death2Num) {
this.death2Num = death2Num;
}
public Integer getDeath3Num() {
return death3Num;
}
public void setDeath3Num(Integer death3Num) {
this.death3Num = death3Num;
}
public String getFileRate() {
return fileRate;
}

@ -538,11 +538,8 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
});
for (Emr_Fault_Vo emr_fault_vo : list) {
//主管医生
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getDoctorInCharge());
//创建人
userInfo = mappedMovies.get(emr_fault_vo.getCreater());
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getCreater());
if (userInfo == null) {
emr_fault_vo.setCreater(emr_fault_vo.getCreater());
} else {
@ -570,9 +567,8 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
});
for (Emr_Fault_Vo emr_fault_vo : list) {
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getDoctorInCharge());
//创建人
userInfo = mappedMovies.get(emr_fault_vo.getCreater());
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getCreater());
if (userInfo == null) {
emr_fault_vo.setCreater(emr_fault_vo.getCreater());
} else {

@ -28,7 +28,8 @@ public class V_CountServiceImpl implements V_CountService {
@Override
public List<V_Count> selectByCol(V_Count record) {
return vCountMapper.selectByCol(record);
List<V_Count> list = vCountMapper.selectByCol(record);
return list;
}

@ -10,6 +10,8 @@
<result column="fileNum" jdbcType="INTEGER" property="fileNum" />
<result column="unfileNum" jdbcType="INTEGER" property="unfileNum" />
<result column="deathNum" jdbcType="INTEGER" property="deathNum" />
<result column="death2Num" jdbcType="INTEGER" property="death2Num" />
<result column="death3Num" jdbcType="INTEGER" property="death3Num" />
<result column="fileRate" jdbcType="NVARCHAR" property="fileRate" />
<result column="day2Rate" jdbcType="NVARCHAR" property="day2Rate" />
<result column="day3Rate" jdbcType="NVARCHAR" property="day3Rate" />
@ -18,13 +20,10 @@
<result column="endDate" jdbcType="NVARCHAR" property="endDate"/>
<result column="overdue" jdbcType="NVARCHAR" property="overdue"/>
<result column="timeOutNum" jdbcType="INTEGER" property="timeOutNum"/>
<result column="inTime" jdbcType="INTEGER" property="inTime"/>
<result column="isOutNum" jdbcType="INTEGER" property="isOutNum"/>
<result column="timeOutRate" jdbcType="NVARCHAR" property="timeOutRate"/>
<result column="inTimeRate" jdbcType="NVARCHAR" property="inTimeRate"/>
</resultMap>
<resultMap id="BaseResultMap2" type="com.emr.entity.V_Count2">
<result column="deptCode" jdbcType="NVARCHAR" property="deptCode"/>
@ -39,49 +38,42 @@
<result column="expiredDay" jdbcType="NVARCHAR" property="expiredDay"/>
</resultMap>
<sql id="Base_Column_List">
deptCode, deptName, inNum, outNum, fileNum, unfileNum, deathNum, fileRate,
deptCode, deptName, inNum, outNum, fileNum, unfileNum, deathNum, death2Num, death3Num, fileRate,
day2Rate, day3Rate, day7Rate
</sql>
<select id="selectByCol" parameterType="com.emr.entity.V_Count" resultMap="BaseResultMap">
<![CDATA[
SELECT deptCode, deptName,ISNULL(timeOutNum,0)timeOutNum,ISNULL(isOutNum,0)isOutNum,ISNULL(inTime,0) inTime,ISNULL(timeOutRate,'0') timeOutRate,ISNULL(inTimeRate,'0') inTimeRate FROM (select DISTINCT c.dept_name as deptCode,t8.Name as deptName,t1.isOutNum ,n1.timeOutNum,
CONVERT(decimal(8,2),n1.timeOutNum*1./t1.isOutNum) as timeOutRate,(t1.isOutNum-n1.timeOutNum) as inTime,CONVERT(decimal(8,2),(t1.isOutNum-n1.timeOutNum)*1./t1.isOutNum) as inTimeRate
from archive_master as c
]]>
left join (select dept_name,COUNT(*) AS inNum from archive_master as s where s.ArchiveState in('在院')
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t on c.dept_name= t.dept_name
left join (select dept_name,COUNT(*) AS isOutNum from archive_master as s where s.ArchiveState!='在院'
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!--<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
SELECT a.dept_name deptCode,ISNULL(e.name, a.dept_name) deptName,
a.deathNum,a.death2Num,a.death3Num,a.fileNum, a.inNum, a.isOutNum, a.unfileNum,
ISNULL((a.day2-a.death2Num)/NULLIF((a.fileNum-a.deathNum), 0) ,'0') as day2Rate,
ISNULL((a.day3-a.death3Num)/NULLIF((a.fileNum-a.deathNum), 0) ,'0') as day3Rate,
ISNULL((a.day7)/NULLIF((a.fileNum), 0) ,'0') as day7Rate,
ISNULL(b.timeOutNum, '0') timeOutNum,
ISNULL(
case when right(CAST(fileNum AS FLOAT)/ NULLIF (isOutNum, 0) * 100,2)='00'
then CONVERT(VARCHAR,fileNum / NULLIF (isOutNum, 0) * 100)
else CONVERT(VARCHAR,ROUND(CAST(fileNum AS FLOAT)/ NULLIF (isOutNum, 0) * 100,2)) end
,'0') fileRate,
ISNULL(
case when ISNULL(timeOutNum, '0')='0'
then '0'
when right(CAST(timeOutNum AS FLOAT)/ NULLIF (isOutNum, 0) * 100,2)='00'
then CONVERT(VARCHAR,timeOutNum / NULLIF (isOutNum, 0) * 100)
else CONVERT(VARCHAR,ROUND(CAST(timeOutNum AS FLOAT)/ NULLIF (isOutNum, 0) * 100,2)+'') end
,'0') timeOutRate,
ISNULL((isOutNum - timeOutNum), '0') AS inTime,
ISNULL(
case when ISNULL(timeOutNum, '0')='0'
then '100'
when right(CAST((isOutNum - timeOutNum) AS FLOAT)/ NULLIF (isOutNum, 0) * 100,2)='00'
then CONVERT(VARCHAR,(isOutNum - timeOutNum) / NULLIF (isOutNum, 0) * 100)
else CONVERT(VARCHAR,ROUND(CAST((isOutNum - timeOutNum) AS FLOAT)/ NULLIF (isOutNum, 0) * 100,2)) end
,'0') inTimeRate
FROM(
select dept_name,SUM(CASE WHEN ArchiveState IN ('在院') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -90,39 +82,12 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t1 on c.dept_name= t1.dept_name
left join (
SELECT a.dept_name,ISNULL(timeOutNum, 0) timeOutNum FROM archive_master AS a LEFT JOIN (
select s.dept_name as dept_name,COUNT(*) AS timeOutNum from archive_master as s
LEFT JOIN(select master_id archive_detail_id,handle_time create_time,handle_name first_instance from (
select ROW_NUMBER() over(partition by master_id order by handle_time asc) RowNum
,Archive_Master_Following.*
from Archive_Master_Following where 1=1 and following_type ='5' ) as t1 where 1=1 and RowNum = 1
) d
on s.id=d.archive_detail_id
where s.ArchiveState!='在院'
<if test="overdueDays != null and overdueDays != ''">
and convert(int,[dbo].[getWorkday](s.discharge_date_time,d.create_time))-convert(int,#{overdueDays,jdbcType=INTEGER})>0
</if>
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7) group by dept_name
) x ON a.dept_name = x.dept_name
<!--<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
AND NOT ( datepart( weekday, discharge_date_time) = 1
OR datepart( weekday, discharge_date_time) = 7 ) THEN 1 ELSE 0 END) as inNum,
SUM(CASE WHEN ArchiveState NOT IN ('在院','作废') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -131,26 +96,11 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
) as n1 on c.dept_name= n1.dept_name
left join (select dept_name,COUNT(*) AS fileNum from archive_master as s where s.ArchiveState in('已归档','已认证')
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!-- <choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
AND NOT (datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time) = 7) THEN 1 ELSE 0 END) as isOutNum,
SUM(CASE WHEN ArchiveState IN ('已归档', '已认证') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -159,25 +109,11 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t2 on c.dept_name= t2.dept_name
left join (select dept_name,COUNT(*) AS unfileNum from archive_master as s where s.ArchiveState not in('已归档','已认证')
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!-- <choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
AND NOT (datepart( weekday, discharge_date_time) = 1 OR datepart( weekday, discharge_date_time) = 7) THEN 1 ELSE 0 END) as fileNum,
SUM(CASE WHEN ArchiveState NOT IN ('已归档', '已认证','作废') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -186,25 +122,14 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t3 on c.dept_name= t3.dept_name
left join (select dept_name,COUNT(*) AS deathNum from archive_master as s where s.DISCHARGE_DISPOSITION=5
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!--<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time ) = 7 ) THEN 1 ELSE 0 END) as unfileNum,
SUM(CASE WHEN DISCHARGE_DISPOSITION = 5 AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time ) = 7 ) THEN 1 ELSE 0 END) as deathNum,
SUM(CASE WHEN DISCHARGE_DISPOSITION = 5 AND datediff( d,discharge_date_time,getdate()) &lt;= 2 AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time ) = 7 ) THEN 1 ELSE 0 END) as death2Num,
SUM(CASE WHEN DISCHARGE_DISPOSITION = 5 AND datediff( d,discharge_date_time,getdate()) &lt;= 3 AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time ) = 7 ) THEN 1 ELSE 0 END) as death3Num,
SUM(CASE WHEN ArchiveState IN ('已归档', '已认证') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -213,25 +138,12 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t4 on c.dept_name= t4.dept_name
left join (select dept_name,COUNT(*) AS Num from archive_master as s where s.ArchiveState in('已归档','已认证') and datediff(d,discharge_date_time,getdate())&lt;=2
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!--<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
AND datediff( d, discharge_date_time,getdate() ) &lt;= 2
AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time ) = 7 ) THEN 1 ELSE 0 END) as day2,
SUM(CASE WHEN ArchiveState IN ('已归档', '已认证') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -240,25 +152,12 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t5 on c.dept_name= t5.dept_name
left join (select dept_name,COUNT(*) AS Num from archive_master as s where s.ArchiveState in('已归档','已认证') and datediff(d,discharge_date_time,getdate())&lt;=3
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!--<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
AND datediff(d,discharge_date_time, getdate()) &lt;= 3
AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time) = 7 ) THEN 1 ELSE 0 END) as day3,
SUM(CASE WHEN ArchiveState IN ('已归档', '已认证') AND Is_Valid != 1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
@ -267,56 +166,77 @@
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t6 on c.dept_name= t6.dept_name
left join (select dept_name,COUNT(*) AS Num from archive_master as s where s.ArchiveState in('已归档','已认证') and datediff(d,discharge_date_time,getdate())&lt;=7
and not (datepart(weekday,discharge_date_time)=1 or datepart(weekday,discharge_date_time)=7)
<!--<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDate != null and startDate != ''">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>-->
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
group by dept_name) as t7 on c.dept_name= t7.dept_name
left join (SELECT code,Name FROM emr_dictionary ) as t8 on c.dept_name=t8.code
) v_count where 1=1
<!--<if test="deptCode != null and deptCode!=''">-->
<!--and deptCode = #{deptCode,jdbcType=NVARCHAR}-->
<!--</if>-->
<if test="deptCode != null and deptCode!=''">
and deptCode in
<foreach item="item" collection="deptCode.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="deptName != null and deptName!=''">
and deptName in
<foreach item="item" collection="deptName.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
and deptName is not null
</if>
<!--<if test="deptName != null and deptName!=''">-->
<!--and deptName = #{deptName,jdbcType=NVARCHAR}-->
<!--</if>-->
AND datediff( d,discharge_date_time, getdate() ) &lt;= 7
AND NOT ( datepart( weekday, discharge_date_time ) = 1 OR datepart( weekday, discharge_date_time ) = 7 ) THEN 1 ELSE 0 END) as day7
from Archive_Master
<where>
1=1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
</where>
GROUP BY dept_name
) as a
LEFT JOIN(
select m.dept_name,
<if test="overdueDays != null and overdueDays != ''">
SUM(CASE WHEN ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}>0 THEN 1 ELSE 0 END) timeOutNum
</if>
<if test="overdueDays == null or overdueDays == ''">
SUM(CASE WHEN ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3>0 THEN 1 ELSE 0 END) timeOutNum
</if>
from (
select id,master_id ,convert(varchar,handle_time,120) handle_time ,handle_id,handle_name,following_type from (
select ROW_NUMBER() over(partition by master_id order by handle_time asc) RowNum
,Archive_Master_Following.*
from Archive_Master_Following where 1=1 and following_type='5'
) as t1 where 1=1 and RowNum = 1
) f
right JOIN (
select id master_id,patient_id,inp_no,visit_id,name,dept_name,convert(varchar,discharge_date_time,120) discharge_date_time,check_doctor,first_instance,DOCTOR_IN_CHARGE,
death_flag,dept_admission_to,convert(varchar,admission_date_time,120) admission_date_time
from archive_master
<where>
1=1 and ArchiveState NOT IN ('已封存', '作废','在院') and Is_Valid!=1
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and #{endDate,jdbcType=NCHAR}
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="endDate != null and endDate != ''">
and CONVERT(VARCHAR(10),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
</where>
) m
on f.master_id=m.master_id
GROUP BY m.dept_name
) b
on b.dept_name=a.dept_name
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) e
on a.dept_name=e.code
<where>
1=1
<if test="deptCode != null and deptCode!=''">
and a.dept_name in
<foreach item="item" collection="deptCode.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="timeOutNum != null and timeOutNum != '' and timeOutNum!='0'">
and timeOutNum>= #{timeOutNum,jdbcType=NCHAR}
</if>
</where>
</select>
<!--<select id="selectByCol" parameterType="com.emr.entity.V_Count" resultMap="BaseResultMap">
<![CDATA[
@ -479,14 +399,14 @@
</if>
<choose>
<when test="startDateTo != null and startDateTo != '' and endDateTo != null and endDateTo != ''">
and c.discharge_date_time between CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120) and
#{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
and CONVERT(VARCHAR(10),c.discharge_date_time,120) between CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120) and
CONVERT(VARCHAR(10),#{endDateTo,jdbcType=NCHAR},120)
</when>
<when test="startDateTo != null and startDateTo != ''">
and c.discharge_date_time >= CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120)
and CONVERT(VARCHAR(10),c.discharge_date_time,120) >= CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120)
</when>
<when test="endDateTo != null and endDateTo != ''">
and c.discharge_date_time &lt;= #{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
and CONVERT(VARCHAR(10),c.discharge_date_time,120) &lt;= CONVERT(VARCHAR(10),#{endDateTo,jdbcType=NCHAR},120)
</when>
</choose>
group by c.deptName,c.Name

@ -67,15 +67,26 @@
.fixed-table-container tbody .selected td {
background-color: #9acfea;
}
.formCss{
margin-top:20px;
margin-left:20px;
}
.tjCss{
margin-left:10px;
margin-right:20px;
height:auto;
}
</style>
</head>
<body>
<div class="row" id="dataDiv">
<div class="tjCss" id="dataDiv">
<!--搜索-->
<form style="margin-top:20px;">
<form class="formCss">
<div class="form-inline">
<div class="form-group divCss8" style="height: 18px;margin-top: -7px;">
<div class="form-group divCss8" >
<label>出院科室:</label>
<%--<select class="input-sm form-control" id="deptName">--%>
<%--<option value="">全部</option>--%>
@ -89,7 +100,6 @@
<select class="selectpicker bla bla bli" multiple data-live-search="true" name="deptName"
id="deptName" data-actions-box="true" data-deselect-all-text="取消全选" data-select-all-text="全选" data-none-results-text="没找到相应记录{0}"
title="请输入出院科室">
<option value="">全部</option>
</select>
</div>
<div class="form-group divCss8">
@ -100,15 +110,19 @@
<input type="text" class="input-sm form-control" name="end" id="endDate"/>
</div>
</div>
<div class="form-group divCss8">
<label>超期天数>=</label>
<input type="text" class="input-sm form-control" id="overdueDays" placeholder="请输入配置超期天数">
</div>
<div class="form-group divCss">
<label>迟交天数为:</label>
<input type="text" class="input-sm form-control" id="overdueDays" placeholder="请输入迟交天数">
<label>天</label>
<label>迟交天数>=</label>
<input type="text" class="input-sm form-control" id="timeOutNum" placeholder="请输入迟交天数">
<%-- <label>天</label>--%>
</div>
<button type="button" class="btn btn-primary btn-sm divCss" id="searchBtn">查询</button>
<button type="button" class="btn btn-info btn-sm divCss" id="excelBtn">条件导出</button>
<button type="button" class="btn btn-danger btn-sm divCss" id="excelBtn2">未归档导出</button>
</div>
</form>
<!--数据表格-->
@ -880,6 +894,7 @@
deptCode: deptName.toString(),
startDate: $("#startDate").val(),
endDate: $("#endDate").val(),
timeOutNum: $("#timeOutNum").val(),
overdueDays: $("#overdueDays").val()
};
@ -911,31 +926,105 @@
title: '科室代码',
field: 'deptCode',
align: 'left',
valign: 'middle',
valign: 'middle'
},
{
title: '科室名称',
field: 'deptName',
align: 'left',
valign: 'middle',
valign: 'middle'
},
// {
// title: '在院人数',
// field: 'inNum',
// align: 'center',
// valign: 'middle',
// },
{
title: '在院合计',
field: 'inNum',
align: 'center',
valign: 'middle'
}, {
title: '出院合计',
field: 'isOutNum',
align: 'center',
valign: 'middle'
},{
title: '已归档数',
field: 'fileNum',
align: 'center',
valign: 'middle'
}, {
title: '未归档数',
field: 'unfileNum',
align: 'center',
valign: 'middle'
}, {
title: '死亡数',
field: 'deathNum',
align: 'center',
valign: 'middle'
}, {
title: '2日死亡数',
field: 'death2Num',
align: 'center',
valign: 'middle'
}, {
title: '3日死亡数',
field: 'death3Num',
align: 'center',
valign: 'middle'
}, {
title: '归档率',
field: 'fileRate',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var val;
if (row.fileRate != null && row.fileRate != '') {
val = (row.fileRate) + "%";
}
return val;
}
}, {
title: '2日归档率',
field: 'day2Rate',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var val;
if (row.day2Rate != null && row.day2Rate != '') {
val = (row.day2Rate) + "%";
}
return val;
}
},
{
title: '3日归档率',
field: 'day3Rate',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var val;
if (row.day3Rate != null && row.day3Rate != '') {
val = (row.day3Rate ) + "%";
}
return val;
}
}, {
title: '7日归档率',
field: 'day7Rate',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var val;
if (row.day7Rate != null && row.day7Rate != '') {
val = (row.day7Rate) + "%";
}
return val;
}
},
{
title: '迟交合计',
field: 'timeOutNum',
align: 'center',
valign: 'middle',
valign: 'middle'
},
{
title: '迟交率',
@ -945,7 +1034,7 @@
formatter: function (value, row, index) {
var val;
if (row.timeOutRate != null && row.timeOutRate != '') {
val = (row.timeOutRate * 100) + "%";
val = (row.timeOutRate) + "%";
}
return val;
@ -955,7 +1044,7 @@
title: '及时合计',
field: 'inTime',
align: 'center',
valign: 'middle',
valign: 'middle'
},
{
title: '及时率',
@ -965,7 +1054,7 @@
formatter: function (value, row, index) {
var val;
if (row.inTimeRate != null && row.inTimeRate != '') {
val = (row.inTimeRate * 100) + "%";
val = (row.inTimeRate) + "%";
}
return val;
@ -990,56 +1079,6 @@
//查询
$('#searchBtn').click(function () {
//判断开始和结束日期的是否超过上限
var startDate =$("#startDate").val();
var endDate =$("#endDate").val();
//所有其它条件都为空
if($("#overdueDays").val().length<=0 && $("#deptName").val().length<=0){
//单位
var dateType="月";
//上限
var upperLimit=1;
if('<%=res.getString("dateType")%>'.trim()!=""&&'<%=res.getString("dateType")%>'!=null && '<%=res.getString("upperLimit")%>'.trim()!="" &&'<%=res.getString("upperLimit")%>'!=null){
//单位
dateType='<%=res.getString("dateType")%>';
//上限
upperLimit=parseInt('<%=res.getString("upperLimit")%>');
//console.log(dateType+"==单位=="+"==上限="+upperLimit);
if(endDate==null || endDate==""){
var myDate = new Date();
var nowY = myDate.getFullYear();
var nowM = myDate.getMonth() + 1;
var nowD = myDate.getDate();
endDate = nowY + "-" + (nowM < 10 ? "0" + nowM : nowM) + "-" + (nowD < 10 ? "0" + nowD : nowD);//当前日期
}
if(startDate!=null && startDate!="" && endDate!=null && endDate!="") {
if (dateType=="year") {
var year = YearsBetw(startDate,endDate);
if(year>upperLimit){
toastr.warning("出院日期按年算(总年数)不得超过"+upperLimit+"年!");
return;
}
} else if (dateType=="month") {
var month=MonthsBetw(startDate,endDate);
if(month>upperLimit){
toastr.warning("出院日期按月算(总月数)不得超过"+upperLimit+"月!");
return;
}
} else {
//天
var day=DateDiff(startDate,endDate);
if(day>upperLimit){
toastr.warning("出院日期按天算(总天数)不得超过"+upperLimit+"天!");
return;
}
}
}
}
}
/*else{
toastr.warning("统计列表未配置日期单位及上限!");
}*/
//查询之后重新从第一页算起
if (tipLoad == 0) {
$("#table").bootstrapTable("refreshOptions", {pageNumber: 1});
@ -1082,8 +1121,11 @@
}
var startDate = $("#startDate").val();
var endDate = $("#endDate").val();
var timeOutNum=$("#timeOutNum").val();
var overdueDays=$("#overdueDays").val();
window.location.href = "${path}/vCount/exportExcel?deptCode=" + deptName + "&startDate=" + startDate
+ "&endDate=" + endDate;
+ "&endDate=" + endDate+ "&timeOutNum=" + timeOutNum+ "&overdueDays=" + overdueDays;
});
//导出excel功能

Loading…
Cancel
Save