function getStatsPages() { global $session; // Date de lancement des statistiques. $datestats = new clDate(DATESTATS); // On récupère la liste des utilisateurs s'étant déjà connectés. $param['cw'] = "WHERE idapplication=" . IDAPPLICATION; $req = new clResultQuery(); $res = $req->Execute("Fichier", "getSessionsPersonnes", $param, "ResultQuery"); // Fabrication du tableau attendu par ModeliXe. $tab['%'] = "globales"; for ($i = 0; isset($res['uid'][$i]); $i++) { $tab[$res['uid'][$i]] = "de " . $res['uid'][$i] . " (" . $res['somme'][$i] . ")"; } // Initialisation de l'utilisateur sélectionné et du filtre MySQL correspondant. if (!isset($_POST['choix'])) { if (isset($_GET['choix'])) { $_POST['choix'] = $_GET['choix']; } else { $_POST['choix'] = "%"; } } // Application du filtre MySQL pour aller récupérer les statistiques de l'utilisateur. $param['cw'] = "WHERE uid LIKE '" . $_POST['choix'] . "' AND idapplication=" . IDAPPLICATION; $param['cs'] = ""; $req = new clResultQuery(); $res = $req->Execute("Fichier", "getSessionsStatistiques", $param, "ResultQuery"); // Pour chaque statistique récupérées, on incrémente une case d'un tableau avec son nombre de clic. Il y a une case // par partie du Terminal. $stats["Total de clics"] = 0; for ($i = 0; isset($res['idstats'][$i]); $i++) { if ($res['loc2'][$i]) { if ($res['loc1'][$i]) { if (isset($stats[$res['loc1'][$i] . "->" . $res['loc2'][$i]])) { $stats[$res['loc1'][$i] . "->" . $res['loc2'][$i]] += $res['nombre'][$i]; } else { $stats[$res['loc1'][$i] . "->" . $res['loc2'][$i]] = $res['nombre'][$i]; } } } else { if ($res['loc1'][$i]) { if (isset($stats[$res['loc1'][$i]])) { $stats[$res['loc1'][$i]] += $res['nombre'][$i]; } else { $stats[$res['loc1'][$i]] = $res['nombre'][$i]; } } } // Calcul du nombre total de clic pour cet utilisateur. $stats["Total de clics"] += $res['nombre'][$i]; } // Chargement du template ModeliXe. $mod = new ModeliXe("SessionsStatistiques.mxt"); $mod->SetModeliXe(); // Chargement du template ListMaker pour faire le tableau. $list = new ListMaker("template/SessionsStatistiques.html"); // Passage des variables à transmettre et de leurs valeurs. $list->addUserVar('navi', $session->genNavi($session->getNavi(0), $session->getNavi(1))); $list->addUrlVar('navi', $session->genNavi($session->getNavi(0), $session->getNavi(1))); $list->addUserVar('choix', $_POST['choix']); $list->addUrlVar('choix', $_POST['choix']); // Nom des colonnes du tableau. $list->setSortColumn('col1', 'Page', 'page'); $list->setSortColumn('col2', 'Clics', 'clics'); // On alterne les couleurs en fonction de la parité de la ligne. $list->setAlternateColor("pair", "impair"); // On parcourt le tableau précédemment calculé contenant les statistiques, // et on les ajoute au template ListMaker. if (is_array($stats)) { for ($i = 0; list($key, $val) = each($stats); $i++) { $item['page'] = $key; $item['clics'] = $val; $list->addItem($item); } } // Affichage d'informations complémentaires si nous ne sommes pas dans le cas // de statistiques globales. if ($_POST['choix'] != "%") { // Si l'utilisateur est connecté, on affiche un message le signalant. $param['cw'] = "WHERE uid LIKE '" . $_POST['choix'] . "' AND idapplication=" . IDAPPLICATION; $req = new clResultQuery(); $res = $req->Execute("Fichier", "getSessionsActuelles", $param, "ResultQuery"); if ($res['INDIC_SVC'][2]) { $infos = "Cet utilisateur est actuellement connecté.<br />"; } // Sinon, on affiche les informations de sa dernière connexion. if (!isset($infos) or !$infos) { // Récupération des informations. $param['cw'] = "WHERE uid LIKE '" . $_POST['choix'] . "' AND idapplication=" . IDAPPLICATION . " ORDER BY dateslast DESC"; $req = new clResultQuery(); $res = $req->Execute("Fichier", "getSessionsHistorique", $param, "ResultQuery"); // Calcul de la durée de connexion et affichage des différentes dates. $last = new clDate(isset($res['dateslast'][0]) ? $res['dateslast'][0] : ''); $date = new clDate(isset($res['dateshisto'][0]) ? $res['dateshisto'][0] : ''); $duree = new clDuree($last->getDifference($date)); if ((isset($res['nombre'][0]) ? $res['nombre'][0] : '0') > 1) { $sc = "s"; } else { $sc = ''; } if ($duree->getMinutes() > 1) { $sm = "s"; } else { $sm = ''; } if ($duree->getSeconds() > 1) { $ss = "s"; } else { $ss = ''; } if ($duree->getMinutes() > 0) { $temps = $duree->getMinutes() . " minute{$sm}"; } else { $temps = $duree->getSeconds() . " seconde{$ss}"; } $infos = "Dernière connexion le " . $date->getDateTextFull("à") . " (" . (isset($res['nombre'][0]) ? $res['nombre'][0] : '0') . " clic{$sc}, durée de {$temps})<br />"; $infos .= "Déconnexion enregistrée le " . $last->getDateTextFull("à") . "<br />"; } $mod->MxText("informations", $infos); } else { $mod->MxText("informations", '--'); } // On affiche la date à laquelle les stats ont commencé être enregistrées. $mod->MxText("datestats", $datestats->getDateText()); // Affichage du tableau de stats. $mod->MxText("table", $list->getList(isset($pagination) ? $pagination : '')); // Affichage de la liste des personnes à sélectionner. $mod->MxSelect("choix", "choix", $_POST['choix'], $tab, '', '', "onChange=reload(this.form)"); // Variable de navigation. $mod->MxHidden("hidden", "navi=" . $session->genNavi($session->getNavi(0), $session->getNavi(1))); //$this->genGraphs ( $mod ) ; $mod->MxCheckerField("graph", "checkbox", 'graph', 1, isset($_POST['graph']) ? $_POST['graph'] ? true : false : false, "title='Graphiques' onChange=reload(this.form)"); if (isset($_POST['graph']) and $_POST['graph']) { $this->genGraphs($mod); $mod->MxText("graphs.clicsHeure", "<img src=\"cache/image1.png\" alt=\"Clics par heure\"></img>"); $mod->MxText("graphs.tempsHeure", "<img src=\"cache/image2.png\" alt=\"Temps par clics moyen par heure\"></img>"); $mod->MxText("graphs.clicsJour", "<img src=\"cache/image3.png\" alt=\"Clics par jour\"></img>"); } else { $mod->MxBloc("graphs", "delete"); } //$mod -> MxText ( "tempsJour", "<img src=cache/image4.png></img>" ) ; // Récupération du code HTML généré. return $mod->MxWrite("1"); }
function genUHCD() { global $options; global $session; global $logs; // Appel du module de soins continus $this->genSC(); // Appel du module de chirurgie $this->genChirurgie(); // Si le patient n'est pas en soins continus ou en chirurgie, alors on gère l'UHCD. if (!$this->patient->isSoinsContinus() and !$this->patient->isChirurgie() and $options->getOption('GestionUHCD')) { $ufExec = $options->getOption('numUFexec'); $ufUHCD = $options->getOption('numUFUHCD'); $ufUHCDrepere = $options->getOption('numUFUHCDrepere'); $salleUHCD = $options->getOption("FiltreSalleUHCD"); $uf = $options->getOption('numUFexec'); $etat = $this->patient->getEtatUHCD(); $oldUF = $this->patient->getUF(); if ($options->getOption('GestionUHCDCode') == 'CCMU') { $codeG = $this->patient->getCCMU(); } else { $codeG = $this->patient->getCodeGravite(); } // Gestion des changements de salle (UHCD et UHCD repéré) if ($ufUHCDrepere and $ufUHCDrepere != $ufUHCD) { if ($oldUF == $ufUHCDrepere and ereg($salleUHCD, $this->patient->getSalle())) { if ($_POST['dateUHCD'] == 'now') { $date = new clDate(); } else { $date = new clDate($_POST['dateUHCD']); } $dateC = $date->getDatetime(); $this->addBAL('', 'uhcd'); $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufUHCD); global $stopAffichage; $stopAffichage = 1; header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2))); } elseif ($oldUF == $ufUHCD and !ereg($salleUHCD, $this->patient->getSalle())) { if ($_POST['dateUHCD'] == 'now') { $date = new clDate(); } else { $date = new clDate($_POST['dateUHCD']); } $dateC = $date->getDatetime(); $this->addBAL('', 'uhcdrepere'); $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufUHCDrepere); global $stopAffichage; $stopAffichage = 1; header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2))); } } // Calcul du critère CCMU4 ou CCMU5 if ($codeG == 4 or $codeG == 5) { $CCMU45 = 1; } else { $CCMU45 = 0; } if ($rep == 'okCCMU45') { //eko ( "oldUF : $olfUF - ufUHCD : $ufUHCD - ufUHCDrepere : $ufUHCDrepere") ; if ($oldUF != $ufUHCD and $oldUF != $ufUHCDrepere) { if (!$ufUHCDrepere or ereg($salleUHCD, $this->patient->getSalle())) { $this->addBAL($rep, 'uhcd'); $logs->addLog("uhcd", $session->getNaviFull(), "Passage automatique en UHCD (code > 3)"); $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufUHCD); } else { $this->addBAL($rep, 'uhcdrepere'); $logs->addLog("uhcd", $session->getNaviFull(), "Passage automatique en UHCD repéré (code > 3)"); $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufUHCDrepere); } } $this->patient->setAttribut('EtatUHCD', $rep); global $stopAffichage; $stopAffichage = 1; header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)) . $sm); } // Calcul du critère sur la durée $datead = new clDate($this->patient->getDateAdmission()); $dureead = new clDuree(); $duree = $dureead->getDureeCourte($datead->getDatetime()); $dureeMaxSansUHCD = 3600 * $options->getOption("Présents UHCD"); $dureeHeure = $options->getOption("Présents UHCD"); if ($dureead->getSeconds() > $dureeMaxSansUHCD) { $duree = 1; } else { $duree = 0; } // Calcul du critère sur le CCMU3 if ($codeG == 3) { $CCMU3 = 1; } else { $CCMU3 = 0; } // Vérification des critères directs. if ($CCMU45) { $rep = 'okCCMU45'; $uf = $ufUHCD; $logs->addLog("uhcd", $session->getNaviFull(), "Passage automatique en UHCD (code > 3)"); } elseif ($this->patient->getTypeDestination() == 'T') { $rep = 'okTransfert'; $uf = $ufUHCD; } elseif ($this->patient->getTypeDestination() == 'D') { $rep = 'okDeces'; $uf = $ufUHCD; } else { if ($duree) { $rep = 'okDuree'; } else { if ($CCMU3) { $rep = 'okCCMU3'; } else { $rep = 'noCCMU3'; $uf = $ufExec; } } } // Vérification de la réponse à la question sur les critères UHCD. if ($rep == 'okDuree') { if ($_POST['valider'] == 'Oui') { $session->setLogSup('UHCD réponse : Oui'); $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Oui"); $rep = 'okCriteres'; $uf = $ufUHCD; } elseif ($_POST['valider'] == 'Non') { $session->setLogSup('UHCD réponse : Non'); $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Non"); $rep = 'noCriteres'; $uf = $ufExec; } elseif ($etat != 'okCriteres' and $etat != 'noCriteres') { $session->setLogSup('Question UHCD'); // Chargement du template ModeliXe. $mod = new ModeliXe("ErreurUHCD.html"); $this->setIHMBusy(); $mod->SetModeliXe(); // Récupération du code HTML généré. $mod->MxHidden("hidden", "navi=" . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2))); return $mod->MxWrite("1"); } else { return ''; } } // Vérification de la réponse à la question sur les actes lourds. if ($rep == 'okCCMU3') { if ($_POST['valider'] == 'Oui') { $session->setLogSup('UHCD réponse : Oui'); $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Oui"); $rep = 'okActes'; $uf = $ufUHCD; } elseif ($_POST['valider'] == 'Non') { $session->setLogSup('UHCD réponse : Non'); $logs->addLog("uhcd", $session->getNaviFull(), "UHCD réponse : Non"); $rep = 'noActes'; $uf = $ufExec; } elseif ($etat != 'okActes' and $etat != 'noActes') { $session->setLogSup('Question UHCD'); // Chargement du template ModeliXe. $mod = new ModeliXe("ErreurUHCD.html"); $this->setIHMBusy(); $mod->SetModeliXe(); // Récupération du code HTML généré. $mod->MxHidden("hidden", "navi=" . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2))); return $mod->MxWrite("1"); } else { return ''; } } // Mise à jour des informations. if ($etat != $rep and $rep != 'okDuree' and $rep != 'okCCMU3') { if ($_POST['dateUHCD'] == 'now') { $date = new clDate(); } else { $date = new clDate($_POST['dateUHCD']); } $dateC = $date->getDatetime(); if ($rep == 'okCCMU45' or $rep == 'okCriteres' or $rep == 'okActes' or $rep == 'okTransfert' or $rep == 'okDeces') { //eko ( "oldUF : $olfUF - ufUHCD : $ufUHCD - ufUHCDrepere : $ufUHCDrepere") ; if ($oldUF != $ufUHCD and $oldUF != $ufUHCDrepere) { if (!$ufUHCDrepere or ereg($salleUHCD, $this->patient->getSalle())) { $this->addBAL($rep, 'uhcd'); //$logs -> addLog ( "uhcd", $session->getNaviFull ( ), "Passage automatique en UHCD (code > 3)" ) ; $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufUHCD); } else { $this->addBAL($rep, 'uhcdrepere'); //$logs -> addLog ( "uhcd", $session->getNaviFull ( ), "Passage automatique en UHCD repéré (code > 3)" ) ; $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufUHCDrepere); } } $this->patient->setAttribut('EtatUHCD', $rep); } elseif ($rep == 'noCCMU3' or $rep == 'noCriteres' or $rep == 'noActes') { if ($oldUF and ($oldUF == $ufUHCD or $oldUF == $ufUHCDrepere)) { $this->addBAL($rep, 'urg'); $logs->addLog("uhcd", $session->getNaviFull(), "Annulation du passage en UHCD (code < 3)"); $this->patient->setAttribut('DateUHCD', $dateC); $this->patient->setAttribut('UF', $ufExec); } $this->patient->setAttribut('EtatUHCD', $rep); if ($rep == 'noCriteres') { $sm = '&sendMessage2=Mails Alerte UHCD'; } } if (($_POST['Valider'] or $_POST['Valider_x'] or $_POST['ValiderMaintenant']) and $session->getNavi(3) == "modDateSortie" and $session->getDroit($this->type . "_EtatCivil", "d")) { } else { global $stopAffichage; $stopAffichage = 1; header('Location:index.php?navi=' . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2)) . $sm); print "Erreur de relocation"; die; } } } }