eight
2024-10-29 6a07378488a9dd1515a6a0fdb4c1833638e6592b
接口对接
已修改9个文件
245 ■■■■■ 文件已修改
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/dto/AppointmentExternal.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jh-module-ecg/jh-module-ecg-api/src/main/java/cn/lihu/jh/module/ecg/enums/ErrorCodeConstants.java
@@ -14,6 +14,7 @@
    ErrorCode APPOINTMENT_NOT_EXISTS = new ErrorCode(1_010_001_000, "预约不存在");
    ErrorCode APPOINTMENT_NOT_TODAY = new ErrorCode(1_010_001_001, "不是当天预约");
    ErrorCode APPOINTMENT_HAVE_QUEUED = new ErrorCode(1_010_001_002, "您已经在排队中了");
    ErrorCode ROOM_NOT_EXISTS = new ErrorCode(1_010_002_000, "诊室和诊疗床不存在");
    ErrorCode ROOM_NOT_SIT = new ErrorCode(1_010_002_001, "请重新就座");
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/AppointmentController.java
@@ -69,9 +69,6 @@
    private RoomService roomService;
    @Resource
    private RemoteDataService remoteDataService;
    @Resource
    private DevRentService devRentService;
    @Resource
@@ -140,88 +137,12 @@
                        BeanUtils.toBean(list, AppointmentRespVO.class));
    }
    // TODO 对接数据平台
    private void getRemoteAppointment(AppointmentConfirmReqVO confirmReqVO) {
        RestApiReqBodyVo reqBodyVo = new RestApiReqBodyVo();
        reqBodyVo.setSfzh(confirmReqVO.getPatId());
        reqBodyVo.setMzzyh("A34343");
        // QueryRisReportList   queryEcgRequest
        RestApiResult<Object> result = remoteDataService.httpApi("queryEcgRequest", "ECG", "ECG", reqBodyVo);
        List<AppointmentExternal> list =
                result.getRow().stream().map(
                        rawItem -> {
                            //AppointmentExternal appointmentExternal = JSONObject.parseObject(JSONObject.toJSONString(rawItem), AppointmentExternal.class);
                            AppointmentExternal appointmentExternal = BeanUtil.toBeanIgnoreCase( rawItem, AppointmentExternal.class, true);
                            return appointmentExternal;
                        }
                ).collect(Collectors.toList());
        AppointmentExternal appointmentExternal = list.get(0);
        QueueSaveReqVO queueSaveReqVO = new QueueSaveReqVO();
        queueSaveReqVO.setPatId( appointmentExternal.getPatientID() );
        queueSaveReqVO.setPatName( appointmentExternal.getPatName() );
        queueSaveReqVO.setPatGender( Byte.valueOf(appointmentExternal.getPatgender()) );
        DateTimeFormatter ISO_LOCAL_DATE_TIME2 = new DateTimeFormatterBuilder()
                .parseCaseInsensitive()
                .append(ISO_LOCAL_DATE)
                .appendLiteral(' ')
                .append(ISO_LOCAL_TIME)
                .toFormatter();
        LocalDateTime bookStartTime = LocalDateTime.parse(appointmentExternal.getReqExtBooktime(), ISO_LOCAL_DATE_TIME2);
        LocalDateTime bookEndTime = bookStartTime.plusMinutes(30);
        queueSaveReqVO.setBookTimeslot(
                (bookStartTime.getHour()*100 + bookStartTime.getMinute())*10000
                        + bookEndTime.getHour()*100 + bookEndTime.getMinute() );
        //queueSaveReqVO.setBookCheckType( Byte.valueOf(appointmentExternal.getPlanDefItemList().getPlanDefItem().getPlanDefItemcode()) );
        queueSaveReqVO.setBookCheckType( 10 );
        queueSaveReqVO.setSeqNum(1);
        queueSaveReqVO.setStatus(QueueStatusEnum.WAITING.getStatus());
        queueSaveReqVO.setPassed((byte)0);
        queueSaveReqVO.setExpired((byte)0);
        queueSaveReqVO.setRoomName("-");
        queueSaveReqVO.setBedNo("-");
        queueService.createqueue(queueSaveReqVO);
    }
    @PostMapping("/confirm")
    @Operation(summary = "预约确认")
    @PreAuthorize("@ss.hasPermission('ecg:appointment:confirm')")
    public CommonResult<String> appointmentConfirm(@RequestBody AppointmentConfirmReqVO confirmReqVO) {
        //TODO 先从预约表取数据,后续对接数据平台查预约数据
        AppointmentDO appointment = appointmentService.getAppointment(confirmReqVO.getId());
        if (null == appointment)
            return error(PATIENT_NOT_EXISTS);
        if ( !DateUtils.isToday(appointment.getBookDate()) )
            return error( 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) {
            return success("您已经在排队中了");
        }
        return success("操作成功");
        appointmentService.appoitmentConfirm( confirmReqVO );
        return success("确认成功");
    }
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/appointment/vo/AppointmentConfirmReqVO.java
@@ -14,6 +14,10 @@
    private Integer id;
    @Schema(description = "门诊住院号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034")
    @NotEmpty(message = "门诊住院号不能为空")
    private String mzzyh;
    @Schema(description = "患者编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29034")
    //@NotEmpty(message = "患者编号不能为空")
    private String patId;
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/appointment/AppointmentDO.java
@@ -51,7 +51,7 @@
    /**
     * 患者生日
     */
    private LocalDateTime patBirthday;
    private LocalDate patBirthday;
    /**
     * 患者手机
     */
