示例#1
0
 /**
  * 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"];
 }
示例#2
0
 /**
  * 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';
         }
     }
 }