/**
  * 根据 疾病文章 id, 获取所属疾病的信息
  * @author gaoqing
  * @date 2016-04-01
  * @param int $articleid 疾病文章id
  * @return array 疾病文章所属疾病的信息
  */
 public function getDiseaseByArtid($articleid)
 {
     $disease = [];
     if ($this->isNotNull($articleid)) {
         //查询当前文章在 9939_article_disease_rel 中对应的 疾病id,$diseaseid
         $artDisRel = Relate::getArtDisRel($articleid);
         $diseaseid = 0;
         if (!empty($artDisRel)) {
             $diseaseid = $artDisRel[0]['diseaseid'];
         } else {
             return array();
         }
         $redisKey = 'disease_' . $diseaseid;
         $redis = \Yii::$app->redis;
         $disease = $redis->get($redisKey);
         if (isset($disease) && !empty($disease)) {
             return $disease;
         } else {
             //根据 $diseaseid 获取疾病的信息
             $disease = Disease::find()->where(['id' => $diseaseid])->asArray(true)->one();
             if (isset($disease) && !empty($disease)) {
                 $diseaseContent = DiseaseContent::find()->select('inspect')->where(['id' => $disease['id']])->asArray(true)->one();
                 if (isset($diseaseContent) && !empty($diseaseContent)) {
                     $disease = array_merge($disease, $diseaseContent);
                 }
                 $redis->set($redisKey, $disease, 15 * 24 * 60 * 60);
             }
             return $disease;
         }
     }
     return $disease;
 }
 /**
  * 根据疾病的拼音简写,得到疾病的信息
  * @author gaoqing
  * @date 2016-03-23
  * @param String $pyInitial 疾病的拼音简写
  * @param boolean $isRelDis 是否获取其 相关疾病
  * @param boolean $isRelSym 是否获取其 典型症状
  * @param boolean $isRelPart 是否获取其相关 部位
  * @param boolean $isRelDep 是否获取其 就诊科室
  * @return array 疾病的信息集
  */
 public function getDiseasesByPinyin($pyInitial, $isRelDis = false, $isRelSym = false, $isRelPart = false, $isRelDep = false)
 {
     $disease = [];
     //1、得到疾病的疾病信息
     $disease = $this->disease->getDiseasesByPinyin($pyInitial);
     if ($this->isNotNull($disease)) {
         $disease['chuanranxing'] = '无';
         if ($disease['chuanranflag'] == 1) {
             $disease['chuanranxing'] = '有';
         }
         //2、获取科室信息
         if ($isRelDep) {
             $treatDepNames = $this->explodeStr($disease['treat_department']);
             $disease['department'] = $this->department->getDepsByName($treatDepNames);
             $disease['medicine'] = $this->explodeStr($disease['medicine']);
         }
         //3、获取典型症状信息
         if ($isRelSym) {
             $typicalSymptomNames = $this->explodeStr($disease['typical_symptom']);
             $disease['tsymptom'] = $this->symptom->getSymptomsByName($typicalSymptomNames);
         }
         //4、得到疾病对应的所有部位
         if ($isRelPart) {
             $disease['part'] = Relate::getPartsByDisid($disease['id']);
         }
         //5、得到相关疾病
         if ($isRelDis) {
             $relDiseaseNames = $this->explodeStr($disease['rel_disease']);
             $values = Disease::search(['name' => $relDiseaseNames]);
             if ($this->isNotNull($values)) {
                 $disease['reldis'] = $values['list'];
             }
         }
     }
     return $disease;
 }
 /**
  * 症状首页可能疾病缓存数据
  * lc 2016-4-15
  * @param type $cacheKey 缓存的唯一标识
  * @param type $parms 单条症状所有字段内容数组
  * @param type $forceCache 是否强制缓存,默认不强制缓存
  * @return type
  */
 public static function cacheSymptomRelateDisease($cacheKey, $parms, $forceCache = false)
 {
     $symptomid = $parms['id'];
     $cache = \Yii::$app->cache_data_file;
     $key = $cacheKey . '_' . $symptomid;
     $data = $cache->get($key);
     if ($forceCache) {
         $data = false;
     }
     if (!isset($data) || empty($data)) {
         $relate = new Relate();
         $disease = new Disease();
         $department = new Department();
         $diseaseList = $relate->getRelateDiseases($symptomid);
         //根据关联表查询出疾病id,该症状对应的疾病下的所有疾病信息
         //            print_r($diseaseList);exit;
         if (!empty($diseaseList)) {
             $diseaseId = [];
             foreach ($diseaseList as $k => $v) {
                 $diseaseId[] = $v['diseaseid'];
             }
             $diseaseMap = $disease->batchGetDiseaseById($diseaseId);
             //该症状对应的疾病下的所有疾病信息
             $symptomMap = $relate->batchGetSymptomsByDisid($diseaseId);
             //该症状对应的疾病下对应的所有相关症状
             $diseaseIdStr = implode(',', $diseaseId);
             $departmentMap = $department->batchGetDepartmentsByDisid($diseaseIdStr);
             //该症状对应的疾病对应的所有科室
             //                print_r($departmentMap);exit;
             foreach ($symptomMap as $k => $v) {
                 $disId = $v['diseaseid'];
                 $symId = $v['symptomid'];
                 foreach ($diseaseMap as $kk => $vv) {
                     $pinyin = $vv['pinyin_initial'];
                     if ($vv['id'] == $disId) {
                         $tmp[$pinyin][] = $v;
                     }
                 }
             }
             $diseaseTmp['relDisease'] = $diseaseMap;
             $diseaseTmp['relSymptom'] = $tmp;
             $disTmp = ['diseaseMap' => $diseaseMap, 'symptomMap' => $symptomMap, 'departmentMap' => $departmentMap, 'diseaseTmp' => $diseaseTmp, 'diseaseId' => $diseaseId];
             $cache->set($key, $disTmp);
             return $disTmp;
         }
         return array();
     } else {
         return $data;
     }
 }
 /**
  * 缓存首页根据疾病查找的最新疾病资讯模块
  * lc@2016-7-8
  * @param type $cacheKey
  * @param type $parms
  * @return array
  */
 public static function cacheIndexTopNews($cacheKey, $parms)
 {
     $result = array();
     $newWords = $parms['newWords'];
     $rel_obj = new \common\models\Relate();
     /*方法2*/
     /**
      * 经测试方法2运行效率是方法1的5倍+
      */
     foreach ($newWords as $kk => $vv) {
         $diseaseid[] = $vv['id'];
     }
     $diseaseids = implode(',', $diseaseid);
     $ret = $rel_obj->getArticlesGroupBy($diseaseids);
     foreach ($ret as $k => $v) {
         $res[$v['tmp_diseaseid']] = $v;
     }
     foreach ($newWords as $kk => $vv) {
         if (isset($res[$vv['id']])) {
             $result[$kk] = $res[$vv['id']];
         }
     }
     return $result;
 }