@@ -110,7 +110,7 @@
     */
    private Integer bookCheckType;
    /**
     * 预约来源:X系统、护士手动预约
     * 预约来源:0 ~~ X系统、1 ~~ 护士手动预约
     */
    private Integer bookSrc;
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/appointment/AppointmentMapper.java
@@ -21,6 +21,7 @@
public interface AppointmentMapper extends BaseMapperX<AppointmentDO> {
    default PageResult<AppointmentDO> selectPage(AppointmentPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<AppointmentDO>()
                .eqIfPresent(AppointmentDO::getPatId, reqVO.getPatId())
                .likeIfPresent(AppointmentDO::getPatName, reqVO.getPatName())
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/RemoteDataService.java
@@ -1,15 +1,14 @@
package cn.lihu.jh.module.ecg.feign;
import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@FeignClient(name = "remote-data-service", url = "${jinhua.url}")
public interface RemoteDataService {
    @PostMapping(value="/hai/HttpEntry/", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
    public RestApiResult<Object> httpApi( @RequestParam("service") String service,
    public RestApiResult<AppointmentExternal> httpApi( @RequestParam("service") String service,
                                          @RequestParam("urid") String urid,
                                          @RequestParam("pwd") String pwd,
                                          @RequestBody RestApiReqBodyVo bodyVo);
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/feign/dto/AppointmentExternal.java
@@ -2,6 +2,9 @@
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
public class AppointmentExternal {
    private String ReqIdeApplyno;
@@ -16,10 +19,10 @@
    private String AdmTypeCode;
    private String AdmTypeDesc;
    private String AdmStatus;
    private String AdmDate;
    private LocalDate AdmDate;
    private String PatName;
    private String Patgender;
    private String EncPatBirthDate;
    private LocalDate EncPatBirthDate;
    private String Age;
    private String Phone;
    private String Address;
@@ -32,7 +35,7 @@
    private String clinSymp;
    private String clinDiag;
    private String relevantDiag;
    private String ReqAuthoredOn;
    private LocalDateTime ReqAuthoredOn;
    private String ReqExtApplydeptCode;
    private String ReqExtApplydeptName;
    private String ReqExtExecdeptCode;
@@ -40,7 +43,7 @@
    private String ReqExtApplydocCode;
    private String ReqExtApplydocName;
    private String ReqExtMedhistory;
    private String ReqExtBooktime;
    private LocalDateTime ReqExtBooktime;
    private String ReqExtBookplace;
    private String ReqExtUrgent;
    private String ReqExtExamgoal;
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentService.java
@@ -4,6 +4,7 @@
import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
import cn.lihu.jh.framework.common.pojo.PageResult;
import cn.lihu.jh.framework.common.pojo.PageParam;
import cn.lihu.jh.module.ecg.feign.dto.AppointmentExternal;
import javax.validation.Valid;
@@ -60,4 +61,7 @@
     */
    PageResult<AppointmentDO> getAppointmentPage(AppointmentPageReqVO pageReqVO);
}
    AppointmentDO getAppointmentExtermal(String mzzyh);
    String appoitmentConfirm(AppointmentConfirmReqVO appointmentConfirmReqVO);
}
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImpl.java
@@ -1,6 +1,16 @@
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.enums.QueueStatusEnum;
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.*;
@@ -17,6 +27,8 @@
import java.util.Date;
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.framework.common.pojo.CommonResult.success;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
/**
@@ -29,6 +41,12 @@
public class AppointmentServiceImpl implements AppointmentService {
    @Resource
    private RemoteDataService remoteDataService;
    @Resource
    private QueueService queueService;
    @Resource
    private AppointmentMapper appointmentMapper;
    @Override
@@ -37,7 +55,7 @@
        AppointmentDO appointment = BeanUtils.toBean(createReqVO, AppointmentDO.class);
        appointment.setBookTime( LocalDateTime.now() );
        appointment.setBookSrc( 0 );
        appointment.setBookSrc( 1 );
        appointmentMapper.insert(appointment);
        // 返回
@@ -82,4 +100,112 @@
        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 = getAppointmentExtermal(confirmReqVO.getMzzyh());
        if (null == appointment ) {
            //从预约表取数据,后续对接数据平台查预约数据
            appointment = getAppointment(confirmReqVO.getId());
        }
        if (null == appointment)
            throw exception(PATIENT_NOT_EXISTS);
        if ( !DateUtils.isToday(appointment.getBookDate()) )
            throw exception( APPOINTMENT_NOT_TODAY);
        appointmentMapper.insert(appointment);
        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;
    }
}