Files
xk-api-yii/admin/controllers/UserController.php

184 lines
10 KiB
PHP

<?php
namespace admin\controllers;
use admin\components\BaseAdminController;
use common\helpers\FuncHelper;
use common\models\oldDb\DoctorInfo;
use common\models\oldDb\Order;
use common\models\oldDb\Prescription;
use common\models\oldDb\Register;
use common\models\oldDb\User;
use common\models\oldDb\UserPatient;
use common\models\oldDb\UserPatientHealthInquiry;
use yii\db\Exception;
/**
* @doc-module 用户管理
*/
class UserController extends BaseAdminController
{
/**
* @doc-name 用户端用户列表
* @doc-param string nickname 昵称 / optional
* @doc-param string mobile 电话 / optional
* @doc-param int gender 性别 / optional
* @doc-param string idcard 身份证 / optional
* @doc-return mixed @List{User{id,nickname-string-昵称,mobile-string-电话,created_at-string-首次访问时间,gender-int-性别,值为1时是男性,值为2时是女性,值为0时是未知性别,idcard-string-身份证,age-int-年龄,@UserPatientHealthInquiry{liver_function-int-肝功能状态0正常1异常,liver_index-string-肝功能异常指标,renal_function-int-肾功能状态0正常1异常,renal_index-string-肾功能异常指标,person_status-int-既往史0无1有,person_history-string-既往史,allergic_status-int-过敏史0无1有,allergic_status-string-过敏史,,allergic_status-int-家族遗传史0无1有,allergic_status-string-家族遗传史},@UserInquiry{id-int-订单id,user_id-int-用户id,order_no-string-订单号,total_pay_price-float-支付金额,is_pay-int-知否支付0否1是,@Inquiry{images-string-检查报告或患者照片,is_visit-string-是否就诊0否1是,visit_desc-string-就诊描述,patient_data-string-就诊人基础信息,liver_function-int-肝功能0正常1异常,renal_function-string-肾功能0正常1异常,person_status-int-个人病史0无1有,person_history-string-个人病史,allergic_status-int-过敏史0无1有,allergic_history-int-过敏史0无1有,family_status-int-家庭病史0无1有,family_history-string-家庭病史}},@Prescription{id-int-id,platform_prescription_no-string-平台处方单号,prescription_no-string-处方单号,order_id-int-订单id,status-int-状态0待审核1已通过2未通过3待使用4已使用5未使用6已失效7已初审,content-string-处方快照,prescription_type-int-1中药处方2西药处方3颗粒药处方,category-int-类别 1自费2医保,doctor_order-string-医嘱,clinical_diagnose-string-临床诊断,,医生签名-string-医生签名,type-int-类型1普通方2常用方,order_type-int-订单类型1处方2医技,total_pay_price-float-支付金额,}} 用户列表
* @doc-return mixed @Pagination{total-int-总数量,totalPage-int-总页数,pageSize-int-每页条数} 分页数据
*/
public function actionList()
{
$get = \Yii::$app->request->get();
$query = User::find()->where([
'is_delete' => 0
]);
if (!empty($get['name'])) {//搜索姓名
$query->andWhere(['like', 'nickname', $get['name']]);
}
if (!empty($get['major_number'])) {//手机号
$query->andWhere(['mobile' => $get['major_number']]);
}
if (!empty($get['gender'])) {//性别
$query->andWhere(['gender' => $get['gender']]);
}
if (!empty($get['idcard'])) {//身份证
$query->andWhere(['idcard' => $get['idcard']]);
}
$this->field = [
User::class => [
'id', 'nickname', 'mobile', 'gender', 'idcard', 'created_at' => function ($model) {
return date('Y-m-d H:i:s', $model->created_at);
},
'age' => function ($model) {
return $model->idcard ? FuncHelper::getAgeFromIdNo($model->idcard) : '';
},
'UserPatientHealthInquiry' => function ($m) {
$UserPatient = UserPatient::find()->select('id')->where([
'user_id' => $m->id,
'relation' => 0
])->column();
return UserPatientHealthInquiry::find()->where([
'user_patient_id' => $UserPatient,
'is_delete' => 0
])->one();
},
'UserInquiry' => function ($i) {
return Order::find()->where([
'user_id' => $i->id,
])->with(['inquiry'])->asArray()->all();
},
'Prescription' => function ($p) {
return Prescription::find()->where([
'user_id' => $p->id,
'is_deleted' => 0
])->all();
},
'register'=>function($r){
return Register::find()->where([
'user_id'=>$r->id
])->all();
}
]
];
return $this->create($query, $get);
}
/**
* @doc-name 用户端用户详情
* @doc-param int id ID
* @doc-return mixed @User{id,nickname-string-昵称,mobile-string-电话,created_at-string-首次访问时间,gender-int-性别,值为1时是男性,值为2时是女性,值为0时是未知性别,idcard-string-身份证,age-int-年龄} 用户信息
* @doc-return mixed @UserPatientHealthInquiry{liver_function-int-肝功能状态0正常1异常,liver_index-string-肝功能异常指标,renal_function-int-肾功能状态0正常1异常,renal_index-string-肾功能异常指标,person_status-int-既往史0无1有,person_history-string-既往史,allergic_status-int-过敏史0无1有,allergic_status-string-过敏史,,allergic_status-int-家族遗传史0无1有,allergic_status-string-家族遗传史} 基本健康信息
* @doc-return mixed @UserInquiry{id-int-订单id,user_id-int-用户id,order_no-string-订单号,total_pay_price-float-支付金额,is_pay-int-知否支付0否1是,@Inquiry{images-string-检查报告或患者照片,is_visit-string-是否就诊0否1是,visit_desc-string-就诊描述,patient_data-string-就诊人基础信息,liver_function-int-肝功能0正常1异常,renal_function-string-肾功能0正常1异常,person_status-int-个人病史0无1有,person_history-string-个人病史,allergic_status-int-过敏史0无1有,allergic_history-int-过敏史0无1有,family_status-int-家庭病史0无1有,family_history-string-家庭病史}} 问诊记录
* @doc-return mixed @Prescription{id-int-id,platform_prescription_no-string-平台处方单号,prescription_no-string-处方单号,order_id-int-订单id,status-int-状态0待审核1已通过2未通过3待使用4已使用5未使用6已失效7已初审,content-string-处方快照,prescription_type-int-1中药处方2西药处方3颗粒药处方,category-int-类别 1自费2医保,doctor_order-string-医嘱,clinical_diagnose-string-临床诊断,,医生签名-string-医生签名,type-int-类型1普通方2常用方,order_type-int-订单类型1处方2医技,total_pay_price-float-支付金额} 处方记录
*/
public function actionInfo()
{
$get = \Yii::$app->request->get();
$this->requestValidate($get, [
['id', 'required']
]);
$User = User::find()->where([
'id' => $get['id'],
'is_delete' => 0
])->with(['userPatient' => function ($u) {
$u->where(['relation' => 0]);
}])->asArray()->one();
$UserPatientId = $User['userPatient'][0]['id'];
if (!$User) throw new Exception('用户不存在');
$UserPatientHealthInquiry = UserPatientHealthInquiry::find()->where([
'user_patient_id' => $UserPatientId,
'is_delete' => 0
])->one();
$UserInquiry = Order::find()->where([
'user_id' => $get['id'],
])->with(['inquiry'])->asArray()->all();
$Prescription = Prescription::find()->where([
'user_id' => $get['id'],
'is_deleted' => 0
])->all();
$register=Register::find()->where([
'user_id'=>$get['id'],
])->all();
return [
'User' => $User,
'UserPatientHealthInquiry' => $UserPatientHealthInquiry,
'UserInquiry' => $UserInquiry,
'Prescription' => $Prescription,
'register' => $register,
];
}
public function actionPatientList(){
$get = \Yii::$app->request->get();
$this->requestValidate($get, [
['id', 'required']
]);
$user = User::find()->where([
'id' => $get['id'],
'is_delete' => 0
])->asArray()->one();
if (!$user) throw new Exception('用户不存在');
$userPatient = UserPatient::find()->select('id,name')->where(['user_id' => $get['id'],'is_delete' => 0])->orderBy('is_default desc,created_at asc')->all();
return $userPatient;
}
public function actionPatientInfo(){
$get = \Yii::$app->request->get();
$this->requestValidate($get, [
['patient_id', 'required']
]);
$userPatient = UserPatient::find()->where(['id' => $get['patient_id'],'is_delete' => 0])->one();
if(!$userPatient){
throw new Exception('就诊人不存在');
}
$UserPatientHealthInquiry = UserPatientHealthInquiry::find()->where([
'user_patient_id' => $get['patient_id'],
'is_delete' => 0
])->one();
return [
'info' => $userPatient,
'healthInquiry' => $UserPatientHealthInquiry
];
}
public function actionPatientPrescriptionList(){
$get = \Yii::$app->request->get();
$this->requestValidate($get, [
['patient_id', 'required']
]);
$userPatient = UserPatient::find()->where(['id' => $get['patient_id'],'is_delete' => 0])->one();
if(!$userPatient){
throw new Exception('就诊人不存在');
}
$prescriptionList = Prescription::find()->select(['id','su_id','clinical_diagnose','prescription_no','created_at'])->where(['up_id' => $get['patient_id'],'is_deleted' => 0,'cancel_status' => 0])->orderBy('created_at desc')->asArray()->all();
foreach($prescriptionList as &$v){
$v['created_at'] = date('Y年m月d日 H:i',$v['created_at']);
$v['doctor_name'] = DoctorInfo::find()->where(['su_id' => $v['su_id']])->select('name')->scalar();
}
return $prescriptionList;
}
}