/** * Menu upgrade * * @return bool */ protected function fixRepet() { $ds = $this->ds; $query = "SELECT * FROM menu"; $menus = $ds->loadList($query); foreach ($menus as $menu) { $nbDays = CMbDT::daysRelative($menu["debut"], $menu["fin"]); $nbWeeks = floor($nbDays / 7); if (!$nbWeeks) { $menu["nb_repet"] = 1; } else { $menu["nb_repet"] = ceil($nbWeeks / $menu["repetition"]); } $query = "UPDATE `menu` SET `nb_repet` = '" . $menu["nb_repet"] . "' WHERE(`menu_id`='" . $menu["menu_id"] . "');"; $ds->exec($query); $ds->error(); $query = "UPDATE `repas` SET `typerepas_id`='" . $menu["typerepas"] . "' WHERE(`menu_id`='" . $menu["menu_id"] . "');"; $ds->exec($query); $ds->error(); } $query = "ALTER TABLE `menu` DROP `fin`;"; $ds->exec($query); $ds->error(); return true; }
/** * Count all salles before a given date * * @param date $before If null, count all operations ever * * @return int */ static function countSallesDaily($before = null) { $salle = new CSalle(); $nb_salles = $salle->countList(); $first_date = self::getMinDate(); $day_relative = CMbDT::daysRelative($first_date, CMbDT::date($before)); return $nb_salles * $day_relative; }
/** * constructor * * @param string $date current date in the planning * @param null $date_min min date of the planning * @param null $date_max max * @param int $nb_days nb of day in the planning * @param bool $selectable is the planning selectable * @param string $height [optional] height of the planning, default : auto * @param bool $large [optional] is the planning a large one * @param bool $adapt_range [optional] can the planning adapt the range */ function __construct($date, $date_min = null, $date_max = null, $nb_days = 7, $selectable = false, $height = "auto", $large = false, $adapt_range = false) { parent::__construct($date); $this->type = "week"; $this->selectable = $selectable; $this->height = $height ? $height : "auto"; $this->large = $large; $this->nb_days = $nb_days; $this->adapt_range = $adapt_range; $this->maximum_load = 6; if (is_int($date) || is_int($date_min) || is_int($date_max)) { $this->no_dates = true; $this->date_min = $this->date_min_active = $this->_date_min_planning = $date_min; $this->date_max = $this->date_max_active = $this->_date_max_planning = $date_max; for ($i = 0; $i < $this->nb_days; $i++) { $this->days[$i] = array(); $this->load_data[$i] = array(); } } else { $days = array("monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"); $last_day = $days[$this->nb_days - 1]; $monday = CMbDT::date("last monday", CMbDT::date("+1 day", $this->date)); $sunday = CMbDT::date("next {$last_day}", CMbDT::date("-1 DAY", $this->date)); if (CMbDT::daysRelative($monday, $sunday) > 7) { $sunday = CMbDT::date("-7 DAYS", $sunday); } $this->date_min_active = $date_min ? max($monday, CMbDT::date($date_min)) : $monday; $this->date_max_active = $date_max ? min($sunday, CMbDT::date($date_max)) : $sunday; $this->date_min = $monday; $this->date_max = $sunday; // Days period for ($i = 0; $i < $this->nb_days; $i++) { $_day = CMbDT::date("+{$i} day", $monday); $this->days[$_day] = array(); $this->load_data[$_day] = array(); } $this->_date_min_planning = reset(array_keys($this->days)); $this->_date_max_planning = end(array_keys($this->days)); } $this->_hours = array("00", "04", "08", "12", "16", "20"); }
$date_docs_max = CValue::getOrSession("date_docs_max"); $entree_min = CValue::getOrSession("entree_min"); $entree_max = CValue::getOrSession("entree_max"); $sortie_min = CValue::getOrSession("sortie_min"); $sortie_max = CValue::getOrSession("sortie_max"); $intervention_min = CValue::getOrSession("intervention_min"); $intervention_max = CValue::getOrSession("intervention_max"); $prat_interv = CValue::getOrSession("prat_interv"); $section_search = CValue::getOrSession("section_search"); $type = CValue::getOrSession("type"); $page = CValue::get("page"); $docs = array(); $where = array(); $ljoin = array(); $cr = new CCompteRendu(); $long_period = CMbDT::daysRelative($date_docs_min, $date_docs_max) > 10; $total_docs = 0; if (($cat_docs || $specialite_docs || $prat_docs || $date_docs_min && $date_docs_max) && !$long_period) { switch ($section_search) { case "sejour": $ljoin["sejour"] = "sejour.sejour_id = compte_rendu.object_id OR sejour.sejour_id IS NULL"; $where["compte_rendu.object_class"] = "= 'CSejour'"; if ($type) { $where["sejour.type"] = "= '{$type}'"; } if ($entree_min) { $where[] = "sejour.entree >= '{$entree_min} 00:00:00'"; } if ($entree_max) { $where[] = "sejour.entree <= '{$entree_max} 23:59:59'"; }
/** * Operation reference loader * * @return COperation */ function loadRefOperation() { $this->_ref_operation = $this->loadFwdRef("operation_id", true); if ($this->_ref_operation->date) { $this->_day_relative = CMbDT::daysRelative($this->_ref_operation->date, CMbDT::date()); } return $this->_ref_operation; }
/** * Charge les items de prestations souhaités et réalisés * * @return CItemPrestation[] */ function getPrestations() { $this->_ref_prestations = array(); $liaisons_j = $dates = array(); self::getIntervallesPrestations($liaisons_j, $dates); // Calcul du niveau de réalisation (_quantite) foreach ($liaisons_j as $prestation_id => $_liaisons) { foreach ($_liaisons as $date => $_liaison) { $_item_souhait = $_liaison->loadRefItem(); $_item_realise = $_liaison->loadRefItemRealise(); $sous_item = $_liaison->loadRefSousItem(); if (!$_item_realise->_id) { continue; } $item_facture = $_item_realise; // On ne facture pas si surclassé if ($_item_souhait->rank < $_item_realise->rank) { continue; } // Si ce qui est réalisé est supérieur au demandé (rank inférieur), c'est le souhait qui est facturé if ($_item_realise->rank < $_item_souhait->rank) { $item_facture = $_item_souhait; } if (!$item_facture->facturable) { continue; } $dates_liaison = $dates[$_liaison->_id]; $quantite = CMbDT::daysRelative($dates_liaison["debut"], $dates_liaison["fin"]); // On incrémente la quantité si ce n'est pas la dernière liaison ou que le sous-item est de type jour if ($dates_liaison["fin"] != CMbDT::date($this->sortie) || (!$sous_item->_id || $sous_item->niveau == "jour")) { $quantite += 1; } if (!$quantite) { continue; } $this->_ref_prestations[$date][] = array("quantite" => $quantite, "item" => $item_facture, "sous_item_facture" => $sous_item->item_prestation_id == $item_facture->_id ? $sous_item : ""); } } return $this->_ref_prestations; }
function loadDossierComplet($permType = null, $hide_consult_sejour = true) { $this->_total_docs = 0; $this->_ref_praticiens = array(); if (!$this->_id) { return; } // Patient permission $this->canDo(); // Doc items $this->loadRefsFiles(); $this->loadRefsDocs(); $this->_total_docs += $this->countDocItems($permType); // Photos et Notes $this->loadRefPhotoIdentite(); $this->loadRefsNotes(); // Correspondants $this->loadRefsCorrespondants(); $this->loadRefsCorrespondantsPatient(); // Affectations courantes $this->loadRefsAffectations(); $affectation = $this->_ref_curr_affectation; if ($affectation && $affectation->_id) { $affectation->loadRefsFwd(); $affectation->_ref_lit->loadCompleteView(); } $affectation = $this->_ref_next_affectation; if ($affectation && $affectation->affectation_id) { $affectation->loadRefsFwd(); $affectation->_ref_lit->loadCompleteView(); } $maternite_active = CModule::getActive("maternite"); if ($maternite_active) { $this->loadRefsGrossesses(); } // Consultations $this->loadRefsConsultations(); foreach ($this->_ref_consultations as $consult) { if ($consult->sejour_id && $hide_consult_sejour) { unset($this->_ref_consultations[$consult->_id]); continue; } $consult->loadRefConsultAnesth(); $consult->loadRefsFichesExamen(); $consult->loadRefsExamsComp(); if (!count($consult->_refs_dossiers_anesth)) { $this->_total_docs += $consult->countDocItems($permType); } // Praticien $consult->getType(); $praticien = $consult->_ref_praticien; $this->_ref_praticiens[$praticien->_id] = $praticien; $praticien->loadRefFunction()->loadRefGroup(); foreach ($consult->_refs_dossiers_anesth as $_dossier_anesth) { $_dossier_anesth->_ref_consultation = $consult; $this->_total_docs += $_dossier_anesth->countDocItems($permType); } // Grossesse if ($maternite_active && $consult->grossesse_id) { $result = ceil(CMbDT::daysRelative($this->_ref_grossesses[$consult->grossesse_id]->_date_fecondation, $consult->_date) / 7); $consult->_semaine_grossesse = $result; $this->_ref_grossesses[$consult->grossesse_id]->_ref_consultations[$consult->_id] = $consult; } // Permission $consult->canDo(); } // Sejours foreach ($this->_ref_sejours as $_sejour) { // Permission $_sejour->canDo(); // $_sejour->loadNDA(); $_sejour->loadRefsAffectations(); // Praticien $praticien = $_sejour->loadRefPraticien(1); $this->_ref_praticiens[$praticien->_id] = $praticien; $_sejour->countDocItems($permType); if ($maternite_active && $_sejour->grossesse_id) { $this->_ref_grossesses[$_sejour->grossesse_id]->_ref_sejours[$_sejour->_id] = $_sejour; } $_sejour->loadRefsOperations(array(), "date DESC"); foreach ($_sejour->_ref_operations as $_operation) { $_operation->canDo(); // Praticien $praticien = $_operation->loadRefPraticien(1); $praticien->loadRefFunction(); $this->_ref_praticiens[$praticien->_id] = $praticien; // Autres $_operation->loadRefPlageOp(1); $this->_total_docs += $_operation->countDocItems($permType); // Consultation d'anesthésie $consult_anesth = $_operation->loadRefsConsultAnesth(); $this->_total_docs += $consult_anesth->countDocItems($permType); $consultation = $consult_anesth->loadRefConsultation(); $this->_total_docs += $consultation->countDocItems($permType); $consultation->canRead(); $consultation->canEdit(); } // RPU $rpu = $_sejour->loadRefRPU(); if ($rpu && $rpu->_id) { $this->_total_docs += $rpu->countDocItems($permType); } $_sejour->loadRefsConsultations(); foreach ($_sejour->_ref_consultations as $_consult) { $_consult->loadRefConsultAnesth(); $_consult->loadRefsFichesExamen(); $_consult->loadRefsExamsComp(); $this->_total_docs += $_consult->countDocItems($permType); $_consult->loadRefsFwd(1); $_consult->_ref_sejour = $_sejour; $_consult->getType(); $_consult->_ref_chir->loadRefFunction(); $_consult->_ref_chir->_ref_function->loadRefGroup(); $_consult->canDo(); } } }
$where = array(); $where[] = "((date_debut >= '{$debut_periode}' AND date_debut <= '{$fin_periode}'" . ")OR (date_fin >= '{$debut_periode}' AND date_fin <= '{$fin_periode}')" . "OR (date_debut <='{$debut_periode}' AND date_fin >= '{$fin_periode}'))"; $where["user_id"] = CSQLDataSource::prepareIn(array_keys($mediusers), $filter->user_id); $plageconge = new CPlageConge(); $plagesconge = array(); $orderby = "user_id"; /** @var CPlageConge[] $plagesconge */ $plagesconge = $plageconge->loadList($where, $orderby); $tabUser_plage = array(); $tabUser_plage_indices = array(); foreach ($plagesconge as $_plage) { $_plage->loadRefUser(); $_plage->_ref_user->loadRefFunction(); $_plage->_deb = CMbDT::daysRelative($debut_periode, $_plage->date_debut); $_plage->_fin = CMbDT::daysRelative($_plage->date_debut, $_plage->date_fin) + 1; $_plage->_duree = CMbDT::daysRelative($_plage->date_debut, $_plage->date_fin) + 1; } $smarty = new CSmartyDP(); $smarty->assign("debut_periode", $debut_periode); $smarty->assign("filter", $filter); $smarty->assign("plagesconge", $plagesconge); $smarty->assign("choix", $choix); $smarty->assign("mediusers", $mediusers); $smarty->assign("tableau_periode", $tableau_periode); $smarty->assign("tab_start", $tab_start); $smarty->assign("bank_holidays", $bank_holidays); if ($choix == "semaine" || $choix == "mois") { $smarty->display("inc_planning.tpl"); } else { $smarty->display("inc_planning_annee.tpl"); }
function is_actif($date) { $date_debut = CMbDT::date("last sunday", $this->debut); $date_debut = CMbDT::date("+1 day", $date_debut); $numDayMenu = CMbDT::daysRelative($date_debut, $this->debut); $nb_weeks = $this->nb_repet * $this->repetition - 1; $date_fin = CMbDT::date("+{$nb_weeks} week", $date_debut); $date_fin = CMbDT::date("next monday", $date_fin); $date_fin = CMbDT::date("-1 day", $date_fin); if ($date < $this->debut || $date > $date_fin) { return false; } $nbDays = CMbDT::daysRelative($date_debut, $date); $nbWeeks = floor($nbDays / 7); $numDay = $nbDays - $nbWeeks * 7; if (!$nbWeeks || !fmod($nbWeeks, $this->repetition)) { if ($numDay == $numDayMenu) { return true; } } return false; }
/** * @see parent::mine() */ function mine(COperation $operation) { parent::mine($operation); // to prevent importation logs perturbations (post-event creations) static $days_tolerance = 3; // Operation $this->date_operation = $operation->_datetime; $log = $operation->loadCreationLog(); if (CMbDT::daysRelative($operation->_datetime, $log->date) < $days_tolerance) { $this->date_creation = $log->date; } $this->date_visite_anesth = $operation->date_visite_anesth; if ($operation->annulee) { $log = $operation->loadFirstLogForField("annulee"); if (CMbDT::daysRelative($operation->_datetime, $log->date) < $days_tolerance) { $this->date_cancellation = $log->date; } } // Consult anesthesie $dossier = $operation->loadRefsConsultAnesth(); $consult = $dossier->loadRefConsultation(); if ($consult->_id) { $consult->loadRefPlageConsult(); $this->date_consult_anesth = $consult->_datetime; $log = $consult->loadCreationLog(); if (CMbDT::daysRelative($consult->_datetime, $log->date) < $days_tolerance) { $this->date_creation_consult_anesth = $log->date; } } // Consult chirurgie $consult = $operation->loadRefConsultChir(); if ($consult->_id) { $consult->loadRefPlageConsult(); $this->date_consult_chir = $consult->_datetime; $log = $consult->loadCreationLog(); if (CMbDT::daysRelative($consult->_datetime, $log->date) < $days_tolerance) { $this->date_creation_consult_chir = $log->date; } } }
CMbArray::removeValue("perf", $elts); CMbArray::removeValue("inj", $elts); CMbArray::removeValue("trans", $elts); $do_elements = count($elts) > 0; $do_medicaments = in_array("med", $cats); $do_injections = in_array("inj", $cats); $do_perfusions = in_array("perf", $cats); $do_aerosols = in_array("aerosol", $cats); $do_stupefiants = in_array("stup", $cats); $do_trans = in_array("trans", $cats); // Filtres sur l'heure des prises $time_min = CMbDT::time($dateTime_min, "00:00:00"); $time_max = CMbDT::time($dateTime_max, "23:59:59"); // Stockage des jours concernés par le chargement $dates = array(); $nb_days = CMbDT::daysRelative($date_min, $date_max); for ($i = 0; $i <= $nb_days; $i++) { $dates[] = CMbDT::date("+ {$i} DAYS", $date_min); } $sejours = array(); $lits = array(); $trans_and_obs = array(); $list_lines = array(); $lines_by_patient = array(); if ($do) { $sejour = new CSejour(); $where = array(); $ljoin = array(); $order_by = null; $where["sejour.entree"] = "<= '{$dateTime_max}'"; $where["sejour.sortie"] = " >= '{$dateTime_min}'";
$sejour->load($sejour_id); if ($new_sejour) { $sejour->_id = null; $entree_prevue = CMbDT::date($date_move) . " " . $hour_intervention; $sortie_prevue = CMbDT::addDateTime($duree_hours, $entree_prevue); } } if (!$date_move) { $date_move = "{$operation->date} {$operation->time_operation}"; } if ($entree_prevue && $sortie_prevue) { $sejour->entree_prevue = $entree_prevue; $sejour->sortie_prevue = $sortie_prevue; } if (isset($operation)) { $nb_days = CMbDT::daysRelative("{$operation->date} {$operation->time_operation}", $date_move); } else { $nb_days = CMbDT::daysRelative($sejour->entree_prevue, $entree_prevue); } if ($nb_days > 0) { $sejour->entree_prevue = CMbDT::dateTime("+{$nb_days} day", $sejour->entree_prevue); $sejour->sortie_prevue = CMbDT::dateTime("+{$nb_days} day", $sejour->sortie_prevue); } else { $sejour->entree_prevue = CMbDT::dateTime("{$nb_days} day", $sejour->entree_prevue); $sejour->sortie_prevue = CMbDT::dateTime("{$nb_days} day", $sejour->sortie_prevue); } $smarty = new CSmartyDP(); $smarty->assign("sejour", $sejour); $smarty->assign("date_move", $date_move); $smarty->assign("callback", $callback); $smarty->display("inc_edit_dates_sejour.tpl");
/** * @see parent::updateFormFields() */ function updateFormFields() { parent::updateFormFields(); if ($this->date_time) { $this->_view = $this->getFormattedValue("date_time"); $this->_heure = CMbDT::time($this->date_time); } else { $this->_view = "Dossier provisoire"; } if ($this->rang) { $this->_view .= ", rang " . $this->rang; } $this->_day_relative = CMbDT::daysRelative($this->date_time, CMbDT::date()); }
/** * Vérification de l'état de verrouillage automatique * * @return bool Etat de verrouillage automatique du document */ function isAutoLock() { $this->_is_auto_locked = false; switch ($this->object_class) { case "CConsultation": $fix_edit_doc = CAppUI::conf("dPcabinet CConsultation fix_doc_edit"); if ($fix_edit_doc) { $consult = $this->loadTargetObject(); $consult->loadRefPlageConsult(); $this->_is_auto_locked = CMbDT::dateTime("+ 24 HOUR", "{$consult->_date} {$consult->heure}") > CMbDT::dateTime(); } break; case "CConsultAnesth": $fix_edit_doc = CAppUI::conf("dPcabinet CConsultation fix_doc_edit"); if ($fix_edit_doc) { $consult = $this->loadTargetObject()->loadRefConsultation(); $consult->loadRefPlageConsult(); $this->_is_auto_locked = CMbDT::dateTime("+ 24 HOUR", "{$consult->_date} {$consult->heure}") > CMbDT::dateTime(); } break; default: $this->_is_auto_locked = false; } if (!$this->_is_auto_locked) { $this->loadContent(); $days = CAppUI::conf("dPcompteRendu CCompteRendu days_to_lock"); $days = isset($days[$this->object_class]) ? $days[$this->object_class] : $days["base"]; $this->_is_auto_locked = CMbDT::daysRelative($this->_ref_content->last_modified, CMbDT::dateTime()) > $days; } return $this->_is_auto_locked; }
// Chargement du sejour à dupliquer $original_sejour = new CSejour(); $original_sejour->load($original_sejour_id); // Chargement des references: bilan, fiche d'autonomie, prescriptions, evenements $bilan_ssr = $original_sejour->loadRefBilanSSR(); $fiche_autonomie = $original_sejour->loadRefFicheAutonomie(); $prescription_sejour = $original_sejour->loadRefPrescriptionSejour(); $lines_element = $prescription_sejour->loadRefsLinesElement(); // Chargement evenements de la derniere semaine complete $original_last_friday = CMbDT::date("last friday", CMbDT::date("+ 1 DAY", $original_sejour->sortie)); $monday = CMbDT::date("last monday", $original_last_friday); $next_monday = CMbDT::date("next monday", $monday); // 1er vendredi du nouveau sejour $next_friday = CMbDT::date("next friday", CMbDT::date("- 1 DAY", $sejour->entree)); // Calcul du nombre de decalage entre les 2 sejours $nb_decalage = CMbDT::daysRelative($original_last_friday, $next_friday); $evenement_ssr = new CEvenementSSR(); $where = array(); $where["sejour_id"] = " = '{$original_sejour->_id}'"; $where["debut"] = " BETWEEN '{$monday}' AND '{$next_monday}'"; /** @var CEvenementSSR[] $evenements */ $evenements = $evenement_ssr->loadList($where); // Chargement des refs du sejour actuel et suppression des objets existants $sejour->loadRefBilanSSR(); if ($sejour->_ref_bilan_ssr->_id) { $msg = $sejour->_ref_bilan_ssr->delete(); CAppUI::displayMsg($msg, "CBilanSSR-msg-delete"); } $sejour->loadRefFicheAutonomie(); if ($sejour->_ref_fiche_autonomie->_id) { $msg = $sejour->_ref_fiche_autonomie->delete();
} // Gestion de l'intervention if ($sejour_intervention && $intervention->_datetime && $intervention->temp_operation && $intervention->cote) { $intervention->chir_id = $praticien_id; // Est-ce que la date permet de planifier $bloc = $intervention->updateSalle()->loadRefBloc(); if (CMbDT::daysRelative(CMbDT::date(), CMbDT::date($intervention->_datetime)) > $bloc->days_locked) { $plage_op = new CPlageOp(); $plage_op->date = CMbDT::date($intervention->_datetime); $plage_op->chir_id = $praticien_id; $listPlages = $plage_op->loadMatchingList(); if (count($listPlages)) { $intervention->plageop_id = reset($listPlages)->_id; } } if (!$intervention->plageop_id && CMbDT::daysRelative(CMbDT::date(), CMbDT::date($intervention->_datetime)) > 2) { $msg_error = "aucune vacation de disponible à cette date"; } else { $intervention->libelle = $sejour->libelle; $intervention->sejour_id = $sejour->_id; if (!($msg_error = $intervention->store())) { $intervention_ok = true; } } } elseif ($sejour_intervention) { $msg_error = "champ(s) obligatoire(s) manquant(s) :"; if (!$intervention->_datetime) { $msg_error .= "<br />- Date de l'intervention"; } if (!$intervention->temp_operation) { $msg_error .= "<br />- Durée de l'intervention";
$editRights = CModule::getCanDo("dPhospi")->edit; $duree = strtotime($sejour->sortie) - strtotime($sejour->entree); $affectations = $sejour->loadRefsAffectations(); $date_temp = CMbDT::date($sejour->entree); while ($date_temp <= CMbDT::date($sejour->sortie)) { if (!isset($dates[$date_temp])) { $dates[$date_temp] = 0; } $date_temp = CMbDT::date("+1 day", $date_temp); } if (count($affectations)) { $lits = CMbObject::massLoadFwdRef($affectations, "lit_id"); CMbObject::massLoadFwdRef($lits, "chambre_id"); foreach ($affectations as $_affectation) { $_affectation->loadRefLit()->loadCompleteView(); $_affectation->_rowspan = CMbDT::daysRelative($_affectation->entree, $_affectation->sortie) + 1; $date_temp = CMbDT::date($_affectation->entree); while ($date_temp <= CMbDT::date($_affectation->sortie)) { $dates[$date_temp] = $_affectation->_id; $date_temp = CMbDT::date("+1 day", $date_temp); } } } // Gestion des liaisons hors séjour $dates_after = array(); /** @var CItemLiaison[] $items_liaisons */ $items_liaisons = $sejour->loadBackRefs("items_liaisons"); CMbObject::massLoadFwdRef($items_liaisons, "item_souhait_id"); CMbObject::massLoadFwdRef($items_liaisons, "item_realise_id"); CMbObject::massLoadFwdRef($items_liaisons, "sous_item_id"); foreach ($items_liaisons as $_item_liaison) {
function getListFilesDetails($current_directory) { $contain = scandir($current_directory); $fileInfo = array(); foreach ($contain as $_contain) { $full_path = $current_directory . $_contain; if (!is_dir($full_path) && @filetype($full_path) && !is_link($full_path)) { $fileInfo[] = array("type" => "f", "user" => fileowner($full_path), "size" => CMbString::toDecaBinary(filesize($full_path)), "date" => strftime(CMbDT::ISO_DATETIME, filemtime($full_path)), "name" => $_contain, "relativeDate" => CMbDT::daysRelative(fileatime($full_path), CMbDT::date())); } } return $fileInfo; }
$patient->_ref_sejours = $sejour->loadList($where, $order); $date_consult = $consult->_ref_plageconsult->date; $ops_sans_dossier_anesth = array(); $ops_annulees = array(); // Chargement de ses séjours foreach ($patient->_ref_sejours as $_key => $_sejour) { if ($date_consult > $_sejour->entree_prevue && $date_consult > $_sejour->sortie_prevue) { unset($patient->_ref_sejours[$_sejour->_id]); continue; } $_sejour->loadRefsOperations(); $_sejour->loadRefsFwd(); foreach ($_sejour->_ref_operations as $_operation) { $_operation->loadRefsFwd(); $_operation->_ref_chir->loadRefFunction()->loadRefGroup(); $day = CMbDT::daysRelative($consult->_ref_plageconsult->date, $_operation->_ref_plageop->date); if (!$_operation->_ref_consult_anesth->_id && $day >= 0) { if ($_operation->annulee) { $ops_annulees[] = $_operation; } else { $ops_sans_dossier_anesth[] = $_operation; } } else { unset($_sejour->_ref_operations[$_operation->_id]); } } if (!count($_sejour->_ref_operations)) { unset($patient->_ref_sejours[$_sejour->_id]); } } $consult->loadRefPraticien();
$where = array(); $where[] = "((date_debut >= '{$debut_periode}' AND date_debut <= '{$fin_periode}'" . ")OR (date_fin >= '{$debut_periode}' AND date_fin <= '{$fin_periode}')" . "OR (date_debut <='{$debut_periode}' AND date_fin >= '{$fin_periode}'))"; $where["user_id"] = CSQLDataSource::prepareIn(array_keys($mediusers), $filter->user_id); $plageastreinte = new CPlageAstreinte(); $plagesconge = array(); $orderby = "user_id"; /** @var CPlageAstreinte[] $plagesastreintes */ $plagesastreintes = $plageastreinte->loadList($where, $orderby); $tabUser_plage = array(); $tabUser_plage_indices = array(); foreach ($plagesastreintes as $_plage) { $_plage->loadRefUser(); $_plage->_ref_user->loadRefFunction(); $_plage->_deb = CMbDT::daysRelative($debut_periode, $_plage->start); $_plage->_fin = CMbDT::daysRelative($_plage->start, $_plage->end) + 1; $_plage->_duree = CMbDT::daysRelative($_plage->start, $_plage->end) + 1; } $smarty = new CSmartyDP(); $smarty->assign("debut_periode", $debut_periode); $smarty->assign("filter", $filter); $smarty->assign("plagesastreinte", $plagesastreintes); $smarty->assign("choix", $choix); $smarty->assign("mediusers", $mediusers); $smarty->assign("tableau_periode", $tableau_periode); $smarty->assign("tab_start", $tab_start); $smarty->assign("bank_holidays", $bank_holidays); if ($choix == "semaine" || $choix == "mois") { $smarty->display("inc_planning.tpl"); } else { $smarty->display("inc_planning_annee.tpl"); }
$to = $date_sortie; $from = CMbDT::date('-4 DAYS', $to); } else { $from = CMbDT::date('-2 DAYS', $date); $to = CMbDT::date('+2 DAYS', $date); } } else { if (CMbDT::daysRelative($to, $date_sortie) < 0 && CMbDT::daysRelative($date_entree, $from) < 0) { $to = $date_sortie; $from = $date_entree; $date = CMbDT::date('+' . round(CMbDT::daysRelative($from, $to)) . ' DAYS', $to); } elseif (CMbDT::daysRelative($to, $date_sortie) < 0) { $to = $date_sortie; $from = CMbDT::date('-4 DAYS', $to); $date = CMbDT::date('-2 DAYS', $to); } elseif (CMbDT::daysRelative($date_entree, $from) < 0) { $from = $date_entree; $to = CMbDT::date('+4 DAYS', $from); $date = CMbDT::date('+2 DAYS', $from); } } // Chargement des règles de codage $praticiens = array(); $sejour->loadRefsCodagesCCAM($from, $to); foreach ($sejour->_ref_codages_ccam as $_praticien_id => $_codages_by_prat) { foreach ($_codages_by_prat as $_codages_by_day) { foreach ($_codages_by_day as $_codage) { $_codage->loadPraticien()->loadRefFunction(); if (!array_key_exists($_codage->praticien_id, $praticiens)) { $praticiens[$_codage->praticien_id] = $_codage->_ref_praticien; }
function checkDaysRelative($date) { if ($this->entree and $this->sortie) { $this->_entree_relative = CMbDT::daysRelative("{$date} 12:00:00", $this->entree); $this->_sortie_relative = CMbDT::daysRelative("{$date} 12:00:00", $this->sortie); } }
function getDateAccouchement() { if ($this->datetime_accouchement) { return $this->_days_relative_acc = abs(CMbDT::daysRelative(CMbDT::date($this->datetime_accouchement), CMbDT::date())); } if (count($this->_ref_naissances)) { /** @var CNaissance $first_naissance */ $first_naissance = reset($this->_ref_naissances); if ($first_naissance->_day_relative !== null) { return $this->_days_relative_acc = $first_naissance->_day_relative; } } //@TODO : A revoir ! if ($this->_ref_last_operation && $this->_ref_last_operation->_id) { return $this->_days_relative_acc = abs(CMbDT::daysRelative($this->_ref_last_operation->date, CMbDT::date())); } return null; }
/** * Fonction permettant de savoir si la facture doit être relancée * * @return boolean **/ function isRelancable() { $this->_is_relancable = false; if (!CAppUI::conf("dPfacturation CRelance use_relances")) { return $this->_is_relancable; } $date = CMbDT::date(); $nb_first_relance = CAppUI::conf("dPfacturation CRelance nb_days_first_relance"); $nb_second_relance = CAppUI::conf("dPfacturation CRelance nb_days_second_relance"); $nb_third_relance = CAppUI::conf("dPfacturation CRelance nb_days_third_relance"); $this->_ref_last_relance = count($this->_ref_relances) == 0 ? new CRelance() : end($this->_ref_relances); if ($this->_ref_last_relance->statut == "inactive") { return $this->_is_relancable; } if (($this->_du_restant_patient > 0 || $this->_du_restant_tiers > 0) && $this->cloture && !$this->annule) { $first = !count($this->_ref_relances) && CMbDT::daysRelative($this->cloture, $date) >= $nb_first_relance; $seconde = count($this->_ref_relances) == 1 && CMbDT::daysRelative($this->_ref_last_relance->date, $date) >= $nb_second_relance; $third = count($this->_ref_relances) == 2 && CMbDT::daysRelative($this->_ref_last_relance->date, $date) >= $nb_third_relance; if (CAppUI::conf("dPfacturation CReglement use_echeancier")) { $this->loadRefsEcheances(); $num_echeance = 0; foreach ($this->_ref_echeances as $echeance) { $num_echeance += 1; switch ($num_echeance) { case 1: $first = $first && CMbDT::daysRelative($echeance->date, $date) >= $nb_first_relance; break; case 2: $seconde = $seconde && CMbDT::daysRelative($echeance->date, $date) >= $nb_second_relance; break; case 3: $third = $third && CMbDT::daysRelative($echeance->date, $date) >= $nb_third_relance; break; } } } if ($first || $seconde || $third) { $this->_is_relancable = true; } } if (!count($this->_ref_relances)) { $this->_echeance = CMbDT::date("+{$nb_first_relance} DAYS", $this->cloture); } else { $nb_jours = count($this->_ref_relances) == 1 ? $nb_second_relance : $nb_third_relance; $this->_echeance = CMbDT::date("+{$nb_jours} DAYS", $this->_ref_last_relance->date); } return $this->_is_relancable; }
$pat->_distant_object = $sejour; $pat->_age_epoque = intval(CMbDT::daysRelative($pat->naissance, $sejour->entree) / 365); } else { if ($consult_filled) { $consult = new CConsultation(); $consult->load($_result["consultation_id"]); $pat->_distant_object = $consult; $consult->loadRefPlageConsult(); $pat->_age_epoque = intval(CMbDT::daysRelative($pat->naissance, $consult->_ref_plageconsult->date) / 365); } else { if ($interv_filled) { $interv = new COperation(); $interv->load($_result["operation_id"]); $interv->loadRefPlageOp(); $pat->_distant_object = $interv; $pat->_age_epoque = intval(CMbDT::daysRelative($pat->naissance, $interv->_datetime_best) / 365); } } } $list_patient[] = $pat; } // Le count total $request->select = array("count(*)"); $request->limit = null; $count_patient = $ds->loadResult($request->makeSelect()); if (!$commentaire && $one_field_presc) { $request_b->select = array("count(*)"); $request_b->limit = null; $count_patient += $ds->loadResult($request_b->makeSelect()); } }
$grossesse_id = CValue::get('grossesse_id'); $parturiente_id = CValue::getOrSession("parturiente_id"); // options $with_buttons = CValue::get("with_buttons", false); // see buttons at the right panel $standalone = CValue::get("standalone", 0); // embedded in a requestUpdate for example $grossesse = new CGrossesse(); $grossesse->load($grossesse_id); $grossesse->loadRefsNotes(); if (!$grossesse->_id) { $grossesse->parturiente_id = $parturiente_id; } $grossesse->loadRefParturiente(); // sejour & last grossesse $sejour_id = CValue::get("sejour_id"); $sejour = new CSejour(); $sejour->load($sejour_id); $grossesse->_ref_sejour = $sejour; if ($operation = $grossesse->loadRefLastOperation()) { $grossesse->_semaine_grossesse = ceil(CMbDT::daysRelative($grossesse->_date_fecondation, CMbDT::date($operation->_datetime)) / 7); $grossesse->_terme_vs_operation = CMbDT::daysRelative($grossesse->terme_prevu, CMbDT::date($operation->_datetime)); } $listPrat = CConsultation::loadPraticiens(PERM_EDIT); $smarty = new CSmartyDP(); $smarty->assign("grossesse", $grossesse); $smarty->assign("with_buttons", $with_buttons); $smarty->assign("prats", $listPrat); $smarty->assign("user", $user); $smarty->assign("standalone", $standalone); $smarty->display("inc_edit_grossesse.tpl");
/** * Calculs sur les champs d'horodatage dérivés, notamment en fonction de la plage * * @return void; */ function updateDatetimes() { $plage = $this->_ref_plageop; $date = $this->date; // Calcul du nombre de jour entre la date actuelle et le jour de l'operation $this->_compteur_jour = CMbDT::daysRelative($date, CMbDT::date()); // Horaire global if ($this->time_operation && $this->time_operation != "00:00:00") { $this->_datetime = "{$date} {$this->time_operation}"; } elseif ($this->horaire_voulu && $this->horaire_voulu != "00:00:00") { $this->_datetime = "{$date} {$this->horaire_voulu}"; } elseif ($plage && $plage->_id) { $this->_datetime = "{$date} " . $plage->debut; } else { $this->_datetime = "{$date} 00:00:00"; } $this->_datetime_best = $this->_datetime; $this->_datetime_reel = "{$date} {$this->debut_op}"; if ($this->debut_op) { $this->_datetime_best = $this->_datetime_reel; } $this->_datetime_reel_fin = "{$date} {$this->fin_op}"; // Heure standard d'exécution des actes if ($this->fin_op) { $this->_acte_execution = $this->_datetime_reel_fin; } elseif ($this->debut_op) { $this->_acte_execution = CMbDT::addDateTime($this->temp_operation, $this->_datetime_reel); } elseif ($this->time_operation != "00:00:00") { $this->_acte_execution = CMbDT::addDateTime($this->temp_operation, $this->_datetime); } else { $this->_acte_execution = $this->_datetime; } }
private function _getListFilesDetails($folder = ".") { if (!$this->connexion) { throw new CMbException("CSourceFTP-connexion-failed", $this->hostname); } $files = ftp_rawlist($this->connexion, $folder); if ($files === false) { throw new CMbException("CSourceFTP-getlistfiles-failed", $this->hostname); } $system = $this->type_system; $limit = 9; if ($system && strpos($system, "Windows") !== false) { $limit = 4; } $fileInfo = array(); foreach ($files as $_file) { $pregInfo = preg_split("/[\\s]+/", $_file, $limit); if ($system && strpos($system, "Windows") !== false) { $format = "m-d-y h:iA"; $datetime = "{$pregInfo['0']} {$pregInfo['1']}"; $type = strpos($pregInfo[2], "DIR") ? "d" : "f"; $user = ""; $size = $pregInfo[2]; $name = $pregInfo[3]; } else { $year = $pregInfo[7]; if (strpos($year, ":")) { $year = explode("-", CMbDT::date()); $year = $year[0] . " {$pregInfo['7']}"; } $format = "M-d-Y H:i"; $datetime = "{$pregInfo['5']}-{$pregInfo['6']}-{$year}"; $type = $pregInfo[0]; $user = "******"; $size = $pregInfo[4]; $name = $pregInfo[8]; } if (strpos($type, "d") !== false || $pregInfo[0] == "total") { continue; } $datetime = DateTime::createFromFormat($format, $datetime); $date = ""; if ($datetime) { $date = $datetime->format("d-m-Y H:m"); } $fileInfo[] = array("type" => $type, "user" => $user, "size" => CMbString::toDecaBinary($size), "date" => $date, "name" => $name, "relativeDate" => CMbDT::daysRelative($date, CMbDT::date())); } return $fileInfo; }
/** * if an event is more than 1 day long. * * @param CPlanningEvent $event an event to divide * * @return null */ function explodeEvent(CPlanningEvent $event) { $daysDifference = CMbDT::daysRelative($event->start, $event->end); $day = CMbDT::date($event->start); //create 2 sub-event $left_rightBorne = CMbDT::date($event->start) . " 23:59:59"; $event_left = new CPlanningEvent($event->guid, $event->start, CMbDT::minutesRelative($event->start, $left_rightBorne), $event->title, $event->color, $event->important, $event->css_class, null, false); $event_left->mb_object = $event->mb_object; $event_left->plage = $event->plage; $event_left->end = $left_rightBorne; $event_left->type = $event->type; $event_left->display_hours = $event->display_hours; $event_left->menu = $event->menu; self::addEvent($event_left); if ($daysDifference > 1) { for ($a = 1; $a < $daysDifference; $a++) { $day = CMbDT::date("+1 DAY", $day); $dayBetween = new CPlanningEvent($event->guid, $day . " 00:00:00", 1440, $event->title, $event->color, $event->important, $event->css_class, null, false); $dayBetween->end = $day . " 23:59:59"; $dayBetween->mb_object = $event->mb_object; $dayBetween->plage = $event->plage; $dayBetween->type = $event->type; $dayBetween->display_hours = $event->display_hours; $dayBetween->menu = $event->menu; self::addEvent($dayBetween); } } $right_lefttBorne = CMbDT::date($event->end) . " 00:00:00"; $event_right = new CPlanningEvent($event->guid, $right_lefttBorne, CMbDT::minutesRelative($right_lefttBorne, $event->end), $event->title, $event->color, true, $event->css_class, null, false); $event_right->end = $event->end; $event_right->mb_object = $event->mb_object; $event_right->plage = $event->plage; $event_right->type = $event->type; $event_right->menu = $event->menu; $event_right->display_hours = $event->display_hours; self::addEvent($event_right); }
} } } if (!$coded) { $key = "{$_code->code}-{$_activite->numero}-{$_phase->phase}"; if (!array_key_exists($key, $uncoded_acts)) { $uncoded_acts[$key] = 1; } else { $uncoded_acts[$key] = $uncoded_acts[$key] + 1; } } } } } $date = CValue::post('date', $codage->_ref_codable->sortie); $days = CMbDT::daysRelative($codage->date . ' 00:00:00', CMbDT::format($date, '%Y-%m-%d 00:00:00')); for ($i = 1; $i <= $days; $i++) { $_date = CMbDT::date("+{$i} DAYS", $codage->date); $_codage = new CCodageCCAM(); $_codage->praticien_id = $codage->praticien_id; $_codage->codable_class = $codage->codable_class; $_codage->codable_id = $codage->codable_id; $_codage->date = $_date; $_codage->loadMatchingObject(); if ($codage->association_mode == 'user_choice') { $_codage->association_mode = $codage->association_mode; $_codage->association_rule = $codage->association_rule; } $_codage->store(); foreach ($actes as $_acte_id) { if (array_key_exists($_acte_id, $codage->_ref_actes_ccam)) {