eight
2024-11-07 e36c1e2363e36a69a3cc8ccbc00d28b16f926abd
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
@@ -25,6 +25,8 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import static cn.lihu.jh.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.lihu.jh.framework.common.pojo.CommonResult.error;
@@ -94,28 +96,37 @@
        return appointmentMapper.selectById(id);
    }
    // TODO 尚不支持, 一位患者当天两种检查项目的情况
    @Override
    public AppointmentDO getCurAppointmentByPatId(String patId) {
        AppointmentDO appointmentDO = appointmentMapper.getCurrentPatId( patId );
        return appointmentDO;
        List<AppointmentDO> appointmentDOList = appointmentMapper.getCurrentPatId( patId );
        return 0 == appointmentDOList.size() ? null : appointmentDOList.get(0);
    }
    /**
     * // TODO 尚不支持, 一位患者当天两种检查项目的情况
     * @param patCode 编号 : !!! 不一定就是本系统的 患者编号(patID), 根源在于 检查单扫描出来的编号 不一定是 本系统的 患者编号(patID)
     * @return
     */
    @Override
    public AppointmentDO queryAndCreateAppointmentByPatId(String patId) {
    public AppointmentDO queryAndCreateAppointmentByPatId(String patCode) {
        // 先从医院平台查询
        AppointmentDO appointmentExtermal = getAppointmentExtermal( patId );
        if (null != appointmentExtermal && null != appointmentExtermal.getBookDate() && appointmentExtermal.getBookDate().isEqual(LocalDate.now()) ) {
            // 查到当天的预约后,查询DB中 是否已经存在
            AppointmentDO appointmentDO = appointmentMapper.getCurrentPatId( patId );
            if (null == appointmentDO ) {
                appointmentExtermal.setBookSrc(0);
                appointmentMapper.insert( appointmentExtermal );
                return appointmentExtermal;
        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;
            }
            return appointmentDO;
        }
        return appointmentMapper.getCurrentPatId( patId );
        List<AppointmentDO> appointmentDOList = appointmentMapper.getCurrentPatId( patCode );
        return 0 == appointmentDOList.size() ? null : appointmentDOList.get(0);
    }
    @Override
@@ -124,7 +135,9 @@
    }
    @Override
    public AppointmentDO getAppointmentExtermal(String patId) {
    public List<AppointmentDO> getAppointmentExtermal(String patId) {
        List<AppointmentDO> curAppointDOList = new ArrayList<AppointmentDO>();
        RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
        if (18 == patId.length()) {
            reqBodyVo.setSfzh( patId );
@@ -135,34 +148,44 @@
        // QueryRisReportList   queryEcgRequest
        RestApiResult<AppointmentExternal> result = remoteDataService.httpApi("queryEcgRequest", "ECG", "ECG", reqBodyVo);
        if (0 == result.getRow().size()) {
            return null;
            return curAppointDOList;
        }
        AppointmentExternal appointmentExternal = result.getRow().get(0);
        AppointmentDO appointmentDO = BeanUtils.toBean( appointmentExternal, AppointmentDO.class );
        for (int appointIndex=0; appointIndex < result.getRow().size(); appointIndex++ ) {
            AppointmentExternal appointmentExternal = result.getRow().get( appointIndex );
        appointmentDO.setPatId( appointmentExternal.getPatientID() ); // 内容为 身份证号 或 门诊住院号
        appointmentDO.setPatName( appointmentExternal.getPatName() );
        appointmentDO.setPatGender( Byte.valueOf(appointmentExternal.getPatgender()) );
        appointmentDO.setPatBirthday( DateUtils.ofUTC(appointmentExternal.getEncPatBirthDate()).toLocalDate() );
        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( DateUtils.ofUTC( appointmentExternal.getReqExtBooktime() ).toLocalDate() );
        appointmentDO.setBookCheckType( getCorrespondingCheckType(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) );
        appointmentDO.setBookTime( DateUtils.ofUTC( appointmentExternal.getReqAuthoredOn() ) );
        LocalDateTime bookStartTime = DateUtils.ofUTC( 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;
            AppointmentDO appointmentDO = BeanUtils.toBean(appointmentExternal, AppointmentDO.class);
            appointmentDO.setPatId(appointmentExternal.getPatientID()); // 内容为 身份证号 或 门诊住院号
            appointmentDO.setPatName(appointmentExternal.getPatName());
            appointmentDO.setPatGender(Byte.valueOf(appointmentExternal.getPatgender()));
            appointmentDO.setPatBirthday(DateUtils.ofUTC(appointmentExternal.getEncPatBirthDate()).toLocalDate());
            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.setBookCheckType(getCorrespondingCheckType(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()));
            appointmentDO.setBookTime(DateUtils.ofUTC(appointmentExternal.getReqAuthoredOn()));  // 开单时间
            // 光开单的情况,没有预约时间
            if (null != appointmentExternal.getReqExtBooktime() ) {
                appointmentDO.setBookDate(DateUtils.ofUTC(appointmentExternal.getReqExtBooktime()).toLocalDate());
                LocalDateTime bookStartTime = DateUtils.ofUTC(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);
            curAppointDOList.add( appointmentDO );
        }
        return curAppointDOList;
    }
    @Override