| | |
| | | import cn.lihu.jh.framework.common.util.date.DateUtils; |
| | | import cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils; |
| | | import cn.lihu.jh.module.ecg.controller.admin.queue.vo.QueueSaveReqVO; |
| | | import cn.lihu.jh.module.ecg.dal.dataobject.checktype.CheckTypeDO; |
| | | 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.config.EcgConfigService; |
| | | import cn.lihu.jh.module.ecg.service.queue.QueueService; |
| | | import cn.lihu.jh.module.ecg.service.queue.QueueServiceTxFunctions; |
| | | import cn.lihu.jh.module.ecg.service.queuesequence.QueueSequenceService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.dao.DuplicateKeyException; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | */ |
| | | @Service |
| | | @Validated |
| | | @Slf4j |
| | | public class AppointmentServiceImpl implements AppointmentService { |
| | | |
| | | @Resource |
| | |
| | | } |
| | | |
| | | /** |
| | | * // TODO 尚不支持, 一位患者当天两种检查项目的情况 |
| | | * @param patCode 编号 : !!! 不一定就是本系统的 患者编号(patID), 根源在于 检查单扫描出来的编号 不一定是 本系统的 患者编号(patID) |
| | | * @return |
| | | */ |
| | | @Override |
| | | public AppointmentDO queryAndCreateAppointmentByPatId(String patCode) { |
| | | public List<AppointmentDO> queryAndCreateAppointmentByPatId(String patCode) { |
| | | // 先从医院平台查询 |
| | | List<AppointmentDO> appointmentExtermalList = getAppointmentExtermal( patCode ); |
| | | |
| | | for ( int appointmentIndex = 0; appointmentIndex < appointmentExtermalList.size(); appointmentIndex++ ) { |
| | | AppointmentDO appointmentExtermal = appointmentExtermalList.get(appointmentIndex); |
| | | if (null != appointmentExtermal && null != appointmentExtermal.getBookDate() && appointmentExtermal.getBookDate().isEqual(LocalDate.now())) { |
| | | // 查到当天的预约后,查询DB中 是否已经存在 |
| | | AppointmentDO appointmentDO = appointmentMapper.getCurrentByPatAndCheckType(appointmentExtermal.getPatId(), appointmentExtermal.getBookCheckType()); |
| | | if (null == appointmentDO) { |
| | | appointmentMapper.insert(appointmentExtermal); |
| | | return appointmentExtermal; |
| | | } |
| | | return appointmentDO; |
| | | if (null == appointmentExtermal ) |
| | | continue; |
| | | |
| | | // 从DB查到预约,是否已经存在 |
| | | AppointmentDO appointmentDO = appointmentMapper.getByPatAndCheckTypeAndBookDate(appointmentExtermal.getPatId(), appointmentExtermal.getBookCheckType(), appointmentExtermal.getBookDate()); |
| | | if (null == appointmentDO) { |
| | | appointmentMapper.insert(appointmentExtermal); |
| | | } else { |
| | | appointmentExtermal.setId( appointmentDO.getId() ); // 确保 返回值保护 appointment id |
| | | } |
| | | } |
| | | |
| | | List<AppointmentDO> appointmentDOList = appointmentMapper.getCurrentPatId( patCode ); |
| | | return 0 == appointmentDOList.size() ? null : appointmentDOList.get(0); |
| | | // 不从DB查询 |
| | | //List<AppointmentDO> appointmentDOList = appointmentMapper.getCurrentPatId( patCode ); |
| | | //return 0 == appointmentDOList.size() ? null : appointmentDOList.get(0); |
| | | |
| | | return appointmentExtermalList; |
| | | } |
| | | |
| | | @Override |
| | |
| | | AppointmentExternal appointmentExternal = result.getRow().get( appointIndex ); |
| | | |
| | | AppointmentDO appointmentDO = BeanUtils.toBean(appointmentExternal, AppointmentDO.class); |
| | | appointmentDO.setApplyNo( appointmentExternal.getReqIdeApplyno() ); |
| | | appointmentDO.setPatSrc( getCorrespondingPatientSource(appointmentExternal.getAdmTypeCode()) ); |
| | | appointmentDO.setPatId(appointmentExternal.getPatientID()); // 内容为 身份证号 或 门诊住院号 |
| | | appointmentDO.setPatName(appointmentExternal.getPatName()); |
| | | appointmentDO.setPatGender(Byte.valueOf(appointmentExternal.getPatgender())); |
| | |
| | | AppointmentDO appointment = getAppointment(confirmReqVO.getId()); |
| | | if (null == appointment) |
| | | throw exception(PATIENT_NOT_EXISTS); |
| | | |
| | | // 手动预约,直接设置预约日期为当天 |
| | | if (confirmReqVO.getIsVip() == 1) { |
| | | appointment.setBookDate( LocalDate.now() ); |
| | | } |
| | | |
| | | if ( !DateUtils.isToday(appointment.getBookDate()) ) |
| | | throw exception( APPOINTMENT_NOT_TODAY); |
| | |
| | | |
| | | return 100; |
| | | } |
| | | |
| | | private Integer getCorrespondingPatientSource(String admTypeCode) { |
| | | if (admTypeCode.equals("AMB")) |
| | | return 1; |
| | | else if (admTypeCode.equals("EMER")) |
| | | return 2; |
| | | else if (admTypeCode.equals("IMP")) |
| | | return 3; |
| | | else if (admTypeCode.equals("PHY")) |
| | | return 4; |
| | | |
| | | return 0; |
| | | } |
| | | } |