public function prepareInsights($id, $indicators) { $hospitalIndicators = Divisions::find()->where(['id' => $id])->one(); $whereArray = ['and']; foreach ($indicators as $key => $value) { array_push($whereArray, ['or', "{$key} = {$value}", "{$key} IS NULL"]); } if ($insights = InsightsDef::find()->where($whereArray)->orderBy('priority')->all()) { foreach ($insights as $insight) { foreach ($insight->content as $insightLine) { array_push($this->insightsArray, Insights::_evaluateIndicators($insightLine->content, $hospitalIndicators)); } } } else { $this->insightsArray = []; } }
public function calculateIndicators($id, $idSpec) { $hospitalIndicators = Divisions::find()->where(['id' => $id])->one(); $indicatorDefinitions = IndicatorNames::find()->all(); foreach ($indicatorDefinitions as $indicator) { $numeratorName = $indicator->basicNumerator->name; if ($indicator->denominator != 0) { $denominatorName = $indicator->basicDenominator->name; } if ($indicator->denominator != 0 && $hospitalIndicators->{$denominatorName} != 0) { $indicatorValue = ($hospitalIndicators->{$numeratorName} - $hospitalIndicators->{$denominatorName}) / $hospitalIndicators->{$denominatorName}; } elseif ($indicator->denominator_dec != 0) { $indicatorValue = ($hospitalIndicators->{$numeratorName} - $indicator->denominator_dec) / $indicator->denominator_dec; } else { $indicatorValue = $hospitalIndicators->{$numeratorName}; } $this->indicatorsArray[$indicator->indicator] = Indicators::_getRank($indicator->indicator, $indicatorValue, $id, $idSpec); } }
/** * Lists all Divisions models. * @return mixed */ public function actionIndex($id_hospitals) { $dataProvider = new ActiveDataProvider(['query' => Divisions::find()->where(['id_szpital' => $id_hospitals])->orderBy('id')]); return $this->render('index', ['dataProvider' => $dataProvider]); }