佛山3院单点登录功能

master
xuhaoxiang 4 years ago
commit 2ac4b1d254

@ -14,6 +14,7 @@ import com.github.pagehelper.PageHelper;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@ -34,7 +35,9 @@ public class RecordController {
* @return
*/
@RequestMapping("submitRecord")
public String submitRecord(){
public String submitRecord(Model model, String startDateTo, String endDateTo){
model.addAttribute("startDate",startDateTo);
model.addAttribute("endDate",endDateTo);
return "record/submitRecord";
}
@ -67,7 +70,7 @@ public class RecordController {
}
}
offsetLimitPage.setRows(list);
request.getSession().removeAttribute("unSubmitRecords");
//request.getSession().removeAttribute("unSubmitRecords");
return offsetLimitPage;
}
@ -122,7 +125,9 @@ public class RecordController {
* @return
*/
@RequestMapping("deptOverTimeInfo")
public String deptOverTimeInfo(){
public String deptOverTimeInfo(Model model, String startDateTo, String endDateTo){
model.addAttribute("startDate",startDateTo);
model.addAttribute("endDate",endDateTo);
return "record/deptOverTimeInfo";
}

@ -76,7 +76,9 @@ public class StatisticsController {
//扫描上传记录报表
@RequestMapping("scanCount")
public String scanCount(){
public String scanCount(Model model,String startDateTo,String endDateTo){
model.addAttribute("startDate",startDateTo);
model.addAttribute("endDate",endDateTo);
return "statistics/scanCount";
}

@ -42,7 +42,9 @@ public class VCountController {
private Archive_MasterMapper archiveMasterMapper;
@RequestMapping(value = "/vCounts")
public String faults(){
public String faults(Model model,String startDateTo,String endDateTo){
model.addAttribute("startDate",startDateTo);
model.addAttribute("endDate",endDateTo);
return "vCountDir/vCountList";
}

@ -0,0 +1,211 @@
package com.emr.controller;
import com.emr.dao.ServerMachineMapper;
import com.emr.entity.Archive_Master_Vo;
import com.emr.entity.OffsetLimitPage;
import com.emr.service.ipml.RecordService;
import com.emr.service.ipml.WorkHomeService;
import com.emr.util.ExceptionPrintUtil;
import com.emr.util.ExportExcelUtil;
import com.emr.vo.NotSubmitRecordVo;
import com.emr.vo.RecordSearch;
import com.emr.vo.ServerMachineVo;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2021/7/23 13:23
* @UpdateUser:
* @UpdateDate: 2021/7/23 13:23
* @UpdateRemark:
* @Version: 1.0
*/
@Controller
@RequestMapping("workHome")
public class WorkHomeController {
@Autowired
private WorkHomeService workHomeService;
@Autowired
private RecordService recordService;
@Autowired
private ServerMachineMapper serverMachineMapper;
/**
*
* @return
*/
@RequestMapping("workHomeList")
public String workHomeList(){
return "workHome/workHomeList";
}
/**
*
* @return
*/
@RequestMapping("workHomeIframe")
public String workHomeIframe(){
return "workHome/workHomeIframe";
}
/**
*
* @return
*/
@RequestMapping("recordData")
public String recordData(){
return "workHome/recordData";
}
/**
*
* @return
*/
@RequestMapping("recordDataOneTable")
@ResponseBody
public OffsetLimitPage recordDataOneTable(String startDateTo,String endDateTo) throws Exception{
return workHomeService.recordDateOneTable(startDateTo,endDateTo);
}
/**
*
* @return
*/
@RequestMapping("recordDataTwoTable")
@ResponseBody
public OffsetLimitPage recordDataTwoTable(Integer offset, Integer limit,String startDateTo,String endDateTo) throws Exception{
return workHomeService.recordDataTwoTable(offset,limit,startDateTo,endDateTo);
}
/**
*
* @return
*/
@RequestMapping("recordDataThreeTable")
@ResponseBody
public List<NotSubmitRecordVo> recordDataThreeTable(RecordSearch recordSearch) throws Exception{
return workHomeService.recordDataThreeTable(recordSearch);
}
/**
*
* @return
*/
@RequestMapping("notSubmitRecord")
public String notSubmitRecord(RecordSearch recordSearch, Model model) throws Exception{
model.addAttribute("obj",recordSearch);
return "workHome/notSubmitRecord";
}
/**
*
* @param response
*/
@ResponseBody
@RequestMapping(value = "exportExcelNotSubmit")
public void exportExcelNotSubmit(HttpServletResponse response,
RecordSearch recordSearch){
String tableThNames = "主管医生,医生工号,超期份数,出院科室,患者姓名,住院号,"+
"住院次数,出院日期,超期天数,状态,完整性";
String fieldCns = "doctorInCharge,doctorInChargeCode,overTimeCounts,deptName,name," +
"inpNo,visitId,dischargeDateTime,overtimeDays,status,lockInfo";
//构造excel的数据
try {
List<Archive_Master_Vo> list = recordService.selectRecordGroupDeptAndRole(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("medicalRoomManage")
public String medicalRoomManage(){
return "workHome/medicalRoomManage";
}
/**
*
* @return
*/
@RequestMapping("medicalRoomManageData")
@ResponseBody
public Map<String,String> medicalRoomManageData(String startDateTo, String endDateTo) throws Exception{
return workHomeService.medicalRoomManageData(startDateTo,endDateTo);
}
/**
* HIS退
* @return
*/
@RequestMapping("callBackStatistics")
public String callBackStatistics(){
return "workHome/callBackStatistics";
}
/**
* HIS退
* @return
*/
@RequestMapping("callBackStatisticsData")
@ResponseBody
public OffsetLimitPage callBackStatisticsData(Integer offset, Integer limit,String startDateTo,String endDateTo) throws Exception{
return workHomeService.callBackStatisticsData(offset,limit,startDateTo,endDateTo);
}
/**
* HIS退
* @return
*/
@RequestMapping("callBackStatisticsDetail")
@ResponseBody
public OffsetLimitPage callBackStatisticsDetail(Integer offset, Integer limit,String time,String startDateTo,String endDateTo) throws Exception{
return workHomeService.callBackStatisticsDetail(offset,limit,time,startDateTo,endDateTo);
}
/**
*
* @return
*/
@RequestMapping("collectList")
public String collectList(){
return "workHome/collectList";
}
/**
*
* @return
*/
@RequestMapping("collectListData")
@ResponseBody
public OffsetLimitPage collectListData(Integer offset, Integer limit) throws Exception{
PageHelper.offsetPage(offset, limit);
List<ServerMachineVo> list = serverMachineMapper.selectAll();
return new OffsetLimitPage((Page) list);
}
}

@ -153,8 +153,8 @@ public class beHospitaledController {
@ResponseBody
@RequestMapping(value = "/exportExcel")
public void exportExcel(HttpServletResponse response, HttpServletRequest request,Archive_Master_Vo archiveMasterVo,Integer isSearch){
String tableThNames = "住院号,住院次数,名字,性别,出院科室,出院日期,主管医生,状态";
String fieldCns = "inpNo,visitId,name,sex,deptName,dischargeDateTime,doctorInCharge,status";
String tableThNames = "住院号,住院次数,名字,性别,出院科室,出院日期,主管医生,状态,是否完整,HIS召回状态,打印状态";
String fieldCns = "inpNo,visitId,name,sex,deptName,dischargeDateTime,doctorInCharge,status,lockinfo,callBackStatus,printStatus";
//构造excel的数据
if(isSearch == 0){
archiveMasterVo.setStartDateTo(null);

@ -49,7 +49,7 @@ public class lastVerifyController {
private EmrOvertimeSetService emrOvertimeSetService;
@RequestMapping(value = "/lastVerifys")
public String faults(Integer flag, Model model){
public String faults(Integer flag, Model model,String startDateTo,String endDateTo){
if(null != flag){
model.addAttribute("flag",flag);
model.addAttribute("overDateSet",overDateSet);
@ -59,6 +59,8 @@ public class lastVerifyController {
model.addAttribute("remindDate",remindDate);
}
}
model.addAttribute("startDate",startDateTo);
model.addAttribute("endDate",endDateTo);
return "lastVerifyDir/lastVerifyList";
}
@ -93,8 +95,8 @@ public class lastVerifyController {
archiveMasterVo.setStartDateTo(null);
archiveMasterVo.setEndDateTo(null);
}
String tableThNames = "住院号,住院次数,名字,性别,出院科室,出院日期,主管医生,状态,纸质状态,纸质扫描";
String fieldCns = "inpNo,visitId,name,sex,deptName,dischargeDateTime,doctorInCharge,status,remark,checkName";
String tableThNames = "住院号,住院次数,名字,性别,出院科室,出院日期,主管医生,状态,纸质状态,纸质扫描,HIS召回状态,打印状态";
String fieldCns = "inpNo,visitId,name,sex,deptName,dischargeDateTime,doctorInCharge,status,remark,checkName,callBackStatus,printStatus";
try {
//构造excel的数据
List<Archive_Master_Vo> list = archiveMasterService.selectLastVerifyList(archiveMasterVo);

@ -67,4 +67,12 @@ public interface ArchiveOtherExtMapper {
@Param("filePath")String filePath);
void updateOtherDomForStatusFlag( @Param("jzh")String jzh, @Param("filePath")String filePath,@Param("sysFlag")Integer sysFlag);
/**
* his
* @param time
* @return
*/
List<ArchiveOtherExtVo> callBackStatisticsDetail(@Param("time") String time,@Param("startDateTo")String startDateTo,
@Param("endDateTo")String endDateTo);
}

@ -59,5 +59,7 @@ public interface Archive_DetailMapper {
List<Archive_Detail> selectIsScan(@Param("ids") String ids,@Param("fieldFlag")Integer fieldFlag);
List<Archive_Detail> selectIsScanByDate(@Param("startDateTo") String startDateTo,@Param("endDateTo")String endDateTo);
List<Archive_Detail> selectRepeatRecordFileForMasterIds(@Param("masterIds")String masterIds);
}

@ -3,6 +3,8 @@ package com.emr.dao;
import com.emr.entity.Archive_Master;
import com.emr.entity.Archive_Master_Vo;
import com.emr.vo.DoctorStatistics;
import com.emr.vo.RecordCommonVo;
import com.emr.vo.RecordStatisticsHome;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -63,6 +65,39 @@ public interface Archive_MasterMapper {
*/
List<Archive_Master_Vo> selectCompleteMasterIds(Archive_Master_Vo master);
/**
*
* @param startDateTo
* @param endDateTo
* @return
*/
List<Archive_Master> recordDateOneTable(@Param("startDateTo") String startDateTo,@Param("endDateTo") String endDateTo,@Param("deptCodes")String deptCodes);
/**
*
* @param startDateTo
* @param endDateTo
* @return
*/
List<RecordStatisticsHome> recordDataTwoTable(@Param("startDateTo") String startDateTo,@Param("endDateTo") String endDateTo);
/**
* HIS退
* @param startDateTo
* @param endDateTo
* @return
*/
List<RecordCommonVo> callBackStatisticsData(@Param("startDateTo") String startDateTo, @Param("endDateTo") String endDateTo);
List<Integer> selectStatisticsCount(@Param("startDateTo") String startDateTo, @Param("endDateTo") String endDateTo);
List<Integer> overTimeAndReOverTimeCount(@Param("date")String date,
@Param("deadDate")String deadDate,
@Param("reDate")String reDate,
@Param("reDeadDate")String reDeadDate,
@Param("startDateTo")String startDateTo,
@Param("endDateTo")String endDateTo);
/**
*
* @param record

@ -0,0 +1,22 @@
package com.emr.dao;
import com.emr.entity.ServerMachine;
import com.emr.vo.ServerMachineVo;
import java.util.List;
public interface ServerMachineMapper {
int deleteByPrimaryKey(String servername);
int insert(ServerMachine record);
int insertSelective(ServerMachine record);
ServerMachine selectByPrimaryKey(String servername);
int updateByPrimaryKeySelective(ServerMachine record);
int updateByPrimaryKey(ServerMachine record);
List<ServerMachineVo> selectAll();
}

@ -15,4 +15,6 @@ public interface TUuPrintMapper {
List<TUuPrintVo> getPrintCount(TUuPrintSearch record);
List<TUuPrintVo> getPrintInfo(TUuPrintSearch record);
List<TUuPrint> selectAllByPatientId(@Param("patientId") String patientId);
}

@ -51,6 +51,16 @@ public class Archive_Master {
private BigDecimal d1;
private String t1;
public String getT1() {
return t1;
}
public void setT1(String t1) {
this.t1 = t1;
}
public String getChangeReason() {
return changeReason;
}

@ -83,6 +83,10 @@ public class Archive_Master_Vo extends Archive_Master{
private String paperPosition4;
private String lockInfo;//完整性描述
private String callBackStatus;//退回召回状态
private String printStatus;//打印状态
}

@ -0,0 +1,261 @@
package com.emr.entity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
public class ServerMachine implements Serializable {
private String servername;
private Date lastonlinetime;
private Integer state;
private String loginuser;
private String loginpwd;
private Long doccount;
private Long infocount;
private Long warningcount;
private Long errorcount;
private Long donecount;
private Date lastupdatetime;
private String c1;
private String c2;
private String c3;
private String c4;
private String c5;
private BigDecimal n1;
private BigDecimal n2;
private BigDecimal n3;
private Date t1;
private Date t2;
private Date t3;
private static final long serialVersionUID = 1L;
public String getServername() {
return servername;
}
public void setServername(String servername) {
this.servername = servername == null ? null : servername.trim();
}
public Date getLastonlinetime() {
return lastonlinetime;
}
public void setLastonlinetime(Date lastonlinetime) {
this.lastonlinetime = lastonlinetime;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getLoginuser() {
return loginuser;
}
public void setLoginuser(String loginuser) {
this.loginuser = loginuser == null ? null : loginuser.trim();
}
public String getLoginpwd() {
return loginpwd;
}
public void setLoginpwd(String loginpwd) {
this.loginpwd = loginpwd == null ? null : loginpwd.trim();
}
public Long getDoccount() {
return doccount;
}
public void setDoccount(Long doccount) {
this.doccount = doccount;
}
public Long getInfocount() {
return infocount;
}
public void setInfocount(Long infocount) {
this.infocount = infocount;
}
public Long getWarningcount() {
return warningcount;
}
public void setWarningcount(Long warningcount) {
this.warningcount = warningcount;
}
public Long getErrorcount() {
return errorcount;
}
public void setErrorcount(Long errorcount) {
this.errorcount = errorcount;
}
public Long getDonecount() {
return donecount;
}
public void setDonecount(Long donecount) {
this.donecount = donecount;
}
public Date getLastupdatetime() {
return lastupdatetime;
}
public void setLastupdatetime(Date lastupdatetime) {
this.lastupdatetime = lastupdatetime;
}
public String getC1() {
return c1;
}
public void setC1(String c1) {
this.c1 = c1 == null ? null : c1.trim();
}
public String getC2() {
return c2;
}
public void setC2(String c2) {
this.c2 = c2 == null ? null : c2.trim();
}
public String getC3() {
return c3;
}
public void setC3(String c3) {
this.c3 = c3 == null ? null : c3.trim();
}
public String getC4() {
return c4;
}
public void setC4(String c4) {
this.c4 = c4 == null ? null : c4.trim();
}
public String getC5() {
return c5;
}
public void setC5(String c5) {
this.c5 = c5 == null ? null : c5.trim();
}
public BigDecimal getN1() {
return n1;
}
public void setN1(BigDecimal n1) {
this.n1 = n1;
}
public BigDecimal getN2() {
return n2;
}
public void setN2(BigDecimal n2) {
this.n2 = n2;
}
public BigDecimal getN3() {
return n3;
}
public void setN3(BigDecimal n3) {
this.n3 = n3;
}
public Date getT1() {
return t1;
}
public void setT1(Date t1) {
this.t1 = t1;
}
public Date getT2() {
return t2;
}
public void setT2(Date t2) {
this.t2 = t2;
}
public Date getT3() {
return t3;
}
public void setT3(Date t3) {
this.t3 = t3;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", servername=").append(servername);
sb.append(", lastonlinetime=").append(lastonlinetime);
sb.append(", state=").append(state);
sb.append(", loginuser=").append(loginuser);
sb.append(", loginpwd=").append(loginpwd);
sb.append(", doccount=").append(doccount);
sb.append(", infocount=").append(infocount);
sb.append(", warningcount=").append(warningcount);
sb.append(", errorcount=").append(errorcount);
sb.append(", donecount=").append(donecount);
sb.append(", lastupdatetime=").append(lastupdatetime);
sb.append(", c1=").append(c1);
sb.append(", c2=").append(c2);
sb.append(", c3=").append(c3);
sb.append(", c4=").append(c4);
sb.append(", c5=").append(c5);
sb.append(", n1=").append(n1);
sb.append(", n2=").append(n2);
sb.append(", n3=").append(n3);
sb.append(", t1=").append(t1);
sb.append(", t2=").append(t2);
sb.append(", t3=").append(t3);
sb.append("]");
return sb.toString();
}
}

@ -255,7 +255,6 @@ public class Task1 {
Field field = vo.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
Integer unCheckCount = (Integer) field.get(vo);
System.out.println(unCheckCount);
if(unCheckCount > 0){
List<User> roleUserList = new ArrayList<>();
//获取该角色的用户集合

@ -164,7 +164,7 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
nurseFlag = true;
}
if(StringUtils.isNotBlank(detailVo.getTitle()) &&
!detailVo.getTitle().contains(strTemp) && !detailVo.getTitle().contains(nurseTemp)) {
(StringUtils.isBlank(detailVoTemp.getId()) || !detailVo.getId().equals(detailVoTemp.getId())) && (StringUtils.isBlank(nurseDetailVoTemp.getId()) || !detailVo.getId().equals(nurseDetailVoTemp.getId()))) {
returnList.add(detailVo);
}else{
if(StringUtils.isBlank(detailVo.getTitle())){

@ -64,6 +64,8 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
private String POWER_URLHEAD;
@Autowired
private CommomService commomService;
@Autowired
private TUuPrintMapper tUuPrintMapper;
/**
*
* */

@ -64,7 +64,7 @@ public class RecordService {
//填充各个角色数据、主要填充已提交的
selectList(unSubmitRecords);
}
request.getSession().setAttribute("unSubmitRecords",unSubmitRecords);
//request.getSession().setAttribute("unSubmitRecords",unSubmitRecords);
return unSubmitRecords;
}
@ -464,6 +464,30 @@ public class RecordService {
return recordStatistics;
}
/**
*
* @param dictionaries
* @param vo
*/
private void deptNameCode2Name(List<Emr_Dictionary> dictionaries, Archive_Master_Vo vo) {
if(!CollectionUtils.isEmpty(dictionaries)) {
//在院科室
String deptAdmissionTo = vo.getDeptAdmissionTo();
//出院科室
String deptName = vo.getDeptName();
//住院科室
for (Emr_Dictionary dictionaryTemp : dictionaries) {
String name = dictionaryTemp.getName();
if (StringUtils.isNotBlank(deptAdmissionTo) && deptAdmissionTo.equals(dictionaryTemp.getCode())) {
vo.setDeptAdmissionTo(name);
}
if (StringUtils.isNotBlank(deptName) && deptName.equals(dictionaryTemp.getCode())) {
vo.setDeptName(name);
}
}
}
}
/**
*
* @param recordSearch
@ -473,7 +497,13 @@ public class RecordService {
List<Archive_Master_Vo> list = recordMapper.selectRecordGroupDeptAndRole(recordSearch);
if(!CollectionUtils.isEmpty(list)){
List<User> userList = commomService.getUserList();
//查询科室集合
Emr_Dictionary dictionary = new Emr_Dictionary();
dictionary.setTypecode("dept_code");
List<Emr_Dictionary> dictionaries = dictionaryMapper.dicByTypeCode(dictionary);
for (Archive_Master_Vo obj : list) {
//转换科室
deptNameCode2Name(dictionaries, obj);
//转换工号
if(!CollectionUtils.isEmpty(userList)) {
for (User user : userList) {

@ -12,6 +12,7 @@ import com.emr.service.V_CountService;
import com.emr.vo.V_CountVo;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -24,7 +25,13 @@ public class V_CountServiceImpl implements V_CountService {
@Override
public List<V_Count> selectByCol(V_CountVo record) {
return vCountMapper.selectByCol(record);
List<V_Count> counts = vCountMapper.selectByCol(record);
if(!CollectionUtils.isEmpty(counts)){
for(V_Count count :counts){
count.setUnfileNum(count.getOutNum() - count.getFileNum());
}
}
return counts;
}
@Override

@ -0,0 +1,530 @@
package com.emr.service.ipml;
import com.emr.dao.*;
import com.emr.entity.*;
import com.emr.vo.*;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.shiro.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2021/7/28 14:22
* @UpdateUser:
* @UpdateDate: 2021/7/28 14:22
* @UpdateRemark:
* @Version: 1.0
*/
@Service
public class WorkHomeService {
@Autowired
private Archive_MasterMapper archiveMasterMapper;
@Autowired
private Emr_DictionaryMapper dictionaryMapper;
@Autowired
private RecordMapper recordMapper;
@Autowired
private EmrOvertimeSetService overtimeSetService;
@Autowired
private EmrHolidaySetMapper holidaySetMapper;
@Autowired
private Archive_DetailMapper archiveDetailMapper;
@Autowired
private ArchiveOtherExtMapper archiveOtherExtMapper;
/**
*
* @param startDateTo
* @param endDateTo
* @return
*/
public OffsetLimitPage recordDateOneTable(String startDateTo, String endDateTo) {
//查询全部出院日期和状态
List<Archive_Master> list= archiveMasterMapper.recordDateOneTable(startDateTo,endDateTo,null);
//定义返回集合
List<RecordStatisticsHome> returnList = new Page<>();
//定义接收对象
RecordStatisticsHome obj = new RecordStatisticsHome();
obj.setName("全院");
//定义出院人数
int disCount = 0;
//定义入院人数
int admissCount = 0;
//定义出科数量
int sumbitCount = 0;
//定义归档数量
int recordCount = 0;
if(!CollectionUtils.isEmpty(list)){
for(Archive_Master archiveMaster : list){
//判断出院、入院
String disDate = archiveMaster.getDischargeDateTime();
if(StringUtils.isNotBlank(disDate) && !"1801".equals(disDate.substring(0,4))){
disCount++;
}else{
admissCount++;
}
//判断出科
String archivestate = archiveMaster.getArchivestate();
if(StringUtils.isNotBlank(archivestate)) {
String t1 = archiveMaster.getT1();
if ("64".equals(archivestate) || "128".equals(archivestate)) {
sumbitCount++;
}
//判断归档 待终审且已签收+已归档
if ("128".equals(archivestate) || ("64".equals(archivestate) && StringUtils.isNotBlank(t1) && !"1801-02-03".equals(t1.substring(0,10)))) {
recordCount++;
}
}
}
}
obj.setName("全院");
obj.setDisCount(disCount);
obj.setAdmissCount(admissCount);
obj.setSumbitCount(sumbitCount);
obj.setRecordCount(recordCount);
if(disCount != 0) {
obj.setRecordRate((recordCount * 100 / disCount) + "%");
}
returnList.add(obj);
return new OffsetLimitPage((Page) returnList);
}
/**
*
* @param offset
* @param limit
* @param startDateTo
* @param endDateTo
* @return
*/
public OffsetLimitPage recordDataTwoTable(Integer offset, Integer limit, String startDateTo, String endDateTo) {
PageHelper.offsetPage(offset, limit);
//查询科室归档数量排名
List<RecordStatisticsHome> returnList = archiveMasterMapper.recordDataTwoTable(startDateTo,endDateTo);
if(!CollectionUtils.isEmpty(returnList)){
//定义科室编号集合
StringBuilder deptCodes = new StringBuilder();
//查询科室集合
Emr_Dictionary dictionary = new Emr_Dictionary();
dictionary.setTypecode("dept_code");
List<Emr_Dictionary> dictionaries = dictionaryMapper.dicByTypeCode(dictionary);
for(RecordStatisticsHome obj : returnList){
if(StringUtils.isNotBlank(deptCodes)){
deptCodes.append(",");
}
//出院科室
String deptName = obj.getDeptName();
deptCodes.append(deptName);
}
//查询全部出院日期和状态
List<Archive_Master> list = archiveMasterMapper.recordDateOneTable(startDateTo,endDateTo,deptCodes.toString());
for(RecordStatisticsHome vo : returnList){
//出院科室
String deptName = vo.getDeptName();
//定义出院人数
int disCount = 0;
//定义入院人数
int admissCount = 0;
//定义归档数量
int recordCount = 0;
//定义出科数量
int sumbitCount = 0;
if(!CollectionUtils.isEmpty(list)){
for(Archive_Master archiveMaster : list){
if(StringUtils.isNotBlank(archiveMaster.getDeptName()) && archiveMaster.getDeptName().equals(deptName)){
//判断出院、入院
String disDate = archiveMaster.getDischargeDateTime();
if(StringUtils.isNotBlank(disDate) && !"1801".equals(disDate.substring(0,4))){
disCount++;
}else{
admissCount++;
}
String archivestate = archiveMaster.getArchivestate();
String t1 = archiveMaster.getT1();
//判断归档 待终审且已签收+已终审
if ("128".equals(archivestate) || ("64".equals(archivestate) && StringUtils.isNotBlank(t1) && !"1801-02-03".equals(t1.substring(0,10)))) {
recordCount++;
}
//判断出科
if ("128".equals(archivestate) || "64".equals(archivestate)) {
sumbitCount++;
}
}
}
}
vo.setDisCount(disCount);
vo.setRecordCount(recordCount);
vo.setAdmissCount(admissCount);
vo.setSumbitCount(sumbitCount);
//转换科室
for (Emr_Dictionary dictionaryTemp : dictionaries) {
String name = dictionaryTemp.getName();
if (StringUtils.isNotBlank(deptName) && deptName.equals(dictionaryTemp.getCode())) {
vo.setName(name);
}
}
}
}
return new OffsetLimitPage((Page) returnList);
}
/**
*
* @param recordSearch
* @return
*/
public List<NotSubmitRecordVo> recordDataThreeTable(RecordSearch recordSearch) {
List<SubmitRecord> list = recordMapper.selectUnCountGroupDeptForRemind(recordSearch);
List<NotSubmitRecordVo> returnList = new ArrayList<>();
if(!CollectionUtils.isEmpty(list)){
SubmitRecord obj = list.get(0);
//获取科室编号
String deptName = obj.getDeptName();
//获取科室名称
String deptNameCn = obj.getDeptNameCn();
int count2 = obj.getUnDoctorSubmitCount();
if(count2 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,2,"医生未提交",count2);
returnList.add(vo);
}
int count3 = obj.getUnDoctorCheckCount();
if(count3 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,3,"医生质控员未提交",count3);
returnList.add(vo);
}
int count4 = obj.getUnDirectorCheckCount();
if(count4 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,4,"科主任未提交",count4);
returnList.add(vo);
}
int count5 = obj.getUnNurseSubmitCount();
if(count5 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,5,"护士未提交",count5);
returnList.add(vo);
}
int count6 = obj.getUnNurseCheckCount();
if(count6 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,6,"护士质控员未提交",count6);
returnList.add(vo);
}
int count7 = obj.getUnHeadNurseCount();
if(count7 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,7,"护士长未提交",count7);
returnList.add(vo);
}
int count8 = obj.getUnRecordRoomCount();
if(count8 > 0){
NotSubmitRecordVo vo = new NotSubmitRecordVo(deptName,deptNameCn,8,"病案室未提交",count8);
returnList.add(vo);
}
}
return returnList;
}
/**
*
* @param startDateTo
* @param endDateTo
*/
public Map<String,String> medicalRoomManageData(String startDateTo, String endDateTo) throws Exception{
//查询总数据 1.出院人数 2.待终审数量 3.已终审数量 4.已签收数量 5.已扫描数量 6.待终审已签收
List<Integer> list = archiveMasterMapper.selectStatisticsCount(startDateTo, endDateTo);
//组织返回数据
//定义出院人数
int disCount = 0;
//定义待终审数量
int headNurseCount = 0;
//定义归档数量 已终审+待终审已签收
int recordCount = 0;
//定义签收数量
int signCount = 0;
//已扫描数量
int isScanCount = 0;
//超期病历
int overTimeCount = 0;
//预超期病历
int reOverTimeCount = 0;
//归档率 归档数量/出院人数
int recordRate = 0;
//签收率 已签收/总出院人数
int signRate = 0;
//扫描率 已扫描/已签收
int scanRate = 0;
Map<String, String> map = new HashMap<>();
if (!CollectionUtils.isEmpty(list)) {
disCount = list.get(0);
headNurseCount = list.get(1);
recordCount = list.get(2) + list.get(5);
signCount = list.get(3);
isScanCount = list.get(4);
//查询超期参数
EmrOvertimeSet overtimeSet = overtimeSetService.selectByPrimaryKey(1);
//获取未超期列表
List<EmrHolidaySet> unHolidays = holidaySetMapper.selectNotHolidayList();
//获取非死亡工作日
String date = unHolidays.get(overtimeSet.getDays()).getDate();
//获取死亡工作日
String deadDate = unHolidays.get(overtimeSet.getDeadDays()).getDate();
//获取预超期非死亡工作日
String reDate = unHolidays.get(overtimeSet.getDays() - overtimeSet.getSurplusDays()).getDate();
//获取预超期死亡工作日
String reDeadDate = unHolidays.get(overtimeSet.getDeadDays() - overtimeSet.getSurplusDays()).getDate();
//查询超期与预超期数量集合 1.超期数量 2.预超期数量
List<Integer> overTimeAndReOverTimeCountList = archiveMasterMapper.overTimeAndReOverTimeCount(date,deadDate,reDate,reDeadDate,startDateTo, endDateTo);
overTimeCount = getOverTimeCount(startDateTo,endDateTo);
reOverTimeCount = overTimeAndReOverTimeCountList.get(1);
}
//归档率 归档数量/出院人数
if(disCount != 0){
recordRate = recordCount * 100 / disCount;
}
map.put("recordRate",recordRate + "%");
//归档数量
map.put("recordCount", recordCount + "");
//待终审数量
map.put("headNurseCount", headNurseCount + "");
//出科数量 待终审数量+终审数量
map.put("submitCount", (list.get(2) + headNurseCount) + "");
//签收数量
map.put("signCount", signCount + "");
//待签收数量 总出院人数-已签收数量
map.put("notSignCount", (disCount - signCount) + "");
//签收率 已签收/总出院人数
if(disCount != 0){
signRate = signCount * 100 / disCount;
}
map.put("signRate",signRate + "%");
//超期数量
map.put("overTimeCount", overTimeCount + "");
//预超期数量
map.put("reOverTimeCount",reOverTimeCount + "");
//已扫描数量
map.put("isScanCount",isScanCount + "");
//未扫描数量 已签收-已扫描
map.put("notScanCount",(signCount - isScanCount) + "");
//扫描率
if(disCount != 0 && signCount != 0){
scanRate = (isScanCount * 100 / signCount);
}
map.put("scanRate",scanRate + "%");
return map;
}
private int getOverTimeCount(String startDateTo, String endDateTo) throws Exception{
RecordSearch recordSearch = new RecordSearch();
recordSearch.setStartDate(startDateTo);
recordSearch.setEndDate(endDateTo);
int count = 0;
List<SubmitRecord> unSubmitRecords = recordMapper.selectUnCountGroupDept(recordSearch);
if (!CollectionUtils.isEmpty(unSubmitRecords)) {
unSubmitRecords = selectOvertimeRecord(unSubmitRecords);
if(!CollectionUtils.isEmpty(unSubmitRecords)){
count = unSubmitRecords.size();
}
}
return count;
}
/**
*
* @param unSubmitRecords
* @return
*/
private List<SubmitRecord> selectOvertimeRecord(List<SubmitRecord> unSubmitRecords) throws Exception{
//查询超期参数
EmrOvertimeSet overtimeSet = overtimeSetService.selectByPrimaryKey(1);
//获取未超期列表
List<EmrHolidaySet> unHolidays = holidaySetMapper.selectNotHolidayList();
Iterator<SubmitRecord> iterator = unSubmitRecords.iterator();
//获取非死亡工作日
String date = unHolidays.get(overtimeSet.getDays()).getDate();
//获取非死亡工作日
String deadDate = unHolidays.get(overtimeSet.getDeadDays()).getDate();
//定义格式化日期
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
while (iterator.hasNext()) {
SubmitRecord record = (SubmitRecord) iterator.next();
//获取是否死亡
String dischargeDisposition = record.getDischargeDisposition();
String dischargeDateTime = record.getDischargeDateTime();
long time = fmt.parse(dischargeDateTime).getTime();
if(StringUtils.isNotBlank(dischargeDisposition) && "5".equals(dischargeDisposition)){
//死亡
if(time >= fmt.parse(deadDate).getTime()){
iterator.remove();
}
}else{
//非死亡
if(time >= fmt.parse(date).getTime()){
iterator.remove();
}
}
}
return unSubmitRecords;
}
/*
public Map<String,String> medicalRoomManageData(String startDateTo, String endDateTo) throws Exception{
//查询总数据
List<Archive_Master> list = archiveMasterMapper.recordDateOneTable(startDateTo, endDateTo, null);
//组织返回数据
Map<String, String> map = new HashMap<>();
if (!CollectionUtils.isEmpty(list)) {
//查询超期参数
EmrOvertimeSet overtimeSet = overtimeSetService.selectByPrimaryKey(1);
//获取未超期列表
List<EmrHolidaySet> unHolidays = holidaySetMapper.selectNotHolidayList();
//获取非死亡工作日
String date = unHolidays.get(overtimeSet.getDays()).getDate();
//获取死亡工作日
String deadDate = unHolidays.get(overtimeSet.getDeadDays()).getDate();
//获取预超期非死亡工作日
String reDate = unHolidays.get(overtimeSet.getDays() - overtimeSet.getSurplusDays()).getDate();
//获取预超期死亡工作日
String reDeadDate = unHolidays.get(overtimeSet.getDeadDays() - overtimeSet.getSurplusDays()).getDate();
//定义出院人数
int disCount = 0;
//定义待终审数量
int headNurseCount = 0;
//定义归档数量
int recordCount = 0;
//定义签收数量
int signCount = 0;
//超期病历
int overTimeCount = 0;
//预超期病历
int reOverTimeCount = 0;
//未扫描数量
int notScanCount = 0;
//定义格式化日期
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
//查询已纸质扫描的MasterId
List<Archive_Detail> archiveDetails = archiveDetailMapper.selectIsScanByDate(startDateTo, endDateTo);
for (Archive_Master obj : list) {
//获取出院日期
String dischargeDateTime = obj.getDischargeDateTime();
//获取状态
String archivestate = obj.getArchivestate();
//获取签收时间
String t1 = obj.getT1();
//判断出院人数
if (StringUtils.isNotBlank(dischargeDateTime) && !"1801".equals(dischargeDateTime.substring(0, 4))) {
disCount++;
//获取死亡状态
String dischargeDisposition = obj.getDischargeDisposition();
long time = fmt.parse(dischargeDateTime).getTime();
if(StringUtils.isNotBlank(dischargeDisposition) && "5".equals(dischargeDisposition)){
//死亡病历
if(time <= fmt.parse(deadDate).getTime()){
//超期
overTimeCount++;
}
if(time > fmt.parse(deadDate).getTime() && time <= fmt.parse(reDeadDate).getTime()){
//预超期
reOverTimeCount++;
}
}else{
//非死亡病历
if(time <= fmt.parse(date).getTime()){
//超期
overTimeCount++;
}
if(time > fmt.parse(date).getTime() && time <= fmt.parse(reDate).getTime()){
//预超期
reOverTimeCount++;
}
}
}
//判断待终审数量
if ("64".equals(archivestate)) {
headNurseCount++;
//判断是否纸质扫描
boolean isScanFlag = false;
if(!CollectionUtils.isEmpty(archiveDetails)){
for(Archive_Detail detail : archiveDetails){
if(detail.getMasterid().equals(obj.getId())){
isScanFlag = true;
break;
}
}
}
if(!isScanFlag){
notScanCount++;
}
}
//判断归档数量
if ("128".equals(archivestate)) {
recordCount++;
}
//判断签收数量
if (StringUtils.isNotBlank(t1) && !"1801".equals(t1.substring(0, 4))) {
signCount++;
}
}
//归档率 归档数量/出院人数
map.put("recordRate", (recordCount * 100 / disCount) + "%");
//终审数量
map.put("recordCount", recordCount + "");
//待终审数量
map.put("headNurseCount", headNurseCount + "");
//出科数量 待终审数量+终审数量
map.put("submitCount", (recordCount + headNurseCount) + "");
//签收数量
map.put("signCount", signCount + "");
//待签收数量 总出院人数-已签收数量
map.put("notSignCount", (disCount - signCount) + "");
//签收率 已签收/总出院人数
map.put("signRate", (signCount * 100 / disCount) + "%");
//超期数量
map.put("overTimeCount", overTimeCount + "");
//预超期数量
map.put("reOverTimeCount",reOverTimeCount + "");
//已扫描数量
map.put("isScanCount",archiveDetails.size() + "");
//预超期数量
map.put("notScanCount",notScanCount + "");
//扫描率
map.put("scanRate",(archiveDetails.size() * 100 / disCount) + "%");
}
return map;
}
*/
/**
* HIS退
* @param offset
* @param limit
* @param startDateTo
* @param endDateTo
* @return
*/
public OffsetLimitPage callBackStatisticsData(Integer offset, Integer limit, String startDateTo, String endDateTo) {
PageHelper.offsetPage(offset, limit);
List<RecordCommonVo> list = archiveMasterMapper.callBackStatisticsData(startDateTo, endDateTo);
return new OffsetLimitPage((Page) list);
}
/**
* HIS退
* @param offset
* @param limit
* @param time
* @return
*/
public OffsetLimitPage callBackStatisticsDetail(Integer offset, Integer limit, String time,String startDateTo,String endDateTo) {
PageHelper.offsetPage(offset, limit);
List<ArchiveOtherExtVo> list = archiveOtherExtMapper.callBackStatisticsDetail(time,startDateTo,endDateTo);
return new OffsetLimitPage((Page) list);
}
}

@ -38,4 +38,10 @@ public class ArchiveOtherExtVo extends ArchiveOtherExt {
private String tempTime;
private String nursingEndTime;
private String t1Str;
private String t2Str;
private String n2Str;
}

@ -0,0 +1,32 @@
package com.emr.vo;
import lombok.Data;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2021/7/29 9:45
* @UpdateUser:
* @UpdateDate: 2021/7/29 9:45
* @UpdateRemark:
* @Version: 1.0
*/
@Data
public class NotSubmitRecordVo {
private String deptCode;
private String deptNameCn;
private Integer infoId;
private String role;
private Integer unCount;
public NotSubmitRecordVo(String deptCode, String deptNameCn, Integer infoId, String role, Integer unCount) {
this.deptCode = deptCode;
this.deptNameCn = deptNameCn;
this.infoId = infoId;
this.role = role;
this.unCount = unCount;
}
}

@ -0,0 +1,22 @@
package com.emr.vo;
import lombok.Data;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2021/7/30 10:04
* @UpdateUser:
* @UpdateDate: 2021/7/30 10:04
* @UpdateRemark:
* @Version: 1.0
*/
@Data
public class RecordCommonVo {
private String time;
private Integer count;
}

@ -0,0 +1,33 @@
package com.emr.vo;
import lombok.Data;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2021/7/28 14:18
* @UpdateUser:
* @UpdateDate: 2021/7/28 14:18
* @UpdateRemark:
* @Version: 1.0
*/
@Data
public class RecordStatisticsHome {
private String deptName;
private String name;
private Integer disCount;
private Integer admissCount;
private Integer sumbitCount;
private Integer recordCount;
private String recordRate;
}

@ -0,0 +1,23 @@
package com.emr.vo;
import com.emr.entity.ServerMachine;
import lombok.Data;
/**
* @ProjectName:
* @Description:
* @Param
* @Return
* @Author:
* @CreateDate: 2021/7/30 11:00
* @UpdateUser:
* @UpdateDate: 2021/7/30 11:00
* @UpdateRemark:
* @Version: 1.0
*/
@Data
public class ServerMachineVo extends ServerMachine {
private String lastOnlintTimeStr;
private String stateStr;
}

@ -708,4 +708,54 @@
</if>
</where>
</update>
<!--根据时间查询his召回详情-->
<select id="callBackStatisticsDetail" resultMap="BaseResultMap">
SELECT CONVERT
( VARCHAR ( 100 ), sysUpdateTime, 120 ) sysupdatetimeStr,
CONVERT ( VARCHAR ( 100 ), archive_other_ext.T2, 120 ) t2Str,
zyh,
archive_other_ext.C1,
CONVERT ( VARCHAR ( 100 ), archive_other_ext.T1, 120 ) t1Str,
CASE
WHEN statusFlag = 0 THEN
'未处理'
WHEN statusFlag = 1 THEN
'处理出错'
WHEN statusFlag = 2 THEN
'处理中'
WHEN statusFlag = 3 THEN
'处理完成'
END statusFlagStr,
CONVERT ( VARCHAR ( 100 ), stime, 120 ) stimeStr,
CONVERT ( VARCHAR ( 100 ), eTime, 120 ) etimeStr,
CASE
WHEN N2 = 1.0000 THEN
'未归档' ELSE '已归档'
END n2Str
FROM
archive_other_ext
INNER JOIN archive_master ON archive_master.patient_id = archive_other_ext.jzh
WHERE
CONVERT ( VARCHAR ( 100 ), archive_other_ext.T2, 23 ) = #{time}
AND sysFlag = - 300
<include refid="disDateRangeWhereSql"></include>
</select>
<!--出院日期范围的功能查询语句-->
<sql id="disDateRangeWhereSql">
<choose>
<when test="startDateTo != null and startDateTo != '' and endDateTo != null and endDateTo != ''">
AND discharge_date_time between CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120) and
#{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDateTo != null and startDateTo != ''">
AND discharge_date_time >= CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120)
</when>
<when test="endDateTo != null and endDateTo != ''">
AND discharge_date_time &lt;= #{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
</sql>
</mapper>

@ -489,10 +489,40 @@
${item}
</foreach>
)
AND Source = '扫描上传'
AND Source = '扫描上传' AND flag = '0'
GROUP BY
MasterID
</select>
<!--出院日期范围的功能查询语句-->
<sql id="disDateRangeWhereSql">
<choose>
<when test="startDateTo != null and startDateTo != '' and endDateTo != null and endDateTo != ''">
AND discharge_date_time between CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120) and
#{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDateTo != null and startDateTo != ''">
AND discharge_date_time >= CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120)
</when>
<when test="endDateTo != null and endDateTo != ''">
AND discharge_date_time &lt;= #{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
</sql>
<!--查询已扫描上传到masterId集合通过查询时间段-->
<select id="selectIsScanByDate" resultMap="BaseResultMap">
SELECT
MasterID
FROM
archive_detail
inner join archive_master
on archive_detail.MasterID = archive_master.id
WHERE
Source = '扫描上传'
AND archive_detail.flag = '0'
<include refid="disDateRangeWhereSql"></include>
GROUP BY
MasterID
</select>
<!--查询有重复的文件的masterId集合-->
<select id="selectRepeatRecordFileForMasterIds" resultMap="BaseResultMap">
SELECT

@ -629,22 +629,79 @@
where user_name = #{userName}
<include refid="leaveHospitalCommomSearch"></include>
</sql>
<sql id="selectCallBackList">
(select distinct jzh from archive_other_ext where sysFlag = -300)
</sql>
<sql id="selectPatientIdByPrintInfo">
(SELECT DISTINCT patient_id FROM archive_printInfo WHERE print_userid not in (1,2399) and D1 > 0)
</sql>
<!---出院-->
<select id="selectByColumn" parameterType="com.emr.entity.Archive_Master_Vo" resultMap="BaseResultMap2">
select * from (
select
<include refid="selectColumms"></include>
<include refid="selectColumms"></include>,
CASE
WHEN jzh IS NOT NULL THEN
'是'
ELSE
'否'
END callBackStatus,
CASE
WHEN printInfoTable.patient_id IS NOT NULL THEN
'是'
ELSE
'否'
END printStatus
from archive_master
<where><include refid="beHospitalSearch"></include></where>
LEFT JOIN <include refid="selectCallBackList"></include> archive_other_ext ON archive_master.patient_id = archive_other_ext.jzh
LEFT JOIN <include refid="selectPatientIdByPrintInfo"></include> printInfoTable ON printInfoTable.patient_id = archive_master.patient_id
<where><include refid="beHospitalSearch"></include>
<if test="callBackStatus != null and callBackStatus != ''">
<choose>
<when test="callBackStatus == 1">
AND jzh is not null
</when>
<otherwise>
AND jzh is null
</otherwise>
</choose>
</if>
<if test="printStatus != null and printStatus != ''">
<choose>
<when test="printStatus == 1">
AND printInfoTable.patient_id is not null
</when>
<otherwise>
AND printInfoTable.patient_id is null
</otherwise>
</choose>
</if>
</where>
<if test="userName!= null and userName != ''">UNION ALL
SELECT
<include refid="selectColumms"></include>
<include refid="selectColumms"></include>,
CASE
WHEN jzh IS NOT NULL THEN
'是'
ELSE
'否'
END callBackStatus,
CASE
WHEN printInfoTable.patient_id IS NOT NULL THEN
'是'
ELSE
'否'
END printStatus
from
archive_transfer_dept_user
inner join
archive_master
on
archive_master.id = archive_transfer_dept_user.master_id
LEFT JOIN <include refid="selectPatientIdByPrintInfo"></include> printInfoTable ON printInfoTable.patient_id = archive_master.patient_id
LEFT JOIN <include refid="selectCallBackList"></include> archive_other_ext ON archive_master.patient_id = archive_other_ext.jzh
where user_name = #{userName}
<include refid="leaveHospitalCommomSearch"></include>
</if>
@ -713,11 +770,46 @@
WHEN T1 IS NOT NULL
AND YEAR ( T1 ) != '1801' THEN
'已签收' ELSE '未签收'
END remark
END remark,
CASE
WHEN jzh IS NOT NULL THEN
'是'
ELSE
'否'
END callBackStatus,
CASE
WHEN printInfoTable.patient_id IS NOT NULL THEN
'是'
ELSE
'否'
END printStatus
from archive_master m
LEFT JOIN ( SELECT MasterID FROM archive_detail INNER JOIN archive_master ON archive_detail.MasterID =
archive_master.id WHERE Source = '扫描上传' GROUP BY MasterID ) archive_detail ON m.id = archive_detail.MasterID
LEFT JOIN
<include refid="selectCallBackList"></include> archive_other_ext
ON m.patient_id = archive_other_ext.jzh
LEFT JOIN ( SELECT MasterID FROM archive_detail WHERE Source = '扫描上传' AND archive_detail.flag = '0' GROUP BY MasterID ) archive_detail ON m.id = archive_detail.MasterID
LEFT JOIN <include refid="selectPatientIdByPrintInfo"></include> printInfoTable ON printInfoTable.patient_id = m.patient_id
where 1=1 and ArchiveState in ('64','1024')
<if test="callBackStatus != null and callBackStatus != ''">
<choose>
<when test="callBackStatus == 1">
AND jzh is not null
</when>
<otherwise>
AND jzh is null
</otherwise>
</choose>
</if>
<if test="printStatus != null and printStatus != ''">
<choose>
<when test="printStatus == 1">
AND printInfoTable.patient_id is not null
</when>
<otherwise>
AND printInfoTable.patient_id is null
</otherwise>
</choose>
</if>
<if test="checkName != null and checkName != ''">
AND MasterID IS
<choose>
@ -1404,4 +1496,157 @@
select patient_id from archive_master where ArchiveState in ('64','1024')
order by discharge_date_time desc
</select>
<!--出院日期范围的功能查询语句-->
<sql id="disDateRangeWhereSql">
<choose>
<when test="startDateTo != null and startDateTo != '' and endDateTo != null and endDateTo != ''">
AND discharge_date_time between CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120) and
#{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
</when>
<when test="startDateTo != null and startDateTo != ''">
AND discharge_date_time >= CONVERT(VARCHAR(10),#{startDateTo,jdbcType=NCHAR},120)
</when>
<when test="endDateTo != null and endDateTo != ''">
AND discharge_date_time &lt;= #{endDateTo,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
</sql>
<!--查询看板病案数据第一表格数据-->
<select id="recordDateOneTable" resultMap="BaseResultMap">
SELECT ID,discharge_date_time,ArchiveState,dept_name,T1 FROM archive_master
<where>
<if test="deptCodes != null and deptCodes != ''">
AND dept_name IN (
<foreach collection="deptCodes.split(',')" item="deptCode" separator=",">
#{deptCode}
</foreach>
)
</if>
<include refid="disDateRangeWhereSql"></include>
</where>
</select>
<!--查询科室按提交率排名-->
<select id="recordDataTwoTable" resultType="com.emr.vo.RecordStatisticsHome">
SELECT
temp1.dept_name,
CASE
WHEN temp3.count = 0 THEN
0
WHEN temp3.count IS NULL THEN
0
WHEN temp2.recordCount IS NULL THEN
0 ELSE ROUND( CAST( temp2.recordCount AS FLOAT ) / temp3.count, 2 ) * 100
END recordRate
FROM
( SELECT DISTINCT dept_name FROM archive_master
<where><include refid="disDateRangeWhereSql"></include></where>
) temp1
LEFT JOIN (
SELECT
dept_name,
COUNT( id ) recordCount
FROM
archive_master
WHERE
( ( ArchiveState = '64' AND T1 IS NOT NULL AND T1 != '' AND T1 >= '1801-02-04' ) OR ArchiveState = '128' )
<include refid="disDateRangeWhereSql"></include>
GROUP BY
dept_name
) temp2 ON temp1.dept_name = temp2.dept_name
LEFT JOIN ( SELECT dept_name, COUNT( id ) count FROM archive_master WHERE discharge_date_time IS NOT NULL AND discharge_date_time != '' AND discharge_date_time >= '1801-02-04'
<include refid="disDateRangeWhereSql"></include>
GROUP BY dept_name ) temp3 ON temp1.dept_name = temp3.dept_name
ORDER BY
recordRate DESC
</select>
<!--统计退召回数量-->
<select id="callBackStatisticsData" resultType="com.emr.vo.RecordCommonVo">
SELECT CONVERT
( VARCHAR ( 100 ), archive_other_ext.T2, 23 ) time,
COUNT ( jzh ) count
FROM
archive_other_ext
INNER JOIN archive_master ON archive_other_ext.jzh = archive_master.patient_id
<where>
archive_other_ext.T2 >= '1801-02-04'
AND sysFlag = -300
<include refid="disDateRangeWhereSql"></include>
</where>
GROUP BY
CONVERT
( VARCHAR ( 100 ), archive_other_ext.T2, 23 )
ORDER BY
time DESC
</select>
<!--查询统计-->
<select id="selectStatisticsCount" resultType="java.lang.Integer">
--1.出院人数
select COUNT(1) count from archive_master where discharge_date_time is not null and discharge_date_time != '' and discharge_date_time >= '1801-02-04'
<include refid="disDateRangeWhereSql"></include>
--2.待终审数量
union all
select COUNT(1) count from archive_master where ArchiveState = '64'
<include refid="disDateRangeWhereSql"></include>
--3.已终审数量
union all
select COUNT(1) count from archive_master where ArchiveState = '128'
<include refid="disDateRangeWhereSql"></include>
--4.已签收数量
union all
select COUNT(1) count from archive_master where T1 is not null and T1 != '' and T1 >= '1801-02-04'
<include refid="disDateRangeWhereSql"></include>
--5.已扫描数量
union all
select count(MasterID) count from ( select distinct MasterID from archive_detail
inner join archive_master on archive_detail.MasterID = archive_master.id
where archive_detail.Source = '扫描上传' and flag = 0 <include refid="disDateRangeWhereSql"></include>) temp
--6.待终审已签收
union all
select COUNT(1) count from archive_master where ArchiveState = '64' and T1 is not null and T1 != '' and T1 >= '1801-02-04'
<include refid="disDateRangeWhereSql"></include>
</select>
<!--超期与预超期数量-->
<select id="overTimeAndReOverTimeCount" resultType="java.lang.Integer">
--超期数量
SELECT count
( 1 ) count
FROM
archive_master
WHERE
( DISCHARGE_DISPOSITION = '5'
AND discharge_date_time &lt;= #{deadDate} + ' 23:59:59'
AND discharge_date_time >= '1801-02-03 00:00:01'
AND ArchiveState != '128'
<include refid="disDateRangeWhereSql"></include>)
OR ( DISCHARGE_DISPOSITION != '5'
AND discharge_date_time &lt;= #{date} + ' 23:59:59'
AND discharge_date_time >= '1801-02-03 00:00:01'
AND ArchiveState != '128'
<include refid="disDateRangeWhereSql"></include>)
--预超期数量
UNION ALL
SELECT count
( 1 ) count
FROM
archive_master
WHERE
( DISCHARGE_DISPOSITION = '5'
AND discharge_date_time >= #{deadDate} + ' 23:59:59'
AND discharge_date_time &lt;= #{reDeadDate}
AND discharge_date_time >= '1801-02-03 00:00:01'
AND ArchiveState != '128'
<include refid="disDateRangeWhereSql"></include>)
OR
( DISCHARGE_DISPOSITION != '5'
AND discharge_date_time >= #{date} + ' 23:59:59'
AND discharge_date_time &lt;= #{reDate}
AND discharge_date_time >= '1801-02-03 00:00:01'
AND ArchiveState != '128'
<include refid="disDateRangeWhereSql"></include>)
</select>
</mapper>

@ -0,0 +1,308 @@
<?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.ServerMachineMapper" >
<resultMap id="BaseResultMap" type="com.emr.entity.ServerMachine" >
<id column="ServerName" property="servername" jdbcType="NVARCHAR" />
<result column="LastOnlineTime" property="lastonlinetime" jdbcType="TIMESTAMP" />
<result column="State" property="state" jdbcType="INTEGER" />
<result column="LoginUser" property="loginuser" jdbcType="NVARCHAR" />
<result column="LoginPwd" property="loginpwd" jdbcType="NVARCHAR" />
<result column="DocCount" property="doccount" jdbcType="BIGINT" />
<result column="InfoCount" property="infocount" jdbcType="BIGINT" />
<result column="WarningCount" property="warningcount" jdbcType="BIGINT" />
<result column="ErrorCount" property="errorcount" jdbcType="BIGINT" />
<result column="DoneCount" property="donecount" jdbcType="BIGINT" />
<result column="LastUpdateTime" property="lastupdatetime" jdbcType="TIMESTAMP" />
<result column="C1" property="c1" jdbcType="NVARCHAR" />
<result column="C2" property="c2" jdbcType="NVARCHAR" />
<result column="C3" property="c3" jdbcType="NVARCHAR" />
<result column="C4" property="c4" jdbcType="NVARCHAR" />
<result column="C5" property="c5" jdbcType="NVARCHAR" />
<result column="N1" property="n1" jdbcType="DECIMAL" />
<result column="N2" property="n2" jdbcType="DECIMAL" />
<result column="N3" property="n3" jdbcType="DECIMAL" />
<result column="T1" property="t1" jdbcType="TIMESTAMP" />
<result column="T2" property="t2" jdbcType="TIMESTAMP" />
<result column="T3" property="t3" jdbcType="TIMESTAMP" />
</resultMap>
<sql id="Base_Column_List" >
ServerName, LastOnlineTime, State, LoginUser, LoginPwd, DocCount, InfoCount, WarningCount,
ErrorCount, DoneCount, LastUpdateTime, C1, C2, C3, C4, C5, N1, N2, N3, T1, T2, T3
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from Server_Machine
where ServerName = #{servername,jdbcType=NVARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
delete from Server_Machine
where ServerName = #{servername,jdbcType=NVARCHAR}
</delete>
<insert id="insert" parameterType="com.emr.entity.ServerMachine" >
insert into Server_Machine (ServerName, LastOnlineTime, State,
LoginUser, LoginPwd, DocCount,
InfoCount, WarningCount, ErrorCount,
DoneCount, LastUpdateTime, C1,
C2, C3, C4, C5,
N1, N2, N3, T1,
T2, T3)
values (#{servername,jdbcType=NVARCHAR}, #{lastonlinetime,jdbcType=TIMESTAMP}, #{state,jdbcType=INTEGER},
#{loginuser,jdbcType=NVARCHAR}, #{loginpwd,jdbcType=NVARCHAR}, #{doccount,jdbcType=BIGINT},
#{infocount,jdbcType=BIGINT}, #{warningcount,jdbcType=BIGINT}, #{errorcount,jdbcType=BIGINT},
#{donecount,jdbcType=BIGINT}, #{lastupdatetime,jdbcType=TIMESTAMP}, #{c1,jdbcType=NVARCHAR},
#{c2,jdbcType=NVARCHAR}, #{c3,jdbcType=NVARCHAR}, #{c4,jdbcType=NVARCHAR}, #{c5,jdbcType=NVARCHAR},
#{n1,jdbcType=DECIMAL}, #{n2,jdbcType=DECIMAL}, #{n3,jdbcType=DECIMAL}, #{t1,jdbcType=TIMESTAMP},
#{t2,jdbcType=TIMESTAMP}, #{t3,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.emr.entity.ServerMachine" >
insert into Server_Machine
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="servername != null" >
ServerName,
</if>
<if test="lastonlinetime != null" >
LastOnlineTime,
</if>
<if test="state != null" >
State,
</if>
<if test="loginuser != null" >
LoginUser,
</if>
<if test="loginpwd != null" >
LoginPwd,
</if>
<if test="doccount != null" >
DocCount,
</if>
<if test="infocount != null" >
InfoCount,
</if>
<if test="warningcount != null" >
WarningCount,
</if>
<if test="errorcount != null" >
ErrorCount,
</if>
<if test="donecount != null" >
DoneCount,
</if>
<if test="lastupdatetime != null" >
LastUpdateTime,
</if>
<if test="c1 != null" >
C1,
</if>
<if test="c2 != null" >
C2,
</if>
<if test="c3 != null" >
C3,
</if>
<if test="c4 != null" >
C4,
</if>
<if test="c5 != null" >
C5,
</if>
<if test="n1 != null" >
N1,
</if>
<if test="n2 != null" >
N2,
</if>
<if test="n3 != null" >
N3,
</if>
<if test="t1 != null" >
T1,
</if>
<if test="t2 != null" >
T2,
</if>
<if test="t3 != null" >
T3,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="servername != null" >
#{servername,jdbcType=NVARCHAR},
</if>
<if test="lastonlinetime != null" >
#{lastonlinetime,jdbcType=TIMESTAMP},
</if>
<if test="state != null" >
#{state,jdbcType=INTEGER},
</if>
<if test="loginuser != null" >
#{loginuser,jdbcType=NVARCHAR},
</if>
<if test="loginpwd != null" >
#{loginpwd,jdbcType=NVARCHAR},
</if>
<if test="doccount != null" >
#{doccount,jdbcType=BIGINT},
</if>
<if test="infocount != null" >
#{infocount,jdbcType=BIGINT},
</if>
<if test="warningcount != null" >
#{warningcount,jdbcType=BIGINT},
</if>
<if test="errorcount != null" >
#{errorcount,jdbcType=BIGINT},
</if>
<if test="donecount != null" >
#{donecount,jdbcType=BIGINT},
</if>
<if test="lastupdatetime != null" >
#{lastupdatetime,jdbcType=TIMESTAMP},
</if>
<if test="c1 != null" >
#{c1,jdbcType=NVARCHAR},
</if>
<if test="c2 != null" >
#{c2,jdbcType=NVARCHAR},
</if>
<if test="c3 != null" >
#{c3,jdbcType=NVARCHAR},
</if>
<if test="c4 != null" >
#{c4,jdbcType=NVARCHAR},
</if>
<if test="c5 != null" >
#{c5,jdbcType=NVARCHAR},
</if>
<if test="n1 != null" >
#{n1,jdbcType=DECIMAL},
</if>
<if test="n2 != null" >
#{n2,jdbcType=DECIMAL},
</if>
<if test="n3 != null" >
#{n3,jdbcType=DECIMAL},
</if>
<if test="t1 != null" >
#{t1,jdbcType=TIMESTAMP},
</if>
<if test="t2 != null" >
#{t2,jdbcType=TIMESTAMP},
</if>
<if test="t3 != null" >
#{t3,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.emr.entity.ServerMachine" >
update Server_Machine
<set >
<if test="lastonlinetime != null" >
LastOnlineTime = #{lastonlinetime,jdbcType=TIMESTAMP},
</if>
<if test="state != null" >
State = #{state,jdbcType=INTEGER},
</if>
<if test="loginuser != null" >
LoginUser = #{loginuser,jdbcType=NVARCHAR},
</if>
<if test="loginpwd != null" >
LoginPwd = #{loginpwd,jdbcType=NVARCHAR},
</if>
<if test="doccount != null" >
DocCount = #{doccount,jdbcType=BIGINT},
</if>
<if test="infocount != null" >
InfoCount = #{infocount,jdbcType=BIGINT},
</if>
<if test="warningcount != null" >
WarningCount = #{warningcount,jdbcType=BIGINT},
</if>
<if test="errorcount != null" >
ErrorCount = #{errorcount,jdbcType=BIGINT},
</if>
<if test="donecount != null" >
DoneCount = #{donecount,jdbcType=BIGINT},
</if>
<if test="lastupdatetime != null" >
LastUpdateTime = #{lastupdatetime,jdbcType=TIMESTAMP},
</if>
<if test="c1 != null" >
C1 = #{c1,jdbcType=NVARCHAR},
</if>
<if test="c2 != null" >
C2 = #{c2,jdbcType=NVARCHAR},
</if>
<if test="c3 != null" >
C3 = #{c3,jdbcType=NVARCHAR},
</if>
<if test="c4 != null" >
C4 = #{c4,jdbcType=NVARCHAR},
</if>
<if test="c5 != null" >
C5 = #{c5,jdbcType=NVARCHAR},
</if>
<if test="n1 != null" >
N1 = #{n1,jdbcType=DECIMAL},
</if>
<if test="n2 != null" >
N2 = #{n2,jdbcType=DECIMAL},
</if>
<if test="n3 != null" >
N3 = #{n3,jdbcType=DECIMAL},
</if>
<if test="t1 != null" >
T1 = #{t1,jdbcType=TIMESTAMP},
</if>
<if test="t2 != null" >
T2 = #{t2,jdbcType=TIMESTAMP},
</if>
<if test="t3 != null" >
T3 = #{t3,jdbcType=TIMESTAMP},
</if>
</set>
where ServerName = #{servername,jdbcType=NVARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.emr.entity.ServerMachine" >
update Server_Machine
set LastOnlineTime = #{lastonlinetime,jdbcType=TIMESTAMP},
State = #{state,jdbcType=INTEGER},
LoginUser = #{loginuser,jdbcType=NVARCHAR},
LoginPwd = #{loginpwd,jdbcType=NVARCHAR},
DocCount = #{doccount,jdbcType=BIGINT},
InfoCount = #{infocount,jdbcType=BIGINT},
WarningCount = #{warningcount,jdbcType=BIGINT},
ErrorCount = #{errorcount,jdbcType=BIGINT},
DoneCount = #{donecount,jdbcType=BIGINT},
LastUpdateTime = #{lastupdatetime,jdbcType=TIMESTAMP},
C1 = #{c1,jdbcType=NVARCHAR},
C2 = #{c2,jdbcType=NVARCHAR},
C3 = #{c3,jdbcType=NVARCHAR},
C4 = #{c4,jdbcType=NVARCHAR},
C5 = #{c5,jdbcType=NVARCHAR},
N1 = #{n1,jdbcType=DECIMAL},
N2 = #{n2,jdbcType=DECIMAL},
N3 = #{n3,jdbcType=DECIMAL},
T1 = #{t1,jdbcType=TIMESTAMP},
T2 = #{t2,jdbcType=TIMESTAMP},
T3 = #{t3,jdbcType=TIMESTAMP}
where ServerName = #{servername,jdbcType=NVARCHAR}
</update>
<!--查询列表-->
<select id="selectAll" resultType="com.emr.vo.ServerMachineVo">
SELECT
ServerName,
c2,
CONVERT ( VARCHAR ( 120 ), LastOnlineTime, 120 ) lastOnlintTimeStr,
CASE
WHEN State = 1 THEN
'在线'
WHEN state = 2 THEN
'离线' ELSE '未知'
END stateStr
FROM
Server_Machine
ORDER BY
State
</select>
</mapper>

@ -199,4 +199,17 @@
hzName,
cpyTime
</select>
<!--按病案主键查询打印记录-->
<select id="selectAllByPatientId" resultType="com.emr.entity.TUuPrint">
select distinct patient_id from t_uuprint
<where>
<if test="patientId != null and patientId != ''">
AND patient_id in (
<foreach collection="patientId.split(',')" separator="," item="item">
#{item}
</foreach>
)
</if>
</where>
</select>
</mapper>

@ -18,12 +18,12 @@
<result column="endDate" jdbcType="NVARCHAR" property="endDate"/>
</resultMap>
<sql id="Base_Column_List">
deptCode, deptName, inNum, outNum, fileNum, unfileNum, deathNum, fileRate,
deptCode, deptName, inNum, outNum, fileNum, deathNum, fileRate,
day2Rate, day3Rate, day7Rate
</sql>
<select id="selectByCol" parameterType="com.emr.entity.V_Count" resultMap="BaseResultMap">
<![CDATA[
SELECT deptCode, deptName,ISNULL(outNum, 0) outNum, ISNULL(fileNum, 0) fileNum, ISNULL(unfileNum, 0) unfileNum, ISNULL(deathNum, 0) deathNum, ISNULL(fileRate, '0') fileRate, ISNULL(day2Rate, '0') day2Rate, ISNULL(day3Rate, '0') day3Rate, ISNULL(day7Rate, '0') day7Rate FROM (select DISTINCT c.dept_name as deptCode,t8.Name as deptName,t1.outNum ,t2.fileNum , t3.unfileNum ,t4.deathNum,
SELECT deptCode, deptName,ISNULL(outNum, 0) outNum, ISNULL(fileNum, 0) fileNum,ISNULL(deathNum, 0) deathNum, ISNULL(fileRate, '0') fileRate, ISNULL(day2Rate, '0') day2Rate, ISNULL(day3Rate, '0') day3Rate, ISNULL(day7Rate, '0') day7Rate FROM (select DISTINCT c.dept_name as deptCode,t8.Name as deptName,t1.outNum ,t2.fileNum ,t4.deathNum,
CASE
WHEN t1.outNum = 0 THEN
0
@ -88,7 +88,7 @@
</when>
</choose>
group by dept_name) as t1 on c.dept_name= t1.dept_name
left join (select dept_name,COUNT(*) AS fileNum from archive_master as s where s.ArchiveState = '128' and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
left join (select dept_name,COUNT(*) AS fileNum from archive_master as s where (s.ArchiveState = '128' OR (s.ArchiveState = '64' and s.T1 is not null and s.T1 != '' and s.T1 >= '1801-02-04 00:00:00')) and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<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
@ -102,20 +102,6 @@
</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 != '128' and YEAR(s.discharge_date_time) != '1801' and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<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>
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 s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
@ -144,7 +130,7 @@
</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 = '128' and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) &lt;= 3 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
left join (select dept_name,COUNT(*) AS Num from archive_master as s where (s.ArchiveState = '128' OR (s.ArchiveState = '64' and s.T1 is not null and s.T1 != '' and s.T1 >= '1801-02-04 00:00:00')) and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) &lt;= 3 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<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
@ -158,7 +144,7 @@
</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 = '128' and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) &lt;= 7 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
left join (select dept_name,COUNT(*) AS Num from archive_master as s where (s.ArchiveState = '128' OR (s.ArchiveState = '64' and s.T1 is not null and s.T1 != '' and s.T1 >= '1801-02-04 00:00:00')) and ( datediff( d, discharge_date_time, checked_datetime ) - ( SELECT COUNT(1) FROM emr_holiday_set WHERE date BETWEEN CONVERT ( VARCHAR (10), discharge_date_time, 120 ) AND checked_datetime AND flag = 2 )) &lt;= 7 and s.inp_no NOT like '%B' and s.inp_no NOT like '%C' and s.inp_no NOT like '%D'
<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

@ -58,6 +58,6 @@
<script src="${path}/static/bootstrap-3.3.7/bower_components/bootstrap/dist/js/fileinput.min.js"></script>
<script type="text/javascript" src="${path}/static/js/hospitalCommom/pinying.js"></script>
<script type="text/javascript" src="${path}/static/js/comm.js?t=2020-11-19"></script>
<script type="text/javascript" src="${path}/static/js/comm.js?t=2021-07-30"></script>
<script type="text/javascript" src="${path}/static/js/md5.js"></script>
<input type="hidden" id="userId" value="${CURRENT_USER.userId}">

@ -233,6 +233,22 @@
<option value="8" <c:if test="${infoId == 8}">selected</c:if>>病案室审核</option>
</select>
</div>
<div class="form-group divCss">
<label>HIS召回状态:</label>
<select class="form-control input-sm" id="callBackStatus">
<option value="">全部</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</div>
<div class="form-group divCss">
<label>打印状态:</label>
<select class="form-control input-sm" id="printStatus">
<option value="">全部</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</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-primary btn-sm divCss" id="approvesBtn">批量审核</button>
@ -839,7 +855,7 @@
</div>
</div>
</body>
<script src="${path}/static/js/beHospList/beHospList.js?time=2021-02-08"></script>
<script src="${path}/static/js/hospitalCommom/hospitalCommom.js?time=2021-01-12"></script>
<script src="${path}/static/js/beHospList/beHospList.js?time=2021-08-04"></script>
<script src="${path}/static/js/hospitalCommom/hospitalCommom.js?time=2021-08-01"></script>
<script src="${path}/static/js/hospitalLoadPdf/loadPdf.js?time=2020-10-16"></script>
</html>

@ -166,9 +166,9 @@
<label>出院日期:</label>
<div class="input-group input-daterange">
<input type="text" class="input-sm form-control" name="start" id="startDateTo"
maxlength="10" autocomplete="off" value="${overDateSet}"/>
maxlength="10" autocomplete="off" <%--value="${overDateSet}" --%>value="${startDate}"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" name="end" id="endDateTo" maxlength="10" autocomplete="off" value="${remindDate}"/>
<input type="text" class="input-sm form-control" name="end" id="endDateTo" maxlength="10" autocomplete="off" <%--value="${remindDate}"--%> value="${endDate}"/>
</div>
</div>
<div class="form-group divCss">
@ -193,6 +193,22 @@
<option value="0">否</option>
</select>
</div>
<div class="form-group divCss">
<label>HIS召回状态:</label>
<select class="form-control input-sm" id="callBackStatus">
<option value="">全部</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</div>
<div class="form-group divCss">
<label>打印状态:</label>
<select class="form-control input-sm" id="printStatus">
<option value="">全部</option>
<option value="1">是</option>
<option value="0">否</option>
</select>
</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-primary btn-sm divCss" id="approvesBtn">批量审核</button>
@ -671,8 +687,8 @@
</div>
</div>
</body>
<script src="${path}/static/js/lastVerifyList/lastVerifyList.js?time=2021-03-25"></script>
<script src="${path}/static/js/hospitalCommom/hospitalCommom.js?time=2020-11-16"></script>
<script src="${path}/static/js/lastVerifyList/lastVerifyList.js?time=2021-08-04"></script>
<script src="${path}/static/js/hospitalCommom/hospitalCommom.js?time=2021-08-01"></script>
<script src="${path}/static/js/statistics/getDeptCommom.js"></script>
<script src="${path}/static/js/hospitalLoadPdf/loadPdf.js?time=2020-10-16"></script>
</html>

@ -63,10 +63,10 @@
<label>出院日期:</label>
<div class="input-group">
<input type="text" class="input-sm form-control" id="startTime1" style="text-align: center"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${startDate}"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" id="endTime1" style="text-align: center"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${endDate}"/>
</div>
</div>
<div class="form-group divCss">
@ -143,7 +143,7 @@
</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-11-16"></script>
<script src="${path}/static/js/record/deptOverTimeInfo.js?time=2021-07-30"></script>
<script src="${path}/static/js/record/expandRowCommom.js?time=2021-05-17"></script>
</body>
</html>

@ -99,10 +99,10 @@
<label>出院日期:</label>
<div class="input-group">
<input type="text" class="input-sm form-control" id="startTime1" style="text-align: center"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${startDate}"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" id="endTime1" style="text-align: center"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${endDate}"/>
</div>
</div>
<div class="form-group divCss">
@ -164,7 +164,7 @@
</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/submitRecord.js?time=2020-11-16"></script>
<script src="${path}/static/js/record/submitRecord.js?time=2021-07-30"></script>
<script src="${path}/static/js/record/expandRowCommom.js?time=2021-05-17"></script>
</body>
</html>

@ -59,10 +59,10 @@
<label>出院日查询:</label>
<div class="input-group">
<input type="text" class="input-sm form-control" id="startTime1" style="text-align: center"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${startDate}"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" id="endTime1" style="text-align: center"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${endDate}"/>
</div>
</div>
<div class="form-group divCss8" id="month" style="display: none">
@ -122,7 +122,7 @@
</div>
</div>
</div>
<script src="${path}/static/js/statistics/scanCount.js?time=2020-11-25"></script>
<script src="${path}/static/js/statistics/scanCount.js?time=2021-07-30"></script>
<script src="${path}/static/js/statistics/statisticsCommom.js?time=2020-07-24"></script>
<script src="${path}/static/js/record/getStartDateAndEndDateGroupbyDayMonthYear.js"></script>
</body>

@ -86,10 +86,10 @@
<label>出院日期:</label>
<div class="input-group input-daterange">
<input type="text" class="input-sm form-control" name="start" id="startDate"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${startDate}"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" name="end" id="endDate"
maxlength="10" autocomplete="off"/>
maxlength="10" autocomplete="off" value="${endDate}"/>
</div>
</div>
<button type="button" class="btn btn-primary btn-sm divCss" id="searchBtn">查询</button>
@ -129,5 +129,5 @@
<script>
var path = "${path}";
</script>
<script src="${path}/static/js/vCount/vCountList.js?time=2020-08-18"></script>
<script src="${path}/static/js/vCount/vCountList.js?time=2021-07-30"></script>
</html>

@ -0,0 +1,273 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>HIS退回病案统计</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<!-- Google Font -->
<style type="text/css">
h3{
size:14px;
color: #0f0f0f;
}
</style>
</head>
<body>
<div class=table-responsive">
<table id="table" class="table text-nowrap table-striped"></table>
</div>
<script>
$(function(){
initTable()
})
var tipLoad = 1;
/*var data =[
{
"createTime":"2021-07-27",
"count":2
},
{
"createTime":"2021-07-25",
"count":3
},
]*/
//出院列表
function initTable() {
if (tipLoad == 1) {
$("#table").bootstrapTable({ // 对应table标签的id
//data:data,
url: path+"/workHome/callBackStatisticsData", // 获取表格数据的url
uniqueId:"id",
contentType: "application/x-www-form-urlencoded",//一种编码。好像在post请求的时候需要用到。这里用的get请求注释掉这句话也能拿到数据
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //是否显示行间隔色
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageSize: 5,
pageList: [5,10, 20, 50], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
sidePagination: 'server', // 设置为服务器端分页 客户端client
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
undefinedText: '---', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
//height: getHeight(220), //定义表格的高度。
searchTimeOut: 500,// 默认500 设置搜索超时时间。
toolbarAlign: 'right',// 指定 toolbar 水平方向的位置。'left' 或 'right'
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
showHeader: true,//是否显示列头。
trimOnSearch: true,//设置为 true 将自动去掉搜索字符的前后空格。
detailView:true,//是否可展开
queryParams: function (params) {
var currPageSize = this.pageSize;
if (currPageSize == 2) {
currPageSize = 5;
}
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 temp = {
limit: limit, //页面大小
offset: offset, //页码
startDateTo:parent.parent.$("#startDateTo").val(),
endDateTo:parent.parent.$("#endDateTo").val()
};
return temp;
},
sortName: 'id', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [{
title: '全选',
field: 'select', //复选框
checkbox: true,
width: 25,
align: 'center',
valign: 'middle'
},
{
title: '日期',
field: 'time',
align: 'left',
valign: 'middle'
},
{
title: '退回数量',
field: 'count',
align: 'center',
valign: 'middle'
}
],
onLoadSuccess: function () { //加载成功时执行
$(".page-list").show();
tipLoad = 0;
//reloadTableHeight("table");
},
onLoadError: function () { //加载失败时执行
tipLoad = 0
},
//展开详情事件
onExpandRow: function (index, row, $detail) {//點擊datagrid 展開按鈕事件
var html = '<div id="tableDiv1">\n' +
' <table id="table1" class="table text-nowrap"></table>\n' +
' </div>';
$detail.html(html);
var time = row.time;
initTable1(time);
}
});
}
}
/*var data1 = [{
"sysupdatetime":"2021-07-27 14:22:33",
"zyh":"125356",
"c1":"张三",
"t1":"2021-05-07",
"t2":"2021-05-07 14:22:33",
"statusflag":"处理中",
"stime":"2021-07-27 18:00:00",
"etime":"",
"n2":"未归档"
},
{
"sysupdatetime":"2021-07-23 14:22:33",
"zyh":"12535236",
"c1":"李四",
"t1":"2021-05-17",
"t2":"2021-05-17 14:22:33",
"statusflag":"处理完成",
"stime":"2021-07-27 18:00:00",
"etime":"2021-07-27 22:00:00",
"n2":"已归档"
}]*/
//第二层,按日期分组查
function initTable1(time) {
$("#table1").bootstrapTable({ // 对应table标签的id
//data:data1,
url: path + "/workHome/callBackStatisticsDetail", // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageSize: 5,
pageList: [5,10, 20, 50, 100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
sidePagination: 'server', // 设置为服务器端分页 客户端client
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
undefinedText: '--', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
height:200,
searchTimeOut: 500,// 默认500 设置搜索超时时间。
showHeader: true,//是否显示列头。
//查询条件
queryParams: function (params) {
var currPageSize = this.pageSize;
if (currPageSize == 2) {
currPageSize = 5;
}
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 temp = {
offset:offset,
limit:limit,
time:time,
startDateTo:parent.parent.$("#startDateTo").val(),
endDateTo:parent.parent.$("#endDateTo").val()
};
return temp;
},
columns: [
{
title: '序号',
align: 'center',
formatter: function (value, row, index) {
return index + 1;
}
},
{
title: '申请时间',
field: 'sysupdatetimeStr',
align: 'center'
},
{
title: '审批时间',
field: 't2Str',
align: 'center'
},
{
title: '住院号',
field: 'zyh',
align: 'center'
},
{
title: '患者姓名',
field: 'c1',
align: 'center'
},
{
title: '出院日期',
field: 't1Str',
align: 'center'
},
{
title: '处理状态',
field: 'statusFlagStr',
align: 'center'
},
{
title: '开始时间',
field: 'stimeStr',
align: 'center'
},
{
title: '结束时间',
field: 'etimeStr',
align: 'center'
},
{
title: '归档状态',
field: 'n2Str',
align: 'center',
formatter: function (value, row, index) {
var color = 'red';
if (value == '已归档') {
color = 'green';
}
return "<span style=color:" + color + ">" + value + "</span>";
}
}
],
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
}
});
}
</script>
</body>
</html>

@ -0,0 +1,140 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>采集器状态</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<!-- Google Font -->
<style type="text/css">
h3{
size:14px;
color: #0f0f0f;
}
</style>
</head>
<body>
<div class=table-responsive">
<table id="table" class="table text-nowrap table-striped"></table>
</div>
<script>
$(function(){
initTable()
})
/*var data = [{
"collectName":"HIS-首页采集服务",
"ip":"192.168.0.1",
"createTime":"2021-07-27 14:00:00",
"status":"在线",
"notCollectCount":"200"
},{
"collectName":"HIS-长临医嘱采集服务",
"ip":"192.168.0.1",
"createTime":"2021-07-27 15:00:00",
"status":"离线",
"notCollectCount":"150"
}]*/
var tipLoad = 1;
//出院列表
function initTable() {
if (tipLoad == 1) {
$("#table").bootstrapTable({ // 对应table标签的id
//data:data,
url: path+"/workHome/collectListData", // 获取表格数据的url
uniqueId:"id",
contentType: "application/x-www-form-urlencoded",//一种编码。好像在post请求的时候需要用到。这里用的get请求注释掉这句话也能拿到数据
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //是否显示行间隔色
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageList: [10, 20, 50], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
sidePagination: 'server', // 设置为服务器端分页 客户端client
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
undefinedText: '---', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
//height: getHeight(220), //定义表格的高度。
searchTimeOut: 500,// 默认500 设置搜索超时时间。
toolbarAlign: 'right',// 指定 toolbar 水平方向的位置。'left' 或 'right'
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
showHeader: true,//是否显示列头。
trimOnSearch: true,//设置为 true 将自动去掉搜索字符的前后空格。
queryParams: function (params) {
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 temp = {
limit: limit, //页面大小
offset: offset //页码
};
return temp;
},
sortName: 'id', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [
{
title: '采集器名称',
field: 'servername',
align: 'left',
valign: 'middle'
},
{
title: 'IP',
field: 'c2',
align: 'center',
valign: 'middle'
},
{
title: '最近在线时间',
field: 'lastOnlintTimeStr',
align: 'left',
valign: 'middle'
},
{
title: '状态',
field: 'stateStr',
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var color = 'gray';
if (value == '在线') {
color = 'green';
}
return "<span style=color:" + color + ">" + value + "</span>";
}
}
],
onLoadSuccess: function () { //加载成功时执行
$(".page-list").show();
tipLoad = 0;
},
onLoadError: function () { //加载失败时执行
tipLoad = 0
}
});
}
}
</script>
</body>
</html>

@ -0,0 +1,227 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>病案室管理</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<!-- Google Font -->
<style type="text/css">
.alignCenter {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin-right: 10px;
}
.uad {
display: flex;
background: #fafafa;
}
.data-num{
font-size: 1.563vw;
color: #212121;
line-height: 1.406vw;
}
.data-title{
font-size: .833vw;
font-size: .729vw;
color: #707070;
line-height: 1.458vw;
}
.iconDiv{
cursor: pointer;
}
.uad:hover{border: 1px solid red}
</style>
</head>
<body>
<div class="row">
<div class="col-sm-2 iconDiv" onclick="herfFunction('vCount/vCounts')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/green.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="recordRate">0</div>
<div class="data-title">归档率</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('lastVerify/lastVerifys')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/orange.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="recordCount">0</div>
<div class="data-title">归档数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('lastVerify/lastVerifys')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/red.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="headNurseCount">0</div>
<div class="data-title">待终审数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('record/submitRecord')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/green.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="submitCount">0</div>
<div class="data-title">出科数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('record/deptOverTimeInfo')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/orange.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="overTimeCount">0</div>
<div class="data-title">超期病历数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('record/deptOverTimeInfo')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/red.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="reOverTimeCount">0</div>
<div class="data-title">预超期病历数量</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2 iconDiv" onclick="herfFunction('lastVerify/lastVerifys')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/green.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="signCount">0</div>
<div class="data-title">签收数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('lastVerify/lastVerifys')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/orange.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="notSignCount">0</div>
<div class="data-title">待签收数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('lastVerify/lastVerifys')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/red.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="signRate">0</div>
<div class="data-title">签收率</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('statistics/scanCount')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/green.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="isScanCount">0</div>
<div class="data-title">扫描数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('statistics/scanCount')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/orange.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="notScanCount">0</div>
<div class="data-title">待扫描数量</div>
</div>
</div>
</div>
<div class="col-sm-2 iconDiv" onclick="herfFunction('statistics/scanCount')">
<div class="uad frame1 jc-flex" style="padding: 12px;margin: 15px;width: 260px;">
<div class="user-item-left alignCenter">
<img src="${path}/static/img/red.png" />
</div>
<div class="alignCenter" style="flex-flow: column">
<div class="data-num" style="margin-left: 0" id="scanRate">0</div>
<div class="data-title">扫描率</div>
</div>
</div>
</div>
</div>
<script>
$(function(){
loadData();
})
//获取数据
function loadData(){
$.ajax({
url:path+"/workHome/medicalRoomManageData",
type:'post',
data:{ startDateTo:parent.parent.$("#startDateTo").val(),
endDateTo:parent.parent.$("#endDateTo").val()},
dataType:'json',
success:function(data){
$("#recordRate").text(data.recordRate);
$("#recordCount").text(data.recordCount);
$("#headNurseCount").text(data.headNurseCount);
$("#submitCount").text(data.submitCount);
$("#signCount").text(data.signCount);
$("#notSignCount").text(data.notSignCount);
$("#signRate").text(data.signRate);
$("#overTimeCount").text(data.overTimeCount);
$("#reOverTimeCount").text(data.reOverTimeCount);
$("#isScanCount").text(data.isScanCount);
$("#notScanCount").text(data.notScanCount);
$("#scanRate").text(data.scanRate);
}
})
}
var localPath = "http://" + window.location.host + "/" + "emr_medical_record" + "/";
//点击跳转
function herfFunction(url){
var startDateTo = parent.parent.$("#startDateTo").val();
var endDateTo = parent.parent.$("#endDateTo").val();
window.open(localPath + url + '?startDateTo='+startDateTo+'&endDateTo='+endDateTo)
}
</script>
</body>
</html>

@ -0,0 +1,368 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<html>
<head>
<title>病案未提交报表</title>
<meta charset="utf-8">
<!-- 解决部分兼容性问题如果安装了GCF则使用GCF来渲染页面如果未安装GCF则使用最高版本的IE内核进行渲染。 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- 页面按原比例显示 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<link rel="shortcut icon" href="../../../static/favicon.ico">
<style>
/* .divCss {
margin-top: 5px;
}*/
.divCss8 {
margin-top: 5px;
margin-right: 20px;
}
/* dataTables表头居中 */
/*.table > thead:first-child > tr:first-child > th {
text-align: center !important;
}*/
/**
*多选下拉框
*/
.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn) {
width: 168px !important;
}
/* .table{
overflow: hidden;
}*/
</style>
</head>
<body>
<!--当前操作角色-->
<input type="hidden" id="checker">
<input type="hidden" id="deptCode" value="${obj.deptName}">
<input type="hidden" id="flag" value="">
<div class="mainBody">
<div class="main">
<div class="headDiv">
<div class="headSpanDiv">
<span class="headspan">
病案未提交报表
</span>
</div>
</div>
<div class="mainDiv">
<!--搜索-->
<form style="margin-top:5px;margin-bottom: 0!important;">
<div class="form-inline">
<div class="form-group divCss8">
<label>出院日期:</label>
<div class="input-group">
<input type="text" class="input-sm form-control" id="startTime1" style="text-align: center"
maxlength="10" autocomplete="off" value="${obj.startDate}"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" id="endTime1" style="text-align: center"
maxlength="10" autocomplete="off" value="${obj.endDate}"/>
</div>
</div>
<div class="form-group divCss">
<label>出院时段:</label>
<select class="form-control input-sm" id="timeInterval"
onchange="loadTableByTime(this.options[this.options.selectedIndex].value,'startTime1','endTime1','table')">
</select>
</div>
<div class="form-group divCss8">
<label>出院科室:</label>
<select class="selectpicker bla bla bli" multiple data-live-search="true" data-actions-box="true" name="deptName" id="deptName" title="请输入出院科室">
</select>
</div>
<div class="form-group divCss">
<label>待审核角色:</label>
<select class="form-control input-sm" id="infoId">
<option value="">全部</option>
<option value="2" <c:if test="${obj.infoId == 2}">selected</c:if>>医生待审核</option>
<option value="3"<c:if test="${obj.infoId == 3}">selected</c:if>>医生质控员待审核</option>
<option value="4"<c:if test="${obj.infoId == 4}">selected</c:if>>科主任待审核</option>
<option value="5"<c:if test="${obj.infoId == 5}">selected</c:if>>护士待审核</option>
<option value="6"<c:if test="${obj.infoId == 6}">selected</c:if>>护士质控员待审核</option>
<option value="7"<c:if test="${obj.infoId == 7}">selected</c:if>>护士长待审核</option>
<option value="8"<c:if test="${obj.infoId == 8}">selected</c:if>>病案室待审核</option>
</select>
</div>
<%--<div class="form-group divCss8">
<label>患者姓名:</label>
<input type="text" class="form-control input-sm" id="name" maxlength="8">
</div>
<div class="form-group divCss8">
<label>&emsp;住院号:</label>
<input type="text" class="form-control input-sm" id="inpNo" maxlength="25">
</div>--%>
<div class="form-group divCss8">
<button type="button" class="btn btn-primary btn-sm divCss" id="searchBtnStatistics">查询</button>
<button type="button" class="btn btn-info btn-sm divCss" id="excelBtn1">条件导出</button>
</div>
</div>
</form>
<!--数据表格-->
<div id="tableDiv">
<table id="table" class="table text-nowrap table-bordered"></table>
</div>
</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>
$(function(){
initTable();
getDeptStatistics();
//赋值审核角色
getChecker();
})
$("#searchBtnStatistics").click(function(){
$("#table").bootstrapTable("refreshOptions", {pageNumber: 1});
})
//加载科室
function getDeptStatistics() {
//获取科室列表
$.ajax({
url: path+"/inHosp/getDept",
type: "POST",
data: {effective: 1, typecode: "dept_code"},
async:false,
success: function (result) {
if (result != null) {
var html = '';
for (var i = 0; i < result.length; i++) {
var deptCode = $("#deptCode").val();
//定义是否包含默认需要选中的
var name = result[i].name;
var py = makePy(name);
var pingyin = ConvertPinyin(name);
var selected = false;
if(deptCode == result[i].code){
selected = true;
}
if(selected){
html += '<option data-tokens="' + name + '|' + py[0] + '|' + pingyin + '" value="' + result[i].code + '" selected>' + name + '</option>';
}else{
html += '<option data-tokens="' + name + '|' + py[0] + '|' + pingyin + '" value="' + result[i].code + '">' + name + '</option>';
}
}
$("#deptName").append(html);
$("#deptAdmissionTo").append(html);
}
$(".selectpicker").selectpicker('refresh'); //
}
});
}
//按科室审核角色分组查
function initTable() {
$("#table").bootstrapTable({ // 对应table标签的id
url: path + "/record/getRecordGroupDeptAndRole", // 获取表格数据的url
sidePagination: 'server', // 设置为服务器端分页 客户端client
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageList: [10, 20, 50, 100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
detailView: false,//是否可展开
undefinedText: '--', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
height:553,
searchTimeOut: 500,// 默认500 设置搜索超时时间。
showHeader: true,//是否显示列头。
//查询条件
queryParams: function (params) {
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 = $("#infoId").val();
var operRole = getOperRole(infoId);
var deptName = getDeptName();
if(deptName == ''){
deptName = $("#deptCode").val();
}
var temp = {
offset:offset,
limit:limit,
startDate: $("#startTime1").val(),
endDate: $("#endTime1").val(),
deptName:deptName,
infoId:infoId,
operRole:operRole
};
return temp;
},
columns: [
{
title: '序号',
formatter: function (value, row, index) {
return index + 1;
}
},
{
title: '主管医生',
field: 'doctorInCharge'
},
{
title: '医生工号',
field: 'doctorInChargeCode'
},
{
title: '超期份数',
field: 'overTimeCounts'
},
{
title: '出院科室',
field:'deptName'
},
{
title: '患者姓名',
field: 'name'
},
{
title: '住院号',
field: 'inpNo'
},
{
title: '住院次数',
field: 'visitId'
},
{
title: '出院日期',
field: 'dischargeDateTime',
formatter: function (value, row, index) {
return operDisDate(value);
}
},
{
title: '超期天数',
field: 'overtimeDays'
},
{
title: '状态',
field: 'status'
},
{
title: '完整性',
field: 'lockInfo'
},
{
title:'操作',
align: 'center',
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());
}
}
}
],
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
}
});
}
//获取操作角色
function getOperRole(infoId){
var operRole = 0;
if(infoId < 5){
operRole = 1;
}else if(infoId == 5 || infoId == 6){
operRole = 2;
}else{
operRole = 4;
}
return operRole;
}
//导出excel功能
$("#excelBtn1").click(function () {
var infoId = $("#infoId").val();
var operRole = getOperRole(infoId);
var deptName = getDeptName();
if(deptName == ''){
deptName = $("#deptCode").val();
}
var url = path+"/workHome/exportExcelNotSubmit";
post(url,{
"startDate": $("#startTime1").val(),
"endDate": $("#endTime1").val(),
"deptName":deptName,
"infoId":infoId,
"operRole":operRole
});
});
//未终审页面、在院浏览、出院浏览查看病历时按审核角色查询分类主要查询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');
}
</script>
</body>
</html>

@ -0,0 +1,331 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>病案数据</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<!-- Google Font -->
<style type="text/css">
h3{
size:14px;
color: #0f0f0f;
}
.height20{
height: 600px;
}
</style>
</head>
<body>
<div class=table-responsive">
<table id="table" class="table text-nowrap table-striped"></table>
</div>
<script>
$(function(){
initTable();
})
var tipLoad = 1;
/* var data = [{
"name":"全院",
"disNumber":"652000",
"admissNumber":"120000",
"disCount":"500000",
"recordRate":"78%"
}]*/
//出院列表
function initTable() {
if (tipLoad == 1) {
$("#table").bootstrapTable({ // 对应table标签的id
//data:data,
url: path+"/workHome/recordDataOneTable", // 获取表格数据的url
uniqueId:"id",
contentType: "application/x-www-form-urlencoded",//一种编码。好像在post请求的时候需要用到。这里用的get请求注释掉这句话也能拿到数据
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //是否显示行间隔色
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageList: [5,10, 20, 50], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
sidePagination: 'server', // 设置为服务器端分页 客户端client
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
undefinedText: '---', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
//height: getHeight(220), //定义表格的高度。
searchTimeOut: 500,// 默认500 设置搜索超时时间。
toolbarAlign: 'right',// 指定 toolbar 水平方向的位置。'left' 或 'right'
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
showHeader: true,//是否显示列头。
trimOnSearch: true,//设置为 true 将自动去掉搜索字符的前后空格。
detailView:true,//是否可展开
queryParams: function (params) {
return queryParams(params,this,'');
},
columns: [
{
title: '名称',
field: 'name',
align: 'center',
valign: 'middle'
},
{
title: '出院人数',
field: 'disCount',
align: 'center',
valign: 'middle'
},
{
title: '入院人数',
field: 'admissCount',
align: 'center',
valign: 'middle'
},
{
title: '出科数量',
field: 'sumbitCount',
align: 'center',
valign: 'middle'
},
{
title: '归档数量',
field: 'recordCount',
align: 'center'
},
{
title: '归档率',
field: 'recordRate',
align: 'center',
valign: 'middle'
}
],
onLoadSuccess: function () { //加载成功时执行
$(".page-list").show();
tipLoad = 0;
},
onLoadError: function () { //加载失败时执行
tipLoad = 0
},
//展开详情事件
onExpandRow: function (index, row, $detail) {//點擊datagrid 展開按鈕事件
var html = '<div id="tableDiv1">\n' +
' <table id="table1" class="table text-nowrap"></table>\n' +
' </div>';
$detail.html(html);
initTable1();
}
});
}
}
/*var data1 = [{
"deptName":"儿科",
"deptCode":"300",
"disCount":"500",
"admissCount":"120",
"sumbitCount":"300",
"sumbitRate":"60%"
},
{
"deptName":"妇科",
"deptCode":"400",
"disCount":"500",
"admissCount":"120",
"sumbitCount":"300",
"sumbitRate":"60%"
}]*/
//第二层,按科室分组查
function initTable1() {
$("#table1").bootstrapTable({ // 对应table标签的id
//data:data1,
url: path + "/workHome/recordDataTwoTable", // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageSize: 5,
pageList: [5,10, 20, 50, 100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
sidePagination: 'server', // 设置为服务器端分页 客户端client
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
detailView: true,//是否可展开
undefinedText: '--', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
height:200,
searchTimeOut: 500,// 默认500 设置搜索超时时间。
showHeader: true,//是否显示列头。
//查询条件
queryParams: function (params) {
return queryParams(params,this,'');
},
columns: [
{
title: '序号',
align: 'center',
formatter: function (value, row, index) {
return index + 1;
}
},
{
title: '出院科室',
field: 'name',
align: 'left'
},
{
title: '出院人数',
field: 'disCount',
align: 'center'
},
{
title: '入院人数',
field: 'admissCount',
align: 'center'
},
{
title: '出科数量',
field: 'sumbitCount',
align: 'center'
},
{
title: '归档数量',
field: 'recordCount',
align: 'center'
},
{
title: '归档率',
field: 'recordRate',
align: 'center',
formatter: function (value, row, index) {
var val;
if (row.recordRate != null && row.recordRate != '') {
val = Math.round(row.recordRate) + "%";
}
return val;
}
},
],
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
},
//展开详情事件
onExpandRow: function (index, row, $detail) {//點擊datagrid 展開按鈕事件
var deptName = row.deptName;
var name = row.name;
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(tableId,deptName,name);
}
});
}
/*var data2 = [{
"attending":"张三",
"disCount":"200",
"admissCount":"60",
"sumbitCount":"100",
"recordRate":"50%"
}]*/
//第三层,按审核角色分组查
function initTable2(tableId,deptName) {
$("#"+tableId).bootstrapTable({ // 对应table标签的id
url:path + "/workHome/recordDataThreeTable",
sidePagination: 'client', // 设置为服务器端分页 客户端client
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
//pagination: true, // 在表格底部显示分页组件默认false
//paginationShowPageGo: true,
//pageList: [5,10, 20, 50, 100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
undefinedText: '--', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
height:300,
searchTimeOut: 500,// 默认500 设置搜索超时时间。
showHeader: true,//是否显示列头。
//查询条件
queryParams: function (params) {
var temp = {
startDate:parent.parent.$("#startDateTo").val(),
endDate:parent.parent.$("#endDateTo").val(),
deptName:deptName
};
return temp;
},
columns: [
{
title: '序号',
formatter: function (value, row, index) {
return index + 1;
}
},
{
title: '出院科室',
field: 'deptNameCn'
},
{
title: '审核角色',
field: 'role'
},
{
title: '未提交份数',
field: 'unCount'
},
{
title: "操作",
align: 'left',
valign: 'middle',
formatter: function (value, row) {
var html = '<button type="button" class="btn btn-danger btn-sm selInfo" title="查看明细">查看明细</button>';
return html;
},
events: {
'click .selInfo': function (e, value, row) {
var pdfUrl = path+"/workHome/notSubmitRecord?deptName="+deptName+"&infoId="+row.infoId+"&startDate="+parent.parent.$("#startDateTo").val()+"&endDate="+parent.parent.$("#endDateTo").val();
window.open(pdfUrl,"_blank");
}
}
}
],
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
},
});
}
//各表格查询条件
function queryParams(params,_this,deptName){
var currPageSize = _this.pageSize;
if (currPageSize == 2) {
currPageSize = 5;
}
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 temp = {
limit: limit, //页面大小
offset: offset, //页码
startDateTo:parent.parent.$("#startDateTo").val(),
endDateTo:parent.parent.$("#endDateTo").val()
};
return temp;
}
</script>
</body>
</html>

@ -0,0 +1,123 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>看板的内容页</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<!-- Google Font -->
<style type="text/css">
.contentBody{
background-color: #ECF0F5;
}
.box-header{
background-color: #F9F9F9;
}
.section1{
padding: 5px 10px 0px 10px;
}
.section2{
padding: 0px 10px 0px 0px;
}
.section3{
padding: 0px 10px;
}
.connectedSortable{
min-height: 0px!important;
}
.box-info{
margin-bottom: 5px!important;
}
</style>
</head>
<body class="contentBody">
<section class="col-lg-12 connectedSortable section1">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">病案数据</h3>
<!-- tools box -->
<div class="pull-right box-tools">
<button type="button" class="btn btn-success btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
</button>
<button type="button" class="btn btn-success btn-sm" data-widget="remove"><i class="fa fa-times"></i>
</button>
</div>
<!-- /. tools -->
</div>
<div class="box-body" style="height: 300px">
<iframe src="${path}/workHome/recordData" width="100%" height="100%" id="iframe1"></iframe>
</div>
</div>
</section>
<section class="col-lg-12 connectedSortable section3">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">病案室管理</h3>
<!-- tools box -->
<div class="pull-right box-tools">
<button type="button" class="btn btn-success btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
</button>
<button type="button" class="btn btn-success btn-sm" data-widget="remove"><i class="fa fa-times"></i>
</button>
</div>
<!-- /. tools -->
</div>
<div class="box-body" style="height: 278px">
<iframe src="${path}/workHome/medicalRoomManage" width="100%" height="100%"></iframe>
</div>
</div>
</section>
<section class="col-lg-6 connectedSortable section3">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">HIS退回病历统计</h3>
<!-- tools box -->
<div class="pull-right box-tools">
<div class="pull-right box-tools">
<button type="button" class="btn btn-success btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
</button>
<button type="button" class="btn btn-success btn-sm" data-widget="remove"><i class="fa fa-times"></i>
</button>
</div>
</div>
<!-- /. tools -->
</div>
<div class="box-body">
<div class="box-body" style="height: 300px">
<iframe src="${path}/workHome/callBackStatistics" width="100%" height="100%"></iframe>
</div>
</div>
</div>
</section>
<section class="col-lg-6 connectedSortable section2">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">采集器状态</h3>
<!-- tools box -->
<div class="pull-right box-tools">
<button type="button" class="btn btn-success btn-sm" data-widget="collapse"><i class="fa fa-minus"></i>
</button>
<button type="button" class="btn btn-success btn-sm" data-widget="remove"><i class="fa fa-times"></i>
</button>
</div>
<!-- /. tools -->
</div>
<div class="box-body">
<div class="box-body" style="height: 300px">
<iframe src="${path}/workHome/collectList" width="100%" height="100%"></iframe>
</div>
</div>
</div>
</section>
<script src="${path}/static/bootstrap-3.3.7/bower_components/dashboard.js"></script>
</body>
</html>

@ -0,0 +1,116 @@
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>工作看板</title>
<!-- Tell the browser to be responsive to screen width -->
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<%@include file="../../jspf/comm.jspf" %>
<script>
var path = "${path}";
</script>
<!-- Google Font -->
<style type="text/css">
.contentBody{
background-color: #ECF0F5;
}
h3{
size:14px;
color: #0f0f0f;
}
.workHomeIframe{
height: calc(100vh - 40px);
}
</style>
</head>
<body class="contentBody">
<div class="searchDiv">
<form style="margin-top:5px;margin-bottom: 0!important;">
<div class="form-inline">
<div class="form-group" style="margin-left: 60%">
<label for="startDateTo">出院日期:</label>
<div class="input-group input-daterange">
<input type="text" class="input-sm form-control" name="start" id="startDateTo"
maxlength="10" autocomplete="off"/>
<span class="input-group-addon">-</span>
<input type="text" class="input-sm form-control" name="end" id="endDateTo" maxlength="10" autocomplete="off"/>
</div>
</div>
<div class="form-group">
<label for="timeInterval">出院时段:</label>
<select class="form-control input-sm" id="timeInterval"
onchange="loadTableByTime(this.options[this.options.selectedIndex].value,'startDateTo','endDateTo','table')">
</select>
</div>
<button type="button" class="btn btn-primary btn-sm divCss" id="searchBtn">查询</button>
</div>
</form>
</div>
<div class="workHomeIframe">
<iframe src="${path}/workHome/workHomeIframe" width="100%" height="100%" id="iframe"></iframe>
</div>
<script>
$(function(){
loadTimeInterval();
initDateInput('startDateTo','endDateTo');
$("#startDateTo").val(getHisDay(15));
$("#endDateTo").val(getHisDay(8));
})
//出院时段触发查询
function loadTableByTime(value,startDateId,endDateId,tableId){
//填空出院日期搜索框并立即查询
//开始日期id
var startDateDocument = $("#"+startDateId);
//结束日期id
var endDateDocument = $("#"+endDateId);
switch (value) {
case '':
//不限
startDateDocument.val("");
break;
case '1':
//3天内
//开始日期为3天前getHisDay
startDateDocument.val(getHisDay(3));
break;
case '2':
//7天内
//开始日期为7天前getHisDay
startDateDocument.val(getHisDay(7));
break;
case '3':
//1个月内
//开始日期为1个月前
startDateDocument.val(getPreMonthToday());
break;
case '4':
//3个月内
//开始日期为6个月前
startDateDocument.val(getPreMonthDay(getNowDay(),3));
break;
}
if(value != ''){
//非不限结束日期均为今天
//结束时间为今天
endDateDocument.val(getNowDay());
}else{
//结束时间为今天
endDateDocument.val("");
}
loadIframe();
}
$("#searchBtn").click(function(){
loadIframe();
})
function loadIframe(){
$("#iframe").prop("src","${path}/workHome/workHomeIframe");
}
</script>
</body>
</html>

@ -0,0 +1,210 @@
/*
* Author: Abdullah A Almsaeed
* Date: 4 Jan 2014
* Description:
* This is a demo file used only for the main dashboard (index.html)
**/
$(function () {
'use strict';
// Make the dashboard widgets sortable Using jquery UI
$('.connectedSortable').sortable({
placeholder : 'sort-highlight',
connectWith : '.connectedSortable',
handle : '.box-header, .nav-tabs',
forcePlaceholderSize: true,
zIndex : 999999
});
$('.connectedSortable .box-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move');
// jQuery UI sortable for the todo list
$('.todo-list').sortable({
placeholder : 'sort-highlight',
handle : '.handle',
forcePlaceholderSize: true,
zIndex : 999999
});
// bootstrap WYSIHTML5 - text editor
//$('.textarea').wysihtml5();
$('.daterange').daterangepicker({
ranges : {
'Today' : [moment(), moment()],
'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
'This Month' : [moment().startOf('month'), moment().endOf('month')],
'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
},
startDate: moment().subtract(29, 'days'),
endDate : moment()
}, function (start, end) {
window.alert('You chose: ' + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
});
/* jQueryKnob */
$('.knob').knob();
// jvectormap data
var visitorsData = {
US: 398, // USA
SA: 400, // Saudi Arabia
CA: 1000, // Canada
DE: 500, // Germany
FR: 760, // France
CN: 300, // China
AU: 700, // Australia
BR: 600, // Brazil
IN: 800, // India
GB: 320, // Great Britain
RU: 3000 // Russia
};
// World map by jvectormap
$('#world-map').vectorMap({
map : 'world_mill_en',
backgroundColor : 'transparent',
regionStyle : {
initial: {
fill : '#e4e4e4',
'fill-opacity' : 1,
stroke : 'none',
'stroke-width' : 0,
'stroke-opacity': 1
}
},
series : {
regions: [
{
values : visitorsData,
scale : ['#92c1dc', '#ebf4f9'],
normalizeFunction: 'polynomial'
}
]
},
onRegionLabelShow: function (e, el, code) {
if (typeof visitorsData[code] != 'undefined')
el.html(el.html() + ': ' + visitorsData[code] + ' new visitors');
}
});
// Sparkline charts
var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021];
$('#sparkline-1').sparkline(myvalues, {
type : 'line',
lineColor: '#92c1dc',
fillColor: '#ebf4f9',
height : '50',
width : '80'
});
myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921];
$('#sparkline-2').sparkline(myvalues, {
type : 'line',
lineColor: '#92c1dc',
fillColor: '#ebf4f9',
height : '50',
width : '80'
});
myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21];
$('#sparkline-3').sparkline(myvalues, {
type : 'line',
lineColor: '#92c1dc',
fillColor: '#ebf4f9',
height : '50',
width : '80'
});
// The Calender
$('#calendar').datepicker();
// SLIMSCROLL FOR CHAT WIDGET
$('#chat-box').slimScroll({
height: '250px'
});
/* Morris.js Charts */
// Sales chart
var area = new Morris.Area({
element : 'revenue-chart',
resize : true,
data : [
{ y: '2011 Q1', item1: 2666, item2: 2666 },
{ y: '2011 Q2', item1: 2778, item2: 2294 },
{ y: '2011 Q3', item1: 4912, item2: 1969 },
{ y: '2011 Q4', item1: 3767, item2: 3597 },
{ y: '2012 Q1', item1: 6810, item2: 1914 },
{ y: '2012 Q2', item1: 5670, item2: 4293 },
{ y: '2012 Q3', item1: 4820, item2: 3795 },
{ y: '2012 Q4', item1: 15073, item2: 5967 },
{ y: '2013 Q1', item1: 10687, item2: 4460 },
{ y: '2013 Q2', item1: 8432, item2: 5713 }
],
xkey : 'y',
ykeys : ['item1', 'item2'],
labels : ['Item 1', 'Item 2'],
lineColors: ['#a0d0e0', '#3c8dbc'],
hideHover : 'auto'
});
var line = new Morris.Line({
element : 'line-chart',
resize : true,
data : [
{ y: '2011 Q1', item1: 2666 },
{ y: '2011 Q2', item1: 2778 },
{ y: '2011 Q3', item1: 4912 },
{ y: '2011 Q4', item1: 3767 },
{ y: '2012 Q1', item1: 6810 },
{ y: '2012 Q2', item1: 5670 },
{ y: '2012 Q3', item1: 4820 },
{ y: '2012 Q4', item1: 15073 },
{ y: '2013 Q1', item1: 10687 },
{ y: '2013 Q2', item1: 8432 }
],
xkey : 'y',
ykeys : ['item1'],
labels : ['Item 1'],
lineColors : ['#efefef'],
lineWidth : 2,
hideHover : 'auto',
gridTextColor : '#fff',
gridStrokeWidth : 0.4,
pointSize : 4,
pointStrokeColors: ['#efefef'],
gridLineColor : '#efefef',
gridTextFamily : 'Open Sans',
gridTextSize : 10
});
// Donut Chart
var donut = new Morris.Donut({
element : 'sales-chart',
resize : true,
colors : ['#3c8dbc', '#f56954', '#00a65a'],
data : [
{ label: 'Download Sales', value: 12 },
{ label: 'In-Store Sales', value: 30 },
{ label: 'Mail-Order Sales', value: 20 }
],
hideHover: 'auto'
});
// Fix for charts under tabs
$('.box ul.nav a').on('shown.bs.tab', function () {
area.redraw();
donut.redraw();
line.redraw();
});
/* The todo list plugin */
$('.todo-list').todoList({
onCheck : function () {
window.console.log($(this), 'The element has been checked');
},
onUnCheck: function () {
window.console.log($(this), 'The element has been unchecked');
}
});
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -71,7 +71,9 @@ function initTable() {
roles:$("#searchOperRole").val(),
isSuccess:$("#isSuccessSearch").val(),
infoId:$("#infoId").val(),
operRole:$("#checker").val()
operRole:$("#checker").val(),
callBackStatus:$("#callBackStatus").val(),
printStatus:$("#printStatus").val()
};
return temp;
},
@ -148,6 +150,32 @@ function initTable() {
}
}
},
{
title: 'HIS召回状态',
field: 'callBackStatus',
align: 'center',
valign: 'middle',
formatter:function(value, row){
if(value == '是'){
return '<span style="color:green">是</span>';
}else{
return '<span style="color:red">否</span>';
}
}
},
{
title: '打印状态',
field: 'printStatus',
align: 'center',
valign: 'middle',
formatter:function(value, row){
if(value == '是'){
return '<span style="color:green">是</span>';
}else{
return '<span style="color:red">否</span>';
}
}
},
{
title: "操作",
align: 'left',

@ -389,3 +389,17 @@ $.ajaxSetup({
}
}
});
//获取url上的参数
function setSearchWhere(startDateId,endDateId){
var params = window.location.search;
if(params != '') {
params = params.substring(1,params.length);
var paramArr = params.split("&");
if (paramArr != '') {
var startDateTo = paramArr[0].split("=")[1];
var endDateTo = paramArr[1].split("=")[1];
$("#" + startDateId).val(startDateTo);
$("#" + endDateId).val(endDateTo);
}
}
}

