示例#1
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();
 }
示例#2
0
 /**
  * Recalcul le RHS à partir des événements validés
  *
  * @return void
  */
 function recalculate()
 {
     // Suppression des lignes d'activités du RHS
     /** @var CLigneActivitesRHS $_line */
     foreach ($this->loadBackRefs("lines") as $_line) {
         if ($_line->auto) {
             $_line->delete();
         }
     }
     $this->loadBackRefs("lines");
     // Chargement du séjour
     $sejour = $this->loadRefSejour();
     // Ajout des lignes d'activités
     $evenementSSR = new CEvenementSSR();
     $evenementSSR->sejour_id = $sejour->_id;
     $evenementSSR->realise = 1;
     /** @var CEvenementSSR[] $evenements */
     $evenements = $evenementSSR->loadMatchingList();
     foreach ($evenements as $_evenement) {
         $evenementRhs = $_evenement->getRHS();
         if ($evenementRhs->_id != $this->_id) {
             continue;
         }
         $therapeute = $_evenement->loadRefTherapeute();
         $intervenant = $therapeute->loadRefIntervenantCdARR();
         $code_intervenant_cdarr = $intervenant->code;
         // Actes CdARRs
         $actes_cdarr = $_evenement->loadRefsActesCdARR();
         foreach ($actes_cdarr as $_acte_cdarr) {
             $ligne = new CLigneActivitesRHS();
             $ligne->rhs_id = $this->_id;
             $ligne->executant_id = $therapeute->_id;
             $ligne->code_activite_cdarr = $_acte_cdarr->code;
             $ligne->code_intervenant_cdarr = $code_intervenant_cdarr;
             $ligne->loadMatchingObject();
             $ligne->crementDay($_evenement->debut, "inc");
             $ligne->auto = "1";
             $ligne->store();
         }
         // Actes CsARRs
         $actes_csarr = $_evenement->loadRefsActesCsARR();
         foreach ($actes_csarr as $_acte_csarr) {
             $ligne = new CLigneActivitesRHS();
             $ligne->rhs_id = $this->_id;
             $ligne->executant_id = $therapeute->_id;
             $ligne->code_activite_csarr = $_acte_csarr->code;
             $ligne->code_intervenant_cdarr = $code_intervenant_cdarr;
             $ligne->loadMatchingObject();
             $ligne->crementDay($_evenement->debut, "inc");
             $ligne->auto = "1";
             $ligne->store();
         }
     }
     // Gestion des administrations
     /** @var CActeCdARR $_acte_cdarr_adm */
     foreach ($sejour->loadBackRefs("actes_cdarr") as $_acte_cdarr_adm) {
         $administration = $_acte_cdarr_adm->loadRefAdministration();
         $therapeute = $administration->loadRefAdministrateur();
         $intervenant = $therapeute->loadRefIntervenantCdARR();
         $code_intervenant_cdarr = $intervenant->code;
         $ligne = new CLigneActivitesRHS();
         $ligne->rhs_id = $this->_id;
         $ligne->executant_id = $therapeute->_id;
         $ligne->code_activite_cdarr = $_acte_cdarr_adm->code;
         $ligne->code_intervenant_cdarr = $code_intervenant_cdarr;
         $ligne->loadMatchingObject();
         $ligne->crementDay($administration->dateTime, "inc");
         $ligne->auto = "1";
         $ligne->store();
     }
 }