public function showHealthDiary($request, $response)
    {/*{{{*/
        $refId = $request->refid;
        //$refId = 681514538;
        $doctorPatientRef = DAL::get()->find('DoctorPatientRef', $refId);
        $response->userCurrentMedicineSchemeList = MedicineClient::getInstance()->getUserCurrentMedicineScheme($doctorPatientRef->user->id); 
        $response->eventList = MedicineClient::getInstance()->getEventListByUserId($doctorPatientRef->user->id, 2);
        $response->eventTotalCount = MedicineClient::getInstance()->getEventTotalCountByUserId($doctorPatientRef->user->id);

        $response->earliestDiary = HealthDiaryClient::getInstance()->getEarliestDoTimeDiary($doctorPatientRef->user->id);
        $response->diaryTotalCount = HealthDiaryClient::getInstance()->getHealthDiaryTotalCountByUserId($doctorPatientRef->user->id, array('type'=>HealthDiary::TYPE_NORMAL));

        $response->followupOwner = $doctorPatientRef->user->getFollowupPatientSignin($doctorPatientRef->space->id);
        $response->chartLabelList = HealthRecordProblem::getChartLabelList($doctorPatientRef->user);
    }/*}}}*/
    private function _healthdiary_chart($request, $response)
    {/*{{{*/
        $chartM = XDateTime::today()->getMonth(); 
        $chartY = XDateTime::today()->getYear();
        if ($request->chartm != null) 
        {
            $chartM = $request->chartm; 
        } 
        if($request->charty != null)
        {
            $chartY = $request->charty;
        }
        $response->chartM = $chartM;
        $response->chartY = $chartY;

        $userId = $request->userid;
        $user = DAL::get()->find('User', $userId);
        $chartLabelList = HealthRecordProblem::getChartLabelList($user);
        $response->chartLabelList = $chartLabelList;
        $firstAnswer = new NullEntity();
        $selectedChartLabel = $request->selectedchartlabel;
        if(null == $selectedChartLabel)
        {
            if($this->isPci($user))
            {
                $selectedChartLabel = 'bloodpressure';
            }
            elseif($this->isCrohn($user))
            {
                $selectedChartLabel = 'shit';
            }
            else
            {
                $selectedChartLabel = 'bloodpressure'; //heartrate,跟进柳晓秋的需求,将心率图表显示并入血压
            }
        }
        $response->selectedChartLabel = $selectedChartLabel;

        //图表显示日然月信息逻辑
        $chartDateStart = XDateTime::valueOf($chartY."-".$chartM."-01");
        if($chartM > 11)
        {
            $chartDateEnd = XDateTime::valueOf(($chartY+1)."-01-01");
        }else
        {
            $chartDateEnd = XDateTime::valueOf($chartY."-".($chartM+1)."-01");
        }
        $lastTime = $chartDateEnd->addDay(-1);
        $today = $lastTime->getDay();
        
        $xStr = '';
        for($i = $chartDateStart; $i < $chartDateEnd; $i = $i->addDay(1))
        {
            $xStr .= ','.$i->getDay();
        }
        $xStr = substr($xStr, 1);
        
        
        $chartDateStartStr = $chartY.'年'.$chartM.'月';
        $chartDateStr = $chartY.'年'.$chartM.'月';
        $response->lastTime = $lastTime;
        $response->today = $today;
        $response->startTime = $chartDateStart;
        $response->chartDateStartStr = $chartDateStartStr;  
        $response->chartDateStr = $chartDateStr;
        $response->xStr = $xStr;
        
        $patientSignin = $user->getFollowupPatientSignin();
        if('bloodpressure' == $selectedChartLabel)
        {/*{{{*/
            $patientQuestionSheetRef = DAL::get()->find_by_patientid('patientquestionsheetref', $patientSignin->patient->id);
            $questionSheet = $patientQuestionSheetRef->questionSheet;

            $highBloodPressureStr = HealthRecordClient::getInstance()->getPatientAnswerAvgStr4Chart($patientSignin->patient->id, array('高压', '组合高压'), $chartY, $chartM);
            $lowBloodPressureStr = HealthRecordClient::getInstance()->getPatientAnswerAvgStr4Chart($patientSignin->patient->id, array('低压', '组合低压'), $chartY, $chartM);
            $heartrateProblemStr = HealthRecordClient::getInstance()->getPatientAnswerAvgStr4Chart($patientSignin->patient->id, array('心率','组合心率'), $chartY, $chartM);

            $response->highBloodPressureStr = $highBloodPressureStr;
            $response->lowBloodPressureStr = $lowBloodPressureStr;
            $response->heartrateProblemStr = $heartrateProblemStr;
            $response->hasData = true;
            $response->chartUnit = "mmHg 或 次/分";
            $response->chartTitle = "血压心率";
            
            //TODO by sjp
            //因为性能问题,暂时没有去获取 $firstAnswer
            
        }/*}}}*/
        elseif('shit' == $selectedChartLabel)
        {/*{{{*/
            $pinkShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle(HealthRecordProblem::PINKSHIT_TITLE);
            $blackShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle(HealthRecordProblem::BLACKSHIT_TITLE);
            $yellowShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle(HealthRecordProblem::YELLOWSHIT_TITLE);
            $redShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle(HealthRecordProblem::REDSHIT_TITLE);
            $whiteShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle(HealthRecordProblem::WHITESHIT_TITLE);
            $pinkShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $pinkShitProblem->id, $chartY, $chartM);
            $blackShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $blackShitProblem->id, $chartY, $chartM);
            $yellowShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $yellowShitProblem->id, $chartY, $chartM);
            $redShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $redShitProblem->id, $chartY, $chartM);
            $whiteShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $whiteShitProblem->id, $chartY, $chartM);
            $answerArr = array_merge($pinkShitProblemAnswerArr,$blackShitProblemAnswerArr,$yellowShitProblemAnswerArr,$redShitProblemAnswerArr,$whiteShitProblemAnswerArr);
            $response->hasData = $this->hasData($answerArr);
            $response->pinkShitStr = $this->getAnswerDatasStr4Chart($pinkShitProblemAnswerArr);
            $response->blackShitStr = $this->getAnswerDatasStr4Chart($blackShitProblemAnswerArr);
            $response->yellowShitStr = $this->getAnswerDatasStr4Chart($yellowShitProblemAnswerArr);
            $response->redShitStr = $this->getAnswerDatasStr4Chart($redShitProblemAnswerArr);
            $response->whiteShitStr = $this->getAnswerDatasStr4Chart($whiteShitProblemAnswerArr);
            $response->yellowShitProblemAnswerArr = $yellowShitProblemAnswerArr;
            //$firstAnswer = HealthRecordClient::getInstance()->getUserFirstAnswer($user->id, $timesProblem->id);
            
            $response->chartUnit = "次";
            $response->chartTitle = '大便';
            $response->dayCnt = count($yellowShitProblemAnswerArr);
        }/*}}}*/
        elseif('shittotal' == $selectedChartLabel)
        {/*{{{*/
            $pinkShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle('脓血便-克罗恩病');
            $blackShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle('黑便-克罗恩病');
            $yellowShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle('脂肪便-克罗恩病');
            $redShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle('鲜血便-克罗恩病');
            $whiteShitProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle('粘液便-克罗恩病');
            $pinkShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $pinkShitProblem->id, $chartY, $chartM);
            $blackShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $blackShitProblem->id, $chartY, $chartM);
            $yellowShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $yellowShitProblem->id, $chartY, $chartM);
            $redShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $redShitProblem->id, $chartY, $chartM);
            $whiteShitProblemAnswerArr = HealthRecordClient::getInstance()->getUserAnswerArray4Chart($user->id, $whiteShitProblem->id, $chartY, $chartM);
            $answerArr = array_merge($pinkShitProblemAnswerArr,$blackShitProblemAnswerArr,$yellowShitProblemAnswerArr,$redShitProblemAnswerArr,$whiteShitProblemAnswerArr);
            $response->hasData = $this->hasData($answerArr);
            $pinkShitStr = $this->getAnswerDatasStr4Chart($pinkShitProblemAnswerArr);
            $blackShitStr = $this->getAnswerDatasStr4Chart($blackShitProblemAnswerArr);
            $yellowShitStr = $this->getAnswerDatasStr4Chart($yellowShitProblemAnswerArr);
            $redShitStr = $this->getAnswerDatasStr4Chart($redShitProblemAnswerArr);
            $whiteShitStr = $this->getAnswerDatasStr4Chart($whiteShitProblemAnswerArr);
            $pinkShitArr = explode(",",$pinkShitStr);
            $blackShitArr = explode(",",$blackShitStr);
            $yellowShitArr = explode(",",$yellowShitStr);
            $redShitArr = explode(",",$redShitStr);
            $whiteShitArr = explode(",",$whiteShitStr);
            $days = count($pinkShitArr);
            $totalShitAnswerStr = '';
            for($i = 0;$i < $days;$i++)
            {
                if ($pinkShitArr[$i] == 'null' && $blackShitArr[$i] == 'null' && $yellowShitArr[$i] == 'null' && $redShitArr[$i] == 'null' && $whiteShitArr[$i] == 'null')
                {
                    $totalShitAnswerStr .= ',null';
                }
                else
                {
                    $totalShitAnswerStr .= ','.($pinkShitArr[$i] + $blackShitArr[$i] + $yellowShitArr[$i] + $redShitArr[$i] + $whiteShitArr[$i]);
                }
            }
            $totalShitAnswerStr = substr($totalShitAnswerStr, 1);
            $response->days = $days;
            $response->totalShitAnswerStr = $totalShitAnswerStr;
            $response->pinkShitStr = $pinkShitStr;
            $response->blackShitStr = $blackShitStr;
            $response->yellowShitStr = $yellowShitStr;
            $response->redShitStr = $redShitStr;
            $response->whiteShitStr = $whiteShitStr;

            $response->chartUnit = '次';
            $response->chartTitle = '大便';
            $response->dayCnt = $days;
        }/*}}}*/
        elseif('heartrate' == $selectedChartLabel)
        {
            //心率,按日均计算
            $heartrateProblemIds = HealthRecordClient::getInstance()->getHeartrateProblemIds();
            $heartrateProblemStr = HealthRecordClient::getInstance()->getUserAnswerAvgStr4ChartByProblemIds($user->id, $heartrateProblemIds, $chartY, $chartM);
            $response->hasData = true;
            $response->sigleLineStr = $heartrateProblemStr;
            $response->chartUnit = "次/分";
            $response->chartTitle = "日均心率";
            
            $response->sigleProblem = $sigleProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle(HealthRecordProblem::HEARTRATE);
            
            $firstAnswer = HealthRecordClient::getInstance()->getUserFirstAnswer($user->id, $sigleProblem->id);
        }else
        {
            $sigleProblem = null;
            if('weight' == $selectedChartLabel)
            {
                //乳腺癌 体重是另一个问题
                if($this->isRuxianai($user))
                {
                    $title = "乳腺癌术后体重控制";
                    $sigleProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle($title);
                }else {
                    $title = "体重";
                    $sigleProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle($title);
                }
            }
            else if('cdai' == $selectedChartLabel)
            {/*{{{*/
                $title = "CDAI-克罗恩病";
                $sigleProblem = HealthRecordClient::getInstance()->getHealthProblemByTitle($title);
                $startTime = $chartY.'-01-01';
                $endTime = $chartY.'-12-30';
                $chartJsonData = HealthRecordClient::getInstance()->getAnswerJsonData4StateSummaryChart($user->id, 'CDAI-克罗恩病', $startTime, $endTime);
                $response->chartJsonData = $chartJsonData;
            }/*}}}*/

            list($firstAnswer, $sigleProblemAnswerArr) = $this->getFirstAnswerAndAnswerArr($patientSignin, $sigleProblem, $title, $chartY, $chartM);
            $response->sigleProblemAnswerArr = $sigleProblemAnswerArr;
            $response->hasData = $this->hasData($sigleProblemAnswerArr);
            if('cdai' == $selectedChartLabel)
            {
                if($chartJsonData != '[]')
                {
                    $response->hasData = true;
                }
                else
                {
                    $response->hasData = false;
                }
            }
            $sigleLineStr = $this->getAnswerDatasStr4Chart($sigleProblemAnswerArr);
            $response->sigleLineStr = $sigleLineStr;
            $response->sigleProblem = $sigleProblem;

            $response->chartUnit = $sigleProblem->unit;
            $response->chartTitle = $sigleProblem->title;
            $response->dayCnt = count($sigleProblemAnswerArr);
        }
        $response->firstAnswer = $firstAnswer;
        $response->user = $user;
        
    }/*}}}*/