示例#1
0
 /**
  * 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;
 }
示例#6
0
 /**
  * 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;
 }
示例#7
0
 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();
         }
     }
 }
示例#8
0
$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");
}
示例#9
0
 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;
         }
     }
 }
示例#11
0
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}'";
示例#12
0
    $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");
示例#13
0
 /**
  * @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();
示例#16
0
 }
 // 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";
示例#17
0
$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;
 }
示例#19
0
$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();
示例#20
0
$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);
     }
 }
示例#23
0
 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;
 }
示例#24
0
 /**
  * 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());
    }
}
示例#26
0
$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;
     }
 }
示例#28
0
 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;
 }
示例#29
0
 /**
  * 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);
 }
示例#30
0
                     }
                 }
             }
             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)) {