$position = strpos($listModificateurs, $modificateur->code); if ($position !== false) { if ($modificateur->_double == "1") { $modificateur->_checked = $modificateur->code; } elseif ($modificateur->_double == "2") { $modificateur->_checked = $modificateur->code . $modificateur->_double; } else { $modificateur->_checked = null; } } else { $modificateur->_checked = null; } } /* Vérification et précodage des modificateurs */ if (CAppUI::conf('dPccam CCodeCCAM use_new_association_rules')) { CCodageCCAM::precodeModifiers($phase->_modificateurs, $acte, $acte->loadRefObject()); } elseif (!$acte->_id) { foreach ($phase->_modificateurs as $modificateur) { $modificateur->_checked = $acte->_ref_object->checkModificateur($modificateur->code, CMbDT::time($acte->execution)); } } $acte->getMontantModificateurs($phase->_modificateurs); // Liste des dents CCAM $liste_dents = reset(CDentCCAM::loadList()); // Chargement des listes de praticiens $user = new CMediusers(); $listAnesths = $user->loadAnesthesistes(PERM_DENY); $listChirs = $user->loadPraticiens(PERM_DENY); // Création du template $smarty = new CSmartyDP(); $smarty->assign("acte", $acte);
/** * Return the CCodageCCAM linked to the given codable and practitioner, and create it if it not exists * * @param CCodable $codable The codable object * @param integer $praticien_id The practitioner id * @param integer $activite Is the CCodage concern anesthesia activities or other activities * @param date $date The date * * @return CCodageCCAM */ public static function get($codable, $praticien_id, $activite = 1, $date = null) { if (!$date) { switch ($codable->_class) { case 'CConsultation': $codable->loadRefPlageConsult(); $date = $codable->_date; break; case 'COperation': $date = $codable->date; break; case 'CSejour': return new CCodageCCAM(); } } $codage_ccam = new CCodageCCAM(); $codage_ccam->codable_class = $codable->_class; $codage_ccam->codable_id = $codable->_id; $codage_ccam->praticien_id = $praticien_id; $codage_ccam->loadPraticien(); $codage_ccam->activite_anesth = $activite == 4 && $codage_ccam->_ref_praticien->isAnesth() ? 1 : 0; $codage_ccam->date = $date; $codage_ccam->loadMatchingObject(); if (!$codage_ccam->_id) { $codage_ccam->_apply_rules = false; $codage_ccam->store(); } return $codage_ccam; }
/** * Charge les actes CCAM codables en fonction des code CCAM fournis * * @param integer $praticien_id L'id du praticien auquel seront liés les actes * * @return void */ function loadPossibleActes($praticien_id = 0) { $this->preparePossibleActes(); $depassement_affecte = false; $depassement_anesth_affecte = false; $this->guessActesAssociation(); // Check if depassement is already set $this->loadRefsActesCCAM(); foreach ($this->_ref_actes_ccam as $_acte) { if ($_acte->code_activite == 1 && $_acte->montant_depassement) { $depassement_affecte = true; } if ($_acte->code_activite == 4 && $_acte->montant_depassement) { $depassement_anesth_affecte = true; } } // existing acts may only be affected once to possible acts $used_actes = array(); if ($praticien_id) { $praticien = CMediusers::get($praticien_id); $executant_id = $praticien_id; } else { $praticien = $this->loadRefPraticien(); $executant_id = 0; } $praticien->loadRefDiscipline(); $this->loadRefPatient()->evalAge(); $this->loadExtCodesCCAM(); foreach ($this->_ext_codes_ccam as $code_ccam) { foreach ($code_ccam->activites as $activite) { foreach ($activite->phases as $phase) { $possible_acte = new CActeCCAM(); $possible_acte->montant_depassement = ""; $possible_acte->code_acte = $code_ccam->code; $possible_acte->code_activite = $activite->numero; $possible_acte->_anesth = $activite->numero == 4; $possible_acte->code_phase = $phase->phase; $possible_acte->execution = CAppUI::pref("use_acte_date_now") ? CMbDT::dateTime() : $this->_acte_execution; // Affectation du dépassement au premier acte de chirugie if (!$depassement_affecte and $possible_acte->code_activite == 1) { $possible_acte->montant_depassement = $this->_acte_depassement; $depassement_affecte = true; } // Affectation du dépassement au premier acte d'anesthésie if (!$depassement_anesth_affecte and $possible_acte->code_activite == 4) { $possible_acte->montant_depassement = $this->_acte_depassement_anesth; $depassement_anesth_affecte = true; } if (!$praticien_id) { $executant_id = CAppUI::pref("user_executant") ? CMediusers::get()->_id : $this->getExecutantId($possible_acte->code_activite); } $possible_acte->executant_id = $executant_id; $possible_acte->object_class = $this->_class; $possible_acte->object_id = $this->_id; if ($possible_acte->code_activite == 4) { $possible_acte->extension_documentaire = $this->getExtensionDocumentaire($possible_acte->executant_id); } /* Gestion du champ remboursé */ if ($code_ccam->remboursement == 1) { /* Cas ou l'acte est remboursable */ $possible_acte->rembourse = '1'; } else { /* Cas ou l'acte est non */ $possible_acte->rembourse = '0'; } $possible_acte->updateFormFields(); $possible_acte->loadRefExecutant(); $possible_acte->loadRefCodeCCAM(); if (CAppUI::conf('dPccam CCodeCCAM use_new_association_rules')) { $possible_acte->loadRefCodageCCAM(); } $possible_acte->getAnesthAssocie(); // Affect a loaded acte if exists foreach ($this->_ref_actes_ccam as $_acte) { if ($_acte->code_acte == $possible_acte->code_acte && $_acte->code_activite == $possible_acte->code_activite && $_acte->code_phase == $possible_acte->code_phase) { if (!isset($used_actes[$_acte->acte_id])) { $possible_acte = $_acte; $used_actes[$_acte->acte_id] = true; break; } } } if ($possible_acte->_id) { $possible_acte->getTarif(); } else { $possible_acte->getTarifSansAssociationNiCharge(); } // Keep references ! $phase->_connected_acte = $possible_acte; $listModificateurs = $phase->_connected_acte->modificateurs; if (!$possible_acte->_id) { $possible_acte->facturable = '1'; $possible_acte->checkFacturable(); if (CAppUI::conf('dPccam CCodeCCAM use_new_association_rules')) { CCodageCCAM::precodeModifiers($phase->_modificateurs, $possible_acte, $this); $possible_acte->getMontantModificateurs($phase->_modificateurs); } else { $possible_acte->getMontantModificateurs($phase->_modificateurs); foreach ($phase->_modificateurs as $modificateur) { $modificateur->_checked = $this->checkModificateur($modificateur->code, CMbDT::time($phase->_connected_acte->execution)); } } } else { // Récupération des modificateurs codés foreach ($phase->_modificateurs as $modificateur) { /* Dans le cas des modificateurs doubles, les 2 composantes peuvent être séparées (IJKO dans le cas de IO par exemple) */ if ($modificateur->_double == "2") { $position = strpos($listModificateurs, $modificateur->code[0]) !== false && strpos($listModificateurs, $modificateur->code[1]) !== false; } else { $position = strpos($listModificateurs, $modificateur->code); } if ($position !== false) { if ($modificateur->_double == "1") { $modificateur->_checked = $modificateur->code; } elseif ($modificateur->_double == "2") { $modificateur->_checked = $modificateur->code . $modificateur->_double; } else { $modificateur->_checked = null; } } else { $modificateur->_checked = null; } } /* Vérification et précodage des modificateurs */ if (CAppUI::conf('dPccam CCodeCCAM use_new_association_rules')) { CCodageCCAM::precodeModifiers($phase->_modificateurs, $possible_acte, $this); } $possible_acte->getMontantModificateurs($phase->_modificateurs); } } } } }
/** * Charge le codage CCAM associé * * @return CCodageCCAM|null */ function loadRefCodageCCAM() { $this->loadRefObject(); if (isset($this->_ref_object)) { return $this->_ref_codage_ccam = CCodageCCAM::get($this->_ref_object, $this->executant_id, $this->code_activite, CMbDT::date(null, $this->execution)); } return null; }
* * @package Mediboard * @subpackage ccam * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ $codable_id = Cvalue::post('codable_id'); $codable_class = CValue::post('codable_class'); $praticien_id = Cvalue::post('praticien_id'); $date = Cvalue::post('date'); $user_password = CValue::post('user_password'); $lock_all_codages = Cvalue::post('lock_all_codages', 0); $lock = CValue::post('lock', 1); $codage = new CCodageCCAM(); $codage->praticien_id = $praticien_id; $codage->codable_class = $codable_class; $codage->codable_id = $codable_id; if ($date && !$lock_all_codages) { $codage->date = $date; } $codages = $codage->loadMatchingList(); $user = CMediusers::get(); if (CAppUI::conf('ccam CCodable lock_codage_ccam') != 'password' || CAppUI::conf('ccam CCodable lock_codage_ccam') == 'password' && $user->_id && CUser::checkPassword($user->_user_username, $user_password)) { foreach ($codages as $_codage) { $_codage->locked = $lock; $_codage->store(); } $msg = $lock ? 'CCodageCCAM-msg-codage_locked' : 'CCodageCCAM-msg-codage_unlocked'; CAppUI::setMsg($msg, UI_MSG_OK);
* @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ $praticien_id = CValue::get('praticien_id'); $codable_class = CValue::get('codable_class'); $codable_id = CValue::get('codable_id'); $date = Cvalue::get('date'); $lock = CValue::get('lock', 1); $user = CMediusers::get(); /** @var CCodable $codable */ $codable = CMbObject::loadFromGuid("{$codable_class}-{$codable_id}"); $codage = CCodageCCAM::get($codable, $praticien_id, 1, $date); if (CAppUI::conf('ccam CCodable lock_codage_ccam') != 'password' && $codable_class != 'CSejour') { $codage = new CCodageCCAM(); $codage->praticien_id = $praticien_id; $codage->codable_class = $codable_class; $codage->codable_id = $codable_id; $codages = $codage->loadMatchingList(); foreach ($codages as $_codage) { $_codage->locked = $lock; $_codage->store(); } $msg = $lock ? 'CCodageCCAM-msg-codage_locked' : 'CCodageCCAM-msg-codage_unlocked'; CAppUI::setMsg($msg, UI_MSG_OK); echo CAppUI::getMsg(); CApp::rip(); } $smarty = new CSmartyDP(); $smarty->assign('praticien_id', $praticien_id);
/** * @see parent::getExtensionDocumentaire() */ function getExtensionDocumentaire($executant_id) { $extension_documentaire = null; if (CAppUI::conf('dPccam CCodeCCAM use_new_association_rules')) { $codage_ccam = CCodageCCAM::get($this, $executant_id, 4, $this->date); $actes = $codage_ccam->loadActesCCAM(); foreach ($actes as $_acte) { if ($_acte->extension_documentaire) { $extension_documentaire = $_acte->extension_documentaire; break; } } } if (!$extension_documentaire) { /** @var CTypeAnesth $type_anesth */ $type_anesth = $this->loadFwdRef("type_anesth", true); $this->_ref_type_anesth = $type_anesth; $extension_documentaire = $type_anesth->ext_doc; } return $extension_documentaire; }
<?php /** * $Id: $ * * @package Mediboard * @subpackage SalleOp * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision: 23384 $ */ $codable_class = CValue::get('codable_class', ''); $codable_id = CValue::get('codable_id'); $praticien_id = CValue::get('praticien_id'); $date = CValue::get('date'); $codage = new CCodageCCAM(); $codage->codable_class = $codable_class; $codage->codable_id = $codable_id; $codage->praticien_id = $praticien_id; if ($date) { $codage->date = $date; } $codages = $codage->loadMatchingList('activite_anesth desc'); foreach ($codages as $_codage) { $_codage->canDo(); if (!$_codage->_can->edit) { CAppUI::redirect("m=system&a=access_denied"); } $_codage->loadPraticien()->loadRefFunction(); $_codage->_ref_praticien->isAnesth(); $_codage->loadActesCCAM();
<?php /** * $Id$ * * @package Mediboard * @subpackage dPccam * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ $codage_id = CValue::get('codage_id', 0); $acte_id = CValue::get('acte_id', 0); $codage = new CCodageCCAM(); $codage->load($codage_id); if ($codage->_id) { $codage->canDo(); if (!$codage->_can->edit) { CAppUI::redirect("m=system&a=access_denied"); } $codage->loadCodable(); $codage->loadPraticien()->loadRefFunction(); $codage->_ref_praticien->isAnesth(); $codage->loadActesCCAM(); $codage->checkRules(); // Chargement du codable et des actes possibles $codage->loadCodable(); foreach ($codage->_ref_actes_ccam as $_acte) { $_acte->getTarif(); $_activite = $_acte->_ref_code_ccam->activites[$_acte->code_activite];
if (!$coded) { $key = "{$_code->code}-{$_activite->numero}-{$_phase->phase}"; if (!array_key_exists($key, $uncoded_acts)) { $uncoded_acts[$key] = 1; } else { $uncoded_acts[$key] = $uncoded_acts[$key] + 1; } } } } } $date = CValue::post('date', $codage->_ref_codable->sortie); $days = CMbDT::daysRelative($codage->date . ' 00:00:00', CMbDT::format($date, '%Y-%m-%d 00:00:00')); for ($i = 1; $i <= $days; $i++) { $_date = CMbDT::date("+{$i} DAYS", $codage->date); $_codage = new CCodageCCAM(); $_codage->praticien_id = $codage->praticien_id; $_codage->codable_class = $codage->codable_class; $_codage->codable_id = $codage->codable_id; $_codage->date = $_date; $_codage->loadMatchingObject(); if ($codage->association_mode == 'user_choice') { $_codage->association_mode = $codage->association_mode; $_codage->association_rule = $codage->association_rule; } $_codage->store(); foreach ($actes as $_acte_id) { if (array_key_exists($_acte_id, $codage->_ref_actes_ccam)) { $_acte = $codage->_ref_actes_ccam[$_acte_id]; /* Si il n'y a pas d'acte non coté pour ce code ccam, on l'ajoute au codable */ $key = "{$_acte->code_acte}-{$_acte->code_activite}-{$_acte->code_phase}";