病案评分列表

master
ALW 3 years ago
parent d0e173fb8c
commit 5f3c257483

@ -191,7 +191,20 @@ public class faultController {
@ResponseBody
@RequestMapping(value = "/exportScoreExcel")
public void exportScoreExcel(HttpServletResponse response, Emr_Fault_Vo emrFaultVo) throws Exception {
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
String[] header = new String[]{ "住院号", "住院次数", "姓名", "出院科室", "出院日期", "归档状态", "评分", "评分(等级)", "主管医生", "退回总次数","缺陷内容","缺陷自动内容","扣分","创建人"};
String[] fileNames = new String[]{ "inpNo", "visitId", "name", "deptName", "dischargeDateTime", "archivestate", "score", "grade","doctorInCharge", "totalBackNum","typeName","priceTwo","creater"};
String fileName = "病例评分" + (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date()) + ".xls";
List<Emr_Fault_Vo> list = emrFaultDetailService.masterTotalScoreListExec(emrFaultVo);
for (Emr_Fault_Vo lists:list){
BigDecimal score = lists.getScore();
if (score==null){
BigDecimal num1 = new BigDecimal("100");
lists.setScore(num1);
}
}
ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames);
utils.exportExcelToFilePath(response, utils.listConvert(list));
}
public boolean compare(String time1,String time2) throws ParseException {
@ -534,6 +547,14 @@ public class faultController {
}
@ResponseBody
@RequestMapping(value = "/faultListByTjPriceTwo")
public OffsetLimitPage faultListByTjPriceTwo(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) {
OffsetLimitPage result = emrFaultDetailService.selByColPriceTwo(emrFaultVo, offset, limit);
return result;
}
@ResponseBody
@RequestMapping(value = "/masterTotalList")
public OffsetLimitPage masterTotalList(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) {

@ -142,6 +142,12 @@ public interface Emr_Fault_DetailMapper {
List<Emr_Fault_Vo> masterTotalListTwo(Emr_Fault_Vo emrFaultVo);
/**
* 退
* @param emrFaultVo
* @return
*/
List<Emr_Fault_Vo> masterTotalListTwoExce(Emr_Fault_Vo emrFaultVo);
/**
* 退
@ -164,6 +170,14 @@ public interface Emr_Fault_DetailMapper {
*/
List<Emr_Fault_Vo> selByCol(Emr_Fault_Vo emrFaultVo);
/**
*
* @param emrFaultVo
* @return
*/
List<Emr_Fault_Vo> selByColPriceTwo(Emr_Fault_Vo emrFaultVo);
List<Emr_Fault_Detail> faultBackMasterIdListByBackFlag(@Param("backFlags")String backFlags,@Param("masterIds")String masterIds);

@ -143,7 +143,7 @@ public interface Emr_Fault_DetailService {
List<Emr_Fault_Vo> masterTotalList(Emr_Fault_Vo emrFaultVo);
List<Emr_Fault_Vo> masterTotalSocerListExec(Emr_Fault_Vo emrFaultVo);
/**
* 退
@ -169,6 +169,12 @@ public interface Emr_Fault_DetailService {
* @return
*/
OffsetLimitPage masterTotalScoreList(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit);
/**
* 退
* @param emrFaultVo
* @return
*/
List<Emr_Fault_Vo> masterTotalScoreListExec(Emr_Fault_Vo emrFaultVo);
/**
* 退
* @param emrFaultVo
@ -197,6 +203,22 @@ public interface Emr_Fault_DetailService {
*/
OffsetLimitPage selByCol(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit);
/**
*
* @param emrFaultVo
* @return
*/
OffsetLimitPage selByColPriceTwo(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit);
/**
*
* @param emrFaultVo
* @return
*/
List<Emr_Fault_Vo> selByColPriceTwoExecl(Emr_Fault_Vo emrFaultVo);
}

@ -372,6 +372,74 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
return list;
}
@Override
public List<Emr_Fault_Vo> masterTotalSocerListExec(Emr_Fault_Vo emrFaultVo) {
//获取病案信息
List<Emr_Fault_Vo> list= emrFaultDetailMapper.masterTotalListTwoExce(emrFaultVo);
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 (Emr_Fault_Vo emr_fault_vo : list) {
//主管医生
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getDoctorInCharge());
if (userInfo == null) {
emr_fault_vo.setDoctorInCharge(emr_fault_vo.getDoctorInCharge());
} else {
emr_fault_vo.setDoctorInCharge(userInfo.getString("name"));
}
//退回人
userInfo = mappedMovies.get(emr_fault_vo.getCreater());
if (userInfo == null) {
emr_fault_vo.setCreater(emr_fault_vo.getCreater());
} else {
emr_fault_vo.setCreater(userInfo.getString("name"));
}
List<Emr_Fault_Vo> peiceByMasterID = emrFaultDetailMapper.getPeiceByMasterID(emr_fault_vo.getMasterId());
if (peiceByMasterID!=null && !peiceByMasterID.isEmpty()){
for (int i=0;peiceByMasterID.size()>i;i++){
if (peiceByMasterID.get(0).getCnum()>0){
emr_fault_vo.setGrade("不合格");
}
if (peiceByMasterID.get(0).getBnum()>1){
emr_fault_vo.setGrade("不合格");
}
BigDecimal priceSum = peiceByMasterID.get(0).getPriceSum();
BigDecimal num1 = new BigDecimal("100");
if(priceSum!=null){
BigDecimal b = new BigDecimal(90);
BigDecimal result2 = num1.subtract(priceSum);
emr_fault_vo.setScore(result2);
if (peiceByMasterID.get(0).getCnum()==0 &&peiceByMasterID.get(0).getBnum()==0 && result2.compareTo(b) == 1){
emr_fault_vo.setGrade("优秀病历");
}
if (result2.compareTo(b) == -1){
emr_fault_vo.setGrade("不合格");
}
}else {
emr_fault_vo.setScore(num1);
if (peiceByMasterID.get(0).getCnum()==0 &&peiceByMasterID.get(0).getBnum()==0 ){
emr_fault_vo.setGrade("优秀病历");
}
}
}
}else {
emr_fault_vo.setGrade("优秀病历");
}
}
}
}
return list;
}
@Override
@ -414,17 +482,27 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
}
BigDecimal priceSum = peiceByMasterID.get(0).getPriceSum();
BigDecimal num1 = new BigDecimal("100");
BigDecimal result2 = num1.subtract(priceSum);
BigDecimal b = new BigDecimal(90);
if (result2.compareTo(b) == -1){
emr_fault_vo.setGrade("不合格");
}
if (peiceByMasterID.get(0).getCnum()==0 &&peiceByMasterID.get(0).getBnum()==0 && result2.compareTo(b) == 1){
emr_fault_vo.setGrade("优秀病历");
if(priceSum!=null){
BigDecimal b = new BigDecimal(90);
BigDecimal result2 = num1.subtract(priceSum);
emr_fault_vo.setScore(result2);
if (peiceByMasterID.get(0).getCnum()==0 &&peiceByMasterID.get(0).getBnum()==0 && result2.compareTo(b) == 1){
emr_fault_vo.setGrade("优秀病历");
}
if (result2.compareTo(b) == -1){
emr_fault_vo.setGrade("不合格");
}
}else {
emr_fault_vo.setScore(num1);
if (peiceByMasterID.get(0).getCnum()==0 &&peiceByMasterID.get(0).getBnum()==0 ){
emr_fault_vo.setGrade("优秀病历");
}
}
emr_fault_vo.setScore(result2);
}
}else {
emr_fault_vo.setGrade("优秀病历");
}
}
}
@ -432,6 +510,7 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
return list;
}
@Override
public OffsetLimitPage masterTotalList(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) {
PageHelper.offsetPage(offset, limit);
@ -448,6 +527,13 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
return new OffsetLimitPage((Page) list);
}
@Override
public List<Emr_Fault_Vo> masterTotalScoreListExec(Emr_Fault_Vo emrFaultVo) {
List<Emr_Fault_Vo> list =masterTotalSocerListExec(emrFaultVo);
return list;
}
@Override
public List<Emr_Fault_Vo> faultBackScoreList(Emr_Fault_Vo emrFaultVo) {
List<Emr_Fault_Vo> list= emrFaultDetailMapper.faultBackScoreList(emrFaultVo);
@ -590,6 +676,68 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService {
return new OffsetLimitPage((Page) list);
}
@Override
public OffsetLimitPage selByColPriceTwo(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) {
PageHelper.offsetPage(offset, limit);
List<Emr_Fault_Vo> list = emrFaultDetailMapper.selByColPriceTwo(emrFaultVo);
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 (Emr_Fault_Vo emr_fault_vo : list) {
//创建人
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getCreater());
if (userInfo == null) {
emr_fault_vo.setCreater(emr_fault_vo.getCreater());
} else {
emr_fault_vo.setCreater(userInfo.getString("name"));
}
}
}
}
return new OffsetLimitPage((Page) list);
}
@Override
public List<Emr_Fault_Vo> selByColPriceTwoExecl(Emr_Fault_Vo emrFaultVo) {
List<Emr_Fault_Vo> list = emrFaultDetailMapper.selByColPriceTwo(emrFaultVo);
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 (Emr_Fault_Vo emr_fault_vo : list) {
//创建人
JSONObject userInfo = mappedMovies.get(emr_fault_vo.getCreater());
if (userInfo == null) {
emr_fault_vo.setCreater(emr_fault_vo.getCreater());
} else {
emr_fault_vo.setCreater(userInfo.getString("name"));
}
}
}
}
return list;
}
public boolean compare(String time1,String time2) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date a=sdf.parse(time1);

