/** * 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); } } } } }
$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);
$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]; $_phase = $_activite->phases[$_acte->code_phase]; /* Verification des modificateurs codés */ foreach ($_phase->_modificateurs as $modificateur) { $position = strpos($_acte->modificateurs, $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; } } CCodageCCAM::precodeModifiers($_phase->_modificateurs, $_acte, $codage->_ref_codable); } $smarty = new CSmartyDP(); $smarty->assign('codage', $codage); $smarty->assign('acte_id', $acte_id); $smarty->display('inc_duplicate_codage.tpl'); }