0], ['up_id', 'integer'], [['name', 'id_card', 'age', 'sex', 'relation', 'mobile'], 'required'], [['is_default'], 'default', 'value' => 0], ['mobile', 'match', 'pattern' => '/^\d{11}$/i'], // ['id_card', 'match', 'pattern' => '/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/i'], // ['id_card','checkCard'], [['family_status', 'allergic_status', 'person_status', 'liver_function', 'renal_function'], 'default', 'value' => 0], [['family_history', 'allergic_history', 'person_history', 'liver_index', 'renal_index'], 'default', 'value' => ''], ['family_history', 'required', 'when' => function ($model) { return $model->family_status == 1; }], ['allergic_history', 'required', 'when' => function ($model) { return $model->allergic_status ==1; }], ['person_history', 'required', 'when' => function ($model) { return $model->person_status == 1; }], // ['liver_index', 'required', 'when' => function ($model) { // return $model->liver_function == 1; // }], // ['renal_index', 'required', 'when' => function ($model) { // return $model->renal_function == 1; // }], ]; } // public function checkUnique($attribute, $params) // { // $exist = UserPatient::find()->where([ // 'user_id' => \Yii::$app->user->id, // 'is_delete' => 0 // ])->andWhere(['<>', 'id', $this->id])->andWhere([ // 'or', // ['name' => $this->name], // ['id_card' => $this->id_card], // ])->one(); // if ($exist) { // $this->addError($attribute, '就诊人姓名或身份证已存在'); // } // // if ($this->relation == 0) { // $exist = UserPatient::find()->where([ // 'user_id' => \Yii::$app->user->id, // 'is_delete' => 0 // ])->andWhere(['<>', 'id', $this->id])->andWhere([ // 'relation' => $this->relation,//本人 // ])->one(); // if ($exist) { // $this->addError($attribute, '本人的信息已存在,请选择其他关系'); // } // } // } public function checkCard($attribute, $params) { // $response = (new Client(['http_errors' => false]))->post("https://eid.shumaidata.com/eid/check", [ // 'headers' => ['Authorization' => "APPCODE f98bba3251714c759f5bd29d00e1c46e"], // 'query' => [ // 'idcard' => $this->id_card, // 'name' => $this->name // ], // ]); // $result = json_decode($response->getBody(), true); // if (!($result['code'] == 0 && $result['result']['res'] == 1)) { // $this->addError($attribute, '身份证名字不匹配'); // } } public function attributeLabels() { return [ 'name' => '姓名', 'id_card' => '身份证号', 'age' => '年龄', 'sex' => '性别', 'relation' => '与本人关系', 'mobile' => '手机号', 'liver_function' => '肝功能', 'renal_function' => '肾功能', 'allergic_history' => '过敏史', 'person_history' => '个人病史', 'family_history' => '家庭病史', ]; } public function save() { if (!$this->validate()) { throw new Exception($this->getErrorMsg()); } $user_id = \Yii::$app->user->identity->id; $isSave = false; //修改 if ($this->id) { $patient = UserPatient::findOne([ 'id' => $this->id, 'user_id' => \Yii::$app->user->identity->id, 'is_delete' => 0 ]); if (!$patient) { throw new Exception('就诊人不存在'); } $isSave = true; $idCard = $patient->id_card; } else {//新增 $patient = new UserPatient(); } $t = \Yii::$app->db->beginTransaction(); try { if ($this->is_default) { UserPatient::updateAll(['is_default' => 0], ['user_id' => $user_id]); } $patient->user_id = \Yii::$app->user->id; $patient->attributes = $this->attributes; if ($isSave) { $patient->id_card = $idCard; } $patient->saveOrFail(); $UserPatientHealthInquiry = UserPatientHealthInquiry::find()->where([ 'user_patient_id' => $patient->id, 'is_delete' => 0 ])->one(); if (!$UserPatientHealthInquiry) {//新增 $UserPatientHealthInquiry = new UserPatientHealthInquiry(); } $UserPatientHealthInquiry->user_patient_id = $patient->attributes['id']; $UserPatientHealthInquiry->family_status = $this->family_status; $UserPatientHealthInquiry->allergic_status = $this->allergic_status; $UserPatientHealthInquiry->person_status = $this->person_status; $UserPatientHealthInquiry->liver_function = $this->liver_function; $UserPatientHealthInquiry->renal_function = $this->renal_function; $UserPatientHealthInquiry->family_history = $this->family_history; $UserPatientHealthInquiry->allergic_history = $this->allergic_history; $UserPatientHealthInquiry->person_history = $this->person_history; $UserPatientHealthInquiry->liver_index = $this->liver_index; $UserPatientHealthInquiry->renal_index = $this->renal_index; $UserPatientHealthInquiry->saveOrFail(); // $params = [ // 'user_id' => \Yii::$app->user->id, // 'avatar' => '', // 'name' => $this->name, // 'id_card' => $this->id_card, // 'age' => $this->age, // 'sex' => $this->sex, // 'relation' => $this->relation, // 'mobile' => $this->mobile, // 'is_default' => $this->is_default, // 'is_delete' =>0, // 'userPatientHealthInquiry'=>json_encode($UserPatientHealthInquiry,true), // 'user_patient_id' => $patient->id, // 'family_status' => $this->family_status, // 'allergic_status' => $this->allergic_status, // 'person_status' => $this->person_status, // 'liver_function' => $this->liver_function, // 'renal_function' => $this->renal_function, // 'family_history' => $this->family_history, // 'allergic_history' => $this->allergic_history, // 'person_history' => $this->person_history, // 'liver_index' => $this->liver_index, // 'renal_index' => $this->renal_index, // ]; // $curl = new Curl(); // $url = 'http://hy.api.ctkj88.com/platform/v1/sync/patient'; // $response = $curl->setPostParams($params) // ->setHeaders([ // 'multipart/form-data' => 'application/json', // 'Authorization' => 'Bearer 1234567890', // ])->post($url); // // $response=json_decode($response,true); // if ($response['errcode']==-1){ // return [$response['msg']]; // } $t->commit(); return ['添加或编辑成功']; } catch (\Exception $e) { $t->rollBack(); throw new Exception($e->getMessage()); } } public function del() { $user_id = \Yii::$app->user->identity->getId(); $patient = UserPatient::findOne([ 'id' => $this->id, 'user_id' => $user_id, 'is_delete' => 0 ]); if (!$patient) { throw new Exception('就诊人不存在'); } // $curl = new Curl(); // $params = [ // 'user_id'=>$user_id, // 'id_card'=>$patient['id_card'], // ]; // $response = (new Client(['http_errors' => false]))->post("https://hy.api.ctkj88.com/platform/v1/sync/patient-delete", [ // 'headers' => ['Authorization' =>"Bearer 1234567890"], // 'form_params' => [ // 'user_id'=>$user_id, // 'id_card'=>$patient['id_card'], // ], // ]); // $result = json_decode($response->getBody(),true); // if ($result['errcode'] == -1) { // throw new Exception($result['msg']); // } //删除萧康就诊人 $patient->delete(); } //切换就诊人 public function change() { $patient = UserPatient::findOne([ 'id' => $this->up_id, 'user_id' => \Yii::$app->user->id, 'is_delete' => 0 ]); if (!$patient) { throw new Exception('就诊人不存在'); }else{ UserPatient::updateAll(['is_default'=>0], ['user_id' => \Yii::$app->user->id, 'is_delete' => 0]); } UserPatient::updateAll(['is_default'=>1], ['id' => $this->up_id,'user_id' => \Yii::$app->user->id, 'is_delete' => 0]); return ['切换成功']; } }