*/ public const CLOSED_STATE_TEXT_MAP = [ self::CLOSED_OPEN => '进行中', self::CLOSED_BOOKED => '已挂号', self::CLOSED_VISITED => '已面诊', self::CLOSED_MANUAL => '人工关闭', self::CLOSED_INVALID => '失效', ]; /** 用药起算来源:无 */ public const ANCHOR_NONE = 0; /** 用药起算来源:物流签收 */ public const ANCHOR_SIGN = 1; /** 用药起算来源:人工发货日志 */ public const ANCHOR_SHIP = 2; /** 用药起算来源:下单时间 */ public const ANCHOR_CREATE = 3; /** @var array */ public const ANCHOR_SRC_TEXT_MAP = [ self::ANCHOR_NONE => '', self::ANCHOR_SIGN => '签收起', self::ANCHOR_SHIP => '发货起', self::ANCHOR_CREATE => '下单起', ]; /** 天数来源:缺失(或配置兜底) */ public const DAYS_SRC_NONE = 0; /** 天数来源:订单 medication_days */ public const DAYS_SRC_ORDER = 1; /** 天数来源:处方 usage_days */ public const DAYS_SRC_RX = 2; /** @var array */ public const DAYS_SRC_TEXT_MAP = [ self::DAYS_SRC_NONE => '缺开药天数', self::DAYS_SRC_ORDER => '订单', self::DAYS_SRC_RX => '处方', ]; /** 锚点订单之后最新有效挂号状态:无 */ public const APPT_NONE = 0; /** 已约(doctor_appointment.status=1) */ public const APPT_BOOKED = 1; /** 已面诊(status=3) */ public const APPT_VISITED = 3; /** 已过号(status=4) */ public const APPT_MISSED = 4; /** @var array */ public const APPOINTMENT_STATE_TEXT_MAP = [ self::APPT_NONE => '未挂号', self::APPT_BOOKED => '已约', self::APPT_VISITED => '已面诊', self::APPT_MISSED => '已过号', ]; /** * @notes 周期状态文本 */ public function getClosedStateTextAttr($value, $data): string { $v = (int) ($data['closed_state'] ?? 0); return self::CLOSED_STATE_TEXT_MAP[$v] ?? '未知'; } /** * @notes 用药起算来源文本 */ public function getAnchorSrcTextAttr($value, $data): string { $v = (int) ($data['anchor_src'] ?? 0); return self::ANCHOR_SRC_TEXT_MAP[$v] ?? ''; } /** * @notes 开药天数来源文本 */ public function getDaysSrcTextAttr($value, $data): string { $v = (int) ($data['days_src'] ?? 0); return self::DAYS_SRC_TEXT_MAP[$v] ?? ''; } /** * @notes 挂号事实状态文本 */ public function getAppointmentStateTextAttr($value, $data): string { $v = (int) ($data['appointment_state'] ?? 0); return self::APPOINTMENT_STATE_TEXT_MAP[$v] ?? '未知'; } /** * @notes 最近重算时间格式化(Y-m-d H:i) */ public function getComputedAtTextAttr($value, $data): string { $ts = (int) ($data['computed_at'] ?? 0); return $ts > 0 ? date('Y-m-d H:i', $ts) : ''; } /** * @notes 下次提醒时间格式化(Y-m-d H:i) */ public function getNextRemindAtTextAttr($value, $data): string { $ts = (int) ($data['next_remind_at'] ?? 0); return $ts > 0 ? date('Y-m-d H:i', $ts) : ''; } /** * @notes 用药起算日(Y-m-d) */ public function getAnchorDateAttr($value, $data): string { $ts = (int) ($data['anchor_ts'] ?? 0); return $ts > 0 ? date('Y-m-d', $ts) : ''; } }