HasMany(OrderPrescriptionIcd::class, 'order_prescription_id','order_prescription_id'); } /** * 关联处方商品表 */ public function OrderPrescriptionProduct(): HasMany { return $this->HasMany(OrderPrescriptionProduct::class, 'order_prescription_id','order_prescription_id'); } /** * 关联医生表 */ public function UserDoctor(): HasOne { return $this->hasOne(UserDoctor::class, 'doctor_id','doctor_id'); } /** * 获取信息-单条 * @param array $params * @param array $fields * @return object|null */ public static function getOne(array $params, array $fields = ['*']): object|null { return self::where($params)->first($fields); } /** * 获取数据-多 * @param array $params * @param array $fields * @return Builder[]|Collection */ public static function getList(array $params = [], array $fields = ['*']): Collection|array { return self::where($params)->get($fields); } /** * 获取是否存在 * @param array $params * @return bool */ public static function getExists(array $params): bool { return self::where($params)->exists(); } /** * 获取处方列表-分页 * @param array $params 条件 * @param array $fields 字段 * @param int|null $page 页码 * @param int|null $per_page 每页个数 * @return array */ public static function getPage(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): array { $raw = self::where($params)->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $raw->currentPage();// 当前页码 $data['total'] = $raw->total();//数据总数 $data['data'] = $raw->items();//数据 $data['per_page'] = $raw->perPage();//每页个数 $data['last_page'] = $raw->lastPage();//最后一页 return $data; } /** * 获取处方列表-分页 * @param array $params 条件 * @param array $fields 字段 * @param int|null $page 页码 * @param int|null $per_page 每页个数 * @return array */ public static function getWithIcdPage(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): array { $raw = self::with([ 'OrderPrescriptionIcd' ]) ->where($params) ->orderBy('created_at','desc') ->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $raw->currentPage();// 当前页码 $data['total'] = $raw->total();//数据总数 $data['data'] = $raw->items();//数据 $data['per_page'] = $raw->perPage();//每页个数 $data['last_page'] = $raw->lastPage();//最后一页 return $data; } /** * 修改 * @param array $params * @param array $data * @return int */ public static function edit(array $params = [], array $data = []): int { return self::where($params)->update($data); } /** * 新增 * @param array $data * @return \Hyperf\Database\Model\Model|OrderPrescription */ public static function addOrderPrescription(array $data): \Hyperf\Database\Model\Model|OrderPrescription { return self::create($data); } /** * 获取数量 * @param array $params * @return int */ public static function getCount(array $params): int { return self::where($params)->count(); } /** * 分页 * 处方疾病表 * 处方商品表 * @param array $params * @param array $fields * @param int|null $page * @param int|null $per_page * @return array */ public static function getWithPage(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): array { $raw = self::with([ "UserDoctor:doctor_id,user_name,doctor_title", "OrderPrescriptionIcd:prescription_icd_id,order_prescription_id,icd_name", "OrderPrescriptionProduct:prescription_product_id,order_prescription_id,product_name,product_spec" ]) ->where($params) ->orderBy("created_at",'desc') ->paginate($per_page, $fields, "page", $page); $data = array(); $data['current_page'] = $raw->currentPage();// 当前页码 $data['total'] = $raw->total();//数据总数 $data['data'] = $raw->items();//数据 $data['per_page'] = $raw->perPage();//每页个数 $data['last_page'] = $raw->lastPage();//最后一页 return $data; } /** * 单条 * 处方疾病表 * 处方商品表 * @param array $params * @param array $fields * @param int|null $page * @param int|null $per_page * @return object|null */ public static function getWithOne(array $params, array $fields = ["*"], int $page = null, ?int $per_page = 10): object|null { return self::with([ "UserDoctor:doctor_id,user_name,doctor_title", "OrderPrescriptionIcd:prescription_icd_id,order_prescription_id,icd_name", "OrderPrescriptionProduct:prescription_product_id,order_prescription_id,product_name,product_spec" ]) ->where($params)->first($fields); } /** * 获取某种状态的处方订单总数 * @param array $params * @param array $prescription_status_params * @return int */ public static function getStatusCount(array $params, array $prescription_status_params): int { return self::where($params)->whereIn("prescription_status", $prescription_status_params)->count(); } /** * 获取某种状态的处方订单-限制条数 * @param array $params * @param array $prescription_status_params * @param array $fields * @param int $offset 起始 * @param int $limit 个数 * @return Collection|array */ public static function getStatusLimit(array $params, array $prescription_status_params, array $fields = ["*"],int $offset = 0,int $limit = 10): Collection|array { return self::where($params) ->whereIn('prescription_status', $prescription_status_params) ->offset($offset) ->limit($limit) ->get($fields); } /** * 获取某种状态的处方订单 * @param array $params * @param array $prescription_status_params * @param array $fields * @return object|null */ public static function getStatusList(array $params, array $prescription_status_params, array $fields = ["*"]): object|null { return self::where($params) ->whereIn('prescription_status', $prescription_status_params) ->get($fields); } /** * 获取某种状态的处方订单-单条 * @param array $params * @param array $prescription_status_params * @param array $fields * @return object|null */ public static function getStatusOne(array $params, array $prescription_status_params, array $fields = ["*"]): object|null { return self::where($params) ->whereIn('prescription_status', $prescription_status_params) ->first($fields); } }