/**
  * Process the data and return the answers that should be changed.
  *
  * Storing the changed values is handled by the calling function.
  *
  * @param \Gems_Tracker_Token $token Gems token object
  * @return array Containing the changed values
  */
 public function processTokenData(\Gems_Tracker_Token $token)
 {
     if (!$token->getReceptionCode()->isSuccess()) {
         return;
     }
     $answers = $token->getRawAnswers();
     if (isset($answers['informedconsent'])) {
         $consent = $this->util->getConsent($answers['informedconsent']);
         if ($consent->exists) {
             // Is existing consent description as answer
             $consentCode = $consent->getDescription();
         } else {
             if ($answers['informedconsent']) {
                 // Uses start of consent description as answer (LS has only 5 chars for an answer option)
                 $consentCode = $this->db->fetchOne("SELECT gco_description FROM gems__consents WHERE gco_description LIKE ? ORDER BY gco_order", $answers['informedconsent'] . '%');
             } else {
                 $consentCode = false;
             }
             if (!$consentCode) {
                 if ($answers['informedconsent']) {
                     // Code not found, use first positive consent
                     $consentCode = $this->db->fetchOne("SELECT gco_description FROM gems__consents WHERE gco_code != ? ORDER BY gco_order", $this->util->getConsentRejected());
                 } else {
                     // Code not found, use first negative consent
                     $consentCode = $this->db->fetchOne("SELECT gco_description FROM gems__consents WHERE gco_code = ? ORDER BY gco_order", $this->util->getConsentRejected());
                 }
             }
         }
         $respondent = $token->getRespondent();
         $values = array('gr2o_patient_nr' => $respondent->getPatientNumber(), 'gr2o_id_organization' => $respondent->getOrganizationId(), 'gr2o_consent' => $consentCode);
         $respondent->getRespondentModel()->save($values);
     }
     return false;
 }
 public function testConsentRejected()
 {
     //Check the ini default
     $expected = 'do not use';
     $actual = $this->object->getConsentRejected();
     $this->assertEquals($expected, $actual);
     //Check if we can read from an altered ini file
     $project = $this->project;
     $expected = 'test';
     $project->consentRejected = $expected;
     $actual = $this->object->getConsentRejected();
     $this->assertEquals($expected, $actual);
     //Check for class default when not found in ini
     unset($project->consentRejected);
     $expected = 'do not use';
     $actual = $this->object->getConsentRejected();
     $this->assertEquals($expected, $actual);
     //Check for incorrect spelling used before 1.5.2
     $project->concentRejected = 'test2';
     try {
         $actual = $this->object->getConsentRejected();
     } catch (Exception $e) {
     }
     $this->assertInstanceOf('Gems_Exception_Coding', $e, 'No failure on misspelled concentRejected in project.ini');
 }
 /**
  * Can you use the data with this code
  *
  * @return boolean
  */
 public function canBeUsed()
 {
     return $this->_get('gco_code') !== $this->util->getConsentRejected();
 }
 /**
  *
  * @return string
  */
 public function getConsentCode()
 {
     if ($this->hasSuccesCode()) {
         if (!isset($this->_gemsData['gco_code'])) {
             $this->_ensureRespondentData();
         }
         return $this->_gemsData['gco_code'];
     } else {
         return $this->util->getConsentRejected();
     }
 }