优化终审查询

master
81383286@qq.com 3 years ago
parent 9fb299879e
commit 8f6f9c00dd

@ -1,6 +1,7 @@
package com.emr.dao;
import com.emr.entity.Archive_Master_Following;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
@ -69,4 +70,6 @@ public interface Archive_Master_FollowingMapper {
*/
List<Archive_Master_Following> selLastByType(Archive_Master_Following archiveMasterFollowing);
List<Archive_Master_Following> selectFollowingByFollowingType(@Param("followingType")String followingType,@Param("masterIds")String masterIds);
}

@ -3,6 +3,7 @@ package com.emr.dao;
import com.emr.entity.Archive_Master;
import com.emr.entity.Emr_Fault_Detail;
import com.emr.entity.Emr_Fault_Vo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -133,8 +134,7 @@ public interface Emr_Fault_DetailMapper {
*/
List<Emr_Fault_Vo> selByCol(Emr_Fault_Vo emrFaultVo);
List<Emr_Fault_Detail> faultBackMasterIdListByBackFlag(@Param("backFlags")String backFlags,@Param("masterIds")String masterIds);

@ -8,10 +8,7 @@ package com.emr.service.ipml;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.emr.dao.ArchivePrintinfoMapper;
import com.emr.dao.Archive_MasterMapper;
import com.emr.dao.DocusRequestInfoMapper;
import com.emr.dao.MedicalRecordHomepageCacheMapper;
import com.emr.dao.*;
import com.emr.util.HttpClientTool;
import com.emr.util.IDHelper;
import com.emr.vo.Power_User_Dto;
@ -60,6 +57,15 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
@Autowired
private DocusRequestInfoMapper docusRequestInfoMapper;
@Autowired
private Emr_DictionaryMapper dictionaryMapper;
@Autowired
private Emr_Fault_DetailMapper emrFaultDetailMapper;
@Autowired
private Archive_Master_FollowingMapper archiveMasterFollowingMapper;
@Override
public Archive_Master selectById(String id) {
return archiveMasterMapper.selectById(id);
@ -180,13 +186,75 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
PageHelper.offsetPage(offset, limit);
}
List<Archive_Master_Vo> list = archiveMasterMapper.selectByColumn(archiveMasterVo);
//设置医生、护士名称和打印标识
//设置医生、护士名称和打印标识、科室、是否退回医生、是否退回护士
setNameAndPrintFlag(archiveMasterVo, list);
return list;
}
//设置科室名称
private void setDeptName(Archive_Master_Vo archiveMasterVo,List<Emr_Dictionary> dictionaryList){
if(!CollectionUtils.isEmpty(dictionaryList)){
String deptAdmissionTo = archiveMasterVo.getDeptAdmissionTo();
String deptName = archiveMasterVo.getDeptName();
for(Emr_Dictionary dictionary : dictionaryList){
if(StringUtils.isNotBlank(deptAdmissionTo) && dictionary.getCode().equals(deptAdmissionTo)){
archiveMasterVo.setDeptAdmissionTo(dictionary.getName());
}
if(StringUtils.isNotBlank(deptName) && dictionary.getCode().equals(deptName)){
archiveMasterVo.setDeptName(dictionary.getName());
}
}
}
}
//设置退回医生数量
private void setDoctorFaultNum(String masterIds,List<Archive_Master_Vo> list){
String backFlags = "1" + "," + "5";
List<Emr_Fault_Detail> emrFaultDetails = emrFaultDetailMapper.faultBackMasterIdListByBackFlag(backFlags, masterIds);
if(!CollectionUtils.isEmpty(emrFaultDetails)){
for(Archive_Master_Vo archiveMasterVo : list) {
for (Emr_Fault_Detail detail : emrFaultDetails) {
if (detail.getArchiveDetailId().equals(archiveMasterVo.getId())){
archiveMasterVo.setDoctorNum(detail.getId().toString());
break;
}
}
}
}
}
//设置退回护士数量
private void setNurseFaultNum(String masterIds,List<Archive_Master_Vo> list){
String backFlags = "2" + "," + "6";
List<Emr_Fault_Detail> emrFaultDetails = emrFaultDetailMapper.faultBackMasterIdListByBackFlag(backFlags, masterIds);
if(!CollectionUtils.isEmpty(emrFaultDetails)){
for(Archive_Master_Vo archiveMasterVo : list) {
for (Emr_Fault_Detail detail : emrFaultDetails) {
if (detail.getArchiveDetailId().equals(archiveMasterVo.getId())){
archiveMasterVo.setNurseNum(detail.getId().toString());
break;
}
}
}
}
}
//设置followingType=9
private void setFollowingType(String masterIds, List<Archive_Master_Vo> list) {
List<Archive_Master_Following> archiveMasterFollowings = archiveMasterFollowingMapper.selectFollowingByFollowingType("9", masterIds);
if(!CollectionUtils.isEmpty(archiveMasterFollowings)){
for(Archive_Master_Vo archiveMasterVo : list) {
for (Archive_Master_Following following : archiveMasterFollowings) {
if (following.getMasterId().equals(archiveMasterVo.getId())){
archiveMasterVo.setFollowingType("9");
break;
}
}
}
}
}
/**
*
* 退退,followType=9
* @param archiveMasterVo
* @param list
*/
@ -199,6 +267,10 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
//转换对象
powerUserList = JSONArray.parseArray(powerUsers.toJSONString(), Power_User_Dto.class);
}
//查询科室字典
Emr_Dictionary dictionary = new Emr_Dictionary();
dictionary.setTypecode("dept_code");
List<Emr_Dictionary> dictionaryList = dictionaryMapper.dicByTypeCode(dictionary);
//定义查询的masterId集合
StringBuilder masterIds = new StringBuilder();
//遍历赋值
@ -237,30 +309,22 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
printFlag = "已打印";
}
archiveMaster.setPrintNum(printFlag);
}else{
if(StringUtils.isNotBlank(masterIds)){
masterIds.append(",");
}
masterIds.append(archiveMaster.getId());
}
}
//查询打印情况
/*if(StringUtils.isNotBlank(masterIds)){
List<ArchivePrintinfo> archivePrintinfos = archivePrintinfoMapper.selectPrintCountByMasterId(masterIds.toString());
//定义初始化打印状态
String printFlag = "未打印";
for (Archive_Master_Vo archiveMaster : list) {
if(!CollectionUtils.isEmpty(archivePrintinfos)){
for(ArchivePrintinfo archivePrintinfo : archivePrintinfos){
if(archivePrintinfo.getMasterid().equals(archiveMaster.getId())){
printFlag = "已打印";
break;
}
}
}
archiveMaster.setPrintNum(printFlag);
if(StringUtils.isNotBlank(masterIds)){
masterIds.append(",");
}
}*/
masterIds.append("'").append(archiveMaster.getId()).append("'");
//设置科室名称
setDeptName(archiveMaster,dictionaryList);
archiveMaster.setDoctorNum("0");
archiveMaster.setNurseNum("0");
}
//设置退回医生数量
setDoctorFaultNum(masterIds.toString(),list);
//设置退回护士数量
setNurseFaultNum(masterIds.toString(),list);
//设置followingType=9
setFollowingType(masterIds.toString(),list);
}
}
@ -538,7 +602,6 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
public OffsetLimitPage selectByFollowinglog(Archive_Master_Vo record, Integer offset, Integer limit) {
PageHelper.offsetPage(offset, limit);
List<Archive_Master_Vo> list = archiveMasterMapper.selectByFollowinglog(record);
return new OffsetLimitPage((Page) list);
}
@ -636,7 +699,7 @@ public class Archive_MasterServiceImpl implements Archive_MasterService {
map.put("userid",user.getUserId().toString());
map.put("username",user.getUserName());
map.put("code",archiveMaster.getDeptName());
map.put("REASON",returnContent.toString());
map.put("REASON",emrFaultDetail.getDealPerson());
//定义请求信息记录表
DocusRequestInfo docusRequestInfo = new DocusRequestInfo();
docusRequestInfo.setCode("return");

@ -402,31 +402,18 @@
</select>
<select id="selectByLast" parameterType="com.emr.entity.Archive_Master_Vo" resultMap="BaseResultMap2">
select m.id,m.patient_id,m.inp_no,m.visit_id,m.name,m.sex,ISNULL(f.name,m.dept_name) 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,
ISNULL(d.name,m.dept_admission_to) 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,
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,amf.following_type,ISNULL(s.numb, 0) numb,ao.C5 is_sign
,case when emr_fault_detail.archive_detail_id is not null then '是' else '否' end isFault,ISNULL(sDoctor.numb, 0) faultDoctorNum,ISNULL(sNurse.numb, 0) faultNurseNum,ISNULL(printTable.num, 0) printNum
m.is_scanning,m.bed_number,ISNULL(s.numb, 0) numb,ao.C5 is_sign
,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 code,name from emr_dictionary where parent_id=(select id from emr_dictionary where
typeCode='dept_code' )) d
on m.dept_admission_to=d.code
LEFT JOIN (select code,name from emr_dictionary where parent_id=(select id from emr_dictionary where
typeCode='dept_code' )) f
on m.dept_name=f.code
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 distinct archive_detail_id from emr_fault_detail where back_flag in ('6','5')) emr_fault_detail
on emr_fault_detail.archive_detail_id = m.ID
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 distinct master_id,following_type from Archive_Master_Following where following_type=9) amf
on m.id=amf.master_id
LEFT JOIN(select archive_detail_id,count(*) numb from emr_fault_detail where 1=1 and back_flag is not null GROUP BY archive_detail_id) s
on m.id=s.archive_detail_id
LEFT JOIN archive_other ao
LEFT JOIN (select distinct masterID,C5 FROM archive_other where sysFlag = '1') ao
on m.id=ao.masterID
and ao.sysFlag='1'
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
@ -553,7 +540,6 @@
and m.sign_time &lt;= #{endSignDate,jdbcType=NCHAR}+ ' 23:59:59'
</when>
</choose>
ORDER BY discharge_date_time desc
</select>

@ -204,4 +204,7 @@
</if>
</where>
</select>
<select id="selectFollowingByFollowingType" resultMap="BaseResultMap">
select distinct master_id,following_type from Archive_Master_Following where following_type= #{followingType} and master_id in (${masterIds})
</select>
</mapper>

@ -889,7 +889,16 @@
</where>
order by create_time
</select>
<!--<select id="faultBackList" parameterType="com.emr.entity.Emr_Fault_Detail" resultMap="BaseResultMap">
</select>-->
<select id="faultBackMasterIdListByBackFlag" parameterType="com.emr.entity.Emr_Fault_Detail" resultMap="BaseResultMap">
SELECT
archive_detail_id,
count(archive_detail_id) id
FROM
emr_fault_detail
WHERE
back_flag IN (${backFlags})
AND archive_detail_id IN (${masterIds})
GROUP BY
archive_detail_id
</select>
</mapper>
Loading…
Cancel
Save