Exemple #5
0
 /**
  * 根据疾病文章id, 得到疾病文章和疾病的相关信息
  * @author gaoqing
  * @date 2016-04-01
  * @param int $articleid 疾病文章id
  * @return array 疾病文章和疾病的相关信息
  */
 public static function getArtDisRel($articleid)
 {
     $artDisRel = [];
     $condition = ['articleid' => $articleid];
     Relate::$_sftablename = '9939_article_disease_rel';
     $artDisRels = Relate::search($condition, 0, 1);
     if (!empty($artDisRels['list'])) {
         $artDisRel = $artDisRels['list'];
     }
     return $artDisRel;
 }
Exemple #6
0
 /**
  * 右侧公共信息,跟疾病有关的
  * lc 2016-4-6
  * @param type $symptomid
  * @param array $filter  ['disease','relSymptom'] 筛选需要的数据 
  * @return type
  */
 public function getRightInfo($symptomid, $filter = [])
 {
     $cacheHelper = new CacheHelper();
     $filter = !empty($filter) ? $filter : ['disease', 'articles', 'doctorInfos', 'leftDoctor', 'medicalDepartment', 'relSymptom'];
     $model = [];
     $diseaseList = [];
     $parms = ['id' => $symptomid];
     $diseaseCache = $cacheHelper->getCache('frontend_symptom_index_knjb', $parms);
     if (in_array('medicalDepartment', $filter) || in_array('disease', $filter)) {
         if (!empty($diseaseCache)) {
             $model['disid'] = $diseaseCache['diseaseId'];
             //症状首页左侧可能疾病及伴随症状
             $model['disease'] = $diseaseCache['diseaseTmp'];
         }
     }
     //右侧就诊科室
     //        if (in_array('medicalDepartment', $filter)) {
     //            if (!empty($diseaseCache)) {
     //                //在取到的所有科室数据合并去重
     //                $medicalDepartment = [];
     //                foreach ($diseaseCache['departmentMap'] as $vv) {
     //                    $Tmp['medicalDepartmentTmp'][] = $vv['id'];
     //                    $Tmp['medicalDepartmentTmpName'][] = $vv['name'];
     //                    $Tmp['medicalDepartmentTmpPinyin'][] = $vv['pinyin'];
     //                }
     //                $medicalDepartment['id'] = array_unique($Tmp['medicalDepartmentTmp']);
     //                $medicalDepartment['name'] = array_unique($Tmp['medicalDepartmentTmpName']);
     //                $medicalDepartment['pinyin'] = array_unique($Tmp['medicalDepartmentTmpPinyin']);
     ////                print_r($medicalDepartment);exit;
     //                $model['medicalDepartment'] = $medicalDepartment;
     //                //科室拼音
     //                $model['departPinyin'] = $this->department->getDepartmentPinyin();
     //            }
     //        }
     //右侧相关症状
     if (in_array('relSymptom', $filter)) {
         $relateObj = new Relate();
         $model['relSymptom'] = $relateObj->getRelateSymptoms($symptomid);
     }
     //症状相关文章
     if (in_array('articles', $filter)) {
         $articleObj = new Article();
         $model['articles'] = [];
         $articles = $articleObj->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], 7, 0, 'id DESC');
         if (!empty($articles)) {
             $model['articles'] = $articles;
         } else {
             if (!empty($diseaseCache)) {
                 $diseaseId = $diseaseCache['diseaseId'];
                 $disease_ids = implode(',', $diseaseId);
                 $articles = $articleObj->listBySqlCondition($disease_ids, 7, 0);
                 $arts = [];
                 foreach ($articles as $k => $v) {
                     $date_path = date('Y/md', $v['inputtime']);
                     $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $v['id']);
                     $articleUrl = sprintf('%s/%s', Yii::getAlias('@jb_domain'), $article_path);
                     foreach ($v as $kk => $vv) {
                         $arts[$k][$kk] = $vv;
                         $arts[$k]['url'] = $articleUrl;
                     }
                 }
                 $model['articles'] = $arts;
             }
         }
     }
     //专家(左侧)
     if (in_array('doctorInfos', $filter)) {
         if (!empty($diseaseCache)) {
             //取所有相关疾病里第一个疾病id来查专家
             $diseaserandid = $diseaseCache['diseaseId']['0'];
             $doctors = $this->getDoctor($diseaserandid, 0, 6);
             //专家(右侧)
             $rightDoctor = array_slice($doctors, 3, 3);
             $model['doctorInfos'] = $rightDoctor;
             //在线咨询 左侧
             $leftDoctor = [['uid' => 1440561, 'nickname' => '陶丽萍', 'zhicheng' => '', 'best_dis' => '保健综合', 'pic' => '201601/1440561_avatar_middle.jpg'], ['uid' => 221102, 'nickname' => '王庆松', 'zhicheng' => '', 'best_dis' => '上呼吸道综合', 'pic' => '201601/221102_avatar_middle.jpg'], ['uid' => 831181, 'nickname' => '刘业生', 'zhicheng' => '', 'best_dis' => '常见病综合,呼吸道系统诊疗', 'pic' => '201604/831181_avatar_middle.jpg']];
             $model['leftDoctor'] = $leftDoctor;
         }
     }
     return $model;
 }