/**
  * Crée la dossier d'anesthésie associée à la consultation
  *
  * @return null|string Store-like message
  */
 function createConsultAnesth()
 {
     $this->loadRefPlageConsult();
     if (!$this->_is_anesth || !$this->patient_id || !$this->_id || $this->type == "entree") {
         return null;
     }
     // Création de la consultation d'anesthésie
     $this->_count["consult_anesth"] = null;
     $consultAnesth = $this->loadRefConsultAnesth();
     $operation = new COperation();
     if (!$consultAnesth->_id || $this->_operation_id) {
         if (!$consultAnesth->_id) {
             $consultAnesth->consultation_id = $this->_id;
         }
         if ($this->_operation_id) {
             // Association à l'intervention
             $consultAnesth->operation_id = $this->_operation_id;
             $operation = $consultAnesth->loadRefOperation();
         }
         if ($msg = $consultAnesth->store()) {
             return $msg;
         }
     }
     // Remplissage du motif de pré-anesthésie si creation et champ motif vide
     if ($operation->_id) {
         $format_motif = CAppUI::conf('cabinet CConsultAnesth format_auto_motif');
         $format_rques = CAppUI::conf('cabinet CConsultAnesth format_auto_rques');
         if ($format_motif && !$this->motif || $format_rques && !$this->rques) {
             $operation = $consultAnesth->_ref_operation;
             $operation->loadRefPlageOp();
             $sejour = $operation->loadRefSejour();
             $chir = $operation->loadRefChir();
             $chir->updateFormFields();
             $items = array('%N' => $chir->_user_last_name, '%P' => $chir->_user_first_name, '%S' => $chir->_shortview, '%L' => $operation->libelle, '%i' => CMbDT::format($operation->_datetime_best, CAppUI::conf('time')), '%I' => CMbDT::format($operation->_datetime_best, CAppUI::conf('date')), '%E' => CMbDT::format($sejour->entree_prevue, CAppUI::conf('date')), '%e' => CMbDT::format($sejour->entree_prevue, CAppUI::conf('time')), '%T' => strtoupper(substr($sejour->type, 0, 1)));
             if ($format_motif && !$this->motif) {
                 $this->motif = str_replace(array_keys($items), $items, $format_motif);
             }
             if ($format_rques && !$this->rques) {
                 $this->rques = str_replace(array_keys($items), $items, $format_rques);
             }
             if ($msg = parent::store()) {
                 return $msg;
             }
         }
     }
     return null;
 }
Esempio n. 2
0
 /**
  * Vérification de la possibilité de merger plusieurs séjours
  *
  * @param CSejour[] $sejours Séjours concernés
  *
  * @return void|string
  */
 function checkMerge($sejours = array())
 {
     if ($msg = parent::checkMerge($sejours)) {
         return $msg;
     }
     // Cas des prescriptions
     $count_prescription = 0;
     foreach ($sejours as $_sejour) {
         $_sejour->loadRefPrescriptionSejour();
         if ($_sejour->_ref_prescription_sejour && $_sejour->_ref_prescription_sejour->_id) {
             // Suppression des prescriptions vide
             $prescription = new CPrescription();
             $prescription->load($_sejour->_ref_prescription_sejour->_id);
             $back_props = $prescription->getBackProps();
             $count_back_props = 0;
             // On retire les logs de la liste des backprops
             unset($back_props["logs"]);
             foreach ($back_props as $back_prop => $object) {
                 $count_back_props += $prescription->countBackRefs($back_prop);
             }
             if ($count_back_props == 0) {
                 $prescription->delete();
                 continue;
             }
             if ($count_prescription == 1) {
                 return "Impossible de fusionner des sejours qui comportent chacun des prescriptions de séjour";
             }
             $count_prescription++;
         }
     }
     // Cas des affectations
     $affectation = new CAffectation();
     $where["sejour_id"] = CSQLDataSource::prepareIn(CMbArray::pluck($sejours, "_id"));
     /** @var CAffectation[] $affectations */
     $affectations = $affectation->loadList($where);
     foreach ($affectations as $_affectation_1) {
         foreach ($affectations as $_affectation_2) {
             if ($_affectation_1->collide($_affectation_2)) {
                 return CAppUI::tr("CSejour-merge-warning-affectation-conflict", $_affectation_1->_view, $_affectation_2->_view);
             }
         }
     }
     return null;
 }