Example #1
0
 /**
  * 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);
 }
Example #2
0
    $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) {
Example #3
0
 /**
  * @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;
Example #6
0
 /**
  * @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;
     }
 }
Example #9
0
 /**
  * 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);
 }
Example #10
0
        $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);
Example #11
0
 /**
  * @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;
 }
Example #12
0
 /**
  * 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;
 }