|
@ -34,6 +34,7 @@ import com.yihu.jw.patient.dao.BasePatientDao;
|
|
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
|
|
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
|
|
import com.yihu.jw.restmodel.base.dict.DictHospitalDeptVO;
|
|
import com.yihu.jw.restmodel.base.dict.DictHospitalDeptVO;
|
|
import com.yihu.jw.restmodel.base.org.BaseOrgVO;
|
|
import com.yihu.jw.restmodel.base.org.BaseOrgVO;
|
|
|
|
import com.yihu.jw.restmodel.hospital.consult.WlyyHospitalSysDictVO;
|
|
import com.yihu.jw.restmodel.hospital.doctor.WlyyDoctorWorkTimeVO;
|
|
import com.yihu.jw.restmodel.hospital.doctor.WlyyDoctorWorkTimeVO;
|
|
import com.yihu.jw.restmodel.hospital.prescription.*;
|
|
import com.yihu.jw.restmodel.hospital.prescription.*;
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
@ -547,7 +548,6 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
|
|
waitingRoom.setHospital(outpatientDO.getHospital());
|
|
waitingRoom.setHospital(outpatientDO.getHospital());
|
|
waitingRoom.setHospitalName(outpatientDO.getHospitalName());
|
|
waitingRoom.setHospitalName(outpatientDO.getHospitalName());
|
|
|
|
|
|
waitingRoom.setConsultType(1);
|
|
|
|
waitingRoom.setPatientId(outpatientDO.getPatient());
|
|
waitingRoom.setPatientId(outpatientDO.getPatient());
|
|
waitingRoom.setPatientName(outpatientDO.getPatientName());
|
|
waitingRoom.setPatientName(outpatientDO.getPatientName());
|
|
waitingRoom.setReservationTime(reservationTime);
|
|
waitingRoom.setReservationTime(reservationTime);
|
|
@ -701,7 +701,7 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取医生列表
|
|
|
|
|
|
* 获取医生列表带排班
|
|
* @param orgCode
|
|
* @param orgCode
|
|
* @param dept
|
|
* @param dept
|
|
* @return
|
|
* @return
|
|
@ -734,7 +734,9 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
|
|
" d.introduce," +
|
|
" d.introduce," +
|
|
" d.job_title_code AS jobTitleCode, " +
|
|
" d.job_title_code AS jobTitleCode, " +
|
|
" d.job_title_name AS jobTitleName," +
|
|
" d.job_title_name AS jobTitleName," +
|
|
" d.charge_type AS chargeType" +
|
|
|
|
|
|
" d.charge_type AS chargeType," +
|
|
|
|
" h.dept_code AS deptCode," +
|
|
|
|
" h.dept_Name AS deptName" +
|
|
" FROM " +
|
|
" FROM " +
|
|
" base_doctor d " +
|
|
" base_doctor d " +
|
|
" JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
|
|
" JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
|
|
@ -766,6 +768,77 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
|
|
return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
|
|
return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 查询医生列表带月份排班状态
|
|
|
|
* @param orgCode
|
|
|
|
* @param dept
|
|
|
|
* @param chargeType
|
|
|
|
* @param date
|
|
|
|
* @param page
|
|
|
|
* @param size
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public MixEnvelop findDoctorWithMouthWork(String orgCode,String dept,String chargeType,String date,Integer page,Integer size){
|
|
|
|
|
|
|
|
String totalSql ="SELECT " +
|
|
|
|
" count(1) AS total " +
|
|
|
|
" FROM " +
|
|
|
|
" base_doctor d " +
|
|
|
|
" JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
|
|
|
|
" WHERE " +
|
|
|
|
" h.org_code = '"+orgCode+"'";
|
|
|
|
if(StringUtils.isNotBlank(chargeType)){
|
|
|
|
totalSql+=" AND d.charge_type ='"+chargeType+"'";
|
|
|
|
}
|
|
|
|
if(StringUtils.isNotBlank(dept)){
|
|
|
|
totalSql+= " AND h.dept_code = '"+dept+"' " ;
|
|
|
|
}
|
|
|
|
List<Map<String, Object>> rstotal = jdbcTemplate.queryForList(totalSql);
|
|
|
|
|
|
|
|
Long count = 0L;
|
|
|
|
if (rstotal != null && rstotal.size() > 0) {
|
|
|
|
count = (Long) rstotal.get(0).get("total");
|
|
|
|
}
|
|
|
|
|
|
|
|
String sql ="SELECT " +
|
|
|
|
" d.id, " +
|
|
|
|
" d.photo, " +
|
|
|
|
" d.`name`, " +
|
|
|
|
" d.expertise," +
|
|
|
|
" d.introduce," +
|
|
|
|
" d.job_title_code AS jobTitleCode, " +
|
|
|
|
" d.job_title_name AS jobTitleName," +
|
|
|
|
" d.charge_type AS chargeType," +
|
|
|
|
" h.dept_code AS deptCode," +
|
|
|
|
" h.dept_Name AS deptName" +
|
|
|
|
" FROM " +
|
|
|
|
" base_doctor d " +
|
|
|
|
" JOIN base_doctor_hospital h ON h.doctor_code = d.id " +
|
|
|
|
" WHERE " +
|
|
|
|
" h.org_code = '"+orgCode+"'";
|
|
|
|
if(StringUtils.isNotBlank(chargeType)){
|
|
|
|
sql+=" AND d.charge_type ='"+chargeType+"'";
|
|
|
|
}
|
|
|
|
if(StringUtils.isNotBlank(dept)){
|
|
|
|
sql+= " AND h.dept_code = '"+dept+"' " ;
|
|
|
|
}
|
|
|
|
sql += " LIMIT " + (page - 1) * size + "," + size + "";
|
|
|
|
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
|
|
|
|
if(list!=null&&list.size()>0){
|
|
|
|
//获取排班
|
|
|
|
for(Map<String,Object> doctor :list){
|
|
|
|
String id = (String)doctor.get("id");
|
|
|
|
List<WlyyDoctorWorkTimeDO> workTimeDOs = doctorWorkTimeDao.findDoctorWorkTimeByMonth(id,"%"+date+"%");
|
|
|
|
if(workTimeDOs!=null&&workTimeDOs.size()>0){
|
|
|
|
doctor.put("isScheduling",true);
|
|
|
|
}else{
|
|
|
|
doctor.put("isScheduling",false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return MixEnvelop.getSuccessListWithPage(BaseHospitalRequestMapping.Prescription.api_success, list, page, size, count);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 挂号
|
|
* 挂号
|
|
* @return
|
|
* @return
|
|
@ -1753,4 +1826,155 @@ public class PrescriptionService extends BaseJpaService<WlyyPrescriptionDO, Pres
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 查询排班规则
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<WlyyHospitalSysDictVO> findWorkRule(String dictName,String hospital){
|
|
|
|
List<WlyyHospitalSysDictDO> list = sysDictDao.findByHospitalAndDictName(hospital,dictName);
|
|
|
|
List<WlyyHospitalSysDictVO> vos = new ArrayList<>();
|
|
|
|
return convertToModels(list,vos,WlyyHospitalSysDictVO.class);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 保存排班规则
|
|
|
|
* @param workRoleJsons
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public Boolean updateWorkRule(String workRoleJsons){
|
|
|
|
List<WlyyHospitalSysDictDO> sysDicts = (List<WlyyHospitalSysDictDO>) com.alibaba.fastjson.JSONArray.parseArray(workRoleJsons, WlyyHospitalSysDictDO.class);
|
|
|
|
List<WlyyHospitalSysDictDO> list = sysDictDao.findByHospitalAndDictName(sysDicts.get(0).getHospital(),sysDicts.get(0).getDictName());
|
|
|
|
sysDictDao.delete(list);
|
|
|
|
sysDictDao.save(sysDicts);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param type
|
|
|
|
* @param codes
|
|
|
|
* @param workTimeJson
|
|
|
|
* @return
|
|
|
|
* @throws Exception
|
|
|
|
*/
|
|
|
|
public Boolean saveDoctorWorkTimeJson(String type,String codes,String workTimeJson)throws Exception{
|
|
|
|
|
|
|
|
List<WlyyDoctorWorkTimeDO> wlyyDoctorWorkTimeDOs = (List<WlyyDoctorWorkTimeDO>) com.alibaba.fastjson.JSONArray.parseArray(workTimeJson, WlyyDoctorWorkTimeDO.class);
|
|
|
|
|
|
|
|
//全院医生
|
|
|
|
if("1".equals(type)){
|
|
|
|
String sql ="SELECT " +
|
|
|
|
" DISTINCT " +
|
|
|
|
" d.id, " +
|
|
|
|
" d.`name`, " +
|
|
|
|
" h.org_code, " +
|
|
|
|
" h.org_name, " +
|
|
|
|
" h.dept_code, " +
|
|
|
|
" h.dept_name " +
|
|
|
|
" FROM " +
|
|
|
|
" base_doctor d " +
|
|
|
|
" JOIN base_doctor_hospital h ON d.id= h.doctor_code " +
|
|
|
|
" WHERE " +
|
|
|
|
" h.org_code ='"+codes+"'";
|
|
|
|
List<Map<String,Object>> doctors = jdbcTemplate.queryForList(sql);
|
|
|
|
List<WlyyDoctorWorkTimeDO> workTimeDOs =makeDoctorWorkTimeDOList(doctors,wlyyDoctorWorkTimeDOs);
|
|
|
|
saveDoctorWorkTime(workTimeDOs);
|
|
|
|
//科室
|
|
|
|
}else if("2".equals(type)){
|
|
|
|
|
|
|
|
String sql ="SELECT " +
|
|
|
|
" DISTINCT " +
|
|
|
|
" d.id, " +
|
|
|
|
" d.`name`, " +
|
|
|
|
" h.org_code, " +
|
|
|
|
" h.org_name, " +
|
|
|
|
" h.dept_code, " +
|
|
|
|
" h.dept_name " +
|
|
|
|
" FROM " +
|
|
|
|
" base_doctor d " +
|
|
|
|
" JOIN base_doctor_hospital h ON d.id= h.doctor_code " +
|
|
|
|
" WHERE " +
|
|
|
|
" h.dept_code in ("+codes+")";
|
|
|
|
List<Map<String,Object>> doctors = jdbcTemplate.queryForList(sql);
|
|
|
|
List<WlyyDoctorWorkTimeDO> workTimeDOs =makeDoctorWorkTimeDOList(doctors,wlyyDoctorWorkTimeDOs);
|
|
|
|
saveDoctorWorkTime(workTimeDOs);
|
|
|
|
//医生批量
|
|
|
|
}else if("3".equals(type)){
|
|
|
|
String sql ="SELECT " +
|
|
|
|
" DISTINCT " +
|
|
|
|
" d.id, " +
|
|
|
|
" d.`name`, " +
|
|
|
|
" h.org_code, " +
|
|
|
|
" h.org_name, " +
|
|
|
|
" h.dept_code, " +
|
|
|
|
" h.dept_name " +
|
|
|
|
" FROM " +
|
|
|
|
" base_doctor d " +
|
|
|
|
" JOIN base_doctor_hospital h ON d.id= h.doctor_code " +
|
|
|
|
" WHERE " +
|
|
|
|
" d.id in ("+codes+")";
|
|
|
|
List<Map<String,Object>> doctors = jdbcTemplate.queryForList(sql);
|
|
|
|
List<WlyyDoctorWorkTimeDO> workTimeDOs =makeDoctorWorkTimeDOList(doctors,wlyyDoctorWorkTimeDOs);
|
|
|
|
saveDoctorWorkTime(workTimeDOs);
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<WlyyDoctorWorkTimeDO> makeDoctorWorkTimeDOList(List<Map<String,Object>> doctors,List<WlyyDoctorWorkTimeDO> wlyyDoctorWorkTimeDOs){
|
|
|
|
List<WlyyDoctorWorkTimeDO> rs = new ArrayList<>();
|
|
|
|
if(doctors!=null&&doctors.size()>0){
|
|
|
|
//构建医生排班
|
|
|
|
for(Map<String,Object> doctor:doctors){
|
|
|
|
for(WlyyDoctorWorkTimeDO time:wlyyDoctorWorkTimeDOs){
|
|
|
|
time.setDoctor((String)doctor.get("id"));
|
|
|
|
time.setDoctorName((String)doctor.get("name"));
|
|
|
|
time.setDept((String)doctor.get("dept_code"));
|
|
|
|
time.setDeptName((String)doctor.get("dept_name"));
|
|
|
|
time.setHospital((String)doctor.get("org_code"));
|
|
|
|
time.setHospitalName((String)doctor.get("org_name"));
|
|
|
|
time.setCreateTime(new Date());
|
|
|
|
rs.add(time);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rs;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 批量更新医生多月份排班数据
|
|
|
|
* @param workTimeDOs
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public Boolean saveDoctorWorkTime(List<WlyyDoctorWorkTimeDO> workTimeDOs){
|
|
|
|
|
|
|
|
if(workTimeDOs!=null&&workTimeDOs.size()>0){
|
|
|
|
//按月按医生分组标记排班数据
|
|
|
|
List<String> workMonths = new ArrayList<>();
|
|
|
|
|
|
|
|
for(WlyyDoctorWorkTimeDO time : workTimeDOs){
|
|
|
|
//医生工作月份
|
|
|
|
String workMonth = time.getDoctor()+","+time.getDate().substring(0,6);
|
|
|
|
//判断是否是首次插入医生月份数据,如果是首次,则删除该医生当前月份排班数据数据
|
|
|
|
if(!workMonths.contains(workMonth)){
|
|
|
|
workMonths.add(workMonth);
|
|
|
|
List<WlyyDoctorWorkTimeDO> oldTimes = doctorWorkTimeDao.findDoctorWorkTimeByMonth(time.getDoctor(),"%"+time.getDate().substring(0,6)+"%");
|
|
|
|
doctorWorkTimeDao.delete(oldTimes);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
doctorWorkTimeDao.save(workTimeDOs);
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 查询某个医生某个月份排班记录
|
|
|
|
* @param doctor
|
|
|
|
* @param date
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public List<WlyyDoctorWorkTimeVO> findDoctorWorkTimeByMonth(String doctor,String date){
|
|
|
|
List<WlyyDoctorWorkTimeDO> times = doctorWorkTimeDao.findDoctorWorkTimeByMonth(doctor,"%"+date+"%");
|
|
|
|
List<WlyyDoctorWorkTimeVO> timeVOs = new ArrayList<>();
|
|
|
|
return convertToModels(times,timeVOs,WlyyDoctorWorkTimeVO.class);
|
|
|
|
}
|
|
}
|
|
}
|