160 lines
3.9 KiB
PHP
Executable File
160 lines
3.9 KiB
PHP
Executable File
<?php
|
||
|
||
namespace app\adminapi\validate\doctor;
|
||
|
||
use app\common\validate\BaseValidate;
|
||
|
||
/**
|
||
* 医生预约验证器
|
||
* Class AppointmentValidate
|
||
* @package app\adminapi\validate\doctor
|
||
*/
|
||
class AppointmentValidate extends BaseValidate
|
||
{
|
||
/**
|
||
* 设置校验规则
|
||
* @var string[]
|
||
*/
|
||
protected $rule = [
|
||
'id' => 'require',
|
||
'patient_id' => 'require|integer',
|
||
'doctor_id' => 'require|integer',
|
||
'diagnosis_id' => 'require|integer',
|
||
'appointment_date' => 'require|date',
|
||
'appointment_time' => 'require',
|
||
'period' => 'in:morning,afternoon,all',
|
||
'appointment_type' => 'require|in:video,text,phone',
|
||
'status' => 'require|integer|between:1,4',
|
||
'remark' => 'max:500',
|
||
'channel_source' => 'require',
|
||
'channel_source_detail' => 'max:128',
|
||
'ids' => 'require|array',
|
||
'note_id' => 'require|integer',
|
||
'image_type' => 'require|in:tongue_images,report_files',
|
||
'image_path' => 'require',
|
||
];
|
||
|
||
/**
|
||
* 参数描述
|
||
* @var string[]
|
||
*/
|
||
protected $field = [
|
||
'id' => '预约ID',
|
||
'patient_id' => '患者ID',
|
||
'doctor_id' => '医生ID',
|
||
'diagnosis_id' => '诊单ID',
|
||
'appointment_date' => '预约日期',
|
||
'appointment_time' => '预约时间',
|
||
'period' => '时段',
|
||
'appointment_type' => '预约类型',
|
||
'status' => '状态',
|
||
'remark' => '备注',
|
||
'assistant_id' => '医助',
|
||
'channel_source' => '渠道来源',
|
||
'channel_source_detail' => '渠道补充说明',
|
||
'ids' => '预约ID列表',
|
||
];
|
||
|
||
/**
|
||
* @notes 创建预约场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneCreate()
|
||
{
|
||
return $this->only(['patient_id', 'doctor_id', 'appointment_date', 'period', 'appointment_time', 'appointment_type', 'channel_source', 'channel_source_detail']);
|
||
}
|
||
|
||
/**
|
||
* @notes 取消预约场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneCancel()
|
||
{
|
||
return $this->only(['id']);
|
||
}
|
||
|
||
/**
|
||
* @notes 预约详情场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneDetail()
|
||
{
|
||
return $this->only(['id']);
|
||
}
|
||
|
||
/**
|
||
* @notes 可用时间段场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneAvailableSlots()
|
||
{
|
||
return $this->only(['doctor_id', 'appointment_date', 'period']);
|
||
}
|
||
|
||
/**
|
||
* @notes 完成预约场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneComplete()
|
||
{
|
||
return $this->only(['id']);
|
||
}
|
||
|
||
/**
|
||
* @notes 接诊台聚合详情场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneReception()
|
||
{
|
||
return $this->only(['id']);
|
||
}
|
||
|
||
/**
|
||
* @notes 通知接诊医助场景
|
||
* @return AppointmentValidate
|
||
*/
|
||
public function sceneNotifyAssistant()
|
||
{
|
||
return $this->only(['id']);
|
||
}
|
||
|
||
public function sceneAddDoctorNote()
|
||
{
|
||
return $this->only(['diagnosis_id']);
|
||
}
|
||
|
||
public function sceneDoctorNotes()
|
||
{
|
||
return $this->only(['diagnosis_id']);
|
||
}
|
||
|
||
public function sceneDeleteDoctorNoteImage()
|
||
{
|
||
return $this->only(['note_id', 'image_type', 'image_path']);
|
||
}
|
||
|
||
/**
|
||
* 后台挂号编辑(消费者处方-挂号列表等)
|
||
*/
|
||
public function sceneAdminEdit()
|
||
{
|
||
return $this->only([
|
||
'id',
|
||
'appointment_date',
|
||
'appointment_time',
|
||
'period',
|
||
'appointment_type',
|
||
'status',
|
||
'remark',
|
||
'channel_source',
|
||
'channel_source_detail',
|
||
]);
|
||
}
|
||
|
||
/** 批量修改挂号渠道(权限同 doctor.appointment/edit) */
|
||
public function sceneBatchEditChannel()
|
||
{
|
||
return $this->only(['ids', 'channel_source', 'channel_source_detail']);
|
||
}
|
||
}
|