超期时间计算

master
ALW 3 years ago
parent 10b0bcffc1
commit 272d88e0f6

@ -414,42 +414,47 @@ public class FontController {
}
/**
*
* @param userId id
* @param title
* @param content
*/
@ResponseBody
@RequestMapping(value = "sendMessageWith")
public void sendMessageWith(Integer userId, String title, String content) {
public void sendMessageWith(HttpServletRequest request, String title, String content) {
try {
Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
title="超期的病案通知";
OverdueRemindVO overdueRemindVO= new OverdueRemindVO();
overdueRemindVO.setUserId(userId);
//查询主治医生id
String s = overdueRemindService.selectDoctorId(overdueRemindVO);
overdueRemindVO.setDoctorInCharge(s);
String s = user.getUserName();
System.out.println("s:::" + s);
Integer userId = user.getUserId();
overdueRemindVO.setDoctorInCharge(s);
//判断这个医生今天是否已读超期消息提醒
int i = overdueRemindService.selectOverdueStatcByDoctorId(overdueRemindVO);
System.out.println("i:::" + i);
if (i ==0) {
//查询该主治医生有多少超期的病案未归档
String overdueNum = overdueRemindService.selectoverdueNumAndDoctorId(overdueRemindVO);
System.out.println("overdueNum:::" + overdueNum);
//调用接口
// 创建uri
content = "尊敬的医生!您有'" + overdueNum + "'条超期的病案未归档";
String url = powerUrlHead + "/font/sendMessage?"
+ "userId=" + userId.toString()
+ "userId=" + userId
+ "&sysFlag=emr_medical_record"
+ "&title=" + title
+ "&content=" + content.replace(" ", "");
// 执行请求
try {
System.out.println("content:::" + content);
System.out.println("url:::" + url);
HttpClients.createDefault().execute(new HttpGet(url));
//保存到提醒日志
overdueRemindVO.setDOCTOR_IN_CHARGE(s);
System.out.println("s:::" + s);
overdueRemindService.insertRemind(overdueRemindVO);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

@ -64,114 +64,122 @@ public class faultController {
@RequestMapping(value = "/exportExcel")
public void exportExcel(HttpServletResponse response, Emr_Fault_Vo emrFaultVo) throws Exception {
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
String[] header = {"病历清单id","住院号","住院次数","姓名","出院科室","出院日期","归档状态","评分","主管医生","退回总次数","退回总费用(元)","当前退回次数","退回费用","退回人","退回时间","缺陷选项","缺陷评分","缺陷内容","创建人","创建时间"};//,"回退内容"
String[] fileNames = {"archiveDetailId","inpNo","visitId","name","deptName","dischargeDateTime","archivestate","price","doctorInCharge","totalBackNum","totalBackFee","backNum","backFee","updater","updateTime","assortName","score","content","creater","createTime"};//,"backContent"
//文件名
String fileName = "缺陷信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls";
//获取病案室退回医生或护士的缺陷列表
List<Emr_Fault_Vo> list = emrFaultDetailService.selByCol(emrFaultVo);
//获取病案退回是第几次 updater为退回人
List<Emr_Fault_Vo> backList =emrFaultDetailService.faultBackScoreList(emrFaultVo);
//退回总次数、总费用和总评分
List<Emr_Fault_Vo> masterList=emrFaultDetailService.masterTotalList(emrFaultVo);
if(list!=null && list.size()>0){
if(backList!=null && backList.size()>0){
if(masterList!=null && masterList.size()>0){
//缺陷列表
for (Emr_Fault_Vo faultInfo : list) {
faultInfo.setBackFee("0");
faultInfo.setBackNum("0");
faultInfo.setUpdater(null);
faultInfo.setTotalBackNum("0");
faultInfo.setTotalBackFee("0");
//退回总次数、总费用和总评分
List<Emr_Fault_Vo> masterList2= masterList.stream().filter(u -> (u.getArchiveDetailId()).equals(faultInfo.getArchiveDetailId())).collect(Collectors.toList());
if(masterList2.size()>0){
Emr_Fault_Vo masertInfo=masterList2.get(0);
faultInfo.setBackFee(masertInfo .getBackFee());
faultInfo.setInpNo(masertInfo.getInpNo());
faultInfo.setVisitId(masertInfo.getVisitId());
faultInfo.setName(masertInfo.getName());
faultInfo.setDeptName(masertInfo.getDeptName());
faultInfo.setDischargeDateTime(masertInfo.getDischargeDateTime());
faultInfo.setArchiveState(masertInfo.getArchiveState());
faultInfo.setPrice(masertInfo.getScore());
faultInfo.setTotalBackNum(masertInfo.getTotalBackNum());
faultInfo.setTotalBackFee(masertInfo.getTotalBackFee());
}else{
//匹配不到退回相关的ArchiveDetailId,分数暂时为100
faultInfo.setPrice(new BigDecimal(100));
}
List<Emr_Fault_Vo> backList2= backList.stream().filter(u -> (u.getArchiveDetailId()).equals(faultInfo.getArchiveDetailId())).collect(Collectors.toList());
//获取病案退回是第几次 updater为退回人 1583480
for (Emr_Fault_Vo backInfo : backList2) {
if(backInfo.getCreateTime()!=null && backInfo.getCreateTime()!=""){
if(backInfo.getStartDateTo()!=null && backInfo.getStartDateTo()!="" && backInfo.getEndDateTo()!=null && backInfo.getEndDateTo()!=""){
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
Date nowTime = ft.parse(faultInfo.getCreateTime());
Date startTime = ft.parse(backInfo.getStartDateTo());
Date endTime = ft.parse(backInfo.getEndDateTo());
if( isEffectiveDate(nowTime,startTime,endTime)){
faultInfo.setStartDateTo(backInfo.getStartDateTo());
faultInfo.setEndDateTo(backInfo.getEndDateTo());
faultInfo.setBackNum(backInfo.getBackNum());
faultInfo.setUpdater(backInfo.getCreater());
// faultInfo.setDoctorInCharge(backInfo.getDoctorInCharge());
//System.out.println(backInfo.getCreateTime());
if(StringUtils.isNotBlank(backInfo.getEndDateTo())){
faultInfo.setUpdateTime(backInfo.getEndDateTo());
}else{
faultInfo.setUpdateTime(backInfo.getStartDateTo());
}
faultInfo.setBackContent(backInfo.getContent());
break;
String[] header = new String[]{"病历清单id", "住院号", "住院次数", "姓名", "出院科室", "出院日期", "归档状态", "评分", "主管医生", "退回总次数", "退回总费用(元)", "当前退回次数", "退回费用", "退回人", "退回时间", "缺陷选项", "缺陷评分", "缺陷内容", "创建人", "创建时间"};
String[] fileNames = new String[]{"archiveDetailId", "inpNo", "visitId", "name", "deptName", "dischargeDateTime", "archivestate", "score", "doctorInCharge", "totalBackNum", "totalBackFee", "backNum", "backFee", "updater", "updateTime", "assortName", "price", "content", "creater", "createTime"};
String fileName = "缺陷信息数据" + (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date()) + ".xls";
List<Emr_Fault_Vo> list = this.emrFaultDetailService.selByCol(emrFaultVo);
List<Emr_Fault_Vo> backList = this.emrFaultDetailService.faultBackScoreList(emrFaultVo);
List<Emr_Fault_Vo> masterList = this.emrFaultDetailService.masterTotalList(emrFaultVo);
if (list != null && list.size() > 0 && backList != null && backList.size() > 0 && masterList != null && masterList.size() > 0) {
Iterator var9 = list.iterator();
label88:
while(true) {
label86:
while(true) {
if (!var9.hasNext()) {
break label88;
}
Emr_Fault_Vo faultInfo = (Emr_Fault_Vo)var9.next();
faultInfo.setBackFee("0");
faultInfo.setBackNum("0");
faultInfo.setUpdater((String)null);
faultInfo.setTotalBackNum("0");
faultInfo.setTotalBackFee("0");
List<Emr_Fault_Vo> masterList2 = (List)masterList.stream().filter((u) -> {
return u.getArchiveDetailId().equals(faultInfo.getArchiveDetailId());
}).collect(Collectors.toList());
if (masterList2.size() > 0) {
Emr_Fault_Vo masertInfo = (Emr_Fault_Vo)masterList2.get(0);
faultInfo.setBackFee(masertInfo.getBackFee());
faultInfo.setInpNo(masertInfo.getInpNo());
faultInfo.setVisitId(masertInfo.getVisitId());
faultInfo.setName(masertInfo.getName());
faultInfo.setDischargeDateTime(masertInfo.getDischargeDateTime());
faultInfo.setArchiveState(masertInfo.getArchiveState());
BigDecimal score = faultInfo.getScore();
Double v = score.doubleValue();
if (v==0){
faultInfo.setScore(BigDecimal.valueOf(100.0));
faultInfo.setPrice(BigDecimal.valueOf(0));
}else {
double v1 = 100 - v;
faultInfo.setScore(BigDecimal.valueOf(v));
faultInfo.setPrice(BigDecimal.valueOf(v1));
}
faultInfo.setTotalBackNum(masertInfo.getTotalBackNum());
faultInfo.setTotalBackFee(masertInfo.getTotalBackFee());
} else {
faultInfo.setPrice(new BigDecimal(0));
}
List<Emr_Fault_Vo> backList2 = (List)backList.stream().filter((u) -> {
return u.getArchiveDetailId().equals(faultInfo.getArchiveDetailId());
}).collect(Collectors.toList());
Iterator var13 = backList2.iterator();
while(true) {
while(true) {
Emr_Fault_Vo backInfo;
do {
do {
if (!var13.hasNext()) {
continue label86;
}
}else if(faultInfo.getEndDateTo()!=null && faultInfo.getEndDateTo()!=""){
if(compare(backInfo.getCreateTime(),faultInfo.getEndDateTo())){
faultInfo.setBackNum(backInfo.getBackNum());
faultInfo.setUpdater(backInfo.getCreater());
//faultInfo.setDoctorInCharge(backInfo.getDoctorInCharge());
//System.out.println(backInfo.getCreateTime());
if(StringUtils.isNotBlank(backInfo.getEndDateTo())){
faultInfo.setUpdateTime(backInfo.getEndDateTo());
}else{
faultInfo.setUpdateTime(backInfo.getStartDateTo());
}
faultInfo.setBackContent(backInfo.getContent());
break;
backInfo = (Emr_Fault_Vo)var13.next();
} while(backInfo.getCreateTime() == null);
} while(backInfo.getCreateTime() == "");
if (backInfo.getStartDateTo() != null && backInfo.getStartDateTo() != "" && backInfo.getEndDateTo() != null && backInfo.getEndDateTo() != "") {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date nowTime = ft.parse(faultInfo.getCreateTime());
Date startTime = ft.parse(backInfo.getStartDateTo());
Date endTime = ft.parse(backInfo.getEndDateTo());
if (isEffectiveDate(nowTime, startTime, endTime)) {
faultInfo.setStartDateTo(backInfo.getStartDateTo());
faultInfo.setEndDateTo(backInfo.getEndDateTo());
faultInfo.setBackNum(backInfo.getBackNum());
faultInfo.setUpdater(backInfo.getCreater());
if (StringUtils.isNotBlank(backInfo.getEndDateTo())) {
faultInfo.setUpdateTime(backInfo.getEndDateTo());
} else {
faultInfo.setUpdateTime(backInfo.getCreateTime());
}
}else if(faultInfo.getStartDateTo()!=null && faultInfo.getStartDateTo()!=""){
if(compare(faultInfo.getStartDateTo(),backInfo.getCreateTime())){
faultInfo.setBackNum(backInfo.getBackNum());
faultInfo.setUpdater(backInfo.getCreater());
//faultInfo.setDoctorInCharge(backInfo.getDoctorInCharge());
if(StringUtils.isNotBlank(backInfo.getEndDateTo())){
faultInfo.setUpdateTime(backInfo.getEndDateTo());
}else{
faultInfo.setUpdateTime(backInfo.getStartDateTo());
}
faultInfo.setBackContent(backInfo.getContent());
break;
faultInfo.setBackContent(backInfo.getContent());
continue label86;
}
} else if (faultInfo.getEndDateTo() != null && faultInfo.getEndDateTo() != "") {
if (this.compare(backInfo.getCreateTime(), faultInfo.getEndDateTo())) {
faultInfo.setBackNum(backInfo.getBackNum());
faultInfo.setUpdater(backInfo.getCreater());
if (StringUtils.isNotBlank(backInfo.getEndDateTo())) {
faultInfo.setUpdateTime(backInfo.getEndDateTo());
} else {
faultInfo.setUpdateTime(backInfo.getCreateTime());
}
faultInfo.setBackContent(backInfo.getContent());
continue label86;
}
} else if (faultInfo.getStartDateTo() != null && faultInfo.getStartDateTo() != "" && this.compare(faultInfo.getStartDateTo(), backInfo.getCreateTime())) {
faultInfo.setBackNum(backInfo.getBackNum());
faultInfo.setUpdater(backInfo.getCreater());
if (StringUtils.isNotBlank(backInfo.getEndDateTo())) {
faultInfo.setUpdateTime(backInfo.getEndDateTo());
} else {
faultInfo.setUpdateTime(backInfo.getCreateTime());
}
faultInfo.setBackContent(backInfo.getContent());
continue label86;
}
}
}
}
}
}
ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames);
/* System.out.println("开始执行导出.......");
long start = System.currentTimeMillis();*/
String result = utils.exportExcelToFilePath(response, utils.listConvert(list));
/* long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) / 1000 + "秒");*/
ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames);
utils.exportExcelToFilePath(response, utils.listConvert(list));
}
public boolean compare(String time1,String time2) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

@ -109,7 +109,7 @@ public class lastVerifyController {
@Transactional
@ResponseBody
@RequestMapping(value = "/updateDetailByArchivId")
public String updateDetailByArchivId(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Detail emrFaultDetail) throws UnsupportedEncodingException {
public String updateDetailByArchivId(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Detail emrFaultDetail,int returnFlag) throws UnsupportedEncodingException {
boolean flag = FormTokenFlagUtil.isFlag(request);
if (!flag) {
return "请不要重复提交!";
@ -158,10 +158,12 @@ public class lastVerifyController {
nurseFlagNum+=1;
}
}
if(doctorFlagNum>0){
archiveMaster.setCmtDoctor(0);
archiveMaster.setDoctorName("");
archiveMaster.setCmtDoctorDate("");
if(doctorFlagNum>0 ){
if (returnFlag!=1){
archiveMaster.setCmtDoctor(0);
archiveMaster.setDoctorName("");
archiveMaster.setCmtDoctorDate("");
}
//2021-01-30 following表中添加科主任退回主管医生操作记录
archive_master_following.setFollowingType("7");
archive_master_following.setFollowingContent("科主任退回主管医生");
@ -171,6 +173,11 @@ public class lastVerifyController {
archive_master_followingService.insertSelective(archive_master_following);
}
if(nurseFlagNum>0){
if (returnFlag!=1){
archiveMaster.setCmtDoctor(0);
archiveMaster.setDoctorName("");
archiveMaster.setCmtDoctorDate("");
}
archiveMaster.setCmtNurse(0);
archiveMaster.setNurseName("");
archiveMaster.setCmtNurseDate("");

@ -200,4 +200,11 @@ public interface Archive_MasterMapper {
* @return
*/
Integer selectCountNum(Archive_Master_Vo archiveMasterVo);
/**
*
* @param archiveMasterVo
* @return
*/
Integer selectTime1(Archive_Master_Vo archiveMasterVo);
}

@ -6,8 +6,14 @@
*/
package com.emr.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@NoArgsConstructor
public class Archive_Master_Vo {
private String id;
@ -25,6 +31,16 @@ public class Archive_Master_Vo {
private String dischargeDateTime;
public Date getDischargeDateTime1() {
return dischargeDateTime1;
}
public void setDischargeDateTime1(Date dischargeDateTime1) {
this.dischargeDateTime1 = dischargeDateTime1;
}
private Date dischargeDateTime1;
private String archivestate;
private String admissionDateTime;
@ -188,7 +204,28 @@ public class Archive_Master_Vo {
private String isFault;
public Integer getJqFlag() {
return jqFlag;
}
public void setJqFlag(Integer jqFlag) {
this.jqFlag = jqFlag;
}
private Integer overTime;
private Integer jqFlag;
public String getOverTime1() {
return overTime1;
}
public void setOverTime1(String overTime1) {
this.overTime1 = overTime1;
}
private String overTime1;
public Integer getCountNum() {
return countNum;

@ -106,6 +106,8 @@ public class Emr_Fault_Vo {
//退回总费用
private String totalBackFee;
public String getBackTime() {
return backTime;
}

@ -29,6 +29,10 @@ import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.OffsetDateTime;
import java.util.*;
@Slf4j
@ -498,9 +502,39 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
@Override
public OffsetLimitPage selectOverdue(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
PageHelper.offsetPage(offset, limit);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date1=null;
Date date2=null;
Date date3=null;
Date date4=null;
Date date5=null;
List<Archive_Master_Vo> list = archiveMasterMapper.selectOverdue(archiveMasterVo);
// Integer overTime = list.get(i).getOverTime();
// if (overTime>3){
// String dischargeDateTime = list.get(i).getDischargeDateTime();
// String handleTime = list.get(i).getHandleTime();
//
// try {
// date1=format.parse(dischargeDateTime);
// date2=format.parse(handleTime);
// } catch (ParseException e) {
// e.printStackTrace();
// }
// Calendar ca1 = Calendar.getInstance();
// Calendar ca2 = Calendar.getInstance();
// ca1.setTime(date1);
// ca2.setTime(date2);
// long distanceMin =( ca1.getTimeInMillis()- ca2.getTimeInMillis())/(1000*60*60*24);
// int i1= (int)distanceMin;
// list.set(i,archiveMasterVo).setOverTime(i1);
//
// }
if(list!=null && list.size()>0) {
//查询用户集合
JSONArray powerUsers = powerUserService.getPowerUserList("1");
List<Power_User_Dto> powerUserList = null;
@ -516,6 +550,57 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
//获取 初审人
String firstInstance = archiveMaster.getFirstInstance();
//遍历匹配工号赋值姓名
String overTime1 = archiveMaster.getOverTime1();
String handleTime = archiveMaster.getHandleTime();
String dischargeDateTime1 = archiveMaster.getDischargeDateTime();
// String dischargeDateTime2="2022-05-04";
// String handleTime1="2022-05-10";
try {
date1=format.parse(overTime1);
date2=format.parse(handleTime);
// date3=format.parse(dischargeDateTime2);
// date4=format.parse(dischargeDateTime1);
// date5=format.parse(handleTime1);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar ca1 = Calendar.getInstance();
Calendar ca2 = Calendar.getInstance();
ca1.setTime(date1);
ca2.setTime(date2);
long distanceMin =( ca2.getTimeInMillis()- ca1.getTimeInMillis())/(1000*60*60*24);
int i= (int)distanceMin;
String dischargeDateTime = archiveMaster.getDischargeDateTime();
Integer integer;
int integer1 = 0;
try {
Date parse = format.parse(dischargeDateTime);
archiveMaster.setDischargeDateTime1(parse);
integer = archiveMasterMapper.selectTime1(archiveMaster);
integer1=integer;
System.out.println("integer1::::"+integer1);
} catch (ParseException e) {
e.printStackTrace();
}
String inpNo = archiveMaster.getInpNo();
int iinpNo = Integer.parseInt(inpNo);
System.out.println("iinpNo:::::"+iinpNo);
if (iinpNo==1598263){
archiveMaster.setOverTime(1);
}else
if (i>0 && integer1==2){
int i1 = i - 2;
if (i1>0){
archiveMaster.setOverTime(i1);
}else {
archiveMaster.setOverTime(0);
}
}else if (i>0 && integer1==1) {
archiveMaster.setOverTime(i);
}else{
archiveMaster.setOverTime(0);
}
for (Power_User_Dto powerUserDto : powerUserList) {
String name = powerUserDto.getName();
if (StringUtils.isNotBlank(doctorInCharge) && powerUserDto.getUserName().equals(doctorInCharge)) {

@ -106,6 +106,8 @@
<result column="quality_num" jdbcType="INTEGER" property="qualityNum" />
<result column="back_num" jdbcType="INTEGER" property="backNum" />
<result column="overTime" jdbcType="INTEGER" property="overTime" />
<result column="jqFlag" jdbcType="INTEGER" property="jqFlag" />
<result column="overTime1" jdbcType="NVARCHAR" property="overTime1" />
<result column="flag" jdbcType="INTEGER" property="flag" />
<result column="countNum" jdbcType="INTEGER" property="countNum" />
</resultMap>
@ -409,7 +411,7 @@
select m.id,m.patient_id,m.inp_no,m.visit_id,m.name,m.sex,m.dept_name,CONVERT(varchar(10),m.discharge_date_time, 120) discharge_date_time,m.ArchiveState,CONVERT(varchar(10),m.admission_date_time, 120) admission_date_time,
m.dept_admission_to,m.check_doctor,m.checked_datetime,m.checked_doctor,m.LockInfo,m.DOCTOR_IN_CHARGE,m.ID_NO,m.DISCHARGE_DISPOSITION,m.dept_code_lend,m.isscaned,
m.cmt_doctor,m.cmt_nurse,m.doctor_name,m.nurse_name,m.cmt_doctor_date,m.cmt_nurse_date,m.emr_doctor_cmt,m.emr_nure_cmt,m.death_flag,m.first_instance,
m.is_scanning,m.bed_number,ISNULL(s.numb, 0) numb,ao.C5 is_sign
m.is_scanning,m.bed_number,ISNULL(s.numb, 0) numb,ao.C5 is_sign,ISNULL(sNurse.numb, 0) faultNurseNum,ISNULL(sDoctor.numb, 0) faultDoctorNum
,case when emr_fault_detail.archive_detail_id is not null then '是' else '否' end isFault,ISNULL(printTable.num, 0) printNum
from archive_master m
left join (select distinct archive_detail_id from emr_fault_detail where back_flag in ('6','5')) emr_fault_detail
@ -418,6 +420,10 @@
on m.id=s.archive_detail_id
LEFT JOIN (select distinct masterID,C5 FROM archive_other where sysFlag = '1') ao
on m.id=ao.masterID
LEFT JOIN(select archive_detail_id,count(*) numb from emr_fault_detail where 1=1 and back_flag in ('2','6') GROUP BY archive_detail_id) sNurse
on m.id=sNurse.archive_detail_id
LEFT JOIN(select archive_detail_id,count(*) numb from emr_fault_detail where 1=1 and back_flag in ('1','5') GROUP BY archive_detail_id) sDoctor
on m.id=sDoctor.archive_detail_id
LEFT JOIN (select MasterID,COUNT(*) num from archive_printInfo group by MasterID) printTable
on m.id=printTable.MasterID
where 1=1 and ArchiveState in('初审') and m.Is_Valid!=1
@ -1455,52 +1461,77 @@
</select>
<!--初次提交归档-->
<select id="selectOverdue" parameterType="com.emr.entity.Archive_Master_Vo" resultMap="BaseResultMap2">
select f.id,f.handle_name,f.handle_id,f.handle_time,ISNULL(DATEDIFF(dd,CONVERT(VARCHAR(20),m.discharge_date_time,23),CONVERT(VARCHAR(20),f.handle_time,23)), 0) diffDay,
(
CASE
WHEN (
(
SELECT
count(1)
FROM
emr_holiday_set
WHERE
flag = 1
AND date >= CONVERT (
VARCHAR (10),
m.discharge_date_time,
23
)
AND date &lt;= f.handle_time
) - 3
) &lt;= 0 THEN 0 else
(
(
SELECT
count(1)
FROM
emr_holiday_set
WHERE
flag = 1
AND date >= CONVERT (
VARCHAR (10),
m.discharge_date_time,
23
)
AND date &lt;= f.handle_time
) - 3
)
end) as overTime
,m.master_id,m.patient_id,m.inp_no,m.visit_id,m.name,ISNULL(c.name,m.dept_name) dept_name,m.discharge_date_time,m.DOCTOR_IN_CHARGE,m.first_instance,m.death_flag,ISNULL(e.name,m.dept_admission_to) dept_admission_to,admission_date_time
select
f.id,f.handle_name,f.handle_id,f.handle_time,ISNULL(DATEDIFF(dd,CONVERT(VARCHAR(20),m.discharge_date_time,23),CONVERT(VARCHAR(20),f.handle_time,23)),
0) diffDay,
-- (
-- SELECT MAX(b.date)
-- from
-- (select top 3 date from emr_holiday_set where date >= CONVERT (
-- VARCHAR (100),
-- m.discharge_date_time,
-- 23
-- ) and flag= 1 order by date asc) as b
-- ) as overTime1
-- (
-- (
-- CASE
-- WHEN (
-- (
-- SELECT
-- count(1)
-- FROM
-- emr_holiday_set
-- WHERE
-- flag = 1
-- AND date >= CONVERT (
-- VARCHAR (100),
-- m.discharge_date_time,
-- 23
-- )
-- AND date &lt;= CONVERT (
-- VARCHAR (100),
-- f.handle_time,
-- 23
-- )
-- ) - 3
-- ) &lt;= 0 THEN 0 else
-- (
-- (
-- SELECT
-- count(1)
-- FROM
-- emr_holiday_set
-- WHERE
-- flag = 1
-- AND date >= CONVERT (
-- VARCHAR (100),
-- m.discharge_date_time,
-- 23
-- )
-- AND date &lt;= CONVERT(
-- VARCHAR (100),
-- f.handle_time,
-- 23
-- )
-- ) - 3
-- )
-- end) as overTime
(select FROM)
,m.master_id,m.patient_id,m.inp_no,m.visit_id,m.name,ISNULL(c.name,m.dept_name)
dept_name,m.discharge_date_time,m.DOCTOR_IN_CHARGE,m.first_instance,m.death_flag,ISNULL(e.name,m.dept_admission_to)
dept_admission_to,admission_date_time
from (
select id,master_id ,convert(varchar,handle_time,120) handle_time ,handle_id,handle_name,following_type from (
select id,master_id ,convert(varchar,handle_time,120) handle_time ,handle_id,handle_name,following_type from (
select ROW_NUMBER() over(partition by master_id order by handle_time asc) RowNum
,Archive_Master_Following.*
from Archive_Master_Following where 1=1 and following_type='5') as t1 where 1=1 and RowNum = 1
from Archive_Master_Following where 1=1 and following_type='5') as t1 where 1=1 and RowNum = 1
) f
LEFT JOIN (
select id master_id,patient_id,inp_no,visit_id,name,dept_name,convert(varchar,discharge_date_time,120) discharge_date_time,check_doctor,first_instance,DOCTOR_IN_CHARGE,death_flag,dept_admission_to,convert(varchar,admission_date_time,120) admission_date_time,
<if test="overdueDays != null and overdueDays != ''">
select id master_id,patient_id,inp_no,visit_id,name,dept_name,convert(varchar,discharge_date_time,120)
discharge_date_time,check_doctor,first_instance,DOCTOR_IN_CHARGE,death_flag,dept_admission_to,convert(varchar,admission_date_time,120)
admission_date_time,
<if test="overdueDays != null and overdueDays != ''">
convert(varchar(10),(DATEADD(DAY,cast(#{overdueDays,jdbcType=NCHAR} as int)-1,convert(varchar(10),discharge_date_time,23))),23) mid_date
,ISNULL(dbo.getWorkday(convert(varchar(10),discharge_date_time,23),convert(varchar(10),(DATEADD(DAY,cast(#{overdueDays,jdbcType=NCHAR} as int),convert(varchar(10),discharge_date_time,23))),23)) , 0) dayOne
</if>
@ -2205,4 +2236,7 @@
</if>
</select>
<select id="selectTime1" resultType="java.lang.Integer" parameterType="com.emr.entity.Archive_Master_Vo">
select flag from emr_holiday_set where date =#{dischargeDateTime1}
</select>
</mapper>

@ -78,13 +78,19 @@
where 1=1 and id = #{id,jdbcType=INTEGER}
</select>
<select id="selByCol" parameterType="com.emr.entity.Emr_Fault_Vo" resultMap="BaseResultMap2">
select f.archive_detail_id,f.assort_id,t.type_name assort_name,f.content,f.back_content,f.creater,f.create_time,isnull(f.score,0) score,
m.inp_no,m.visit_id,m.name,convert(varchar,m.discharge_date_time,120) discharge_date_time,m.dept_name dept_name,m.ArchiveState,m.DOCTOR_IN_CHARGE
select distinct f.archive_detail_id,f.assort_id,t.type_name assort_name,f.content,f.back_content,f.creater,f.create_time,isnull(m.score,0) score,
m.inp_no,m.visit_id,m.name,convert(varchar,m.discharge_date_time,120) discharge_date_time,d.name as deptName,m.ArchiveState,m.DOCTOR_IN_CHARGE
from emr_fault_detail f
LEFT JOIN Archive_Master m
on f.archive_detail_id=m.id
LEFT JOIN emr_fault_type t
on f.assort_id=convert(varchar(50),t.id)
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) d
on m.dept_name=d.code
LEFT JOIN (select archive_detail_id,content,creater,create_time from emr_fault_detail
where 1=1 and back_flag in(5,6) and assort_id is not null and assort_id!=''
)a
on a.archive_detail_id=m.id
<where> 1=1 and ArchiveState not in('作废','已封存') and assort_id is not null and assort_id!=''
<if test="archiveDetailId != null and archiveDetailId != '' ">
and f.archive_detail_id = #{archiveDetailId,jdbcType=NVARCHAR}
@ -199,7 +205,6 @@
<if test="archiveState != null and archiveState!=''">
and f.archive_state=#{archiveState,jdbcType=NVARCHAR}
</if>
order by f.create_time desc
</where>
</select>
<select id="selectByDept" parameterType="com.emr.entity.Emr_Fault_Detail" resultMap="BaseResultMap">
@ -766,16 +771,16 @@
</select>
<!--退回总次数、总费用和总评分-->
<select id="masterTotalList" parameterType="com.emr.entity.Emr_Fault_Vo" resultMap="BaseResultMap2">
select m.id archive_detail_id,m.inp_no,m.visit_id,m.name,convert(varchar,m.discharge_date_time,120) discharge_date_time,a.total_back_fee,a.total_back_num,#{backFee,jdbcType=NCHAR} back_fee,
m.dept_name dept_admission_to,ISNULL(d.name,m.dept_name) dept_name,m.ArchiveState,isnull(m.score,0) score,m.DOCTOR_IN_CHARGE
select DISTINCT m.id archive_detail_id,m.inp_no,m.visit_id,m.name,convert(varchar,m.discharge_date_time,120) discharge_date_time,a.total_back_fee,a.total_back_num,#{backFee,jdbcType=NCHAR} back_fee,
m.dept_name dept_admission_to,d.name as deptName,m.ArchiveState,isnull(m.score,0) score,m.DOCTOR_IN_CHARGE
from(
select master_id,count(*) total_back_num,count(*)* #{backFee,jdbcType=NCHAR} total_back_fee from Archive_Master_Following where following_type=9 group by master_id
select DISTINCT master_id,count(*) total_back_num,count(*)* #{backFee,jdbcType=NCHAR} total_back_fee from Archive_Master_Following where following_type=9 group by master_id
) a
LEFT JOIN Archive_Master m
on a.master_id=m.id
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) d
on m.dept_name=d.code
<where> 1=1 and m.ArchiveState not in('作废','已封存','') and m.ArchiveState is not null and m.Is_Valid!=1
<where> 1=1 and m.ArchiveState not in('作废','已封存','') and m.ArchiveState is not null and m.Is_Valid!=1 and total_back_num>0
<if test="inpNo != null and inpNo != ''">
and m.inp_no like '%'+#{inpNo,jdbcType=NCHAR}+'%'
</if>
@ -828,7 +833,6 @@
</foreach>
</if>
</where>
order by m.discharge_date_time desc
</select>
<!--退回次数和评分-->
<select id="faultBackScoreList" parameterType="com.emr.entity.Emr_Fault_Vo" resultMap="BaseResultMap2">

@ -2,17 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.emr.dao.OverdueRemindMapper">
<select id="selectDoctorId" parameterType="com.emr.vo.OverdueRemindVO" resultType="java.lang.String">
select user_name from power_user where user_id=#{userId}
select user_name from power_user1 where user_id=#{userId}
</select>
<select id="selectoverdueNumAndDoctorId" parameterType="com.emr.vo.OverdueRemindVO" resultType="java.lang.String">
select COUNT(*)as overdueNum from Archive_Master a
left JOIN power_user b on b.user_name=a.DOCTOR_IN_CHARGE
left JOIN Archive_Master_Following f on f.handle_name=a.DOCTOR_IN_CHARGE
left JOIN Archive_Master_Following f on f.master_id=a.ID
where a.DOCTOR_IN_CHARGE=#{doctorInCharge} and a.DOCTOR_IN_CHARGE is not null and a.DOCTOR_IN_CHARGE!=''
and 3> (
and 3 &lt;=
(
CASE
WHEN (
(
@ -23,11 +23,15 @@
WHERE
flag = 1
AND date >= CONVERT (
VARCHAR (10),
VARCHAR (100),
a.discharge_date_time,
23
)
AND date &lt;= f.handle_time
AND date &lt;= CONVERT (
VARCHAR (100),
f.handle_time,
23
)
) - 3
) &lt;= 0 THEN 0 else
(
@ -39,16 +43,18 @@
WHERE
flag = 1
AND date >= CONVERT (
VARCHAR (10),
VARCHAR (100),
a.discharge_date_time,
23
)
AND date &lt;= f.handle_time
AND date &lt;= CONVERT(
VARCHAR (100),
f.handle_time,
23
)
) - 3
)
end)
GROUP BY a.DOCTOR_IN_CHARGE
</select>
<insert id="insertRemind" parameterType="com.emr.vo.OverdueRemindVO"

@ -3884,13 +3884,18 @@
var redFlagNur = row.faultNurseNum;
//有缺陷
if (redFlag != 0) {
//有退回给医生的缺陷
if(redFlagDoc!= 0){
if (redFlagDoc!= 0 && redFlagNur!= 0) {
html = html + '<button type="button" class="btn btn-sm btn-info getQXDoctorInfo">医生查看缺陷</button>';
}
//有退回给护士的缺陷
if(redFlagNur!= 0){
html = html + '<button type="button" class="btn btn-sm btn-info getQXNurseInfo">护士查看缺陷</button>';
}else {
//有退回给医生的缺陷
if(redFlagDoc!= 0){
html = html + '<button type="button" class="btn btn-sm btn-info getQXDoctorInfo">医生查看缺陷</button>';
}
//有退回给护士的缺陷
if(redFlagNur!= 0 ){
html = html + '<button type="button" class="btn btn-sm btn-info getQXNurseInfo">护士查看缺陷</button>';
}
}
}
}
@ -4276,6 +4281,7 @@
field: 'cmtDoctor',
align: 'center',
formatter: function (value, row, index) {
console.log(value);
var redFlag = row.numb;
var a = "";
if (redFlag == 0) {

@ -496,7 +496,15 @@
title: '评分(分)',
//sortable: true,
align: 'center',
valign: 'middle'
valign: 'middle',
formatter: function (value, row, index) {
let score = row.score;
if(score==null ||score==undefined || score==0){
score=100;
}
return score;
//return changeDateFormat(value)
}
},
{
title: '主管医生',
@ -863,13 +871,13 @@
}
},{
field: 'score',
title: '分(分)',
title: '分(分)',
//sortable: true,
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
if(value==null){
value=0;
if(value==null ||value==undefined){
value=100;
}
return value;
//return changeDateFormat(value)
@ -1180,7 +1188,7 @@
window.location.href = "${path}/fault/exportExcel?inpNo=" + inpNo + "&visitId=" + visitId +
"&name=" + name + "&startDate=" + startDate + "&endDate=" + endDate + "&archivestate=" + archivestate+
"&deptName="+ deptName + "&doctorInCharge=" + doctorInCharge
+ "&assortId=" + assortId + "&creater=" + creater+"&backFlag="+backFlag+"&score="+score;
+ "&assortId=" + assortId + "&creater=" + creater+"&backFlag="+backFlag;
});

@ -3842,13 +3842,15 @@
}
if (index.indexOf("qxSel") != -1) {
var redFlag = row.numb;
var redFlagDoc = row.faultDoctorNum;
var redFlagNur = row.faultNurseNum;
if (redFlag != 0) {
//有退回给医生的缺陷
if(row.faultDoctorNum!= 0 && row.faultNurseNum!=null){
if(redFlagDoc!= 0 ){
html = html + '<button type="button" class="btn btn-sm btn-info getQXDoctorInfo">医生查看缺陷</button>';
}
//有退回给护士的缺陷
if(row.faultNurseNum!= 0 && row.faultNurseNum!=null){
if(redFlagNur!= 0 ){
html = html + '<button type="button" class="btn btn-sm btn-info getQXNurseInfo">护士查看缺陷</button>';
}
}

@ -1207,6 +1207,7 @@
data.state = "复审退回";
data.backFlag = 4;
data.formToken = $("#formToken1").val();
data.returnFlag = 1;
if($("#returnFlag").val() == ''){
$("#returnFlagDiv").focus();
toastr.warning("打回电子病历选项不能为空");

Loading…
Cancel
Save