/** * Calcul l'âge du patient en mois * * @param string $date Date de référence pour le calcul, maintenant si null * * @return int l'age du patient en mois */ function evalAgeMois($date = null) { $achieved = CMbDate::achievedDurations($this->naissance, $date); return $this->_mois = $achieved["month"]; }
/** * Check the modifiers of the given act * * @param CObject &$modifiers The modifiers to check * @param CActeCCAM &$act The dateTime of the execution of the act * @param CCodable $codable The codable * * @return void */ public static function precodeModifiers(&$modifiers, &$act, $codable) { $date = CMbDT::date(null, $act->execution); $time = CMbDT::time(null, $act->execution); $act->loadRefExecutant(); $act->_ref_executant->loadRefDiscipline(); $discipline = $act->_ref_executant->_ref_discipline; $patient = $codable->loadRefPatient(); $patient->evalAge(); $checked = 0; $spe_gyneco = $spe_gyneco = array('GYNECOLOGIE MEDICALE, OBSTETRIQUE', 'GYNECOLOGIE-OBSTETRIQUE', 'MEDECINE DE LA REPRODUCTION ET GYNECOLOGIE MEDICAL'); $spe_gen_pediatre = array("MEDECINE GENERALE", "PEDIATRIE"); $count_exclusive_modifiers = self::countExclusiveModifiers($act); $store_act = 0; $modifiers_to_add = ""; $achieved = CMbDate::achievedDurations($patient->naissance, CMbDT::date(null, $act->execution)); $patient_age = $achieved["year"]; foreach ($modifiers as $_modifier) { switch ($_modifier->code) { case 'A': $checked = $patient_age < 4 || $patient_age >= 80; $_modifier->_state = $checked ? 'prechecked' : 'not_recommended'; break; case 'E': $checked = $patient->_annees < 5; $_modifier->_state = $checked ? 'prechecked' : 'not_recommended'; break; case 'F': $checked = ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers == 0) && (CMbDT::transform('', $act->execution, '%w') == 0 || CMbDate::isHoliday($date)) && ($time > '08:00:00' && $time < '20:00:00'); if ($checked) { $_modifier->_state = 'prechecked'; } elseif ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers > 0) { $_modifier->_state = 'forbidden'; } else { $_modifier->_state = 'not_recommended'; } break; case "J": $checked = $codable->_class == 'COperation' && CAppUI::pref('precode_modificateur_J'); $_modifier->_state = $checked ? 'prechecked' : null; break; case 'K': $checked = !$act->montant_depassement && ($act->_ref_executant->secteur == 1 || $act->_ref_executant->secteur == 2 && $patient->cmu || $act->_ref_executant->contrat_acces_soins || $act->_ref_executant->option_coordination); if ($checked) { $_modifier->_state = 'prechecked'; } elseif (!in_array($discipline, $spe_gyneco)) { $_modifier->_state = 'not_recommended'; } if (self::isModifierchecked('K', $act) && !$act->montant_depassement) { $checked = true; } break; case 'L': if (self::isModifierchecked('L', $act)) { $_modifier->_state = 'prechecked'; $checked = true; } break; case 'M': $checked = 0; if (!in_array($discipline->text, $spe_gen_pediatre)) { $_modifier->_state = 'not_recommended'; } break; case 'N': $checked = $patient->_annees < 13; $_modifier->_state = $checked ? 'prechecked' : 'not_recommended'; break; case 'P': $checked = ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers == 0) && in_array($discipline->text, $spe_gen_pediatre) && ($time > "20:00:00" && $time < "23:59:59"); if ($checked) { $_modifier->_state = 'prechecked'; } elseif ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers > 0) { $_modifier->_state = 'forbidden'; } else { $_modifier->_state = 'not_recommended'; } break; case 'R': if (self::isModifierchecked('R', $act)) { $_modifier->_state = 'prechecked'; $checked = true; } break; case 'S': $checked = (in_array($discipline->text, $spe_gen_pediatre) || $codable->_class == "COperation" && $codable->_lu_type_anesth) && ($time >= "00:00:00" && $time < "08:00:00") && ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers == 0); if ($checked) { $_modifier->_state = 'prechecked'; } elseif ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers > 0) { $_modifier->_state = 'forbidden'; } else { $_modifier->_state = 'not_recommended'; } break; case 'U': $checked = ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers == 0) && !in_array($discipline->text, $spe_gen_pediatre) && ($time > '20:00:00' || $time < '08:00:00'); if ($checked) { $_modifier->_state = 'prechecked'; } elseif ($count_exclusive_modifiers == 1 && $_modifier->_checked || $count_exclusive_modifiers > 0) { $_modifier->_state = 'forbidden'; } else { $_modifier->_state = 'not_recommended'; } break; case "7": $checked = CAppUI::pref('precode_modificateur_7') && $codable->_class == 'COperation' && (isset($codable->anesth_id) || $act->_ref_executant->isAnesth()); if ($checked) { $_modifier->_state = 'prechecked'; } else { $_modifier->_state = $codable->_class == 'COperation' && (isset($codable->anesth_id) || $act->_ref_executant->isAnesth()) ? null : 'not_recommended'; } break; default: $checked = 0; break; } if (!$act->_id && !isset($_modifier->_checked)) { $_modifier->_checked = $checked; } } /* Handle the case where the mods S and U are both prechecked */ if (isset($modifiers['S']) && isset($modifiers['U'])) { $modS =& $modifiers['S']; $modU =& $modifiers['U']; if ($modS->_state == 'prechecked' && $modU->_state == 'prechecked') { $modU->_checked = 0; $modU->_state = 'forbidden'; } } }