初次提交归、住院返修病历的超期日期改为:扣除超期天数内的节假日、非工作日期,然后在扣除当天日期和超期天数

master
hujl 4 years ago
parent f7fa1be3c9
commit 265026883f

@ -99,10 +99,10 @@ public class faultController {
faultInfo.setPrice(masertInfo.getScore());
faultInfo.setTotalBackNum(masertInfo.getTotalBackNum());
faultInfo.setTotalBackFee(masertInfo.getTotalBackFee());
}else{
//匹配不到退回相关的ArchiveDetailId,分数暂时为100
faultInfo.setPrice(new BigDecimal(100));
}
/*else{
//匹配不到退回相关的ArchiveDetailId
}*/
}
//获取病案退回是第几次 updater为退回人
for (Emr_Fault_Vo backInfo : backList) {
@ -137,9 +137,6 @@ public class faultController {
faultInfo.setContent(backInfo.getContent());
}
}
/*else{
faultInfo.setBackFee("0");
}*/
}
}

@ -73,34 +73,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
@Override
public OffsetLimitPage selectByCol(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) {
PageHelper.offsetPage(offset, limit);
List<Archive_Master> list= archiveMasterMapper.selectByCol(archiveMasterVo);
if(list!=null && list.size()>0) {
JSONArray powerUsers = powerUserService.getPowerUserList("1");
List<JSONObject> powerUserList = JSONArray.parseArray(powerUsers.toJSONString(), JSONObject.class);
if (powerUserList != null) {
Map<String, JSONObject> mappedMovies = Maps.uniqueIndex(powerUserList, new Function<JSONObject, String>() {
@Override
public String apply(JSONObject temp) {
return temp.getString("userName");
}
});
for (Archive_Master archiveMaster : list) {
JSONObject userInfo = mappedMovies.get(archiveMaster.getDoctorName());
if (userInfo == null) {
archiveMaster.setDoctorName(archiveMaster.getDoctorName());
} else {
archiveMaster.setDoctorName(userInfo.getString("name"));
}
userInfo = mappedMovies.get(archiveMaster.getNurseName());
if (userInfo == null) {
archiveMaster.setNurseName(archiveMaster.getNurseName());
} else {
archiveMaster.setNurseName(userInfo.getString("name"));
}
}
}
}
List<Archive_Master> list= selectByCol(archiveMasterVo);
return new OffsetLimitPage((Page) list);
}

