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; }/*}}}*/