|
@ -1,11 +1,33 @@
|
|
|
package com.yihu.jw.hospital.record.service;
|
|
|
|
|
|
import com.yihu.jw.common.dao.BaseSequenceDao;
|
|
|
import com.yihu.jw.entity.base.common.BaseSequence;
|
|
|
import com.yihu.jw.entity.base.patient.BaseMedicalRecordCopyingApplyDO;
|
|
|
import com.yihu.jw.entity.base.patient.BaseMedicalRecordCopyingApplyTypeDO;
|
|
|
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
|
|
|
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionExpressageDO;
|
|
|
import com.yihu.jw.entity.hospital.record.HospitalPatientInpatientRecordDO;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.hospital.prescription.dao.PrescriptionExpressageDao;
|
|
|
import com.yihu.jw.hospital.record.dao.HospitalPatientInpatientRecordDao;
|
|
|
import com.yihu.jw.mysql.query.BaseJpaService;
|
|
|
import com.yihu.jw.patient.dao.BaseMedicalRecordCopyingApplyDao;
|
|
|
import com.yihu.jw.patient.dao.BaseMedicalRecordCopyingApplyTypeDao;
|
|
|
import com.yihu.jw.restmodel.web.PageEnvelop;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.util.entity.ServiceException;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* Created by yeshijie on 2022/11/28.
|
|
@ -15,6 +37,139 @@ public class HospitalPatientInpatientRecordService extends BaseJpaService<Hospit
|
|
|
|
|
|
@Resource
|
|
|
private HospitalPatientInpatientRecordDao hospitalPatientInpatientRecordDao;
|
|
|
@Resource
|
|
|
private BaseMedicalRecordCopyingApplyDao applyDao;
|
|
|
@Resource
|
|
|
private BaseMedicalRecordCopyingApplyTypeDao applyTypeDao;
|
|
|
@Autowired
|
|
|
private PrescriptionExpressageDao prescriptionExpressageDao;
|
|
|
@Autowired
|
|
|
private BaseSequenceDao baseSequenceDao;
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
@Autowired
|
|
|
private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
|
|
|
|
|
|
//取消复印
|
|
|
public void cancelApply(String id) throws Exception{
|
|
|
BaseMedicalRecordCopyingApplyDO applyDO = applyDao.findById(id).orElse(null);
|
|
|
if(!"0".equals(applyDO.getStatus())){
|
|
|
throw new ServiceException("待审核的申请才能取消");
|
|
|
}
|
|
|
applyDO.setStatus("3");
|
|
|
applyDao.save(applyDO);
|
|
|
}
|
|
|
//改为自取
|
|
|
@Transactional
|
|
|
public void changePickupWay(String id) throws Exception{
|
|
|
BaseMedicalRecordCopyingApplyDO applyDO = applyDao.findById(id).orElse(null);
|
|
|
if(!"0".equals(applyDO.getStatus())){
|
|
|
throw new ServiceException("待审核的申请才能更改");
|
|
|
}
|
|
|
if("1".equals(applyDO.getPickupWay())){
|
|
|
throw new ServiceException("已是自取,无需更改");
|
|
|
}
|
|
|
List<WlyyPrescriptionExpressageDO> expressageDOS = prescriptionExpressageDao.findByRelationCode(id,"1");
|
|
|
expressageDOS.stream().forEach(one->{
|
|
|
one.setOneselfPickupFlg(1);
|
|
|
});
|
|
|
prescriptionExpressageDao.saveAll(expressageDOS);
|
|
|
applyDao.save(applyDO);
|
|
|
}
|
|
|
|
|
|
//申请详情
|
|
|
public BaseMedicalRecordCopyingApplyDO applyDetail(String id){
|
|
|
BaseMedicalRecordCopyingApplyDO applyDO = applyDao.findById(id).orElse(null);
|
|
|
List<BaseMedicalRecordCopyingApplyTypeDO> applyTypeDOList = applyTypeDao.findByApplyId(id);
|
|
|
applyDO.setApplyTypeList(applyTypeDOList);
|
|
|
List<WlyyPrescriptionExpressageDO> expressageDOS = prescriptionExpressageDao.findByRelationCode(id,"1");
|
|
|
if(expressageDOS.size()>0){
|
|
|
applyDO.setExpressageDO(expressageDOS.get(0));
|
|
|
}
|
|
|
WlyyHospitalSysDictDO copy_apply_status = wlyyHospitalSysDictDao.findOneByDictNameAndDictCode("copy_apply_status",applyDO.getStatus());
|
|
|
WlyyHospitalSysDictDO copy_use_to = wlyyHospitalSysDictDao.findOneByDictNameAndDictCode("copy_use_to",applyDO.getUseTo());
|
|
|
WlyyHospitalSysDictDO patient_relation = wlyyHospitalSysDictDao.findOneByDictNameAndDictCode("patient_relation",applyDO.getPatientRelation());
|
|
|
WlyyHospitalSysDictDO EXPRESS_STATUS = wlyyHospitalSysDictDao.findOneByDictNameAndDictCode("EXPRESS_STATUS",applyDO.getPickupWay());
|
|
|
|
|
|
applyDO.setStatusName(copy_apply_status.getDictValue());
|
|
|
applyDO.setUseToName(copy_use_to.getDictValue());
|
|
|
applyDO.setPatientRelationName(patient_relation.getDictValue());
|
|
|
applyDO.setPickupWayName(EXPRESS_STATUS.getDictValue());
|
|
|
return applyDO;
|
|
|
}
|
|
|
|
|
|
|
|
|
//复印病案申请列表
|
|
|
public PageEnvelop applyPage(String patientId,Integer page,Integer size,String name,String status,String startTime,String endTime){
|
|
|
String sql = "select * ";
|
|
|
String countSql = "select count(*) ";
|
|
|
String filter = " from base_medical_record_copying_apply where 1=1 ";
|
|
|
if(StringUtils.isNotBlank(patientId)){
|
|
|
filter += " and patient_id='"+patientId+"' ";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(name)){
|
|
|
filter += " and (patient_name like '%"+name+"%' or apply_name like '%"+name+"%')";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(status)){
|
|
|
filter += " and status='"+status+"' ";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(startTime)){
|
|
|
filter += " and apply_time>='"+startTime+"' ";
|
|
|
}
|
|
|
if(StringUtils.isNotBlank(endTime)){
|
|
|
filter += " and apply_time<='"+endTime+"' ";
|
|
|
}
|
|
|
String orderBy = " order by apply_time desc limit "+(page-1)*size+","+size;
|
|
|
List<WlyyHospitalSysDictDO> dictDOList = wlyyHospitalSysDictDao.findByDictName("copy_apply_status");
|
|
|
Map<String,String> applyStatusMap = dictDOList.stream().collect(Collectors.toMap(WlyyHospitalSysDictDO::getDictCode,WlyyHospitalSysDictDO::getDictValue));
|
|
|
List<BaseMedicalRecordCopyingApplyDO> list = jdbcTemplate.query(sql+filter+orderBy,new BeanPropertyRowMapper<>(BaseMedicalRecordCopyingApplyDO.class));
|
|
|
list.stream().forEach(one->{
|
|
|
one.setStatusName(applyStatusMap.get(one.getStatus()));
|
|
|
});
|
|
|
Long count = jdbcTemplate.queryForObject(countSql+filter,Long.class);
|
|
|
return PageEnvelop.getSuccessListWithPage("查询成功",list,page,size,count);
|
|
|
}
|
|
|
|
|
|
//生成不重复的单号
|
|
|
public synchronized String getApplyNo(){
|
|
|
BaseSequence seq = new BaseSequence();
|
|
|
baseSequenceDao.save(seq);
|
|
|
Long id = jdbcTemplate.queryForObject("select max(id) from base_sequence",Long.class);
|
|
|
return "DM"+String.format("%08d", id);
|
|
|
}
|
|
|
|
|
|
//病案复印申请
|
|
|
public void apply(BaseMedicalRecordCopyingApplyDO applyDO){
|
|
|
List<BaseMedicalRecordCopyingApplyTypeDO> applyTypeList = applyDO.getApplyTypeList();
|
|
|
WlyyPrescriptionExpressageDO expressageDO = applyDO.getExpressageDO();
|
|
|
|
|
|
applyDO.setApplyNo(getApplyNo());
|
|
|
applyDO.setApplyTime(DateUtil.getStringDate());
|
|
|
applyDO.setStatus("0");
|
|
|
applyDO.setPayStatus("0");
|
|
|
applyDO.setTotalNum(10);//先写死-需要对接
|
|
|
String copyNum = applyDO.getCopyingNum();
|
|
|
|
|
|
//住院记录信息
|
|
|
applyDO.setDeptName("骨科一病区");
|
|
|
applyDO.setHospitalNum("1");
|
|
|
applyDO.setOutpatientTime("2023-12-27 08:58:00");
|
|
|
|
|
|
applyDO = applyDao.save(applyDO);
|
|
|
String applyId = applyDO.getId();
|
|
|
expressageDO.setRelationCode(applyId);
|
|
|
expressageDO.setRelationType("1");
|
|
|
expressageDO.setCreateTime(new Date());
|
|
|
expressageDO.setDel(1);
|
|
|
prescriptionExpressageDao.save(expressageDO);
|
|
|
|
|
|
applyTypeList.stream().forEach(one->{
|
|
|
one.setApplyId(applyId);
|
|
|
one.setCopyingNum(copyNum);
|
|
|
});
|
|
|
applyTypeDao.saveAll(applyTypeList);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 查找最近一次住院记录
|