/**
  * add a diagnosis to the specified parent if it doesn't already exist there.
  *
  * @throws Exception
  */
 public function actionAddDiagnosis()
 {
     $parent = null;
     if (@$_POST['parent_id'] && !($parent = OphCoTherapyapplication_TherapyDisorder::model()->findByPk((int) $_POST['parent_id']))) {
         throw new Exception('Cannot find parent with id ' . $parent->id);
     }
     if (!($disorder = Disorder::model()->findByPk((int) @$_POST['disorder_id']))) {
         throw new Exception('Unknown disorder id ' . @$_POST['disorder_id']);
     }
     // check not already been added
     $criteria = new CDbCriteria();
     $criteria->condition = 'disorder_id = :did';
     $criteria->params = array(':did' => $disorder->id);
     if ($parent) {
         $criteria->condition .= ' AND parent_id = :pid';
         $criteria->params[':pid'] = $parent->id;
     } else {
         $criteria->condition .= ' AND parent_id is NULL';
     }
     if (OphCoTherapyapplication_TherapyDisorder::model()->find($criteria)) {
         Yii::app()->user->setFlash('failure', 'Disorder already set at this level');
     } else {
         $therapy_disorder = new OphCoTherapyapplication_TherapyDisorder();
         $therapy_disorder->disorder_id = $disorder->id;
         $query = 'SELECT MAX(display_order) AS maxdisplay FROM ' . OphCoTherapyapplication_TherapyDisorder::model()->tableName();
         if ($parent) {
             $therapy_disorder->parent_id = $parent->id;
             $query .= ' WHERE parent_id = ' . $parent->id;
         }
         $val = Yii::app()->db->createCommand($query)->queryRow();
         $therapy_disorder->display_order = $val['maxdisplay'] + 1;
         if (!$therapy_disorder->save()) {
             throw new Exception('Unable to save new therapy disorder ' . print_r($therapy_disorder->getErrors(), true));
         }
         Yii::app()->user->setFlash('success', 'Disorder added');
         Audit::add('admin', 'create', $therapy_disorder->id, null, array('module' => 'OphCoTherapyapplication', 'model' => 'OphCoTherapyapplication_TherapyDisorder'));
     }
     $this->redirect(array('viewdiagnoses', 'parent_id' => @$_POST['parent_id']));
 }