新增科室病案超期列表

master
zengwh 5 years ago
parent 470d2e43a9
commit 86ec2bd8af

@ -1,5 +1,6 @@
package com.emr.controller;
import com.emr.entity.Archive_Master_Vo;
import com.emr.entity.OffsetLimitPage;
import com.emr.service.ipml.RecordService;
import com.emr.util.ExceptionPrintUtil;
@ -50,6 +51,16 @@ public class RecordController {
return new OffsetLimitPage((Page) submitRecords);
}
/**
*
*/
@RequestMapping("selectCount")
@ResponseBody
public Msg selectCount(RecordSearch recordSearch) throws Exception{
SubmitRecordStatistics recordStatistics = recordService.selectCount(recordSearch);
return Msg.success().add("record",recordStatistics);
}
/**
*
* @param response
@ -86,7 +97,7 @@ public class RecordController {
}
/**
*
*
* @return
*/
@RequestMapping("deptOverTimeInfo")
@ -95,26 +106,7 @@ public class RecordController {
}
/**
*
* @return
*/
@RequestMapping("signedRecord")
public String signedRecord(){
return "record/signedRecord";
}
/**
*
*/
@RequestMapping("selectCount")
@ResponseBody
public Msg selectCount(RecordSearch recordSearch) throws Exception{
SubmitRecordStatistics recordStatistics = recordService.selectCount(recordSearch);
return Msg.success().add("record",recordStatistics);
}
/**
*
*
*/
@RequestMapping("selectOvertimeCount")
@ResponseBody
@ -123,21 +115,64 @@ public class RecordController {
return Msg.success().add("record",recordStatistics);
}
/* *//**
*
/**
*
* @return
*//*
@RequestMapping("getRecordGroupDept")
*/
@RequestMapping("getRecordGroupDeptAndRole")
@ResponseBody
public OffsetLimitPage getRecordGroupDept(Integer offset,
public OffsetLimitPage getRecordGroupDeptAndRole(Integer offset,
Integer limit,
RecordSearch recordSearch){
if(offset != null && limit != null) {
PageHelper.offsetPage(offset, limit);
}
List<SubmitRecord> submitRecords = recordService.selectCountGroupDept(recordSearch);
List<Archive_Master_Vo> submitRecords = new Page<>();
try {
submitRecords = recordService.selectRecordGroupDeptAndRole(recordSearch);
}catch (Exception e){
e.printStackTrace();
ExceptionPrintUtil.printException(e);
}
return new OffsetLimitPage((Page) submitRecords);
}*/
}
/**
*
* @param response
*/
@ResponseBody
@RequestMapping(value = "/exportExcelDeptOverTime")
public void exportExcelDeptOverTime(HttpServletResponse response,
RecordSearch recordSearch){
String tableThNames = "科室名称,超期份數,医生未提交,医生质控员未提交,科主任未提交,护士未提交,"+
"护士质控员未提交,护士长未提交,病案室未提交";
String fieldCns = "deptNameCn,count,unDoctorSubmitCount,unDoctorCheckCount,unDirectorCheckCount," +
"unNurseSubmitCount,unNurseCheckCount,unHeadNurseCount,headNurseCount";
//构造excel的数据
try {
List<SubmitRecord> list = recordService.selectCountGroupDept(recordSearch);
//文件名
String fileName = "科室病案超期" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
//ExportExcelUtil
ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
//导出excel的操作
exportExcelUtil.expordExcel(tableThNames,fieldCns,list,fileName,response);
}catch (Exception e){
ExceptionPrintUtil.printException(e);
e.printStackTrace();
}
}
/**
*
* @return
*/
@RequestMapping("signedRecord")
public String signedRecord(){
return "record/signedRecord";
}
/**
*

@ -23,7 +23,7 @@ import javax.annotation.PostConstruct;
public class WebServiceLoad {
@PostConstruct
public void contextInitialized() {
new Thread(() -> {
/*new Thread(() -> {
String token = "ORsaVDUBE1RFRFRETE5BR05ERVQ3JyBURkRGRA==";
String POWER_IP = PropertiesUtils.getProperty("POWER_IP");
String POWER_PORT = PropertiesUtils.getProperty("POWER_PORT");
@ -42,6 +42,6 @@ public class WebServiceLoad {
client.destroy();
}
}
}).start();
}).start();*/
}
}

