package cn.lihu.jh.module.ecg.dal.dataobject.queue; import cn.lihu.jh.module.ecg.dal.dataobject.patient.PatDetails; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import lombok.*; import com.baomidou.mybatisplus.annotation.*; import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO; import java.time.LocalDate; import java.util.Date; import java.util.List; import java.util.Map; /** * 排队 DO * * @author 芋道源码 */ @TableName( value="queue", autoResultMap = true ) @KeySequence("queue_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class QueueDO extends BaseDO { /** * id */ @TableId private Integer id; /** * 预约申请号 */ private String applyNo; /** * 就诊流水号 */ private String episodeId; /** * 内部预约编号 */ private Long appointId; /** * 患者编号 */ private String patId; /** * 患者姓名 */ private String patName; /** * 患者性别 */ private Byte patGender; /** * 患者详情 */ @TableField(typeHandler = JacksonTypeHandler.class) private PatDetails patDetails; /** * 预约日期 */ private LocalDate bookDate; /** * 预约时间段 */ private Integer bookTimeslot; /** * 预约检查类型 */ private Integer bookCheckType; /** * 预约序号 */ private Integer bookSeqNum; /** * 是否VIP */ private Integer isVip; /** * 排队序号 */ private Integer seqNum; /** * 5:过号 10:排队中 15:已召回 20:候诊准备 30:就诊中 40:就诊完成 */ private Integer status; /** * 过号标记 */ private Byte passed; /** * 预约过期标记 */ private Byte expired; /** * 插队标记 */ private Byte jumpFlag; /** * 是否亲和项, 用于控制 亲和项的不叫号 */ private Integer affinityItem; /** * 诊室编号 */ private Long roomId; /** * 诊室名称 */ private String roomName; /** * 诊疗床编号 */ private String bedNo; @TableField(exist = false) private String tolerance; /** * 是否床边(0否 1是)—— 需求2。 *
* queue 表已有该列(见 _prep/22_add_seq_rule_and_bedside.sql), * 预约确认时由 appointment.is_bedside 带入;对已存在的队列行, * 也可由 {@code fillAppointmentInfo} 回查补填。 */ private String isBedside; /** * 以下字段来自预约单(appointment),queue 表中不存在, * 由 QueueServiceImpl#fillAppointmentInfo 在查询后按 applyNo 回查填充。 */ @TableField(exist = false) private LocalDate patBirthday; @TableField(exist = false) private Date registerDate; @TableField(exist = false) private String doctor; @TableField(exist = false) private Date doctorTime; // ==================== 需求1:患者信息 18 项所需的平铺字段 ==================== // 以下均来自 appointment,queue 表无对应列,由 fillAppointmentInfo 回填。 // 之所以"平铺"而不是让前端读 patDetails JSON: // 1) patDetails 是确认预约时写入的快照,可能滞后于 appointment 的最新值; // 2) 前端模板读 `row.patDetails?.xxx` 无法享受 TS 类型提示,易写错。 @TableField(exist = false) private Integer patSrc; @TableField(exist = false) private String patMobile; @TableField(exist = false) private String patPhone; @TableField(exist = false) private String patWardDesc; @TableField(exist = false) private String patBedNo; /** 就诊卡号(medical_card;库中多为空,前端自行回退到 outpatient_no) */ @TableField(exist = false) private String medicalCard; @TableField(exist = false) private String outpatientNo; @TableField(exist = false) private String patIdentityId; /** * 医嘱号(HIS 报文 observationRequest.id.item[root=2.16.156.10011.1.28].extension)。 * 与「申请单号 applyNo」不同:前者是医嘱标识,后者是申请单标识。该节点在规范中非必须项,库中可为空。 */ private String doctorAdviceNo; }