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