@ -7,10 +7,8 @@
package com.emr.controller;
import com.emr.dao.ArchiveFlowRoleMapper;
import com.emr.entity.ArchiveFlowRole;
import com.emr.entity.Archive_Master;
import com.emr.entity.Archive_Master_Vo;
import com.emr.entity.OffsetLimitPage;
import com.emr.dao.ArchiveRemindInfoMapper;
import com.emr.entity.*;
import com.emr.service.Archive_MasterService;
import com.emr.service.ipml.ArchiveFlowInfoService;
import com.emr.util.ExceptionPrintUtil;
@ -21,6 +19,7 @@ import com.emr.vo.ArchiveFlowInfoVo;
import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.endpoint.Client;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
@ -47,6 +46,8 @@ public class beHospitaledController {
private ArchiveFlowRoleMapper flowRoleMapper;
@Autowired
private ArchiveFlowInfoService flowInfoService;
@Autowired
private ArchiveRemindInfoMapper remindInfoMapper;
@RequestMapping(value = "/beHosps")
public String inHospitals(){
return "beHospitaledDir/beHospList";
@ -266,6 +267,23 @@ public class beHospitaledController {
List<Archive_Master> list = archiveMasterService.loadOverTimeDoctorInCharge();
return Msg.success().add("list",list);
}
/**
*
* @param deptName
* @return
*/
@RequestMapping("remind")
@ResponseBody
public Msg remind(String deptName,HttpServletRequest request){
//查询是否今天是否通知过
List<ArchiveRemindInfo> list = remindInfoMapper.selectAllByDeptName(deptName);
if(!CollectionUtils.isEmpty(list)){
return Msg.fail("该科室今天已通知过!");
}
archiveMasterService.remind(deptName,request);
return Msg.success();
}
}

@ -0,0 +1,22 @@
package com.emr.dao;
import com.emr.entity.ArchiveRemindInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ArchiveRemindInfoMapper {
int deleteByPrimaryKey(Integer id);
int insert(ArchiveRemindInfo record);
int insertSelective(ArchiveRemindInfo record);
ArchiveRemindInfo selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(ArchiveRemindInfo record);
int updateByPrimaryKey(ArchiveRemindInfo record);
List<ArchiveRemindInfo> selectAllByDeptName(@Param("deptName")String deptName);
}

@ -1,5 +1,6 @@
package com.emr.dao;
import com.emr.entity.Archive_Master_Vo;
import com.emr.vo.RecordSearch;
import com.emr.vo.SubmitRecord;
import com.emr.vo.SubmitRecordStatistics;
@ -12,9 +13,11 @@ public interface RecordMapper {
//根据审核角色id和分组科室查询该科室完成份数
List<SubmitRecord> selectCountByRoleAndDeptName(RecordSearch recordSearch);
//根据科室分组查询护士长审核份数
List<SubmitRecord> selectCountWithHeadNurse(RecordSearch recordSearch);
//List<SubmitRecord> selectCountWithHeadNurse(RecordSearch recordSearch);
//统计总病历数,已提交数,已归档数,已采集完整数
SubmitRecordStatistics selectCount(RecordSearch recordSearch);
//按日期分组查询出院人数,归档情况,提交情况,资料完整情况
List<SubmitRecordStatistics> selectCountWithDate(RecordSearch recordSearch);
List<Archive_Master_Vo> selectRecordGroupDeptAndRole(RecordSearch recordSearch);
}

@ -0,0 +1,62 @@
package com.emr.entity;
import java.io.Serializable;
import java.util.Date;
public class ArchiveRemindInfo implements Serializable {
private Integer id;
private String deptName;
private Date createTime;
private String createUser;
private static final long serialVersionUID = 1L;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName == null ? null : deptName.trim();
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser == null ? null : createUser.trim();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", deptName=").append(deptName);
sb.append(", createTime=").append(createTime);
sb.append(", createUser=").append(createUser);
sb.append("]");
return sb.toString();
}
}