@ -212,6 +212,142 @@
</if>
</where>
</select>
<select id="selByColPriceTwo" parameterType="com.emr.entity.Emr_Fault_Vo" resultMap="BaseResultMap2">
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,t.priceTwo,
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
LEFT JOIN Archive_Master_Following q
on m.id=q.master_id
<where> 1=1 and ArchiveState not in('作废','已封存') and assort_id is not null and assort_id!='' and q.following_type=9
<if test="archiveDetailId != null and archiveDetailId != '' ">
and f.archive_detail_id = #{archiveDetailId,jdbcType=NVARCHAR}
</if>
<if test="inpNo != null and inpNo != ''">
and m.inp_no like '%'+#{inpNo,jdbcType=NCHAR}+'%'
</if>
<if test="visitId != null and visitId != ''">
and m.visit_id=#{visitId,jdbcType=NCHAR}
</if>
<if test="name != null and name != ''">
and m.name like '%'+#{name,jdbcType=NCHAR}+'%'
</if>
<!--<if test="archivestate != null and archivestate != ''">-->
<!--and m.ArchiveState=#{archivestate,jdbcType=NCHAR}-->
<!--</if>-->
<if test="archivestate!= null and archivestate!= ''">
and m.ArchiveState in
<foreach item="item" collection="archivestate.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="deptName!= null and deptName!= ''">
and m.dept_name in
<foreach item="item" collection="deptName.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="doctorInCharge != null and doctorInCharge != ''">
and m.DOCTOR_IN_CHARGE like '%'+#{doctorInCharge,jdbcType=NCHAR}+'%'
</if>
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(20),m.discharge_date_time,23) between CONVERT(VARCHAR(20),#{startDate,jdbcType=NCHAR},23) and
CONVERT(VARCHAR(20),#{endDate,jdbcType=NCHAR},23)
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(20),m.discharge_date_time,23) >= CONVERT(VARCHAR(20),#{startDate,jdbcType=NCHAR},23)
</when>
<when test="endDate != null and endDate != ''">
and CONVERT(VARCHAR(20),m.discharge_date_time,23) &lt;=CONVERT(VARCHAR(20),#{endDate,jdbcType=NCHAR},23)
</when>
</choose>
<if test="assortId!= null and assortId!= ''">
and f.assort_id in
<foreach item="item" collection="assortId.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="content != null and content != '' ">
and f.content = #{content,jdbcType=NVARCHAR}
</if>
<if test="price != null ">
and f.price = #{price,jdbcType=DECIMAL}
</if>
<if test="score != null">
and f.score = #{score,jdbcType=DECIMAL}
</if>
<if test="backContent != null and backContent != '' ">
and f.back_content = #{backContent,jdbcType=NVARCHAR}
</if>
<if test="firstTrial != null and firstTrial != ''">
and f.first_trial = #{firstTrial,jdbcType=NVARCHAR}
</if>
<if test="state != null and state != ''">
and f.state = #{state,jdbcType=NVARCHAR}
</if>
<if test="recallReason != null and recallReason != ''">
and f.recall_reason = #{recallReason,jdbcType=VARCHAR}
</if>
<!--<if test="creater != null and creater != ''">
and f.creater = #{creater,jdbcType=NVARCHAR}
</if>-->
<if test="creater!= null and creater!= ''">
and f.creater in
<foreach item="item" collection="creater.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<choose>
<when test="startDateTo != null and startDateTo != '' and endDateTo != null and endDateTo != ''">
and CONVERT(VARCHAR(20),f.create_time,120) between #{startDateTo,jdbcType=NCHAR} and #{endDateTo,jdbcType=NCHAR}
</when>
<when test="startDateTo != null and startDateTo != ''">
and CONVERT(VARCHAR(20),f.create_time,120) >= #{startDateTo,jdbcType=NCHAR}
</when>
<when test="endDateTo != null and endDateTo != ''">
and CONVERT(VARCHAR(20),f.create_time,120) &lt;=#{endDateTo,jdbcType=NCHAR}
</when>
</choose>
<if test="backFlag!= null and backFlag!= ''">
and f.back_flag in
<foreach item="item" collection="backFlag.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="updater != null and updater != ''">
and f.updater = #{updater,jdbcType=NVARCHAR}
</if>
<if test="updateTime != null and updateTime != ''">
and f.update_time = #{updateTime,jdbcType=NCHAR}
</if>
<if test="dealFlag != null and dealFlag!=''">
and f.deal_flag= #{dealFlag,jdbcType=NVARCHAR}
</if>
<if test="dealPerson != null and dealPerson != '' ">
and f.deal_person= #{dealPerson,jdbcType=NVARCHAR}
</if>
<if test="dealTime != null and dealTime != ''">
and f.deal_time= #{dealTime,jdbcType=NVARCHAR}
</if>
<if test="archiveState != null and archiveState!=''">
and f.archive_state=#{archiveState,jdbcType=NVARCHAR}
</if>
</where>
</select>
<select id="selectByDept" parameterType="com.emr.entity.Emr_Fault_Detail" resultMap="BaseResultMap">
select ISNULL(100-sum(minus_point),0) price from emr_fault_detail
where 1=1 and deal_flag='0'
@ -1010,22 +1146,56 @@
LEFT JOIN Archive_Master m ON m.ID= a.master_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 emr_fault_detail e ON e.archive_detail_id= m.ID
LEFT JOIN ( SELECT COUNT ( id ) as bnum,archive_detail_id FROM emr_fault_detail WHERE priceTwo = '乙' GROUP BY archive_detail_id ) l ON
l.archive_detail_id=m.ID
LEFT JOIN ( SELECT COUNT ( id ) as cnum,archive_detail_id FROM emr_fault_detail WHERE priceTwo = '丙' GROUP BY archive_detail_id ) l1 ON
l1.archive_detail_id=m.ID
LEFT JOIN ( SELECT sum(cast(priceTwo AS DECIMAL (12,2)))as scoreSum,archive_detail_id FROM emr_fault_detail WHERE priceTwo !='乙' AND priceTwo !='丙' GROUP BY archive_detail_id ) l2 on l2.archive_detail_id=m.ID
LEFT JOIN (
SELECT COUNT
( a.id ) AS bnum,
a.archive_detail_id
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo = '乙'
GROUP BY
a.archive_detail_id
) l ON l.archive_detail_id= m.ID
LEFT JOIN (
SELECT COUNT
( a.id ) AS cnum,
a.archive_detail_id
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo = '丙'
GROUP BY
a.archive_detail_id
) l1 ON l1.archive_detail_id= m.ID
LEFT JOIN (
SELECT SUM
( CAST ( e.priceTwo AS DECIMAL ( 12, 2 ) ) ) AS scoreSum,
a.archive_detail_id
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo != '乙'
AND e.priceTwo != '丙'
GROUP BY
a.archive_detail_id
) l2 ON l2.archive_detail_id= m.ID
<where>
1 = 1
AND m.ArchiveState NOT IN ( '作废', '已封存', '' )
AND m.ArchiveState IS NOT NULL
AND m.Is_Valid!= 1
AND e.priceTwo IS NOT NULL
<if test="sysflag == 1">
AND l.bnum is null
</if>
<if test="sysflag == 1">
AND l.bnum is null
AND l1.cnum is null
</if>
<if test="sysflag == 1">
AND l2.scoreSum IS NULL or l2.scoreSum &lt;=10
</if>
<if test="sysflag == 2">
AND l.bnum>1 OR l1.cnum is not NULL OR l2.scoreSum>10
@ -1103,7 +1273,162 @@
</foreach>
</if>
</where>
order by m.discharge_date_time desc
</select>
<!--退回总次数、总费用和总评分-->
<select id="masterTotalListTwoExce" parameterType="com.emr.entity.Emr_Fault_Vo" resultMap="BaseResultMap2">
SELECT
a.master_id,
m.inp_no,
m.visit_id,
m.name,
CONVERT ( VARCHAR, m.discharge_date_time, 120 ) discharge_date_time,
m.dept_name dept_admission_to,
d.name AS deptName,
m.ArchiveState,
m.DOCTOR_IN_CHARGE,
a.total_back_num,
q.type_name,
e.content,
q.priceTwo,
e.creater
FROM
( SELECT DISTINCT master_id, COUNT ( * ) total_back_num FROM Archive_Master_Following WHERE following_type = 9 GROUP BY master_id ) a
LEFT JOIN Archive_Master m ON m.ID= a.master_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 emr_fault_detail e ON e.archive_detail_id= m.ID
LEFT JOIN emr_fault_type q ON q.id=e.assort_id
LEFT JOIN (
SELECT COUNT
( a.id ) AS bnum,
a.archive_detail_id
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo = '乙'
GROUP BY
a.archive_detail_id
) l ON l.archive_detail_id= m.ID
LEFT JOIN (
SELECT COUNT
( a.id ) AS cnum,
a.archive_detail_id
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo = '丙'
GROUP BY
a.archive_detail_id
) l1 ON l1.archive_detail_id= m.ID
LEFT JOIN (
SELECT SUM
( CAST ( e.priceTwo AS DECIMAL ( 12, 2 ) ) ) AS scoreSum,
a.archive_detail_id
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo != '乙'
AND e.priceTwo != '丙'
GROUP BY
a.archive_detail_id
) l2 ON l2.archive_detail_id= m.ID
<where>
1 = 1
AND m.ArchiveState NOT IN ( '作废', '已封存', '' )
AND m.ArchiveState IS NOT NULL
AND m.Is_Valid!= 1
<if test="sysflag == 1">
AND l.bnum is null
</if>
<if test="sysflag == 1">
AND l1.cnum is null
</if>
<if test="sysflag == 1">
AND l2.scoreSum IS NULL or l2.scoreSum &lt;=10
</if>
<if test="sysflag == 2">
AND l.bnum>1 OR l1.cnum is not NULL OR l2.scoreSum>10
</if>
<!--<if test="sysflag != null and sysflag != '' and sysflag = '1'">-->
<!--AND l.bnum is NULL or 2>l.bnum-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '1'">-->
<!--AND l1.cnum is NULL-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '1'">-->
<!--AND l2.scoreSum is null-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '1'">-->
<!--AND 10>scoreSum-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '2'">-->
<!--AND l.bnum is NULL or 2>l.bnum-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '2'">-->
<!--AND l1.cnum is NULL-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '2'">-->
<!--AND l2.scoreSum is null-->
<!--</if>-->
<!--<if test="sysflag != null and sysflag != '' and sysflag = '2'">-->
<!--AND 10>scoreSum-->
<!--</if>-->
<if test="inpNo != null and inpNo != ''">
and m.inp_no like '%'+#{inpNo,jdbcType=NCHAR}+'%'
</if>
<if test="visitId != null and visitId != ''">
and m.visit_id=#{visitId,jdbcType=NCHAR}
</if>
<if test="name != null and name != ''">
and m.name like '%'+#{name,jdbcType=NCHAR}+'%'
</if>
<if test="archivestate!= null and archivestate!= ''">
and m.ArchiveState in
<foreach item="item" collection="archivestate.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="deptName!= null and deptName!= ''">
and m.dept_name in
<foreach item="item" collection="deptName.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="dischargeDateTime != null">
and m.discharge_date_time = #{dischargeDateTime,jdbcType=NVARCHAR}
</if>
<if test="creater != null and creater != ''">
and m.creater like '%'+#{creater,jdbcType=NCHAR}+'%'
</if>
<if test="doctorInCharge != null and doctorInCharge != ''">
and m.DOCTOR_IN_CHARGE like '%'+#{doctorInCharge,jdbcType=NCHAR}+'%'
</if>
<choose>
<when test="startDate != null and startDate != '' and endDate != null and endDate != ''">
and CONVERT(VARCHAR(20),m.discharge_date_time,23) between CONVERT(VARCHAR(20),#{startDate,jdbcType=NCHAR},23) and
CONVERT(VARCHAR(20),#{endDate,jdbcType=NCHAR},23)
</when>
<when test="startDate != null and startDate != ''">
and CONVERT(VARCHAR(20),m.discharge_date_time,23) >= CONVERT(VARCHAR(20),#{startDate,jdbcType=NCHAR},23)
</when>
<when test="endDate != null and endDate != ''">
and CONVERT(VARCHAR(20),m.discharge_date_time,23) &lt;=CONVERT(VARCHAR(20),#{endDate,jdbcType=NCHAR},23)
</when>
</choose>
<if test="updater!= null and updater!= ''">
and t.id in
<foreach item="item" collection="updater.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</where>
</select>
<!--退回次数和评分-->
<select id="faultBackScoreList" parameterType="com.emr.entity.Emr_Fault_Vo" resultMap="BaseResultMap2">
@ -1179,16 +1504,44 @@
archive_detail_id
</select>
<select id="getPeiceByMasterID" resultType="com.emr.entity.Emr_Fault_Vo" parameterType="java.lang.String">
SELECT
SELECT
archive_detail_id,
priceTwo,
(SELECT COUNT(id) FROM emr_fault_detail WHERE priceTwo='乙' AND archive_detail_id= #{masterId}) bnum,
(SELECT COUNT(id) FROM emr_fault_detail WHERE priceTwo='丙' AND archive_detail_id= #{masterId}) cnum,
(SELECT sum(cast(priceTwo AS DECIMAL (12,2))) FROM emr_fault_detail WHERE priceTwo !='乙' AND priceTwo !='丙' AND archive_detail_id= #{masterId}) AS priceSum
(
SELECT COUNT
( a.id )
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo= '乙'
AND a.archive_detail_id= #{ masterId }
) bnum,
(
SELECT COUNT
( a.id )
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo= '丙'
AND a.archive_detail_id= #{ masterId }
) cnum,
(
SELECT SUM
( CAST ( e.priceTwo AS DECIMAL ( 12, 2 ) ) )
FROM
emr_fault_detail a
LEFT JOIN emr_fault_type e ON a.assort_id= e.id
WHERE
e.priceTwo != '乙'
AND e.priceTwo != '丙'
AND a.archive_detail_id= #{ masterId }
) AS priceSum
FROM
emr_fault_detail
WHERE
archive_detail_id= #{masterId} and priceTwo !='乙' AND priceTwo !='丙'
archive_detail_id = #{ masterId }
GROUP BY archive_detail_id
</select>
</mapper>

@ -508,6 +508,13 @@
field: 'grade',
align: 'center',
valign: 'middle',
// formatter: function (value, row, index) {
// let grade = row.grade;
// if(grade==null ||grade==undefined || grade==0){
// grade='优秀病历';
// }
// return grade;
// }
},
{
title: '主管医生',
@ -530,163 +537,163 @@
//console.info("加载数据失败");
tipLoad = 0;
},onExpandRow: function (index, row, $detail) {
InitSubTable(index, row, $detail);
InitSubTable2(index, row, $detail);
//backIdArr.push($detail);
}
});
//初始化子表格(无线循环)
InitSubTable = function (index, row, $detail) {
//console.log(row);
if(row.backNum=="异常"){
toastr.warning("退回次数为异常,请先纠正!");
return;
}
var archiveDetailId = row.archiveDetailId;
var cur_table = $detail.html('<table id="backTable" class="backTable"></table>').find('table');
//console.log(endDateTo+"========================"+startDateTo);
$(cur_table).bootstrapTable({
//method: 'POST',
url: "${path}/fault/faultBackScoreList", // 获取表格数据的url
contentType: "application/x-www-form-urlencoded",//一种编码。好像在post请求的时候需要用到。这里用的get请求注释掉这句话也能拿到数据
//dataField: "data",//这是返回的json数组的key.默认是"rows".这里只有前后端约定好就行
detailView: true,//父子表为true会在父数据前添加 “+”
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
paginationShowPageGo: true,
pageList: [10, 20,50,100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。
smartDisplay: false,
pageSize: 10, // 页面数据条数
pageNumber: 1, // 初始化加载第一页,默认第一页
sidePagination: 'server', // 设置为服务器端分页 客户端client
search: false,
showColumns: false,
// toolbar: '#toolbar2',//指定工具栏
// searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法
// undefinedText: '---', //当数据为 undefined 时显示的字符
singleSelect: false,//设置True 将禁止多选
// clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox
//height: 560, //定义表格的高度。
searchTimeOut: 500,// 默认500 设置搜索超时时间。
toolbarAlign: 'right',// 指定 toolbar 水平方向的位置。'left' 或 'right'
paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。
showHeader: true,//是否显示列头。
trimOnSearch: true,//设置为 true 将自动去掉搜索字符的前后空格。
//是否显示导出按钮
showExport: false,
queryParams: function (params) {
var currPageSize= this.pageSize;
if(currPageSize==2){
currPageSize=10;
}
var limit= null;
var offset= params.offset;
//判断是否导出全部all
if ($("#sel_exportoption2").val() == "all") {
offset=0;
limit=this.totalRows;
this.pageSize= limit;
}else{
limit = currPageSize;
this.pageSize = currPageSize;
}
var temp = {
limit: limit, //页面大小
offset: offset, //页码
order: params.order, //排位命令descasc
archiveDetailId:archiveDetailId
//updater:""+$("#backer").val()
};
return temp;
},
sortName: 'id', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [
/*{
title: '全选',
field: 'select', //复选框
checkbox: true,
width: 25,
align: 'left',
valign: 'middle',
},*/
{
title: '序号',
field: 'id',
align: 'center',
valign: 'middle',
//field: 'ID',
// visible: false,
formatter: function (value, row, index) {
return index + 1;
}
},
{
title: '病案清单id',
field: 'archiveDetailId',
valign: 'middle',
visible: false
//sortable: true,
},
{
title: '退回开始时间',
field: 'startDateTo',
align: 'center',
valign: 'middle',
},
{
title: '退回结束时间',
field: 'endDateTo',
align: 'center',
valign: 'middle',
},
{
field: 'score',
title: '评分(分)',
//sortable: true,
align: 'center',
valign: 'middle'
},
{
field: 'backNum',
title: '退回次数',
//sortable: true,
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
var a ='';
if(value=="异常"){
a ='<span style="color:red"><i class="fa fa-check-circle-o" aria-hidden="true"></i>' + value + '</span>';
}else{
a=value;
}
return a;
}
},
{
field: 'createTime',
title: '退回时间',
valign: 'middle',
align: 'center',
},
{
field: 'creater',
title: '退回人',
valign: 'middle',
align: 'left',
}
], //无线循环取子表,直到子表里面没有记录
onExpandRow: function (index, row, $Subdetail) {
InitSubTable2(index, row, $Subdetail);
}
});
}
<%--//初始化子表格(无线循环)--%>
<%--InitSubTable = function (index, row, $detail) {--%>
<%--//console.log(row);--%>
<%--if(row.backNum=="异常"){--%>
<%--toastr.warning("退回次数为异常,请先纠正!");--%>
<%--return;--%>
<%--}--%>
<%--var archiveDetailId = row.archiveDetailId;--%>
<%--var cur_table = $detail.html('<table id="backTable" class="backTable"></table>').find('table');--%>
<%--//console.log(endDateTo+"========================"+startDateTo);--%>
<%--$(cur_table).bootstrapTable({--%>
<%--//method: 'POST',--%>
<%--url: "${path}/fault/faultBackScoreList", // 获取表格数据的url--%>
<%--contentType: "application/x-www-form-urlencoded",//一种编码。好像在post请求的时候需要用到。这里用的get请求注释掉这句话也能拿到数据--%>
<%--//dataField: "data",//这是返回的json数组的key.默认是"rows".这里只有前后端约定好就行--%>
<%--detailView: true,//父子表为true会在父数据前添加 “+”--%>
<%--cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true--%>
<%--striped: true, //表格显示条纹默认为false--%>
<%--pagination: true, // 在表格底部显示分页组件默认false--%>
<%--paginationShowPageGo: true,--%>
<%--pageList: [10, 20,50,100], // 如果设置了分页设置可供选择的页面数据条数。设置为All 则显示所有记录。--%>
<%--smartDisplay: false,--%>
<%--pageSize: 10, // 页面数据条数--%>
<%--pageNumber: 1, // 初始化加载第一页,默认第一页--%>
<%--sidePagination: 'server', // 设置为服务器端分页 客户端client--%>
<%--search: false,--%>
<%--showColumns: false,--%>
<%--// toolbar: '#toolbar2',//指定工具栏--%>
<%--// searchOnEnterKey: true, //设置为 true时按回车触发搜索方法否则自动触发搜索方法--%>
<%--// undefinedText: '---', //当数据为 undefined 时显示的字符--%>
<%--singleSelect: false,//设置True 将禁止多选--%>
<%--// clickToSelect: true,//设置true 将在点击行时自动选择rediobox 和 checkbox--%>
<%--//height: 560, //定义表格的高度。--%>
<%--searchTimeOut: 500,// 默认500 设置搜索超时时间。--%>
<%--toolbarAlign: 'right',// 指定 toolbar 水平方向的位置。'left' 或 'right'--%>
<%--paginationDetailHAlign: 'left',//指定 分页详细信息 在水平方向的位置。'left' 或 'right'。--%>
<%--showHeader: true,//是否显示列头。--%>
<%--trimOnSearch: true,//设置为 true 将自动去掉搜索字符的前后空格。--%>
<%--//是否显示导出按钮--%>
<%--showExport: false,--%>
<%--queryParams: function (params) {--%>
<%--var currPageSize= this.pageSize;--%>
<%--if(currPageSize==2){--%>
<%--currPageSize=10;--%>
<%--}--%>
<%--var limit= null;--%>
<%--var offset= params.offset;--%>
<%--//判断是否导出全部all--%>
<%--if ($("#sel_exportoption2").val() == "all") {--%>
<%--offset=0;--%>
<%--limit=this.totalRows;--%>
<%--this.pageSize= limit;--%>
<%--}else{--%>
<%--limit = currPageSize;--%>
<%--this.pageSize = currPageSize;--%>
<%--}--%>
<%--var temp = {--%>
<%--limit: limit, //页面大小--%>
<%--offset: offset, //页码--%>
<%--order: params.order, //排位命令descasc--%>
<%--archiveDetailId:archiveDetailId--%>
<%--//updater:""+$("#backer").val()--%>
<%--};--%>
<%--return temp;--%>
<%--},--%>
<%--sortName: 'id', // 要排序的字段--%>
<%--sortOrder: 'desc', // 排序规则--%>
<%--columns: [--%>
<%--/*{--%>
<%--title: '全选',--%>
<%--field: 'select', //复选框--%>
<%--checkbox: true,--%>
<%--width: 25,--%>
<%--align: 'left',--%>
<%--valign: 'middle',--%>
<%--},*/--%>
<%--{--%>
<%--title: '序号',--%>
<%--field: 'id',--%>
<%--align: 'center',--%>
<%--valign: 'middle',--%>
<%--//field: 'ID',--%>
<%--// visible: false,--%>
<%--formatter: function (value, row, index) {--%>
<%--return index + 1;--%>
<%--}--%>
<%--},--%>
<%--{--%>
<%--title: '病案清单id',--%>
<%--field: 'archiveDetailId',--%>
<%--valign: 'middle',--%>
<%--visible: false--%>
<%--//sortable: true,--%>
<%--},--%>
<%--{--%>
<%--title: '退回开始时间',--%>
<%--field: 'startDateTo',--%>
<%--align: 'center',--%>
<%--valign: 'middle',--%>
<%--},--%>
<%--{--%>
<%--title: '退回结束时间',--%>
<%--field: 'endDateTo',--%>
<%--align: 'center',--%>
<%--valign: 'middle',--%>
<%--},--%>
<%--{--%>
<%--field: 'score',--%>
<%--title: '评分(分)',--%>
<%--//sortable: true,--%>
<%--align: 'center',--%>
<%--valign: 'middle'--%>
<%--},--%>
<%--{--%>
<%--field: 'backNum',--%>
<%--title: '退回次数',--%>
<%--//sortable: true,--%>
<%--align: 'center',--%>
<%--valign: 'middle',--%>
<%--formatter: function (value, row, index) {--%>
<%--var a ='';--%>
<%--if(value=="异常"){--%>
<%--a ='<span style="color:red"><i class="fa fa-check-circle-o" aria-hidden="true"></i>' + value + '</span>';--%>
<%--}else{--%>
<%--a=value;--%>
<%--}--%>
<%--return a;--%>
<%--}--%>
<%--},--%>
<%--{--%>
<%--field: 'createTime',--%>
<%--title: '退回时间',--%>
<%--valign: 'middle',--%>
<%--align: 'center',--%>
<%--},--%>
<%--{--%>
<%--field: 'creater',--%>
<%--title: '退回人',--%>
<%--valign: 'middle',--%>
<%--align: 'left',--%>
<%--}--%>
<%--], //无线循环取子表,直到子表里面没有记录--%>
<%--onExpandRow: function (index, row, $Subdetail) {--%>
<%--InitSubTable2(index, row, $Subdetail);--%>
<%--}--%>
<%--});--%>
<%--}--%>
//初始化子表格(无线循环)
InitSubTable2 = function (index, row, $detail) {
@ -694,7 +701,7 @@
toastr.warning("退回次数为异常,请先纠正!");
return;
}
var archiveDetailId = row.archiveDetailId;
var archiveDetailId = row.masterId;
var startDateTo=row.startDateTo;
var endDateTo=row.endDateTo;
var cur_table2 = $detail.html('<table id="faultTable'+backIndex+'"></table>').find('table');
@ -703,7 +710,7 @@
backIndex++;
$(cur_table2).bootstrapTable({
//method: 'POST',
url: "${path}/fault/faultListByTj", // 获取表格数据的url
url: "${path}/fault/faultListByTjPriceTwo", // 获取表格数据的url
contentType: "application/x-www-form-urlencoded",//一种编码。好像在post请求的时候需要用到。这里用的get请求注释掉这句话也能拿到数据
//dataField: "data",//这是返回的json数组的key.默认是"rows".这里只有前后端约定好就行
detailView: false,//父子表为true会在父数据前添加 “+”
@ -761,9 +768,7 @@
order: params.order, //排位命令descasc
archiveDetailId: archiveDetailId,
startDateTo: startDateTo,
creater:""+$("#creater").val(),
endDateTo: endDateTo,
backFlag:"5,6",
assortId:""+typeFlag
};
@ -808,17 +813,16 @@
//return changeDateFormat(value)
}
},{
field: 'score',
title: '分(分)',
field: 'priceTwo',
title: '分(分)',
//sortable: true,
align: 'center',
valign: 'middle',
formatter: function (value, row, index) {
if(value==null ||value==undefined){
value=100;
value=0;
}
return value;
//return changeDateFormat(value)
}
},
{
@ -1090,13 +1094,13 @@
//导出excel功能
$("#excelBtn").click(function () {
toastr.warning("正在导出,请稍等...");
var backFlag = "5,6";
var inpNo = "" + $("#inpNo").val();
var visitId = "" + $("#visitId").val();
var name = "" + $("#name").val();
var startDate = "" + $("#startDate").val();
var endDate = "" + $("#endDate").val();
var archivestate = "" + $("#archivestate").val();
var sysflag = "" + $("#sysflag").val();
/*var url = window.location.href;
var deptName = url.substring(url.lastIndexOf('&') + 1).replace("depts=", "");
@ -1124,13 +1128,12 @@
typeFlag = $("#typeFlag").val().toString();
}
var assortId=""+typeFlag;
var creater=""+$("#creater").val();
//var backer=""+$("#backer").val();
//导出ArchiveState in('已归档','已认证','初审')
window.location.href = "${path}/fault/exportExcel?inpNo=" + inpNo + "&visitId=" + visitId +
window.location.href = "${path}/fault/exportScoreExcel?inpNo=" + inpNo + "&visitId=" + visitId +
"&name=" + name + "&startDate=" + startDate + "&endDate=" + endDate + "&archivestate=" + archivestate+
"&deptName="+ deptName + "&doctorInCharge=" + doctorInCharge
+ "&assortId=" + assortId + "&creater=" + creater+"&backFlag="+backFlag;
+ "&assortId=" + assortId+"&sysflag"+sysflag;
});

Loading…
Cancel
Save