/** * @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(); }
/** * 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(); } }