@ -48,30 +48,11 @@ public class Archive_Master_Vo extends Archive_Master{
private String unSuccessAssortNames;//不完整分类字符串
private String archivestate;
@Override
public String toString() {
return "Archive_Master_Vo{" +
"startDateTo='" + startDateTo + '\'' +
", endDateTo='" + endDateTo + '\'' +
", startDate='" + startDate + '\'' +
", endDate='" + endDate + '\'' +
", deptList=" + deptList +
", days=" + days +
", checkName='" + checkName + '\'' +
", checkedName='" + checkedName + '\'' +
", btns='" + btns + '\'' +
", status='" + status + '\'' +
", remark='" + remark + '\'' +
", roleCode=" + roleCode +
", role=" + role +
", roles='" + roles + '\'' +
", infoId=" + infoId +
", isSuccess='" + isSuccess + '\'' +
", unSuccessAssortNames='" + unSuccessAssortNames + '\'' +
", archivestate='" + archivestate + '\'' +
'}';
}
private Integer overTimeCounts;//超期份数
private Integer overtimeDays;//超期天数
private String doctorInChargeCode;//主管医生工号
}

@ -12,6 +12,7 @@ import com.emr.entity.Emr_Fault_Detail_Vo;
import com.emr.entity.OffsetLimitPage;
import com.emr.util.Msg;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
public interface Archive_MasterService {
@ -38,6 +39,9 @@ public interface Archive_MasterService {
List<Archive_Master_Vo> selectByColumn(Archive_Master_Vo archiveMasterVo);
//验证字符串是否是数字
boolean isNumeric(String str);
/**
*
*
@ -117,6 +121,8 @@ public interface Archive_MasterService {
List<Archive_Master> loadDoctorInCharge(String deptName);
List<Archive_Master> loadOverTimeDoctorInCharge();
void remind(String deptName, HttpServletRequest request);
}

@ -55,6 +55,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
private Zd_AssortMapper assortMapper;
@Autowired
private Emr_DictionaryMapper dictionaryMapper;
@Autowired
private ArchiveRemindInfoMapper remindInfoMapper;
/**
*
* */
@ -404,7 +406,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
}
//验证字符串是否是数字
public static boolean isNumeric(String str){
@Override
public boolean isNumeric(String str){
for (int i = 0; i < str.length(); i++){
if (!Character.isDigit(str.charAt(i))){
return false;
@ -1082,6 +1085,47 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
}
return null;
}
/**
*
* @param deptName
*/
@Override
public void remind(String deptName,HttpServletRequest request) {
//通知第三方平台
remindOtherSystem(deptName);
//通知该平台
remindThisSystem(deptName);
//插入科室通知记录表
insertRemindInfoData(deptName,request);
}
/**
*
* @param deptName
*/
private void insertRemindInfoData(String deptName,HttpServletRequest request) {
ArchiveRemindInfo remindInfo = new ArchiveRemindInfo();
remindInfo.setDeptName(deptName);
remindInfo.setCreateTime(new Date());
Power_User user = (Power_User)request.getSession().getAttribute("CURRENT_USER");
remindInfo.setCreateUser(user.getUserName());
remindInfoMapper.insert(remindInfo);
}
/**
*
* @param deptName
*/
private void remindThisSystem(String deptName) {
}
/**
*
* @param deptName
*/
private void remindOtherSystem(String deptName) {
}
}

@ -2,10 +2,11 @@ package com.emr.service.ipml;
import com.emr.dao.Emr_DictionaryMapper;
import com.emr.dao.RecordMapper;
import com.emr.entity.Archive_Master_Vo;
import com.emr.entity.Emr_Dictionary;
import com.emr.vo.RecordSearch;
import com.emr.vo.SubmitRecord;
import com.emr.vo.SubmitRecordStatistics;
import com.emr.service.Archive_MasterService;
import com.emr.util.Msg;
import com.emr.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,6 +20,10 @@ public class RecordService {
private RecordMapper recordMapper;
@Autowired
private Emr_DictionaryMapper dictionaryMapper;
@Autowired
private StatisticsService statisticsService;
@Autowired
private Archive_MasterService archiveMasterService;
/**
*
* @return
@ -278,4 +283,40 @@ public class RecordService {
return recordStatistics;
}
/**
*
* @param recordSearch
* @return
*/
public List<Archive_Master_Vo> selectRecordGroupDeptAndRole(RecordSearch recordSearch) throws Exception{
List<Archive_Master_Vo> list = recordMapper.selectRecordGroupDeptAndRole(recordSearch);
if(!CollectionUtils.isEmpty(list)){
List<User> userList = statisticsService.getUserList();
for (Archive_Master_Vo obj : list) {
//转换工号
if(!CollectionUtils.isEmpty(userList)) {
for (User user : userList) {
if (StringUtils.isNotBlank(obj.getDoctorInCharge()) && obj.getDoctorInCharge().equals(user.getName())) {
obj.setDoctorInChargeCode(user.getUserName());
break;
}
}
}
//转换状态
String archivestate = obj.getArchivestate();
if (StringUtils.isNotBlank(archivestate)) {
Msg role = archiveMasterService.getRole();
//转换中文状态
boolean numeric = archiveMasterService.isNumeric(archivestate);
if (numeric) {
Integer status = Integer.valueOf(archivestate);
archivestate = EnumVerify.DocState.GetStepName(status, role.getCode());
obj.setStatus(archivestate);
}
}
}
}
return list;
}
}

@ -1,9 +1,9 @@
#power\u6743\u9650\u7CFB\u7EDFIP\u548C\u7AEF\u53E3
#POWER_IP = localhost
#POWER_PORT = 8080
POWER_IP = localhost
POWER_PORT = 8080
POWER_IP = 200.100.104.40
POWER_PORT = 8081
#POWER_IP = 200.100.104.40
#POWER_PORT = 8081
#power\u6743\u9650\u7CFB\u7EDF\u7684\u670D\u52A1\u5668\u5730\u5740\u5934
POWER_URLHEAD = http://${POWER_IP}:${POWER_PORT}/power
@ -40,7 +40,7 @@ recallReason=\u533B\u9662\u9700\u8981\u8FD9\u4EFD\u6587\u6863
pdfWater = \u4F5B\u5C71\u5E02\u9AD8\u660E\u4EBA\u6C11\u533B\u9662
#\u672C\u5730\u56FE\u7247\u5730\u5740
pictureUrl=C:\\JiaShiPic\\
pictureUrl=D:\\JiaShiPic\\
#\u6620\u5C04\u672C\u5730\u56FE\u7247\u5730\u5740\u6839\u76EE\u5F55
picSrc=upload\\
@ -49,4 +49,7 @@ picSrc=upload\\
allAddortIds = 00000000
#\u62A4\u58EB\u652F\u7EBF\u5BA1\u6838\u67E5\u770B\u7684\u5206\u7C7Bid
nurseAssortIds = 'C70E8C427A3648B79BE80798C08F4D12','85DAE73A87D047D28C222E878C78C670'
nurseAssortIds = 'C70E8C427A3648B79BE80798C08F4D12','85DAE73A87D047D28C222E878C78C670'
#\u7528\u4E8E\u8D85\u671F\u901A\u77E5\uFF0C\u53EA\u901A\u77E5\u8BE5\u65E5\u671F\u4EE5\u540E\u7684\u51FA\u9662\u8D85\u671F\u7684\u8BB0\u5F55
overDateSet = 2020-10-29

@ -0,0 +1,90 @@
<?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.emr.dao.ArchiveRemindInfoMapper" >
<resultMap id="BaseResultMap" type="com.emr.entity.ArchiveRemindInfo" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="dept_name" property="deptName" jdbcType="NVARCHAR" />
<result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
<result column="create_user" property="createUser" jdbcType="NVARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, dept_name, create_time, create_user
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from archive_remind_info
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from archive_remind_info
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.emr.entity.ArchiveRemindInfo" >
insert into archive_remind_info (dept_name, create_time,
create_user)
values (#{deptName,jdbcType=NVARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{createUser,jdbcType=NVARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.emr.entity.ArchiveRemindInfo" >
insert into archive_remind_info
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="deptName != null" >
dept_name,
</if>
<if test="createTime != null" >
create_time,
</if>
<if test="createUser != null" >
create_user,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=INTEGER},
</if>
<if test="deptName != null" >
#{deptName,jdbcType=NVARCHAR},
</if>
<if test="createTime != null" >
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="createUser != null" >
#{createUser,jdbcType=NVARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.emr.entity.ArchiveRemindInfo" >
update archive_remind_info
<set >
<if test="deptName != null" >
dept_name = #{deptName,jdbcType=NVARCHAR},
</if>
<if test="createTime != null" >
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="createUser != null" >
create_user = #{createUser,jdbcType=NVARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.emr.entity.ArchiveRemindInfo" >
update archive_remind_info
set dept_name = #{deptName,jdbcType=NVARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
create_user = #{createUser,jdbcType=NVARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="selectAllByDeptName" resultMap="BaseResultMap">
select * from archive_remind_info
<where>
<if test="deptName != null and deptName != ''">
and dept_name = #{deptName}
</if>
</where>
</select>
</mapper>

@ -3,6 +3,7 @@
<mapper namespace="com.emr.dao.RecordMapper">
<resultMap id="BaseResultMap" type="com.emr.vo.SubmitRecord"></resultMap>
<resultMap id="BaseResultMap1" type="com.emr.vo.SubmitRecordStatistics"></resultMap>
<resultMap id="BaseResultMap2" type="com.emr.entity.Archive_Master_Vo"></resultMap>
<!---查询时间段-->
<sql id="selectByDate">
<if test="flag != null and flag == 2">
@ -17,14 +18,14 @@
</if>
<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
and archive_master.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)
and archive_master.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'
and archive_master.discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
</sql>
@ -37,15 +38,15 @@
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
<choose>
<when test="dateFlag == 1">
and discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
and archive_master.discharge_date_time between CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120) and
#{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="dateFlag == 2">
and CONVERT(VARCHAR(7),discharge_date_time,120) between #{startDate,jdbcType=NCHAR} and
and CONVERT(VARCHAR(7),archive_master.discharge_date_time,120) between #{startDate,jdbcType=NCHAR} and
#{endDate,jdbcType=NCHAR}
</when>
<when test="dateFlag == 3">
and CONVERT(VARCHAR(4),discharge_date_time,120) between #{startDate,jdbcType=NCHAR} and
and CONVERT(VARCHAR(4),archive_master.discharge_date_time,120) between #{startDate,jdbcType=NCHAR} and
#{endDate,jdbcType=NCHAR}
</when>
</choose>
@ -53,26 +54,26 @@
<when test="startDate != null and startDate != ''">
<choose>
<when test="dateFlag == 1">
and discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
and archive_master.discharge_date_time >= CONVERT(VARCHAR(10),#{startDate,jdbcType=NCHAR},120)
</when>
<when test="dateFlag == 2">
and CONVERT(VARCHAR(7),discharge_date_time,120) >= #{startDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(7),archive_master.discharge_date_time,120) >= #{startDate,jdbcType=NCHAR}
</when>
<when test="dateFlag == 3">
and CONVERT(VARCHAR(4),discharge_date_time,120) >= #{startDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(4),archive_master.discharge_date_time,120) >= #{startDate,jdbcType=NCHAR}
</when>
</choose>
</when>
<when test="endDate != null and endDate != ''">
<choose>
<when test="dateFlag == 1">
and discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
and archive_master.discharge_date_time &lt;= #{endDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="dateFlag == 2">
and CONVERT(VARCHAR(7),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(7),archive_master.discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
<when test="dateFlag == 3">
and CONVERT(VARCHAR(4),discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
and CONVERT(VARCHAR(4),archive_master.discharge_date_time,120) &lt;= #{endDate,jdbcType=NCHAR}
</when>
</choose>
</when>
@ -104,10 +105,10 @@
<sql id="overTimeWhereSql">
and datediff(
DAY,
discharge_date_time,
archive_master.discharge_date_time,
CASE
WHEN ArchiveState = 128 THEN
checked_datetime
WHEN archive_master.ArchiveState = 128 THEN
archive_master.checked_datetime
ELSE
getDate ()
END
@ -119,12 +120,12 @@
WHERE
date BETWEEN CONVERT (
VARCHAR (10),
discharge_date_time,
archive_master.discharge_date_time,
120
)
AND CASE
WHEN ArchiveState = 128 THEN
checked_datetime
WHEN archive_master.ArchiveState = 128 THEN
archive_master.checked_datetime
ELSE
getDate ()
END
@ -132,7 +133,7 @@
) - (
SELECT
CASE
WHEN DISCHARGE_DISPOSITION = 5 THEN
WHEN archive_master.DISCHARGE_DISPOSITION = 5 THEN
dead_days
ELSE
days
@ -482,4 +483,31 @@
</when>
</choose>
</sql>
<!--按科室待审核角色病案超时分页查询-->
<select id="selectRecordGroupDeptAndRole" resultMap="BaseResultMap2" parameterType="com.emr.vo.RecordSearch">
select
archive_master.id,
archive_master.ArchiveState,
archive_master.inp_no,
archive_master.name,
archive_master.DOCTOR_IN_CHARGE,
archive_master.visit_id,
archive_master.discharge_date_time,
v_overtime_record.overtime_days,
archive_masterTemp.overTimeCounts
from archive_master
inner join v_overtime_record
on archive_master.id = v_overtime_record.id
inner join (select DOCTOR_IN_CHARGE,COUNT(DOCTOR_IN_CHARGE) overTimeCounts from archive_master
<where>
<include refid="selectByDate"></include>
</where>
group by DOCTOR_IN_CHARGE) archive_masterTemp
on archive_master.DOCTOR_IN_CHARGE = archive_masterTemp.DOCTOR_IN_CHARGE
<include refid="selectByInfo"></include>
<where>
<include refid="selectByDate"></include>
</where>
order by archive_master.DOCTOR_IN_CHARGE
</select>
</mapper>

@ -36,13 +36,8 @@
</head>
<body>
<%--<!--定义加载的层级数-->
<input type="hidden" id="level" value="${level}">
<!--初始化加载科室选中-->
<input type="hidden" id="searchDeptName" value="${record.deptName}">
<!--第三层初始化按科室查-->
<input type="hidden" id="searchDeptNameTemp">
<input type="hidden" id="timeIntervalTemp" value="${record.timeInterval}">--%>
<!--当前操作角色-->
<input type="hidden" id="checker">
<div class="mainBody">
<div class="main">
<div class="headDiv">
@ -131,6 +126,22 @@
</div>
</div>
</div>
<%--查看流程弹窗--%>
<div class="modal fade" id="showFlowInfo" role="dialog" aria-labelledby="exampleModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content modal-contentHigh">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">查看流程</h4>
</div>
<div class="modal-body">
<iframe id="showFlowInfoIframe" width="100%" height="100%" scrolling="yes"></iframe>
</div>
</div>
</div>
</div>
<script src="${path}/static/js/statistics/getDeptCommom.js?time=2020-08-18"></script>
<script src="${path}/static/js/statistics/statisticsCommom.js?t=2020-07-24"></script>
<script src="${path}/static/js/record/deptOverTimeInfo.js?time=2020-08-21"></script>

@ -155,8 +155,11 @@ function initTable() {
var url = window.location.href;
var index = url.substring(url.lastIndexOf('?') + 1).replace("num=", "");
var html = "";
if (index != null && index.indexOf("remind") !== -1) {
html += '<button type="button" class="btn btn-primary btn-sm remind" title="提醒">提醒</button>';
}
if (index != null && index.indexOf("select") !== -1) {
html = html + '<button type="button" class="btn btn-danger btn-sm selInfo" title="查看">查看</button>';
html += '<button type="button" class="btn btn-danger btn-sm selInfo" title="查看">查看</button>';
}
if (row.btns != '' && row.btns != null) {
html += row.btns;
@ -248,6 +251,22 @@ function initTable() {
var visitId = row.visitId;
var dischargeDateTime = row.dischargeDateTime;
$("#showFlowInfoIframe").prop("src",path+"/beHosp/toShowFlowInfo?id="+masterId+"&name="+name+"&inpNo="+inpNo+"&visitId="+visitId+"&dischargeDateTime="+dischargeDateTime+"&role="+$("#checker").val());
},
//提醒
'click .remind': function (e, value, row) {
$.ajax({
type:'get',
url:path+'/beHosp/remind',
data:{deptName:row.deptName},
dataType:'json',
success:function(data){
if(data.code == 100){
toastr.success("通知成功!");
}else{
toastr.error(data.msg);
}
}
})
}
},
cellStyle: function () {

@ -7,9 +7,31 @@ $(function(){
loadOverTimeDoctorInCharge();
//加载科室
getDeptStatistics();
//赋值审核角色
getChecker();
//加载病案统计
selectOvertimeCount();
})
//未终审页面、在院浏览、出院浏览查看病历时按审核角色查询分类主要查询checker=2护士的只查看护理记录单和体温表
function getChecker(){
$.get(path+'/beHosp/getChecker',function(data){
if(data.code == 100){
var checker = data.extend.checker;
$("#checker").val(checker);
//根据操作角色显示退回角色
if(checker == 1){
$("#returnDoctor").show();
}else if(checker == 2){
$("#returnNurse").show();
}else{
$("#returnDoctor").show();
$("#returnNurse").show();
}
}else{
toastr.error(data.msg);
}
},'json');
}
//加载科室内主管医生列表
function loadOverTimeDoctorInCharge(){
$.ajax({
@ -186,7 +208,7 @@ function initTable() {
{
title: '医生未提交',
field: 'unDoctorSubmitCount',
align: 'center',
align: 'center'
},
{
title: '医生质控员未提交',
@ -320,7 +342,7 @@ function getDataMap(roleId,title,count,row){
map['deptNameCn'] = row.deptNameCn;
map['unCount'] = count;
map['role'] = title;
map['roleId'] = roleId;
map['infoId'] = roleId;
return map;
}else{
return [];
@ -354,15 +376,15 @@ function initTable1(table1Data) {
},
{
title: '出院科室',
field: 'deptNameCn',
field: 'deptNameCn'
},
{
title: '审核角色',
field: 'role',
field: 'role'
},
{
title: '未提交份数',
field: 'unCount',
field: 'unCount'
}
],
onLoadSuccess: function (result) { //加载成功时执行
@ -375,14 +397,14 @@ function initTable1(table1Data) {
' <table id="table2" class="table2" class="table text-nowrap table-bordered"></table>\n' +
' </div>';
$detail.html(html);
initTable2();
initTable2(row);
}
});
}
//第三层,按科室审核角色分组查
function initTable2() {
function initTable2(rows) {
$("#table2").bootstrapTable({ // 对应table标签的id
url: path + "/record/getRecordGroupDept", // 获取表格数据的url
url: path + "/record/getRecordGroupDeptAndRole", // 获取表格数据的url
sidePagination: 'server', // 设置为服务器端分页 客户端client
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
@ -395,12 +417,12 @@ function initTable2() {
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
height:514,
height:553,
searchTimeOut: 500,// 默认500 设置搜索超时时间。
showHeader: true,//是否显示列头。
//查询条件
queryParams: function (params) {
return queryParams(params,this,'');
return queryParamsInitTable2(params,this,rows);
},
columns: [
{
@ -411,43 +433,50 @@ function initTable2() {
},
{
title: '主管医生',
field: 'allRecordCount',
field: 'doctorInCharge'
},
{
title: '医生工号',
field: 'allFileCount',
field: 'doctorInChargeCode'
},
{
title: '超期份数',
field: 'allPageCount',
field: 'overTimeCounts'
},
{
title: '出院科室',
field: 'deptNameCn',
field: '',
formatter: function (value, row, index) {
return rows.deptNameCn;
}
},
{
title: '患者姓名',
field: 'autoCollectionFileCount',
field: 'name'
},
{
title: '住院号',
field: 'autoCollectionPageCount',
field: 'inpNo'
},
{
title: '住院次数',
field: 'manualScanFileCount',
field: 'visitId'
},
{
title: '出院日期',
field: 'manualScanPageCount',
field: 'dischargeDateTime',
formatter: function (value, row, index) {
return operDisDate(value);
}
},
{
title: '超期天数',
field: 'manualScanPageCount',
field: 'overtimeDays'
},
{
title: '状态',
field: 'manualScanPageCount',
field: 'status'
},
{
title:'操作',
@ -455,6 +484,22 @@ function initTable2() {
valign: 'middle',
formatter: function (value, row, index) {
return '<button type="button" class="btn btn-sm btn-success showFlowInfo" title="查看流程">查看流程</button>';
},
events:{
//查看流程
'click .showFlowInfo': function (e, value, row) {
$('#showFlowInfo').modal({
backdrop: 'static',//backdrop 为 static 时,点击模态对话框的外部区域不会将其关闭。
keyboard: false,//keyboard 为 false 时,按下 Esc 键不会关闭 Modal。
show: true//弹出对话框
});
var masterId = row.id;
var name = encodeURI(row.name);
var inpNo = row.inpNo;
var visitId = row.visitId;
var dischargeDateTime = row.dischargeDateTime;
$("#showFlowInfoIframe").prop("src",path+"/beHosp/toShowFlowInfo?id="+masterId+"&name="+name+"&inpNo="+inpNo+"&visitId="+visitId+"&dischargeDateTime="+dischargeDateTime+"&role="+$("#checker").val());
}
}
}
],
@ -462,116 +507,8 @@ function initTable2() {
$(".page-list").show();
//reloadTableHeight("table1");
},
/* //展开详情事件
onExpandRow: function (index, row, $detail) {//點擊datagrid 展開按鈕事件
var deptName = row.deptName;
var tableId = 'table_'+deptName;
var html = '<div id="tableDiv2">\n' +
' <table id="'+tableId+'" class="table2" class="table text-nowrap table-bordered"></table>\n' +
' </div>';
$detail.html(html);
initTable2(deptName,tableId);
}*/
});
}
//第三层,根据科室查询病患详情
/*function initTable2(deptName,tableId) {
$("#"+tableId).bootstrapTable({ // 对应table标签的id
url: path+"/statistics/getRecordStatisticsByDeptName", // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
sidePagination: 'server', // 设置为服务器端分页 客户端client
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageList: [10, 20, 50, 100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
toolbar: '#toolbar',//指定工具栏
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
//detailView:true,//是否可展开
undefinedText: '--', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
height:475,
searchTimeOut: 500,// 默认500 设置搜索超时时间。
showHeader: true,//是否显示列头。
//是否显示导出按钮
queryParams: function (params) {
return queryParams(params,this,deptName);
},
columns: [
{
title: '序号',
align: 'center',
formatter: function (value, row, index) {
return index + 1;
}
},
{
title: '住院号',
field: 'inpNo',
align: 'left'
},
{
title: '姓名',
field: 'name',
align: 'left'
},
{
title: '住院次数',
field: 'visitId',
align: 'center'
},
{
title: '出院科室',
field: 'deptNameCn',
align: 'left'
},
{
title: '出院日期',
field: 'dischargeDateTime',
align: 'center',
formatter: function (value) {
return operDisDate(value);
}
},
{
title: '总文件数',
field: 'allFileCount',
align: 'center'
},
{
title: '总页数',
field: 'allPageCount',
align: 'center'
},
{
title: '自动采集总文件数',
field: 'autoCollectionFileCount',
align: 'center'
},
{
title: '自动采集总页数',
field: 'autoCollectionPageCount',
align: 'center'
},
{
title: '扫描上传总文件数',
field: 'manualScanFileCount',
align: 'center'
},
{
title: '扫描上传总页数',
field: 'manualScanPageCount',
align: 'center'
}
],
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
//reloadTableHeight("table2");
}
});
}*/
//各表格查询条件
function queryParams(params,_this,deptName){
var currPageSize = _this.pageSize;
@ -600,7 +537,53 @@ function queryParams(params,_this,deptName){
deptName:deptName,
flag:2,
doctorInCharge:getSelecteds("doctorInCharge"),
infoId:$("#infoId").val(),
infoId:$("#infoId").val()
};
return temp;
}
/**
* 明细表格查询条件
* @param params
* @param queryParamsInitTable2
* @returns {{deptName, flag: number, infoId: (*|jQuery|*|*|*|*), offset: *, endDate: (*|jQuery|*|*|*|*), limit: (*|number), startDate: (*|jQuery|*|*|*|*), doctorInCharge}}
*/
function queryParamsInitTable2(params,_this,row){
var currPageSize = _this.pageSize;
if (currPageSize == 2) {
currPageSize = 10;
}
var limit = null;
var offset = params.offset;
//判断是否导出全部all
if ($("#sel_exportoption").val() == "all") {
offset = 0;
limit = _this.totalRows;
_this.pageSize = limit;
} else {
limit = currPageSize;
_this.pageSize = currPageSize;
}
var infoId = row.infoId;
var deptName = row.deptCode;
var operRole = 0;
if(infoId < 5){
operRole = 1;
}else if(infoId == 5 || infoId == 6){
operRole = 2;
}else{
operRole = 4;
}
var temp = {
offset:offset,
limit:limit,
startDate: $("#startTime1").val(),
endDate: $("#endTime1").val(),
flag:2,
deptName:deptName,
doctorInCharge:getSelecteds("doctorInCharge"),
infoId:infoId,
operRole:operRole
};
return temp;
}
@ -636,12 +619,11 @@ $(document).keyup(function(event){
});
//导出excel功能
$("#excelBtn").click(function () {
var deptName = $("#deptName").val();
var startDate = $("#startTime1").val();
var endDate = $("#endTime1").val();
var url = path+"/record/exportExcelSubmit";
var url = path+"/record/exportExcelDeptOverTime";
post(url,{
"deptName":deptName,
"deptName":getDeptName(),
"startDate":startDate,
"endDate":endDate,
"flag":2,

Loading…
Cancel
Save