function getAge2($formx) { global $patient; global $tool; $dateToday = new clDate(); $dateNaiss = new clDate($patient->getDateNaissance()); $ageSec = $dateToday->getDifference($dateNaiss); return floor($ageSec / (365.25 * 24 * 3600)) . ' ans'; }
function delta_temps($formx) { global $patient; //si heure PEC inconnue: //if(! $formx->getValueForm('date_pec_urgences') ) // return 99; $obDatePecIoa = new clDate($formx->getFormVar('date_pec_urgences') . ' ' . $formx->getFormVar('heure_pec_urgences')); $obDateDebutSympt = new clDate($formx->getFormVar('debut_symptomes_jour') . ' ' . $formx->getFormVar('debut_symptomes_heure')); $obDateDebutSymptNeuro = new clDate($formx->getFormVar('debut_symptomes_neuro_jour') . ' ' . $formx->getFormVar('debut_symptomes_neuro_heure')); $obDateDebutVueAsympt = new clDate($formx->getFormVar('date_asympt') . ' ' . $formx->getFormVar('heure_asympt')); if ($formx->getFormVar('is_heure_debut_symptoneuro') == 'oui') { $delta = $obDatePecIoa->getDifference($obDateDebutSymptNeuro) / 3600; } if ($formx->getFormVar('is_heure_debut_sympto') == 'oui') { $delta = $obDatePecIoa->getDifference($obDateDebutSympt) / 3600; } if ($formx->getFormVar('is_heure_debut_sympto') == 'non') { $delta = $obDatePecIoa->getDifference($obDateDebutVueAsympt) / 3600; } $delta = max(0, $delta); $formx->setVar('der_delta_avc', $delta); return $delta; }
function Calcul_Delai_Traumatologie_Main($formx) { global $session; global $options; $date_accident = utf8_decode($formx->getFormVar('Val_Horaire_Date_Accident')); $heure_accident = utf8_decode($formx->getFormVar('Val_Horaire_Heure_Accident')); $date_examen = utf8_decode($formx->getFormVar('Val_Horaire_Date_Examen')); $heure_examen = utf8_decode($formx->getFormVar('Val_Horaire_Heure_Examen')); $posted = explode("-", $date_accident); $date_accident = $posted[2] . "-" . $posted[1] . "-" . $posted[0]; $posted = explode("-", $date_examen); $date_examen = $posted[2] . "-" . $posted[1] . "-" . $posted[0]; $accident = new clDate($date_accident . " " . $heure_accident . ":00"); $examen = new clDate($date_examen . " " . $heure_examen); $duree = new clDuree($examen->getDifference($accident)); //eko ($accident->getDatetime()); //eko ($examen->getDatetime()); return $duree->getDuree(); }
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 addPatientSQL($idimport, $table) { global $errs; global $news1; global $mods1; global $errs1; global $news2; global $mods2; global $errs2; // Récupération des informations sur le patient à créer. $param['cw'] = "WHERE idimport='{$idimport}'"; $req = new clResultQuery(); $res = $req->Execute("Fichier", "getImports", $param, "ResultQuery"); $i = 0; if ($res['uf'][$i] == '6004') { $base = 'terminal2_tuv2'; $news2++; } else { $base = BDD; $news1++; } if ($res['INDIC_SVC'][2]) { $ras = $req->Execute("Fichier", "getMaxIdToulon", $param, "ResultQuery"); $max = 1; for ($j = 0; isset($ras['idpatient'][$j]); $j++) { if ($ras['idpatient'][$j] > $max) { $max = $ras['idpatient'][$j]; } } $max++; $data['idpatient'] = $max; $data['idu'] = $res['idu'][$i]; $data['ilp'] = $res['ilp'][$i]; $data['nsej'] = $res['idpass'][$i]; $data['uf'] = $res['uf'][$i]; $data['nom'] = $res['nom'][$i]; $data['prenom'] = $res['prenom'][$i]; $data['sexe'] = $res['sexe'][$i]; $data['dt_naissance'] = $res['dt_naissance'][$i]; $data['adresse_libre'] = $res['adresse_libre'][$i]; $data['adresse_cp'] = $res['adresse_cp'][$i]; $data['adresse_ville'] = $res['adresse_ville'][$i]; $data['telephone'] = $res['telephone'][$i]; $data['prevenir'] = str_replace('^', '<br/>', $res['prevenir'][$i]); $data['medecin_traitant'] = $res['medecin_traitant'][$i]; $data['dt_admission'] = $res['dt_admission'][$i]; $data['mode_admission'] = $res['mode_admission'][$i]; $data['iduser'] = "******"; $data['manuel'] = 0; //newfct ( gen_affiche_tableau, $data ) ; // Calcul de la durée depuis lequel le patient est admis. $d1 = new clDate(); $d2 = new clDate($data['dt_admission']); $duree = new clDuree($d1->getDifference($d2)); $duree->invertNegatif(); // Appel de la classe Requete. $requete = new clRequete($base, $table, $data); // Exécution de la requete. $res = $requete->addRecord(); // Si le patient est admis depuis plus de 30 minutes, alors il est placé dans la table des sortis if ($duree->getMinutes() > 30) { $pat = new clPatient($res['cur_id'], '', $base); $pat->sortirPatient('simple'); } // Mise à jour de la date de traitement de l'import. $date = new clDate(); $data2['dt_traitement'] = $date->getDatetime(); // Appel de la classe Requete. $requete = new clRequete(BDD, IMPORTS, $data2); // Exécution de la requete. $requete->updRecord("idimport='{$idimport}'"); } else { // En cas d'erreur, on la signale... $errs->addErreur("clImportation : Impossible d'importer ce nouveau patient, l'identifiant de l'import est introuvable (idimport=\"{$idimport}\")."); $errs1++; $errs2++; } }
static function getMajoration(clDate $datePassage, clDate $dateNaissance) { $tabMajorations = array(); $today = new clDate(); if ($today->getDifference($dateNaissance) < 3600 * 24 * 365.25 * 2) { $tabMajorations[] = 'MNO'; } if ($datePassage->getHours() < 6 && $datePassage->getHours() >= 0) { $tabMajorations[] = 'MDN'; } if ($datePassage->getHours() >= 20 or $datePassage->getHours() < 8 && $datePassage->getHours() >= 6) { $tabMajorations[] = 'MDI'; } if ($dateNaissance) { return implode(',', $tabMajorations); } }
function addPatientHL7($data, $table, $base = BDD) { global $errs; global $options; // Calcul de la durée depuis lequel le patient est admis. $d1 = new clDate(); $d2 = new clDate($data['dt_admission']); $duree = new clDuree($d1->getDifference($d2)); $duree->invertNegatif(); // Procédure anti-fantôme : si aucun de ces champs n'est saisi, on ne fait pas l'ajout du patient. if ($data['nom'] or $data['prenom'] or $data['sexe'] or $data['ilp']) { // Appel de la classe Requete. $requete = new clRequete($base, $table, $data); // Exécution de la requete. $res = $requete->addRecord(); // eko ( "On ajoute un nouveau patient (nsej=$nsej)" ) ; // Si le patient est admis depuis plus de 30 minutes, alors il est placé dans la table des sortis if ($duree->getMinutes() > $options->getOption('ImportsBasculeSortis')) { $pat = new clPatient($res['cur_id'], '', $base); $pat->sortirPatient('simple'); } $this->news1++; } }
function getLast() { global $options; if ($_POST['idSessionATQ']) { $session = $_POST['idSessionATQ']; } if ($_GET['idSessionATQ']) { $session = $_GET['idSessionATQ']; } if ($session) { $this->index = $session; } else { $this->index = ""; } // Récupération de la date de dernier clic. $date = new clDate($_SESSION['last' . $this->index]); // Calcul de la durée entre ce dernier clic et maintenant. $dateN = new clDate(); $duree = new clDuree(); $duree->setValues($dateN->getDifference($date)); // On calcule une clé de session s'il n'y en a pas déjà une. if (!$_SESSION['sidtuv2' . $this->index]) { $_SESSION['sidtuv2' . $this->index] = $this->genIdSession(16); // Affichage pour débugage. if (DEBUGSESSION) { print "<br />Génération de l'idSession : " . $_SESSION['sidtuv2' . $this->index]; } } else { // Affichage pour débugage. if (DEBUGSESSION) { print "<br />idSession : " . $_SESSION['sidtuv2' . $this->index]; } } // On vérifie que la session est toujours valide <=> que la durée calculée n'est pas supérieure // à la durée maximum d'inactivité. if ($duree->getMinutes() <= ($options->getOption("DureeSession") < 480 ? $options->getOption("DureeSession") : 480)) { $_SESSION['last' . $this->index] = $dateN->getDatetime(); // print affTab ( $_SESSION['informations'.$this->index] ) ; // eko ( $_SESSION['informations'.$this->index] ) ; /* mail( Erreurs_Mail, 'Trace connexion', 'Connexion active après '.$duree->getSeconds ( ).' secondes d\'inactivité.' . '\nHeure du clic : '.$dateN->getDatetime ( ). '\nHeure du précédent clic : '.$date->getDatetime ( )."<br/>" ) ; */ /* eko ( 'Connexion active après '.$duree->getSeconds ( ).' secondes d\'inactivité.' . '<br/>Heure du clic : '.$dateN->getDatetime ( ). '<br/>Heure du précédent clic : '.$date->getDatetime ( )."<br/>" ) ; */ return $_SESSION['informations' . $this->index]; } else { /* $errs -> addErreur ( 'Déconnexion après '.$duree->getMinutes ( ).' minutes d\'inactivité.' . '<br/>Heure du clic : '.$dateN->getDatetime ( ). '<br/>Heure du précédent clic : '.$date->getDatetime ( ) ) ; */ $entete = "<html><head><title>{$subject}</title><body>"; $fin = "</ul></body></html>"; $headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\n"; $headers .= "To: " . Erreurs_Mail . "\r\nFrom: " . Erreurs_NomApp . "<" . Erreurs_MailApp . ">\r\n"; /* mail( '', '[XHAM V1] Trace connexion', $entete.' - Perte de la connexion après <b>'.$duree->getSeconds ( ).'</b> secondes d\'inactivité.<br/>' . ' - Heure du clic : <b>'.$dateN->getDatetime ( ).'</b><br/> - Heure du précédent clic : <b>'.$date->getDatetime ( ).'</b><br/>' . ' - Application : <b>'.NOMAPPLICATION.'</b><br/> - Durée maximale : <b>'.$options -> getOption ( "DureeSession" ).' minutes</b><br/>'.$fin, $headers ) ; */ /*print 'Déconnexion après '.$duree->getMinutes ( ).' minutes d\'inactivité.' . '<br/>Heure du clic : '.$dateN->getDatetime ( ). '<br/>Heure du précédent clic : '.$date->getDatetime ( )."<br/>";*/ } $_SESSION['last' . $this->index] = $dateN->getDatetime(); }
function contenuBAL_Netforce($res, $type, $tabAsso = array(), $indicateurs = array(), $maxLC = array(), $maxCCAM = array()) { // res contient tous les actes qu'on envoie à la facturation global $options; //eko($indicateurs);eko($maxLC);eko($maxCCAM); //Préparation du champs CONTENU - Initialisation avec les données patients $contenuDiag = ""; $cptDiag = 1; $NGAPjoue = 0; unset($modificateursJoues); reset($res); // Variable pour les majo des actes infirmiers $Majoration_A_Effectuee = "Non"; $idEvent = $this->idEvent; $dateEvent = $this->dateEvent; $dtFinInterv = $this->dtFinInterv; $clDateDeb = new clDate($dateEvent); $clDateFin = new clDate($dtFinInterv); // On va affecter dans une variable le nombre de CONS /*$Nombre_Cons = 0; $req=new clResultQuery; $paramRq["cw"] = "idEvent='".$idEvent."'"; $res=$req->Execute("Fichier","CCAM_getNombreCONS",$paramRq,"ResultQuery"); $Nombre_Cons = $res["nombre"][0]; $tab_Cons[0] = 0; for ( $i=1 ; $i<=$Nombre_Cons ; $i++) $tab_Cons[$i] = 0;*/ if (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure médiane") == 0) { $nbHeures = $clDateFin->getDifference($clDateDeb) / 3600; $dateMediane = $clDateDeb->addHours($nbHeures / 2); $dateMediane = $clDateDeb->getDate("Y-m-d H:i:s"); $heureCalcule = $dateMediane; } elseif (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure d'admission") == 0) { $clDateAdm = new clDate($this->dtAdmission); $heureCalcule = $clDateAdm->getDate("Y-m-d H:i:s"); } elseif (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure d'examen") == 0) { $clDateAdm = new clDate($this->dateEvent); $heureCalcule = $clDateAdm->getDate("Y-m-d H:i:s"); } elseif (strcmp($options->getOption('ChoixHeureAffectationActes'), "Heure de sorti") == 0) { $clDateAdm = $clDateFin; $heureCalcule = $clDateAdm->getDate("Y-m-d H:i:s"); } list($dateActe, $heureActe) = explode(" ", $heureCalcule); list($annee, $mois, $jour) = explode("-", $dateActe); substr($mois, 0, 1) == 0 ? $mois = substr($mois, 1, 1) : ""; substr($jour, 0, 1) == 0 ? $jour = substr($jour, 1, 1) : ""; list($heure, $minute, $seconde) = explode(":", $heureActe); substr($heure, 0, 1) == 0 ? $heure = substr($heure, 1, 1) : ""; $dateActe = mktime(0, 0, 0, $mois, $jour, $annee); if ($heure >= 20 or $heure >= 6 and $heure < 8) { $majoCONS = "N"; } elseif ($heure < 6) { $majoCONS = "NM"; } //Gestion des dimanches if (date("w", $dateActe) == 0 and $majoCONS == "") { $majoCONS = "F"; } //Gestion des jours fériés $dateFerie = new clDate($dateActe); if ($dateFerie->isHoliday() and $majoCONS == "") { $majoCONS = "F"; } for ($i = 0; isset($res[identifiant][$i]); $i++) { $contenuInit = $res[numSejour][$i] . "|" . $res[idu][$i] . "|" . $res[nomu][$i] . "|" . $res[pren][$i] . "|" . $res[sexe][$i] . "|" . $res[dtnai][$i]; $contenuInit3 = "|" . $res[numUFdem][$i]; $dateDem = substr($res[dateDemande][$i], 0, 10); $heureDem = substr($res[dateDemande][$i], 11, 6) . "00"; $dateReal = substr($res[dateEvent][$i], 0, 10); $heureReal = substr($res[dateEvent][$i], 11, 6) . "00"; $contenuInit2 = "|" . $dateDem . "|" . $heureDem; // Cas des consultations spécialisées. if (substr($res[codeActe][$i], 0, 4) == "CONS") { $cotation = explode("+", $res[cotationNGAP][$i]); while (list($key, $val) = each($cotation)) { // On gere le cas des actes du docteur qui prend en charge la patient // Etape1 // Recupere l'indice de facturation list($lc, $coeff) = explode(" ", $val); if ($coeff == 0) { $factu = "non"; $coeff = 1; } else { $factu = "oui"; } // Etape2 // On colle le modificateur sur les consultes specialites $majoNGAP = ""; //eko($lc); if (substr($lc, 0, 1) == "C") { // MAJO CS 1 CSC 1 CNPSY 1 $majoNGAP = $majoCONS; } $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||||{$dateReal}|{$heureReal}|" . $res[nomIntervenant][$i] . "||" . $res[matriculeIntervenant][$i] . "|" . $res[numUFexec][$i] . "||{$lc}|{$coeff}|{$factu}||{$majoNGAP}"; $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite; //eko($contenu); unset($param); $param[DTINS] = date("Y-m-d H:i") . ":00"; $param[ETAT] = "P"; $param[DISCR] = $res[idEvent][$i]; $param[TYPE] = "NGAP"; $param[CONTENU] = $contenu; $majrq = new clRequete(CCAM_BDD, "MBTV2", $param); $sql = $majrq->addRecord(); } unset($paramModif); $paramModif[validDefinitive] = "O"; $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif); $sql = $requete->updRecord("codeActe='" . $res[codeActe][$i] . "' and idDomaine=" . CCAM_IDDOMAINE . " and idEvent=" . $res[idEvent][$i]); } elseif (substr($res[codeActe][$i], 0, 4) == "NGAP") { // Il y aura deux intervenants le docteur et l'infirmier // Donc deux majorations possibles au maximun // La majoration forfaire collée pour l'un des actes ngap du docteur // La majoration forfaire collée pour l'un des actes ngap de l'infirmier $cotation = explode("+", $res[cotationNGAP][$i]); //eko ($cotation); while (list($key, $val) = each($cotation)) { // On gere le cas des actes du docteur qui prend en charge la patient // Etape1 // Recupere l'indice de facturation list($lc, $coeff) = explode(" ", $val); if ($coeff == 0) { $factu = "non"; $coeff = 1; } else { $factu = "oui"; } // Etape2 // On colle le modificateur sur le premier acte ngap du medecin la C ou CS $majoNGAP = ""; //eko($lc); if (substr($lc, 0, 1) == "C" and !$NGAPjoue) { // C ou CS $majoNGAP = $res[modificateurs][$i]; $NGAPjoue = 1; } /*else { if ( !ereg ("AMI",$lc ) and !ereg ("AIS",$lc ) and !ereg ("K",$lc ) and !ereg ("KC",$lc ) and !ereg ("PH",$lc ) and !ereg ("MNO",$lc ) and // LISTE MAJO !ereg ("MGE",$lc ) and !ereg ("MCG",$lc ) and !ereg ("MCC",$lc ) and !ereg ("MPC",$lc ) and !ereg ("MCS",$lc ) and !ereg ("MPJ",$lc ) and !ereg ("MNP",$lc ) and !$NGAPjoue ) { $majoNGAP = $res[modificateurs][$i]; $NGAPjoue = 1; } }*/ // On gere le cas des actes infirmiers //LISTE MAJO pour les actes infirmiers if (ereg("AMI", $lc) || ereg("AIS", $lc) || ereg("K", $lc) || ereg("KC", $lc) || ereg("PH", $lc) || ereg("INFN1", $lc) || ereg("INFN2", $lc) || ereg("MINFD", $lc)) { if (strcmp($this->matriculeIDE, "") == 0) { if (strcmp($options->getOption("codeAdeliInfirmier"), "") == 0) { if (strcmp($this->matriculeIntervenant, "") == 0) { $matriculeIDE = $options->getOption("codeAdeliChefService"); $nomIDE = $this->nomIntervenant; if (!$NGAPjoue) { $majoNGAP = $res[modificateurs][$i]; $NGAPjoue = 1; $Majoration_A_Effectuee = "Oui"; } } else { $matriculeIDE = $this->matriculeIntervenant; $nomIDE = $this->nomIntervenant; if (!$NGAPjoue) { $majoNGAP = $res[modificateurs][$i]; $NGAPjoue = 1; $Majoration_A_Effectuee = "Oui"; } } } else { $matriculeIDE = $options->getOption("codeAdeliInfirmier"); $nomIDE = $this->nomIDE; } } else { $matriculeIDE = $this->matriculeIDE; $nomIDE = $this->nomIDE; } //Premiere version avec la fonction gestionMajorationsActesInfirmiers // et l'option EnvoiMajorationsActesInfirmiers /* // Calcul des majo "NGAP" si on envoi pas les majo des "AMI" et "AIS" if ( !$options->getOption ('EnvoiMajorationsActesInfirmiers') ){ //eko("majo ngap :".$lc); // Concernant les actes infirmiers // Soit on envoie les modificateurs pour les actes AMI et AIS // Soit on envoie les majorations des actes AMI et AIS // Mais pas les deux. //Gestion des modificateurs de nuit et jours fériés pour las actes NGAP infirmiers //Gestion des tranches horaires pour las actes NGAP infirmiers if (($heure>=20 or ($heure>=6 and $heure<8))) $majoNGAP="N"; elseif ($heure<6) $majoNGAP="NM"; //Gestion des dimanches pour las actes NGAP infirmiers if (date("w",$dateActe)==0 and $majoNGAP=="") $majoNGAP="F"; //Gestion des jours fériés pour las actes NGAP infirmiers $dateFerie=new clDate($dateActe); if ($dateFerie->isHoliday() and $majoNGAP=="") $majoNGAP="F"; $modificateurs=$majoNGAP; } */ // Nous avons l'heure if (strcmp($Majoration_A_Effectuee, "Non") == 0) { if ($heure >= 20 && $heure < 23 || $heure >= 5 && $heure < 8) { $MajorationNGAP1 = "N"; $Majoration_A_Effectuee = "Oui"; } if ($heure >= 23 || $heure < 5) { $MajorationNGAP1 = "NM"; $Majoration_A_Effectuee = "Oui"; } // pour les jours féries $dateFerie = new clDate($dateActe); if ($dateFerie->isHoliday() && strcmp($Majoration_A_Effectuee, "Non") == 0) { $MajorationNGAP1 = "F"; $Majoration_A_Effectuee = "Oui"; } // pour les dimanches if (date("w", $dateActe) == 0 && strcmp($Majoration_A_Effectuee, "Non") == 0) { $MajorationNGAP1 = "F"; $Majoration_A_Effectuee = "Oui"; } // pour les samedis if (date("w", $dateActe) == 6 && $heure >= 8 && strcmp($Majoration_A_Effectuee, "Non") == 0) { $MajorationNGAP1 = "F"; $Majoration_A_Effectuee = "Oui"; } $majoNGAP = $MajorationNGAP1; } $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||||{$dateReal}|{$heureReal}|" . $nomIDE . "||" . $matriculeIDE . "|" . $res[numUFexec][$i] . "||{$lc}|{$coeff}|{$factu}||{$majoNGAP}"; $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite; //eko($contenu); // Mise à jour de la table ccam_cotation_acte if (strcmp($type, "creation") == 0) { $paramModif["nomIntervenant"] = $nomIDE; $paramModif["matriculeIntervenant"] = $matriculeIDE; $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif); $sql = $requete->updRecord("idEvent=" . $this->idEvent . " and identifiant=" . $res["identifiant"][$i] . " and idDomaine=" . CCAM_IDDOMAINE); //eko($res["identifiant"][$i]); } } else { $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||||{$dateReal}|{$heureReal}|" . $res[nomIntervenant][$i] . "||" . $res[matriculeIntervenant][$i] . "|" . $res[numUFexec][$i] . "||{$lc}|{$coeff}|{$factu}||{$majoNGAP}"; $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite; //eko($contenu); } unset($param); $param[DTINS] = date("Y-m-d H:i") . ":00"; $param[ETAT] = "P"; $param[DISCR] = $res[idEvent][$i]; $param[TYPE] = "NGAP"; $param[CONTENU] = $contenu; $majrq = new clRequete(CCAM_BDD, "MBTV2", $param); $sql = $majrq->addRecord(); } unset($paramModif); $paramModif[validDefinitive] = "O"; $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif); $sql = $requete->updRecord("codeActe='" . $res[codeActe][$i] . "' and idDomaine=" . CCAM_IDDOMAINE . " and idEvent=" . $res[idEvent][$i]); } else { if ($res[type][$i] == "ACTE") { list($modificateurs1, $modificateurs4) = explode("|", $res[modificateurs][$i]); if ($modificateurs1) { $modificateursCotes = explode("~", $modificateurs1); $modificateurs1 = ""; while (list($key, $val) = each($modificateursCotes)) { if ($val == "F" or $val == "P" or $val == "S") { if (!$modificateursJoues[$val] and !$indicateurs["C"] or $indicateurs["C"] and substr($res[codeActe][$i], 0, 3) == "DEQ") { $modificateurs1 .= "{$val}~"; } //eko("indicC:$indicateurs[C]-val:$val-modif1:$modificateurs1-modifJoueAvant:".$modificateursJoues[$val]); } else { $modificateurs1 .= "{$val}~"; } $modificateursJoues[$val] = 1; //eko("val:$val-modif1:$modificateurs1-modifJoue:".$modificateursJoues[$val]); } /*eko("codeActe:".$res[codeActe][$i]); eko($modificateursCotes); eko("modif1Final:$modificateurs1"); eko($modificateursJoues);*/ if ($modificateurs1) { $modificateurs1 = substr($modificateurs1, 0, -1); } } $modificateurs4 = ""; list($intervenant1, $intervenant4) = explode("|", $res[matriculeIntervenant][$i]); list($nomIntervenant1, $nomIntervenant4) = explode("|", $res[nomIntervenant][$i]); $codeActe = $res[codeActe][$i]; $codeAssociation = $tabAsso[$codeActe]; $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||1|0|{$dateReal}|{$heureReal}|" . $nomIntervenant1 . "||" . $intervenant1 . "|" . $res[numUFexec][$i] . "|" . $modificateurs1 . "|||oui|{$codeAssociation}"; $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite; unset($param); $param[DTINS] = date("Y-m-d H:i") . ":00"; $param[ETAT] = "P"; $param[DISCR] = $res[idEvent][$i]; $param[TYPE] = "CCAM"; $param[CONTENU] = $contenu; $majrq = new clRequete(CCAM_BDD, "MBTV2", $param); $sql = $majrq->addRecord(); if ($res[codeActivite4][$i] == "O") { /*//Recherche du nom de l'anesthésiste dans la liste unset($paramRq); $paramRq[code]=$intervenant4; $paramRq[idDomaine]=CCAM_IDDOMAINE; $paramRq[nomListe]="Anesthésie"; $req=new clResultQuery; $res2=$req->Execute("Fichier","CCAM_getNomMed",$paramRq,"ResultQuery"); //eko($res2[INDIC_SVC]); $nomMed4=$res2[nomItem][0];*/ $contenuSuite = "|{$type}|" . $res[identifiant][$i] . "|" . $res[codeActe][$i] . "||4|0|{$dateReal}|{$heureReal}|" . $nomIntervenant4 . "||" . $intervenant4 . "|" . $res[numUFexec][$i] . "|" . $modificateurs4 . "|||oui|{$codeAssociation}"; $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite; unset($param); $param[DTINS] = date("Y-m-d H:i:") . "00"; $param[ETAT] = "P"; $param[DISCR] = $res[idEvent][$i]; $param[TYPE] = "CCAM"; $param[CONTENU] = $contenu; $majrq = new clRequete(CCAM_BDD, "MBTV2", $param); $sql = $majrq->addRecord(); } unset($paramModif); $paramModif[validDefinitive] = "O"; $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif); $sql = $requete->updRecord("codeActe='" . $res[codeActe][$i] . "' and idDomaine=" . CCAM_IDDOMAINE . " and idEvent=" . $res[idEvent][$i]); } else { $idEvent = $res[idEvent][$i]; /*$numSejour=$res[numSejour][$i]; $idu=$res[idu][$i]; $nomu=$res[nomu][$i]; $pren=$res[pren][$i]; $sexe=$res[sexe][$i]; $dtnai=$res[dtnai][$i]; $numUFdem=$res[numUFdem][$i];*/ $numUFexec = $res[numUFexec][$i]; $nomIntervenant = $res[nomIntervenant][$i]; $matriculeIntervenant = $res[matriculeIntervenant][$i]; $cptDiag == 1 ? $sep = "|" : ($sep = "~"); $contenuDiag .= $res[codeActe][$i] . $sep; $cptDiag++; } // Cas du diagnostic } // Cas des actes CCAM } //for ($i=0;isset($res[identifiant][$i]);$i++) if ($contenuDiag) { /*unset($paramRq); $paramRq[cw]="type='DIAG' and validDefinitive='O' and idEvent=".$res[idEvent][$i]." and idDomaine=".CCAM_IDDOMAINE; $req=new clResultQuery; $res=$req->Execute("Fichier","CCAM_getActesDiagsCotation",$paramRq,"ResultQuery"); //eko($res[INDIC_SVC]); if ($res[INDIC_SVC][2]!=0) $type="modification";*/ $cptDiag--; if ($cptDiag == 1) { $sepDiag = "|"; } else { $sepDiag = ""; } $contenuDiag = substr($contenuDiag, 0, -1); $contenuSuite = "|{$type}|" . $idEvent . "|" . $contenuDiag . $sepDiag . "|||{$dateReal}|{$heureReal}|" . $nomIntervenant . "||" . $matriculeIntervenant . "|" . $numUFexec . "||||"; $contenu = $contenuInit . $contenuInit2 . $contenuInit3 . $contenuSuite; unset($param); $param[DTINS] = date("Y-m-d H:i:") . "00"; $param[ETAT] = "P"; $param[DISCR] = $idEvent; $param[TYPE] = "DIAG"; $param[CONTENU] = $contenu; $majrq = new clRequete(CCAM_BDD, "MBTV2", $param); $sql = $majrq->addRecord(); unset($paramModif); $paramModif[validDefinitive] = "O"; $requete = new clRequete(CCAM_BDD, "ccam_cotation_actes", $paramModif); $sql = $requete->updRecord("type='DIAG' and idEvent=" . $idEvent . " and idDomaine=" . CCAM_IDDOMAINE); } }
function genBlocEtatCivil($nomBloc, $mod, $droit, $date = '', $sortie = '') { global $session; global $options; // Initialisation des objets et des variables utilisées. // Pour générer des formulaires plus loin. $form = new clForm(); // Date d'exécution. $now = new clDate(); // Récupération des options. $retourmax = $options->getOption("Dates Patient"); $tranches = $options->getOption("DatesDécoup Patient"); // Récupération de la valeur actuelle du bloc. $res = ''; eval("\$res = \$this->patient->get{$nomBloc} ( ) ;"); // Si une date a été transmise et qu'elle n'est pas nulle, on initialise $res avec cette valeur. if ($date) { if ($res != "0000-00-00 00:00:00") { $res = $date->getDate("d-m-Y H:i"); } else { $res = ''; } } // Si toutes ces conditions sont réunies, alors on fait transiter le patient sorti vers la table des patients présents. if ($session->getNavi(3) == "mod" . $nomBloc and ($_POST['AnnulerSortie'] or $_POST['AnnulerSortie_x']) and $session->getDroit($this->type . "_EtatCivil", $droit)) { $modif = "0000-00-00 00:00:00"; $this->patient->setAttribut($nomBloc, $modif); $this->patient = new clPatient($this->idpatient, "Sortis"); $this->patient->entrerPatient(); if ($options->getOption("Module_CCAM")) { $ccam = new clCCAMCotationActesDiags($this->paramCCAM); $ccam->deleteBAL(); if ($options->getOption('HprimXML_Actif')) { $hprimXml = new clHprimXML(); } } $res = ""; // Si ces conditions sont réunies, alors on change la date du champs avec la valeur transmise. } elseif ($session->getNavi(3) == "mod" . $nomBloc and ($_POST['Valider'] or $_POST['Valider_x']) and $session->getDroit($this->type . "_EtatCivil", $droit)) { if ($date) { if ($_POST['ValiderMaintenant'] or $_POST['ValiderMaintenant_x']) { $newdate = new clDate(); } elseif ($_POST["mod" . $nomBloc] == "now") { $newdate = new clDate(); } else { $newdate = new clDate($_POST["mod" . $nomBloc]); } $modif = $newdate->getDatetime(); $res = $newdate->getDate("d-m-Y H:i"); // Si le paramètre $sortie est vrai, alors on fait transiter le patient présent vers la table des patients sortis. if ($sortie) { $this->patient->setAttribut($nomBloc, $modif); $this->patient = new clPatient($this->idpatient, "Presents"); clFoRmX_manip::rangerDossMedChrono($this->patient); clFoRmX_manip::rangerDossMedAEV($this->patient); $this->patient->sortirPatient(); if ($options->getOption("Module_CCAM")) { $this->paramCCAM["dtFinInterv"] = $this->patient->getDateSortie(); $ccam = new clCCAMCotationActesDiags($this->paramCCAM); $ccam->writeBALSorti(); if ($options->getOption('HprimXML_Actif')) { $hprimXml = new clHprimXML(); } } $this->rien = "sortie"; } // Dans le dernier cas, il s'agit d'un bloc de type "textarea" tout simple à mettre à jour. } else { $modif = $_POST["mod" . $nomBloc]; $res = $modif; } // Mise à jour du patient. $session->setLogSup("Modification du bloc {$nomBloc}"); $this->patient->setAttribut($nomBloc, $modif); $this->patient = new clPatient($this->idpatient, $this->type); // Dans ce cas, nous devons afficher le formulaire adéquate à la modification du bloc. } elseif ($session->getNavi(3) == "mod" . $nomBloc and !$_POST['Annuler'] and !$_POST['Annuler_x']) { // Cas des champs de type date. $session->setLogSup("Demande de modification du bloc {$nomBloc}"); if ($date) { if ($sortie and $this->patient->getDateExamen() != '0000-00-00 00:00:00') { $dateMin = new clDate($this->patient->getDateExamen()); } else { $dateMin = new clDate($this->patient->getDateAdmission()); } $dateNow = new clDate(); if ($tranches >= 5) { $minutes = $dateNow->getMinutes(); $minutesless = $minutes % 5; $dateNow->addMinutes(-$minutesless); } $data[now] = 'Maintenant'; $min = $dateMin->getTimestamp(); $t = $dateNow->getTimestamp(); $data[$t] = $dateNow->getDate("d-m-Y H:i"); // On limite la taille du select $d1 = new clDate(); $d2 = new clDate($dateMin->getDatetime()); $duree = new clDuree($d1->getDifference($d2)); $duree->invertNegatif(); //if ( $duree->getDays() > 50 ) { // $d1 -> addDays ( -50 ) ; // $min = $d1 -> getTimestamp ( ) ; //} // On parcourt les dates en fonctions des options. for ($i = 0; $dateNow->getTimestamp() >= $min; $i += $tranches) { $t = $dateNow->getTimestamp(); $data[$t] = $dateNow->getDate("d-m-Y H:i"); $dateNow->addMinutes(-$tranches); } $f .= $res . "<br />" . $form->genForm(URL); /* // Préparation de la première date de la liste. $now -> addHours ( -$retourmax ) ; $min = $now -> getTimestamp ( ) ; $now -> addHours ( $retourmax ) ; if ( $tranches >= 5 ) { $minutes = $now -> getMinutes ( ) ; $minutesless = ( $minutes % 5 ) ; $now -> addMinutes ( -$minutesless ) ; } $data[now] = 'Maintenant' ; $t = $now -> getTimestamp ( ) ; $data[$t] = $now -> getDate ( "d-m-Y H:i" ) ; // On parcourt les dates en fonctions des options. for ( $i = 0 ; $now -> getTimestamp ( ) >= $min ; $i += $tranches ) { $t = $now -> getTimestamp ( ) ; $data[$t] = $now -> getDate ( "d-m-Y H:i" ) ; $now -> addMinutes ( -$tranches ) ; } $f .= $res."<br />".$form -> genForm ( URL ) ; */ // S'il ne s'agit pas de la date de sortie et que le patient est sorti, // alors on affiche le select contenant la liste des dates possibles. if (!($this->type == "Sortis" and $sortie)) { $f .= $form->genSelect("mod" . $nomBloc, 1, $data); } } else { // Cas d'un formulaire de type "textarea" tout simple. $f .= $form->genForm(URL); $f .= $form->genTextArea("mod" . $nomBloc, $res) . "<br /><center>"; } // Cas d'une date. if ($date) { // Cas de la date de sortie. if ($sortie) { // Cas d'un patient déjà sorti : On affiche seulement un bouton d'annulation de sortie. if ($this->type == "Sortis") { $f .= $form->genImage("AnnulerSortie", "Annuler la sortie", URLIMG . "annulerSortie.gif"); $f .= $form->genHidden("navi", $session->genNavi("Liste_Presents", $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); $f .= $form->genEndForm(); // $f .= $form -> genForm ( URL ) ; // $f .= $form -> genImage ( "RetourPatient", "Retour du patient", URLIMGRET ) ; // $f .= $form -> genHidden ( "navi", $session->genNavi ( "Liste_Presents", $this->patient->getID ( ) ) ) ; // Dans les autres cas, on affiche les boutons de validation / annulation de la sortie. } else { $contraintes = new clContraintes($this->patient->getID(), $this->paramCCAM); //formulaire(s) à remplir bloquant la sortie ( pré-contraintes ) ? if (clTuFormxTrigger::getWatcher($this->patient)->isTriggersOnOut()) { $enquetes = clTuFormxTriggerWatcher::getInstance($this->patient); $enquetes->launchTriggersOnOut(); //eko("trigers lances, sortie de la fenetre bloquante"); return ''; } else { if (clTuFormxTrigger::getWatcher($this->patient)->isTriggersWaitingForLauch()) { //eko("watchers en cours, sortie de la fenetre bloquante"); return ''; } else { if ($contraintes->runCheck()) { $f .= $form->genImage("Valider", "Valider", URLIMGVAL, 'style="border: 0px; background-color: #FFFF99;"'); $f .= $form->genHidden("navi", $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); $f .= $form->genEndForm(); $f .= $form->genForm(URL); $f .= $form->genImage("Annuler", "Annuler", URLIMGANN, 'style="border: 0px; background-color: #FFFF99;"'); $f .= $form->genHidden("navi", $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); } else { $session->setLogSup('Contraintes non respectées pour la sortie'); $this->af .= $contraintes->getContraintes(); } } } } // Cas d'un champs date normal : affichage des boutons valider et annuler. } else { $f .= $form->genImage("Valider", "Valider", URLIMGVAL, 'style="border: 0px; background-color: #FFFF99;"'); $f .= $form->genHidden("navi", $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); $f .= $form->genEndForm(); $f .= $form->genForm(URL); $f .= $form->genImage("Annuler", "Annuler", URLIMGANN, 'style="border: 0px; background-color: #FFFF99;"'); $f .= $form->genHidden("navi", $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); } // Cas d'un champs normal : affichage des boutons valider et annuler. } else { $f .= $form->genImage("Valider", "Valider", URLIMGVAL, 'style="border: 0px; background-color: #FFFF99;"'); $f .= $form->genHidden("navi", $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); $f .= $form->genEndForm(); $f .= $form->genForm(URL); $f .= $form->genImage("Annuler", "Annuler", URLIMGANN, 'style="border: 0px; background-color: #FFFF99;"'); $f .= $form->genHidden("navi", $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); } // On ferme la balise du formulaire. $f .= "</center>" . $form->genEndForm(); // On modifie le bloc ModeliXe passé en paramètres. $mod->MxText($nomBloc, $f); // On signale que le bloc a été modifié. $af = 1; } // S'il n'y a pas eu d'affichage jusqu'à maintenant, il ne s'agit que d'afficher la valeur contenue dans ce bloc. if (!$af) { // Si le droit de modification est présent, alors nous affichons le lien pour modifier le bloc. if ($session->getDroit($this->type . "_EtatCivil", $droit)) { if ($date) { $image = URLIMGHOR; } else { $image = URLIMGMOD; } if ($nomBloc == "DateExamen" and $_POST['Medecin'] and $this->patient->getDateExamen() == "0000-00-00 00:00:00" and !$this->patient->getMedecin()) { $date = new clDate(); $dateA = new clDate($this->patient->getDateAdmission()); if ($date->getTimestamp() > $dateA->getTimestamp()) { $this->patient->setAttribut("DateExamen", $date->getDatetime()); $res = $date->getDate("d-m-Y H:i"); } else { $dateA->addSeconds(1); $this->patient->setAttribut("DateExamen", $dateA->getDatetime()); $res = $dateA->getDate("d-m-Y H:i"); } } if ($nomBloc == "DateExamen" and isset($_POST['Medecin']) and !$_POST['Medecin']) { $this->patient->setAttribut("DateExamen", "0000-00-00 00:00:00"); $res = "--"; } if (!$this->export) { if ($nomBloc == "DateSortie") { $retour = ''; if ($options->getOption('EnqueteRadio')) { $retour = clListeRadios::getRetour($this->patient->getID(), IDAPPLICATION); } if ($retour) { $mod->MxText("retourRadio", $retour); } else { $questionSortie = $this->getQuestionSortie(); if ($questionSortie) { $mod->MxText("retourRadio", $questionSortie); } else { $mod->MxImage("imgModifier" . $nomBloc, $image, "Modifier {$nomBloc}"); $mod->MxUrl("lien" . $nomBloc, URLNAVI . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); } } } else { $mod->MxImage("imgModifier" . $nomBloc, $image, "Modifier {$nomBloc}"); $mod->MxUrl("lien" . $nomBloc, URLNAVI . $session->genNavi($session->getNavi(0), $session->getNavi(1), $session->getNavi(2), "mod" . $nomBloc)); } } } // Affichage du contenu du bloc s'il existe sinon on affiche la valeur par défaut. if ($res) { $mod->MxText($nomBloc, nl2br($res)); } else { $mod->MxText($nomBloc, VIDEDEFAUT); } } }
function genEnvoi() { global $options; global $errs; //Attention, jour concerné = lendemain des données $dateJourConcerne = new clDate(); $tsp = $dateJourConcerne->getTimestamp(); define(nomForm, "URG"); define(idActeur, $options->getOption('RPU_IdActeur')); define(arRequis, $options->getOption('RPU_AR_Actif')); define(cleDepot, $options->getOption('RPU_CleActeur')); define(mail, $options->getOption('RPU_AR_Mail')); define(cfg_expediteur_alerte, "terminal_urgences"); define(chemin, URLRPU . 'arh/'); define(date_jour, date("Ymd", $tsp)); define(jour, substr(date_jour, 6, 2)); define(mois, substr(date_jour, 4, 2)); define(annee, substr(date_jour, 0, 4)); define(date_file, date("YmdHis")); define(date_envoi, date("d/m/Y à H:i:s")); define(date_event, date("d/m/Y", mktime(0, 0, 0, mois, jour - 1, annee))); define(from, date("Y-m-d H:i:s", mktime(0, 0, 0, mois, jour - 1, annee))); define(to, date("Y-m-d H:i:s", mktime(23, 59, 59, mois, jour - 1, annee))); $req = "select idpatient, uf , dt_naissance , type_destination\r\n from patients_sortis\r\n\t where manuel!=1 and dt_admission between '" . from . "' and '" . to . "' and type_destination!='X' and valide>=1\r\n\t\tUNION\r\n\t\tselect idpatient, uf , dt_naissance , type_destination\r\n\t\tfrom patients_presents\r\n\t\twhere manuel!=1 and dt_admission between '" . from . "' and '" . to . "' and type_destination!='X' and valide>=1"; $config[type] = "MySQL"; $config[host] = MYSQL_HOST; $config[login] = MYSQL_USER; $config[password] = MYSQL_PASS; $config[db] = BDD; $requete = new clResultQuery(); // On récupère le résultat de la requête sous la forme ResultQuery. $res = $requete->Execute("requete", $req, $config); eko($res[INDIC_SVC]); $age1 = 0; $age75 = 0; $NbHospit = 0; $NbUHCD = 0; $NbTransfert = 0; $ufUHCD = $options->getOption("numUFUHCD"); //eko ( $res['INDIC_SVC'] ) ; if ($res[INDIC_SVC][2]) { $NbPassages = $res[INDIC_SVC][2]; // On a le nombre de passages while (list($key, $val) = each($res[dt_naissance])) { $dateN = new clDate($val); $dateA = new clDate(from); $duree = new clDuree(); $duree->setValues($dateA->getDifference($dateN)); $age = $duree->getYears(); if ($age < 1) { $age1++; // Constitution du nb de passage < à 1 an } elseif ($age > 75) { $age75++; // Constitution du nb de passage > 75 ans } // Hospitalisations if ($res[type_destination][$key] == "H" and $res[uf][$key] != $ufUHCD) { $NbHospit++; } // UHCD if ($res[uf][$key] == $ufUHCD) { $NbUHCD++; } // Transferts if ($res[type_destination][$key] == "T") { $NbTransfert++; } //echo $val."--=> ".$res[type_destination][$key]." ".$age ." ans <br>"; } $balise_element = "\n<entete>"; $balise_element .= "\n<idActeur>" . idActeur . "</idActeur>"; $balise_element .= "\n<cleActeur>" . cleDepot . "</cleActeur>"; $balise_element .= "\n<arRequis>" . arRequis . "</arRequis>"; $balise_element .= "\n<mail>" . mail . "</mail>"; $balise_element .= "\n</entete>"; $balise_element .= "\n<element>"; $balise_element .= "\n<nomForm>" . nomForm . "</nomForm>"; $balise_element .= "\n<date_event>" . date_event . "</date_event>"; $balise_element .= "\n<NbPassages>{$NbPassages}</NbPassages>"; $balise_element .= "\n<NbPassInf1An>{$age1}</NbPassInf1An>"; $balise_element .= "\n<NbPassageSup75Ans>{$age75}</NbPassageSup75Ans>"; $balise_element .= "\n<NbHospit>{$NbHospit}</NbHospit>"; $balise_element .= "\n<NbHospitUHCD>{$NbUHCD}</NbHospitUHCD>"; $balise_element .= "\n<NbTransfert>{$NbTransfert}</NbTransfert>"; $balise_element .= "\n</element>"; $nom_fic = idActeur . "_" . date_file . ".xml"; $nom_fic_export = chemin . $nom_fic; $xml_data = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?>\r\n\t\t\t\n<result>" . $balise_element . "\n</result>"; $fp = fopen($nom_fic_export, "w"); if (!fwrite($fp, $xml_data)) { eko("pb ecriture fichier xml"); } fclose($fp); copy($nom_fic_export, URLLOCAL . 'rpu/logs/' . $nom_fic); $affichage = "<center><h2>Export des données Urgences - CH-Hyères</h2></center>\r\n\t\t\t<u>Date d'export:</u> le " . date_envoi . "<br>\r\n\t\t\t<u>Contenu exporté :</u> {$balise_element}<br>\r\n\t\t\t<u>Fichier d'export :</u> {$nom_fic_export}"; // Cryptage du fichier. $mailE = $options->getOption('RPU_Envoi_Mail'); $gpg = new gnuPG(false, GNUPG); $gpg->EncryptFile($mailE, $nom_fic_export); if (!$gpg->error) { $this->message .= "<font color=\"green\">Le cryptage du fichier ({$nom_fic_export}.gpg) s'est bien déroulé.<br/></font>"; } else { $this->message .= "<font color=\"red\">Le cryptage du fichier ({$nom_fic_export}.gpg) a échoué :" . $gpg->error . "<br/></font>"; } if ($options->getOption('RPU_TypeEnvoi') == 'mail') { // Envoi du fichier RPU. $contenuFic = fread(fopen($nom_fic_export . '.gpg', "r"), filesize($nom_fic_export . '.gpg')); // eko ( $contenuFic ) ; $mail = new mime_mail(); $mail->to = $options->getOption("RPU_Envoi_Mail"); //$mail->to = "*****@*****.**" ; //eko ( $options->getOption ( "RPU_Envoi_Mail" ) ) ; $mail->subject = "Données urgences (" . date_envoi . ")"; $mail->body = "Données urgences (" . date_envoi . ")"; $mail->from = Erreurs_MailApp; $mail->attach($contenuFic, $nom_fic . '.gpg'); if ($mail->sendXham()) { $this->message .= "<font color=\"green\">L'envoi du fichier ({$nom_fic_export}.gpg) s'est bien déroulé.<br/></font>"; } else { $this->message .= "<font color=\"red\">L'envoi du fichier ({$nom_fic_export}.gpg) a échoué.<br/></font>"; } } else { rename($nom_fic_export, chemin . 'ok/' . $nom_fic); $this->message .= "Connexion au serveur FTP '" . $options->getOption('RPU_FTP_Host') . ':' . $options->getOption('RPU_FTP_Port') . "' -> "; $con = ftp_connect($options->getOption('RPU_FTP_Host')); if (!$con) { $this->message .= "<font color='red'>KO</font><br/>"; $errs->addErreur('RPU : Impossible de se connecter au serveur "' . $options->getOption('RPU_FTP_Host') . ':' . $options->getOption('RPU_FTP_Port') . '"'); } else { $this->message .= "<font color='green'>OK</font><br/>"; $this->message .= "Authentification au serveur FTP avec l'utilisateur '" . $options->getOption('RPU_FTP_User') . "' -> "; $log = ftp_login($con, $options->getOption('RPU_FTP_User'), $options->getOption('RPU_FTP_Pass')); if (!$log) { $this->message .= "<font color='red'>KO</font><br/>"; $errs->addErreur('RPU : Impossible de se connecter au serveur avec l\'utilisateur "' . $options->getOption('RPU_FTP_User') . '"'); } else { $this->message .= "<font color='green'>OK</font><br/>"; $r = opendir('rpu/arh/'); while ($fic = readdir($r)) { if ($fic != "." and $fic != ".." and $fic != "ok" and $fic != "logs" and $fic != 'arh') { $this->message .= "Envoi du fichier '{$fic}' -> "; $put = ftp_put($con, $fic, chemin . $fic, FTP_BINARY); if (!$put) { $this->message .= "<font color='red'>KO</font><br/>"; $errs->addErreur('RPU : Impossible d\'envoyer le fichier "' . $fic . '".'); } else { $this->message .= "<font color='green'>OK</font><br/>"; rename(chemin . $fic, chemin . 'ok/' . $fic); } } } } } } $this->af = $affichage . "<br/>" . $this->message; } else { $this->af .= "Aucun patient retourné par la requête : envoi impossible."; } }
function getDureeCourte($date = '') { // Si une date de naissance est transmise à la classe, // alors on calcul la différence avec la date d'aujourd'hui // et on récupère ainsi l'âge de la personne. if ($date) { // Date du jour. $d1 = new clDate(); // Date de naissance de la personne. $d2 = new clDate($date); // Calcul de la différence. $this->setValues($d1->getDifference($d2)); } // Calcul des durées. $res = $this->duree; $heures = sprintf("%d", $res / 3600); $res = $res - 3600 * $heures; $minutes = sprintf("%d", $res / 60); if ($heures < 10) { $heures = '0' . $heures; } if ($minutes < 10) { $minutes = '0' . $minutes; } // Fabrication de l'affichage. $d .= $heures . "h"; $d .= $minutes . "m"; // On retourne finalement l'affichage. return $d; }