/** * Tell wether given day is active in planning * * @param string|object $day ISO date * * @return bool */ function isDayActive($day) { return CMbRange::in($day, $this->date_min_active, $this->date_max_active); }
$tplHeader->assign("applicationVersion", $applicationVersion); $tplHeader->assign("allInOne", CValue::get("_aio")); $tplHeader->assign("portal", array("help" => mbPortalURL($m, $tab), "tracker" => mbPortalURL("tracker"))); $tplHeader->display("header.tpl"); } // Check muters if ($muters = CValue::get("muters")) { $muters = explode("-", $muters); if (count($muters) % 2 != 0) { trigger_error("Muters should come by min-max intervals time pairs", E_USER_WARNING); } else { $time_now = CMbDT::time(); while (count($muters)) { $time_min = array_shift($muters); $time_max = array_shift($muters); if (CMbRange::in($time_now, $time_min, $time_max)) { CAppUI::stepMessage(UI_MSG_OK, "msg-common-system-muted", $time_now, $time_min, $time_max); return; } } } } // Check whether we should trace SQL queries if ($query_trace = CValue::get("query_trace")) { CSQLDataSource::$trace = true; } if ($query_report = CValue::get("query_report")) { CSQLDataSource::$report = true; } // tabBox et inclusion du fichier demandé if ($tab !== null) {
/** * @see parent::checkProperty() */ function checkProperty($object) { $propValue =& $object->{$this->fieldName}; // Vérification du format $matches = array(); if (!preg_match("/^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\$/", $propValue, $matches)) { if ($propValue === 'current' || $propValue === 'now') { $propValue = CMbDT::date(); return null; } return "Format de date invalide : '{$propValue}'"; } // Mois grégorien $mois = intval($matches[2]); if (!CMbRange::in($mois, $this->progressive ? 0 : 1, 12)) { // Possibilité de mettre des mois vides () return "Mois '{$mois}' non compris entre 1 et 12 ('{$propValue}')"; } // Jour grégorien $jour = intval($matches[3]); if (!CMbRange::in($jour, $this->progressive ? 0 : 1, 31)) { return "Jour '{$jour}' non compris entre 1 et 31 ('{$propValue}')"; } }
$acte->evenement_ssr_id = $evenement->_id; $msg = $acte->store(); CAppUI::displayMsg($msg, "{$acte->_class}-msg-create"); } } } else { if (count($_days)) { $entree = CMbDT::date($sejour->entree); $sortie = CMbDT::date($sejour->sortie); $bilan = $sejour->loadRefBilanSSR(); $referent = $bilan->loadRefKineReferent(); $date = CValue::getOrSession("date", CMbDT::date()); $monday = CMbDT::date("last monday", CMbDT::date("+1 day", $date)); foreach ($_days as $_number) { $_day = CMbDT::date("+{$_number} DAYS", $monday); if (!CMbRange::in($_day, $entree, $sortie)) { CAppUI::setMsg("CEvenementSSR-msg-failed-bounds", UI_MSG_WARNING); continue; } if (!$_heure_deb || !$duree) { continue; } $evenement = new CEvenementSSR(); $evenement->equipement_id = $equipement_id; $evenement->debut = "{$_day} {$_heure_deb}"; $evenement->duree = $duree; $evenement->remarque = $remarque; $evenement->therapeute_id = $therapeute_id; $evenement->type_seance = $type_seance; // Transfert kiné référent => kiné remplaçant si disponible if ($therapeute_id == $referent->_id) {
$title .= " " . substr($patient->prenom, 0, 2) . "."; } if (!$sejour_id && $_evenement->remarque) { $title .= " - " . $_evenement->remarque; } // Color $therapeute = $_evenement->loadRefTherapeute(); $function = $therapeute->loadRefFunction(); $color = "#{$function->color}"; // Classes $class = ""; if (!$_evenement->countBackRefs("actes_cdarr") && !$_evenement->countBackRefs("actes_csarr")) { $class = "zero-actes"; } $_sejour = $_evenement->_ref_sejour; if (!CMbRange::in($_evenement->debut, CMbDT::date($_sejour->entree), CMbDT::date("+1 DAY", $_sejour->sortie))) { $class = "disabled"; } if ($_evenement->realise && $selectable) { $class = "realise"; } if ($_evenement->annule && $selectable) { $class = "annule"; } $css_classes = array(); $css_classes[] = $class; $css_classes[] = $sejour->_guid; $css_classes[] = $equipement->_guid; // Title and color in prescription case if ($line = $_evenement->loadRefPrescriptionLineElement()) { $element = $line->_ref_element_prescription;
/** * @see parent::check() */ function check() { if ($this->_forwardRefMerging) { return null; } // Vérouillage d'un événement traité $this->completeField("realise", "annule", "nb_patient_seance", "nb_intervenant_seance"); $this->_traite = $this->realise || $this->annule; if ($this->_traite && !$this->_traitement) { return "Evénément déjà traité (réalisé ou annulé)"; } // Evénement dans les bornes du séjour $this->completeField("sejour_id", "debut"); $sejour = $this->loadRefSejour(); // Vérifier seulement les jours car les sorties peuvent être imprécises pour les hospit de jours if ($sejour->_id && $this->debut) { $date_debut = CMbDT::date($this->debut); $date_entree = CMbDT::date(CMbDT::date($sejour->entree)); $date_sortie = CMbDT::date(CMbDT::date($sejour->sortie)); if (!CMbRange::in($date_debut, $date_entree, $date_sortie)) { return "Evenement SSR en dehors des dates du séjour"; } } // Cas de la réalisation des événements SSR $this->loadRefTherapeute(); // Si le therapeute n'est pas defini, c'est if ($this->therapeute_id) { $therapeute = $this->_ref_therapeute; } else { // Chargement du therapeute de la seance $evt_seance = new CEvenementSSR(); $evt_seance->load($this->seance_collective_id); $evt_seance->loadRefTherapeute(); $therapeute = $evt_seance->_ref_therapeute; } if ($this->fieldModified("realise")) { // Si le thérapeute n'a pas d'identifiant CdARR if (!$therapeute->code_intervenant_cdarr) { return CAppUI::tr("CMediusers-code_intervenant_cdarr-none"); } $therapeute->loadRefIntervenantCdARR(); $code_intervenant_cdarr = $therapeute->_ref_intervenant_cdarr->code; // Création du RHS au besoins $rhs = $this->getRHS(); if (!$rhs->_id) { $rhs->store(); } if ($rhs->facture == 1) { CAppUI::stepAjax(CAppUI::tr("CRHS.charged"), UI_MSG_WARNING); } $this->loadView(); // Complétion de la ligne RHS foreach ($this->loadRefsActesCdARR() as $_acte_cdarr) { $ligne = new CLigneActivitesRHS(); $ligne->rhs_id = $rhs->_id; $ligne->executant_id = $therapeute->_id; $ligne->code_activite_cdarr = $_acte_cdarr->code; $ligne->code_intervenant_cdarr = $code_intervenant_cdarr; $ligne->loadMatchingObject(); $ligne->crementDay($this->debut, $this->realise ? "inc" : "dec"); $ligne->auto = "1"; $ligne->store(); } foreach ($this->loadRefsActesCsARR() as $_acte_csarr) { $ligne = new CLigneActivitesRHS(); $ligne->rhs_id = $rhs->_id; $ligne->executant_id = $therapeute->_id; $ligne->code_activite_csarr = $_acte_csarr->code; $ligne->code_intervenant_cdarr = $code_intervenant_cdarr; $ligne->modulateurs = $_acte_csarr->modulateurs; $ligne->phases = $_acte_csarr->phases; $ligne->nb_patient_seance = $this->nb_patient_seance; $ligne->nb_intervenant_seance = $this->nb_intervenant_seance; $ligne->loadMatchingObject(); $ligne->crementDay($this->debut, $this->realise ? "inc" : "dec"); $ligne->auto = "1"; $ligne->store(); } } return parent::check(); }
/** * @see parent::check() */ function check() { $msg = null; $this->completeField("chir_id", "plageop_id", "sejour_id"); if (!$this->_id && !$this->chir_id) { $msg .= "Praticien non valide "; } // Bornes du séjour $sejour = $this->loadRefSejour(); $this->loadRefPlageOp(); if ($this->_check_bounds && !$this->_forwardRefMerging) { if ($this->plageop_id !== null && !$sejour->entree_reelle) { $date = CMbDT::date($this->_datetime); $entree = CMbDT::date($sejour->entree_prevue); $sortie = CMbDT::date($sejour->sortie_prevue); if (!CMbRange::in($date, $entree, $sortie)) { $msg .= "Intervention du {$date} en dehors du séjour du {$entree} au {$sortie}"; } } } // Vérification de la signature de l'anesthésiste pour la visite de pré-anesthésie if ($this->fieldModified("prat_visite_anesth_id") && $this->prat_visite_anesth_id !== null && $this->prat_visite_anesth_id != CAppUI::$user->_id) { $anesth = new CUser(); $anesth->load($this->prat_visite_anesth_id); if (!CUser::checkPassword($anesth->user_username, $this->_password_visite_anesth)) { $msg .= "Mot de passe incorrect"; } } return $msg . parent::check(); }
/** * Récupération de la plage de l'intervention * * @param DOMNode $node Node * @param COperation $operation Intervention * * @return void */ function mappingPlage(DOMNode $node, COperation $operation) { $debut = $this->getDebutInterv($node); // Traitement de la date/heure début, et durée de l'opération $date_op = CMbDT::date($debut); $time_op = CMbDT::time($debut); // Recherche d'une éventuelle plageOp avec la salle $plageOp = new CPlageOp(); $plageOp->chir_id = $operation->chir_id; $plageOp->salle_id = $operation->salle_id; $plageOp->date = $date_op; $plageOps = $plageOp->loadMatchingList(); // Si on a pas de plage on recherche éventuellement une plage dans une autre salle if (count($plageOps) == 0) { $plageOp->salle_id = null; $plageOps = $plageOp->loadMatchingList(); // Si on retrouve des plages alors on ne prend pas en compte la salle du flux if (count($plageOps) > 0) { $operation->salle_id = null; } } foreach ($plageOps as $_plage) { // Si notre intervention est dans la plage Mediboard if (CMbRange::in($time_op, $_plage->debut, $_plage->fin)) { $plageOp = $_plage; break; } } if ($plageOp->_id) { $operation->plageop_id = $plageOp->_id; } else { // Dans le cas où l'on avait une plage sur l'interv on la supprime $operation->plageop_id = ""; $operation->date = $date_op; } }
/** * Calcule si la réeducation est en cours au jour donné au regard des jours ouvrés * * @param string $date Date de référence * * @return bool */ function getDateEnCours($date) { $this->loadRefSejour(); return $this->_encours = CMbRange::in($date, $this->_premier_jour, $this->_dernier_jour); }
$where["sejour_id"] = " = '{$_sejour->_id}'"; $where["therapeute_id"] = " = '{$tech->kine_id}'"; $where["debut"] = "BETWEEN '{$date_min}' AND '{$date_max}'"; $transfer_count += $evenement->countList($where); } } // Transfer event counts if ($type == "reeducateur") { $date_min = max($monday, $conge->date_debut); $date_max = min($sunday, $conge->date_fin); $where = array(); $where["sejour_id"] = " = '{$sejour->_id}'"; $where["therapeute_id"] = " = '{$conge->user_id}'"; foreach (range(0, 6) as $weekday) { $day = CMbDT::date("+{$weekday} DAYS", $monday); if (!CMbRange::in($day, $date_min, $date_max)) { $transfer_counts[$day] = 0; continue; } $after = CMbDT::date("+1 DAY", $day); $where["debut"] = "BETWEEN '{$day}' AND '{$after}'"; $count = $evenement->countList($where); $transfer_counts[$day] = $count; $transfer_count += $count; } } // Création du template $smarty = new CSmartyDP(); $smarty->assign("evenements_counts", $evenements_counts); $smarty->assign("sejours", $sejours); $smarty->assign("all_sejours", $all_sejours);
/** * @see parent::check() */ function check() { // Has to be done first to check and repair fields before further checking if ($msg = parent::check()) { return $msg; } $pathos = new CDiscipline(); // Test de la pathologies if ($this->pathologie != null && !in_array($this->pathologie, $pathos->_specs["categorie"]->_list)) { return "Pathologie non disponible"; } // Test de coherence de date avec les interventions if ($this->_check_bounds) { $this->completeField("entree_prevue"); $this->completeField("sortie_prevue"); $entree = $this->entree_prevue; $sortie = $this->sortie_prevue; if ($entree !== null && $sortie !== null && !$this->_skip_date_consistencies) { $entree = CMbDT::date($entree); $sortie = CMbDT::date($sortie); $this->makeDatesOperations(); if (!$this->entree_reelle) { foreach ($this->_dates_operations as $operation_id => $date_operation) { if ($this->_curr_op_id == $operation_id) { $date_operation = $this->_curr_op_date; } if (!CMbRange::in($date_operation, $entree, $sortie)) { return "Intervention du '{$date_operation}' en dehors des nouvelles dates du séjour du '{$entree}' au '{$sortie}'"; } } } if (!$this->entree_reelle && $this->type == "consult") { $this->makeDatesConsultations(); foreach ($this->_dates_consultations as $date_consultation) { if (!CMbRange::in($date_consultation, $entree, $sortie)) { return "Consultations en dehors des nouvelles dates du séjour."; } } } } $this->completeField("entree_reelle", "annule"); if ($this->fieldModified("annule", "1")) { $max_cancel_time = CAppUI::conf("dPplanningOp CSejour max_cancel_time"); if (CMbDT::dateTime("+ {$max_cancel_time} HOUR", $this->entree_reelle) < CMbDT::dateTime()) { return "Impossible d'annuler un dossier ayant une entree réelle depuis plus de {$max_cancel_time} heures.<br />"; } } if (!$this->_merging && !$this->_forwardRefMerging) { foreach ($this->getCollisions() as $collision) { return "Collision avec le séjour du '{$collision->entree}' au '{$collision->sortie}'"; } } } return null; }
/** * Charge le séjour et vérifie les dates liées * * @return CSejour */ function loadRefSejour() { /** @var CSejour $sejour */ $sejour = $this->loadFwdRef("sejour_id", true); $sejour->loadRefPatient(); $entree = CMbDT::date($sejour->_entree); $sortie = CMbDT::date($sejour->_sortie); $this->_in_bounds = CMbRange::collides($this->date_monday, $this->_date_sunday, $entree, $sortie, false); $this->_in_bounds_mon = CMbRange::in($this->date_monday, $entree, $sortie); $this->_in_bounds_tue = CMbRange::in($this->_date_tuesday, $entree, $sortie); $this->_in_bounds_wed = CMbRange::in($this->_date_wednesday, $entree, $sortie); $this->_in_bounds_thu = CMbRange::in($this->_date_thursday, $entree, $sortie); $this->_in_bounds_fri = CMbRange::in($this->_date_friday, $entree, $sortie); $this->_in_bounds_sat = CMbRange::in($this->_date_saturday, $entree, $sortie); $this->_in_bounds_sun = CMbRange::in($this->_date_sunday, $entree, $sortie); return $this->_ref_sejour = $sejour; }