package cn.lihu.jh.module.ecg.service.appointment;
|
|
import cn.lihu.jh.framework.common.util.date.DateUtils;
|
import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO;
|
import cn.lihu.jh.module.ecg.feign.RemoteDataService;
|
import cn.lihu.jh.module.ecg.feign.RestApiReqBodyVo;
|
import cn.lihu.jh.module.ecg.feign.RestApiResult;
|
import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
|
import cn.lihu.jh.module.ecg.service.queue.QueueService;
|
import org.springframework.dao.DuplicateKeyException;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.validation.annotation.Validated;
|
|
import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
|
import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
|
import cn.lihu.jh.framework.common.pojo.PageResult;
|
import cn.lihu.jh.framework.common.util.object.BeanUtils;
|
|
import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
|
|
import javax.annotation.Resource;
|
|
import java.time.LocalDateTime;
|
|
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
|
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
|
|
/**
|
* 预约 Service 实现类
|
*
|
* @author 马剑波
|
*/
|
@Service
|
@Validated
|
public class AppointmentServiceImpl implements AppointmentService {
|
|
@Resource
|
private RemoteDataService remoteDataService;
|
|
@Resource
|
private QueueService queueService;
|
|
@Resource
|
private AppointmentMapper appointmentMapper;
|
|
@Override
|
public Integer createAppointment(AppointmentSaveReqVO createReqVO) {
|
// 插入
|
AppointmentDO appointment = BeanUtils.toBean(createReqVO, AppointmentDO.class);
|
|
appointment.setBookTime( LocalDateTime.now() );
|
appointment.setBookSrc( 1 );
|
|
appointmentMapper.insert(appointment);
|
// 返回
|
return appointment.getId();
|
}
|
|
@Override
|
public void updateAppointment(AppointmentSaveReqVO updateReqVO) {
|
// 校验存在
|
validateAppointmentExists(updateReqVO.getId());
|
// 更新
|
AppointmentDO updateObj = BeanUtils.toBean(updateReqVO, AppointmentDO.class);
|
appointmentMapper.updateById(updateObj);
|
}
|
|
@Override
|
public void deleteAppointment(Integer id) {
|
// 校验存在
|
validateAppointmentExists(id);
|
// 删除
|
appointmentMapper.deleteById(id);
|
}
|
|
private void validateAppointmentExists(Integer id) {
|
if (appointmentMapper.selectById(id) == null) {
|
throw exception(APPOINTMENT_NOT_EXISTS);
|
}
|
}
|
|
@Override
|
public AppointmentDO getAppointment(Integer id) {
|
return appointmentMapper.selectById(id);
|
}
|
|
@Override
|
public AppointmentDO getAppointmentByPatId(String patId) {
|
// 先从医院平台查询
|
AppointmentDO appointmentExtermal = getAppointmentExtermal( patId );
|
if (null != appointmentExtermal && null != appointmentExtermal.getBookDate()) {
|
// 查询DB中 是否已经存在
|
AppointmentDO appointmentDO = appointmentMapper.getCurrentPatId( patId );
|
if (null == appointmentDO ) {
|
appointmentMapper.insert( appointmentExtermal );
|
return appointmentExtermal;
|
}
|
return appointmentDO;
|
}
|
|
return appointmentMapper.getCurrentPatId( patId );
|
}
|
|
@Override
|
public PageResult<AppointmentDO> getAppointmentPage(AppointmentPageReqVO pageReqVO) {
|
return appointmentMapper.selectPage(pageReqVO);
|
}
|
|
@Override
|
public AppointmentDO getAppointmentExtermal(String mzzyh) {
|
RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
|
//reqBodyVo.setSfzh(confirmReqVO.getPatId());
|
reqBodyVo.setMzzyh( mzzyh );
|
|
// QueryRisReportList queryEcgRequest
|
RestApiResult<AppointmentExternal> result = remoteDataService.httpApi("queryEcgRequest", "ECG", "ECG", reqBodyVo);
|
result.getCode();
|
|
AppointmentExternal appointmentExternal = result.getRow().get(0);
|
|
AppointmentDO appointmentDO = BeanUtils.toBean( appointmentExternal, AppointmentDO.class );
|
|
appointmentDO.setPatId( appointmentExternal.getPatientID() ); // 内容为 身份证号 或 门诊住院号
|
appointmentDO.setPatName( appointmentExternal.getPatName() );
|
appointmentDO.setPatGender( Byte.valueOf(appointmentExternal.getPatgender()) );
|
appointmentDO.setPatBirthday( appointmentExternal.getEncPatBirthDate() );
|
appointmentDO.setPatIdentityId( appointmentExternal.getIdentityID() );
|
appointmentDO.setPatAddr( appointmentExternal.getAddress() );
|
appointmentDO.setPatDeptCode( appointmentExternal.getPatLocDeptCode() );
|
appointmentDO.setPatDeptDesc( appointmentExternal.getPatLocDeptDesc() );
|
appointmentDO.setPatWardCode( appointmentExternal.getPatLocWardCode() );
|
appointmentDO.setPatWardDesc( appointmentExternal.getPatLocWardDesc() );
|
appointmentDO.setPatMobile( appointmentExternal.getPhone() );
|
appointmentDO.setPatBedNo( appointmentExternal.getEnBedno() );
|
appointmentDO.setBookId( appointmentExternal.getReqIdeApplyno() );
|
appointmentDO.setBookDate( appointmentExternal.getReqExtBooktime().toLocalDate() );
|
appointmentDO.setBookCheckType( getCorrespondingCheckType(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) );
|
appointmentDO.setBookTime( appointmentExternal.getReqAuthoredOn() );
|
LocalDateTime bookStartTime = appointmentExternal.getReqExtBooktime();
|
LocalDateTime bookEndTime = bookStartTime.plusMinutes(30);
|
appointmentDO.setBookTimeslot( (bookStartTime.getHour()*100 + bookStartTime.getMinute())*10000 + bookEndTime.getHour()*100 + bookEndTime.getMinute() );
|
appointmentDO.setBookSrc( 0 );
|
appointmentDO.setPaid( 1 );
|
return appointmentDO;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public String appoitmentConfirm(AppointmentConfirmReqVO confirmReqVO) {
|
AppointmentDO appointment = getAppointment(confirmReqVO.getId());
|
if (null == appointment)
|
throw exception(PATIENT_NOT_EXISTS);
|
|
if ( !DateUtils.isToday(appointment.getBookDate()) )
|
throw exception( APPOINTMENT_NOT_TODAY);
|
|
try {
|
QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO();
|
queueSaveReqVO.setPatId(appointment.getPatId());
|
queueSaveReqVO.setPatName(appointment.getPatName());
|
queueSaveReqVO.setPatGender(appointment.getPatGender());
|
queueSaveReqVO.setBookDate(appointment.getBookDate());
|
queueSaveReqVO.setBookTimeslot(appointment.getBookTimeslot());
|
queueSaveReqVO.setBookCheckType(appointment.getBookCheckType());
|
queueSaveReqVO.setPassed((byte) 0);
|
queueSaveReqVO.setExpired((byte) 0);
|
queueSaveReqVO.setPatDetails( appointment.getPatDeptDesc() + "-" + appointment.getPatWardDesc() + "-" + appointment.getPatBedNo());
|
queueService.queue(queueSaveReqVO);
|
} catch (DuplicateKeyException duplicateKeyException) {
|
throw exception(APPOINTMENT_HAVE_QUEUED);
|
}
|
|
return "确认成功";
|
}
|
|
private Integer getCorrespondingCheckType(String strPlanDefItemcode) {
|
if (strPlanDefItemcode.equals("691133607"))
|
return 100;
|
else if (strPlanDefItemcode.equals("201605"))
|
return 200;
|
else if (strPlanDefItemcode.equals("200327"))
|
return 300;
|
else if (strPlanDefItemcode.equals("201652"))
|
return 400;
|
else if (strPlanDefItemcode.equals("502490914"))
|
return 500;
|
else if (strPlanDefItemcode.equals("419562119"))
|
return 600;
|
else if (strPlanDefItemcode.equals("201604"))
|
return 700;
|
else if (strPlanDefItemcode.equals("1202042"))
|
return 800;
|
else if (strPlanDefItemcode.equals("1202058"))
|
return 900;
|
else if (strPlanDefItemcode.equals("1202065"))
|
return 1000;
|
else if (strPlanDefItemcode.equals("559542128"))
|
return 1100;
|
else if (strPlanDefItemcode.equals("590244511"))
|
return 1200;
|
else if (strPlanDefItemcode.equals("666454217"))
|
return 1300;
|
else if (strPlanDefItemcode.equals("720791490"))
|
return 1400;
|
else if (strPlanDefItemcode.equals("720792077"))
|
return 1500;
|
|
return 100;
|
}
|
}
|