@ -55,7 +55,7 @@ function loadDoctorInCharge(){
//判断是否需要选中
var flag = $("#flag").val();
var currentRole = $("#roleId").val();
if(flag == 1 && currentRole == 1){
if(currentRole == 1){
if($("#currentName").val() == name){
selected = 'selected';
}
@ -581,7 +581,7 @@ function initTable2() {
paginationShowPageGo: true,
pageList: [10, 20, 50, 100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
smartDisplay: false,
pageSize: 2, // 页面数据条数
pageSize: 20, // 页面数据条数
pageNumber: 1, // 初始化加载第一页,默认第一页
sidePagination: 'server', // 设置为服务器端分页 客户端client
search: false,

@ -74,7 +74,9 @@ function initTable() {
doctorInCharge:$("#doctorInCharge").val(),
isSign:$("#isSign").val(),
isSearch:$("#isSearch").val(),
checkName:$("#checkName").val()
checkName:$("#checkName").val(),
callBackStatus:$("#callBackStatus").val(),
printStatus:$("#printStatus").val()
};
return temp;
},
@ -186,6 +188,32 @@ function initTable() {
return str;
}
},
{
title: 'HIS召回状态',
field: 'callBackStatus',
align: 'center',
valign: 'middle',
formatter:function(value, row){
if(value == '是'){
return '<span style="color:green">是</span>';
}else{
return '<span style="color:red">否</span>';
}
}
},
{
title: '打印状态',
field: 'printStatus',
align: 'center',
valign: 'middle',
formatter:function(value, row){
if(value == '是'){
return '<span style="color:green">是</span>';
}else{
return '<span style="color:red">否</span>';
}
}
},
{
title: "操作",
align: 'left',
@ -309,7 +337,7 @@ function initTable() {
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
tipLoad = 0;
reloadTableHeight("table");
//reloadTableHeight("table");
},
onLoadError: function () { //加载失败时执行
tipLoad = 0;
@ -628,13 +656,13 @@ $(function () {
//日期控件
var url = window.location.href;
var index = url.substring(url.lastIndexOf('?') + 1).replace("num=", "");
if (index != null && index != "" && index.indexOf("excel") != -1) {
/*if (index != null && index != "" && index.indexOf("excel") != -1) {
$("#excelBtn").show();
$("#toolbar").show();
} else {
$("#excelBtn").hide();
$(".columns-right").hide();
}
}*/
if (index != null && index != "" && index.indexOf("upload") != -1) {
$("#uploadBtn").show();
} else {

@ -4,6 +4,7 @@ var sysFlag = 'emr_medical_record';
var userId = $("#userId").val();
//默认菜单
var defaultUrl = '';
//var defaultUrlReal = '/workHome/workHomeList';
var defaultUrlReal = '/beHosp/beHosps';
var sysULReal = '';
var defaultUrlMenuId = '';

@ -118,7 +118,7 @@ function initTable() {
onLoadSuccess: function (result) { //加载成功时执行
$(".page-list").show();
tipLoad =0;
reloadTableHeight("table");
//reloadTableHeight("table");
},
onLoadError: function () { //加载失败时执行
tipLoad = 0;

@ -87,13 +87,13 @@ function post(url, params) {
//控制导出excel权限
var url = window.location.href;
var index = url.substring(url.lastIndexOf('?') + 1).replace("num=", "");
if (index != null && index != "" && index.indexOf("export") != -1) {
/*if (index != null && index != "" && index.indexOf("export") != -1) {
$("#excelBtn").show();
$("#toolbar").show();
} else {
$("#excelBtn").hide();
$(".columns-right").hide();
}
}*/
//格式化百分比
function formatPercent(value){
if(value != null){

@ -2,18 +2,19 @@ var tipLoad = 1;
//定义表格内容最大高度
var maxHeight = 0;
$(function () {
initTable();
getDept();
//日期控件
initDateInput('startDate', 'endDate');
var url = window.location.href;
var index = url.substring(url.lastIndexOf('?') + 1).replace("num=", "");
if (index != null && index != "" && index.indexOf("excel") != -1) {
/* if (index != null && index != "" && index.indexOf("excel") != -1) {
$("#excelBtn").show();
$("#toolbar").show();
} else {
$("#excelBtn").hide();
$(".columns-right").hide();
}
}*/
if (index != null && index != "" && index.indexOf("excel2") != -1) {
$("#excelBtn2").show();
} else {
@ -782,8 +783,6 @@ $('#searchBtn').click(function () {
}
});
initTable();
//2.初始化select的change事件
$("#sel_exportoption").change(function () {
$('#table').bootstrapTable('refreshOptions', {

Loading…
Cancel
Save