private function checkCondRecursive(clTuFormxTriggerCondition $condition, $options) { if (!$condition) { return true; } switch ($condition->getType()) { case 'and': return $this->multiAnd($condition->getTabSubConds(), $options); case 'or': return $this->multiOr($condition->getTabSubConds(), $options); case 'not': return !$this->checkCondRecursive($condition->getFirstSubCond(), $options); case 'xor': return $this->checkCondRecursive($condition->getFirstSubCond(), $options) xor $this->checkCond($condition->getSecondSubCond(), $options); case 'ccmu': //est-ce que le diagnostic du patient est concerné par ce formulaire ? Est-ce que le patient n'a pas déjà le formulaire instancié pour le passage ? if ($condition->hasCcmu($this->getPatient()->getCCMU())) { return true; } return false; case 'diag': //est-ce que le diagnostic du patient est concerné par ce formulaire ? Est-ce que le patient n'a pas déjà le formulaire instancié pour le passage ? if ($condition->hasDiag($this->getPatient()->getCodeDiagnostic())) { return true; } return false; case 'motif': //est-ce que le motif du patient est concerné par ce formulaire ? Est-ce que le patient n'a pas déjà le formulaire instancié pour le passage ? if ($condition->hasMotif($this->getPatient()->getCodeRecours())) { return true; } return false; case 'acte': //est-ce que les actes du patient sont concernés par ce formulaire ? Est-ce que le patient n'a pas déjà le formulaire instancié pour le passage ? if ($condition->hasActes($this->getPatient()->getTabActes())) { return true; } return false; case 'regexp': if ($condition->hasRegExp($this->getPatient())) { return true; } return false; case 'medecin': //Est-ce que le patient a un médecin urgentiste affecté ? Est-ce que ce médecin n'a pas déjà un formulaire instancié pour ce passage ? if ($this->getPatient()->getMatriculeMedecin() && count(formxTools::exportsGetTabIdformFilterValue($condition->getTrigger()->getIdFormx(), 'id_medecin', $this->getPatient()->getMatriculeMedecin(), array('etat' => array('F', 'H')))) == 0 && count(formxTools::exportsGetTabIdsIdformFilterValue($this->getPatient()->getIDU(), $condition->getTrigger()->getIdFormx(), 'id_medecin', $this->getPatient()->getMatriculeMedecin(), array('etat' => $options['etatsFormx']))) == 0) { //eko(count(formxTools::exportsGetTabIdformFilterValue( $condition->getTrigger()->getIdFormx() , 'id_medecin', $this->getPatient()->getMatriculeMedecin(),array('etat' => $options['etatsFormx'] ) ) )); return true; } return false; case 'ide': //Est-ce que le patient a un médecin urgentiste affecté ? Est-ce que ce médecin n'a pas déjà un formulaire instancié pour ce passage ? if ($this->getPatient()->getIDE() && count(formxTools::exportsGetTabIdformFilterValue($condition->getTrigger()->getIdFormx(), 'id_ide', $this->getPatient()->getIDE(), array('etat' => array('F', 'H')))) == 0 && count(formxTools::exportsGetTabIdsIdformFilterValue($this->getPatient()->getIDU(), $condition->getTrigger()->getIdFormx(), 'id_ide', $this->getPatient()->getIDE(), array('etat' => $options['etatsFormx']))) == 0) { //eko(count(formxTools::exportsGetTabIdformFilterValue( $condition->getTrigger()->getIdFormx() , 'id_medecin', $this->getPatient()->getMatriculeMedecin(),array('etat' => $options['etatsFormx'] ) ) )); return true; } return false; default: return false; } }