@ -1469,13 +1469,25 @@
<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,
<if test="overdueDays != null and overdueDays != ''">
case when ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}>0 then ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}
case
when ISNULL(datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)&lt;=0
then '0'
when ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int)&lt;0
then '0'
when ISNULL(m.dayOne,0)>=0 and ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)>=0
then ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int)
else '0'
end overdue
</if>
<if test="overdueDays == null or overdueDays == ''">
case when ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3>0 then ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3
case
when ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-3&lt;0
then '0'
when ISNULL(m.dayOne,0)>=0 and ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)>=0
then ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-3
else '0'
end overdue
</if>
else 0
end overdue
,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 (
@ -1484,7 +1496,15 @@
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
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>
<if test="overdueDays == null or overdueDays == ''">
convert(varchar(10),(DATEADD(DAY,2,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,3,convert(varchar(10),discharge_date_time,23))),23)) , 0) dayOne
</if>
from archive_master where 1=1 and ArchiveState!='作废' and ArchiveState!='已封存' and Is_Valid!=1
) m
on f.master_id=m.master_id
@ -1495,17 +1515,17 @@
on m.dept_admission_to=e.code
<where> 1=1 and m.master_id!='' and m.master_id is not null
<if test="(overdueDaysTwo != null and overdueDaysTwo != '') and (overdueDays != null and overdueDays != '')">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),m.discharge_date_time,23)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<if test="(overdueDaysTwo == null or overdueDaysTwo == '') and (overdueDays != null and overdueDays != '')">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-#{overdueDays,jdbcType=NCHAR}>=0
and ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int)>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<!--<if test="(overdueDaysTwo == null or overdueDaysTwo == '') and (overdueDays != null and overdueDays != '')">
and ABS(ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int))>=0
</if>-->
<if test="(overdueDaysTwo != null and overdueDaysTwo != '') and (overdueDays == null or overdueDays == '')">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<if test="(overdueDaysTwo == null or overdueDaysTwo == '') and (overdueDays == null or overdueDays == '')">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,substring(m.discharge_date_time,1,10)),f.handle_time) , 0)-3>=0
and ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-3>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<!--<if test="(overdueDaysTwo == null or overdueDaysTwo == '') and (overdueDays == null or overdueDays == '')">
and ISNULL( datediff(day,convert(varchar(100),m.mid_date,23),convert(varchar(100),f.handle_time,23)),0)+ISNULL(m.dayOne,0)-1-3>=0
</if>-->
<if test="id != null and id != ''">
and m.id = #{id,jdbcType=NVARCHAR}
</if>
@ -1559,19 +1579,44 @@
<select id="selectOverdue2" parameterType="com.emr.entity.Archive_Master_Vo" resultMap="BaseResultMap2">
select f1.id,f1.following_content,f1.handle_name,CONVERT(VARCHAR(20),f1.handle_time,120) handle_time,ISNULL(DATEDIFF(dd,CONVERT(VARCHAR(20),f1.handle_time,23),CONVERT(VARCHAR(20),f2.handle_time,23)), 0) diffDay,
<if test="overdueDays != null and overdueDays != ''">
case when ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-#{overdueDays,jdbcType=NCHAR}>0 then ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-#{overdueDays,jdbcType=NCHAR}
case
when ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)&lt;=0
then '0'
when ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)+ISNULL(f2.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int)&lt;0
then '0'
when ISNULL(f2.dayOne,0)>=0 and ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)>=0
then ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)+ISNULL(f2.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int)
else '0'
end overdue
</if>
<if test="overdueDays == null or overdueDays == ''">
case when ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-'3'>0 then ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-'3'
case
when ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)&lt;=0
then '0'
when ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)+ISNULL(f2.dayOne,0)-1-3&lt;0
then '0'
when ISNULL(f2.dayOne,0)>=0 and ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)>=0
then ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)+ISNULL(f2.dayOne,0)-1-3
else '0'
end overdue
</if>
else 0
end overdue
,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,following_type,following_content,handle_name,handle_time,ROW_NUMBER() OVER (partition by master_id ORDER BY master_id,handle_time) as rowNumb from Archive_Master_Following where following_type='9'
)f1
LEFT JOIN (
select *,ROW_NUMBER() OVER (partition by master_id ORDER BY master_id,handle_time) as rowNumb from Archive_Master_Following where following_type='5'
select *,
<if test="overdueDays != null and overdueDays != ''">
convert(varchar(10),(DATEADD(DAY,cast(#{overdueDays,jdbcType=NCHAR} as int)-1,convert(varchar(10),handle_time,23))),23) mid_date
,ISNULL(dbo.getWorkday(convert(varchar(10),handle_time,23),convert(varchar(10),(DATEADD(DAY,cast(#{overdueDays,jdbcType=NCHAR} as int),convert(varchar(10),handle_time,23))),23)) , 0) dayOne
</if>
<if test="overdueDays == null or overdueDays == ''">
convert(varchar(10),(DATEADD(DAY,cast('2' as int),convert(varchar(10),handle_time,23))),23) mid_date
,ISNULL(dbo.getWorkday(convert(varchar(10),handle_time,23),convert(varchar(10),(DATEADD(DAY,cast('3' as int),convert(varchar(10),handle_time,23))),23)) , 0) dayOne
</if>
from(
select *,ROW_NUMBER() OVER (partition by master_id ORDER BY master_id,handle_time) as rowNumb from Archive_Master_Following where following_type='5'
)a
)f2
on f1.master_id=f2.master_id and f1.rowNumb=f2.rowNumb-1
LEFT JOIN (
@ -1581,21 +1626,14 @@
on f1.master_id=m.master_id
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) c
on m.dept_name=c.code
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where typeCode='dept_code' )) e
on m.dept_admission_to=e.code
<where> 1=1 and m.master_id!='' and m.master_id is not null
<if test="overdueDaysTwo != null and overdueDaysTwo != '' and overdueDays != null and overdueDays != ''">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-#{overdueDays,jdbcType=NCHAR}>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<if test="(overdueDaysTwo == null or overdueDaysTwo == '')and overdueDays != null and overdueDays != ''">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-#{overdueDays,jdbcType=NCHAR}>=0
</if>
<if test="overdueDaysTwo != null and overdueDaysTwo != '' and (overdueDays == null or overdueDays == '')">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-'3'>=#{overdueDaysTwo,jdbcType=NCHAR}
<where> 1=1 and m.master_id!='' and m.master_id is not null and f2.handle_time is not null
<if test="(overdueDaysTwo != null and overdueDaysTwo != '') and (overdueDays != null and overdueDays != '')">
and ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)+ISNULL(f2.dayOne,0)-1-cast(#{overdueDays,jdbcType=NCHAR} as int)>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<if test="(overdueDaysTwo == null or overdueDaysTwo == '') and (overdueDays == null or overdueDays == '')">
and ISNULL(dbo.f_WorkDay(DATEADD(DAY,1,CONVERT(VARCHAR(10),f1.handle_time,23)),CONVERT(VARCHAR(10),f2.handle_time,23)) , 0)-'3'>=0
<if test="(overdueDaysTwo != null and overdueDaysTwo != '') and (overdueDays == null or overdueDays == '')">
and ISNULL( datediff(day,convert(varchar(100),f2.mid_date,23),convert(varchar(100),f1.handle_time,23)),0)+ISNULL(f2.dayOne,0)-1-3>=#{overdueDaysTwo,jdbcType=NCHAR}
</if>
<if test="id != null and id != ''">
and m.id = #{id,jdbcType=NVARCHAR}

Loading…
Cancel
Save