* @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 23812 $
 */
//CCanDo::checkAdmin();
$object_guids = CValue::get("object_guids", array());
$event_name = CValue::get("event_name");
CExClassConstraint::$_load_lite = true;
$ex_class_events = array();
$group_id = CGroups::loadCurrent()->_id;
$ex_class_event = new CExClassEvent();
$ds = $ex_class_event->_spec->ds;
$where = array("ex_class_event.event_name" => $ds->prepare("=%", $event_name), "ex_class_event.disabled" => $ds->prepare("=%", 0), "ex_class.conditional" => $ds->prepare("=%", 0), $ds->prepare("ex_class.group_id = % OR ex_class.group_id IS NULL", $group_id));
$ljoin = array("ex_class" => "ex_class.ex_class_id = ex_class_event.ex_class_id");
foreach ($object_guids as $object_guid) {
    $object = CMbObject::loadFromGuid($object_guid);
    $where["ex_class_event.host_class"] = $ds->prepare("=%", $object->_class);
    /** @var CExClassEvent[] $_ex_class_events */
    $_ex_class_events = $ex_class_event->loadList($where, null, null, null, $ljoin);
    CStoredObject::massLoadBackRefs($_ex_class_events, "constraints");
    foreach ($_ex_class_events as $_id => $_ex_class_event) {
        if ($_ex_class_event->checkConstraints($object)) {
            $_ex_class_event->_host_object = $object;
            $ex_class_events[] = $_ex_class_event;
        }
    }
}
$ex_class_events_struct = array();
foreach ($ex_class_events as $_ex_class_event) {
    $ex_class_events_struct[] = array("ex_class_event_id" => $_ex_class_event->_id, "ex_class_id" => $_ex_class_event->ex_class_id, "event_name" => $event_name, "object_guid" => $_ex_class_event->_host_object->_guid);
}
CApp::json($ex_class_events_struct);
CCanDo::checkRead();
$date = CValue::get("date", CMbDT::date());
$group = CGroups::loadCurrent();
$sejour = new CSejour();
$where = array();
$where["sejour.grossesse_id"] = "IS NOT NULL";
$where["sejour.entree"] = "<= '{$date} 23:59:59' ";
$where["sejour.sortie"] = ">= '{$date} 00:00:00' ";
$where["sejour.group_id"] = " = '{$group->_id}' ";
$where[] = "sejour.sortie_reelle > '{$date} " . CMbDT::time() . "' OR sejour.sortie_reelle IS NULL";
$order = "sejour.entree DESC";
/** @var CSejour[] $listSejours */
$listSejours = $sejour->loadList($where, $order, null, null, null);
$grossesses = CStoredObject::massLoadFwdRef($listSejours, "grossesse_id");
CStoredObject::massLoadFwdRef($grossesses, "parturiente_id");
$naissances = CStoredObject::massLoadBackRefs($grossesses, "naissances");
$sejours_enfant = CStoredObject::massLoadFwdRef($naissances, "sejour_enfant_id");
CStoredObject::massLoadFwdRef($sejours_enfant, "patient_id");
foreach ($listSejours as $_sejour) {
    $grossesse = $_sejour->loadRefGrossesse();
    $grossesse->loadRefParturiente();
    $naissances = $grossesse->loadRefsNaissances();
    $grossesse->_ref_sejour = $_sejour;
    $grossesse->loadRefLastOperation();
    foreach ($naissances as $_naissance) {
        $_naissance->loadRefSejourEnfant()->loadRefPatient();
        $_naissance->loadRefOperation();
    }
    $_sejour->loadRefCurrAffectation($date . " " . CMbDT::time());
    $grossesse->getDateAccouchement();
}
示例#3
0
 * @author   SARL OpenXtrem <*****@*****.**>
 * @license  GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version  $Revision$
 * @link     http://www.mediboard.org
 */
CCanDo::checkRead();
$date = CView::request("date", "date default|" . CMbDT::date());
CView::checkin();
$date_max = CMbDT::date("+2 month", $date);
$group = CGroups::loadCurrent();
$grossesse = new CGrossesse();
$where = array();
$where["terme_prevu"] = "BETWEEN '{$date}' AND '{$date_max}'";
$where["group_id"] = "= '{$group->_id}'";
$grossesses = $grossesse->loadList($where);
$sejours = CStoredObject::massLoadBackRefs($grossesses, "sejours", "entree_prevue DESC");
CStoredObject::massLoadBackRefs($sejours, "operations", "date ASC");
$fiches_anesth = array();
$params = array("dossier_anesth_id" => "", "operation_id" => "", "offline" => 1, "print" => 1, "pdf" => 0);
/** @var CGrossesse $_grossesse */
foreach ($grossesses as $_grossesse) {
    foreach ($_grossesse->loadRefsConsultations() as $_consult) {
        foreach ($_consult->loadRefsDossiersAnesth() as $_dossier_anesth) {
            $params["dossier_anesth_id"] = $_dossier_anesth->_id;
            $fiches_anesth[$_dossier_anesth->_id] = CApp::fetch("dPcabinet", "print_fiche", $params);
        }
    }
}
$smarty = new CSmartyDP();
$smarty->assign("fiches_anesth", $fiches_anesth);
$smarty->display("offline_print_fiches.tpl");
 /**
  * Load blocs operatoires with given permission
  *
  * @param int    $permType    Permission level
  * @param bool   $load_salles Load salles
  * @param string $order       Ordre de chargmeent SQL
  * @param array  $where       SQL WHERE parameters
  *
  * @return CBlocOperatoire[]
  */
 function loadBlocs($permType = PERM_READ, $load_salles = true, $order = "nom", $where = array())
 {
     $bloc = new CBlocOperatoire();
     $whereGroup = array('group_id' => "= '{$this->_id}'");
     $where = array_merge($where, $whereGroup);
     /** @var CBlocOperatoire[] $blocs */
     $blocs = $bloc->loadListWithPerms($permType, $where, $order);
     if ($load_salles) {
         CStoredObject::massLoadBackRefs($blocs, "salles", "nom");
         foreach ($blocs as $_bloc) {
             $_bloc->loadRefsSalles();
         }
     }
     return $this->_ref_blocs = $blocs;
 }
示例#5
0
}
// Can create new
if ($detail <= 0.5) {
    // Loading the events
    if ($ex_class_events === null) {
        $_ex_class_creation = array();
        $ex_class_events = array();
        foreach (CExClass::$_list_cache as $_ex_class_id => $_ex_class) {
            if (!$_ex_class->conditional && (!$cross_context_class || $cross_context_class == $_ex_class->cross_context_class)) {
                $_ex_class_creation[] = $_ex_class_id;
            }
        }
        $where = array("ex_class_event.ex_class_id" => $ex_class_event->getDS()->prepareIn($_ex_class_creation), "ex_class_event.disabled" => "= '0'");
        /** @var CExClassEvent[] $ex_class_events_by_ref */
        $ex_class_events_by_ref = $ex_class_event->loadList($where);
        CStoredObject::massLoadBackRefs($ex_class_events_by_ref, "constraints");
        foreach ($ex_class_events_by_ref as $_ex_class_event) {
            $_key = "{$_ex_class_event->host_class}/{$_ex_class_event->ex_class_id}";
            /** @var CExClassEvent[] $_ex_class_events */
            if (!array_key_exists($_key, $ex_class_events)) {
                $ex_class_events[$_key] = array();
            }
            $ex_class_events[$_key][] = $_ex_class_event;
        }
    }
    foreach ($_ex_class_creation as $_ex_class_id) {
        if (!isset($ex_class_events["{$creation_context->_class}/{$_ex_class_id}"])) {
            continue;
        }
        $_ex_class_events = $ex_class_events["{$creation_context->_class}/{$_ex_class_id}"];
        // TODO canCreateNew
    $where["sejour.type"] = "NOT IN ('urg', 'seances')";
}
$ljoin = array();
$ljoin["users"] = "users.user_id = sejour.praticien_id";
// Filtre sur les services
if (count($services_ids) && $enabled_service) {
    $ljoin["affectation"] = "affectation.sejour_id = sejour.sejour_id AND affectation.sortie = sejour.sortie";
    $where["affectation.service_id"] = CSQLDataSource::prepareIn($services_ids);
}
$order = "users.user_last_name, users.user_first_name, sejour.sortie";
/** @var CSejour[] $sejours */
$sejours = $sejour->loadList($where, $order, null, null, $ljoin);
CStoredObject::massLoadFwdRef($sejours, "praticien_id");
CStoredObject::massLoadFwdRef($sejours, "patient_id");
CStoredObject::massLoadFwdRef($sejours, "prestation_id");
CStoredObject::massLoadBackRefs($sejours, "affectations", "sortie DESC");
$listByPrat = array();
foreach ($sejours as $sejour) {
    $sejour->loadRefPraticien();
    $sejour->loadRefsAffectations();
    $sejour->loadRefPatient();
    $sejour->loadRefPrestation();
    $sejour->loadNDA();
    $sejour->_ref_last_affectation->loadRefLit();
    $sejour->_ref_last_affectation->_ref_lit->loadCompleteView();
    $curr_prat = $sejour->praticien_id;
    if (!isset($listByPrat[$curr_prat])) {
        $listByPrat[$curr_prat]["praticien"] = $sejour->_ref_praticien;
    }
    $listByPrat[$curr_prat]["sejours"][] = $sejour;
}
/** @var CSejour[] $sejours */
$sejours = $sejour->loadList($where, $order, null, null, $ljoin);
$patients = CStoredObject::massLoadFwdRef($sejours, "patient_id");
CStoredObject::massLoadFwdRef($sejours, "etablissement_sortie_id");
CStoredObject::massLoadFwdRef($sejours, "service_sortie_id");
$praticiens = CStoredObject::massLoadFwdRef($sejours, "praticien_id");
$functions = CStoredObject::massLoadFwdRef($praticiens, "function_id");
CStoredObject::massLoadBackRefs($sejours, "affectations");
// Chargement optimisée des prestations
CSejour::massCountPrestationSouhaitees($sejours);
CStoredObject::massLoadBackRefs($sejours, "notes");
CStoredObject::massLoadBackRefs($patients, "dossier_medical");
$operations = CStoredObject::massLoadBackRefs($sejours, "operations", "date ASC", array("annulee" => "= '0'"));
CStoredObject::massLoadBackRefs($operations, "actes_ngap", "lettre_cle DESC");
$order = "code_association, code_acte,code_activite, code_phase, acte_id";
CStoredObject::massLoadBackRefs($operations, "actes_ccam", $order);
// Chargement des NDA
CSejour::massLoadNDA($sejours);
// Chargement des IPP
CPatient::massLoadIPP($patients);
$maternite_active = CModule::getActive("maternite");
foreach ($sejours as $sejour_id => $_sejour) {
    // Filtre sur la fonction du praticien
    $praticien = $_sejour->loadRefPraticien(1);
    if ($filterFunction && $filterFunction != $praticien->function_id) {
        unset($sejours[$sejour_id]);
        continue;
    }
    // Chargement du patient
    $_sejour->loadRefPatient();
    // Chargements des notes sur le séjour
示例#8
0
                         }
                         continue;
                     }
                     if (!isset($postes_by_date[$_date][$_hour])) {
                         continue;
                     }
                     $key = $postes_by_date[$_date][$_hour];
                     @($line->_administrations_moment[$_key][$key["day"]][$key["moment"]]['quantite'] += $_administrations_by_hour['quantite']);
                     @($line->_administrations_moment[$_key][$key["day"]][$key["moment"]]['quantite_planifiee'] += $_administrations_by_hour['quantite_planifiee']);
                 }
             }
         }
     }
 }
 if (count($prescription->_ref_prescription_line_mixes)) {
     CStoredObject::massLoadBackRefs($prescription->_ref_prescription_line_mixes, "variations", "dateTime");
     foreach ($prescription->_ref_prescription_line_mixes as $line) {
         $line->_prises_prevues_moment = array();
         $line->loadRefPraticien();
         $line->loadActiveDates();
         $line->loadRefsVariations();
         if (count($line->_prises_prevues)) {
             foreach ($line->_prises_prevues as $_date => $_prises_by_date) {
                 foreach ($_prises_by_date as $_hour => $_prise) {
                     if (!isset($postes_by_date[$_date][$_hour])) {
                         continue;
                     }
                     $key = $postes_by_date[$_date][$_hour];
                     if (isset($_prise["real_hour"]) && is_array($_prise["real_hour"])) {
                         foreach ($_prise["real_hour"] as $_real_hour) {
                             @($line->_prises_prevues_moment[$key["day"]][$key["moment"]]["real_hour"][] = $_real_hour);
 /**
  * Load the fields
  *
  * @param bool $cache Use cache
  *
  * @return CExClassField[]
  */
 function loadRefsAllFields($cache = false)
 {
     $groups = $this->loadRefsGroups();
     CStoredObject::massLoadBackRefs($groups, "class_fields", "IF(tab_index IS NULL, 10000, tab_index), ex_class_field_id");
     $fields = array();
     foreach ($groups as $_group) {
         $_fields = $_group->loadRefsFields($cache);
         $fields += $_fields;
     }
     return $fields;
 }
示例#10
0
}
// Chargement de tous les plateaux et des equipements et techniciens associés
$plateau_tech = new CPlateauTechnique();
$plateau_tech->group_id = CGroups::loadCurrent()->_id;
/** @var CPlateauTechnique[] $plateaux */
$plateaux = $plateau_tech->loadMatchingList();
CMbObject::massLoadBackRefs($plateaux, "equipements", "nom ASC");
foreach ($plateaux as $_plateau) {
    $_plateau->loadRefsEquipements();
}
// Chargement des executants en fonction des category de prescription
$executants = array();
$reeducateurs = array();
$selected_cat = "";
$user = CMediusers::get();
$func_cats = CStoredObject::massLoadBackRefs($categories, "functions_category");
CStoredObject::massLoadFwdRef($func_cats, "function_id");
foreach ($categories as $_category) {
    // Chargement des associations pour chaque catégorie
    $associations[$_category->_id] = $_category->loadBackRefs("functions_category");
    // Parcours des associations trouvées et chargement des utilisateurs
    /** @var CFunctionCategoryPrescription $_association */
    foreach ($associations[$_category->_id] as $_association) {
        $function = $_association->loadRefFunction();
        $function->loadRefsUsers();
        foreach ($function->_ref_users as $_user) {
            $_user->_ref_function = $function;
            if ($_user->_id == $user->_id && !$selected_cat) {
                $selected_cat = $_category;
            }
            $executants[$_category->_id][$_user->_id] = $_user;
示例#11
0
 *
 * @package    Mediboard
 * @subpackage System
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkRead();
// Minute courante
$time = CMbDT::time();
$minute = intval(CMbDT::transform($time, null, "%M"));
// Chargement des senders
$sender = new CViewSender();
/** @var CViewSender[] $senders */
$senders = $sender->loadList(null, "name");
CStoredObject::massLoadBackRefs($senders, "sources_link");
foreach ($senders as $_sender) {
    $_sender->makeHourPlan($minute);
    $_sender->loadRefSendersSource();
}
// Tableau de charges
$hour_sum = array();
$hour_total = 0;
foreach (range(0, 59) as $min) {
    $hour_sum[$min] = 0;
    foreach ($senders as $_sender) {
        if ($_sender->active) {
            $hour_sum[$min] += $_sender->_hour_plan[$min];
            $hour_total += $_sender->_hour_plan[$min] / 60;
        }
    }
示例#12
0
 static function massLoadPrestationSouhaitees($sejours)
 {
     $where["item_souhait_id"] = "IS NOT NULL";
     $items_liaisons = CStoredObject::massLoadBackRefs($sejours, "items_liaisons", null, $where);
     CStoredObject::massLoadFwdRef($items_liaisons, "item_souhait_id");
     /** @var CItemLiaison $_item_liaison */
     foreach ($items_liaisons as $_item_liaison) {
         $_item_liaison->loadRefItem();
     }
 }
示例#13
0
            $key_where = "function_id";
            $where[$key_where] = "= '" . ($function_id ? $function_id : $userSel->function_id) . "'";
            break;
        case "etab":
            $key_where = "group_id";
            $where[$key_where] = "= '" . ($function_id ? $function->_ref_group->_id : $userSel->_ref_function->group_id) . "'";
            break;
    }
    $aides["{$owner}_ids"] = array_keys($_aide->seek($keywords, $where, 1000));
    $aides[$owner] = $_aide->seek($keywords, $where, $start[$owner] . ", 30", true, null, $order_by);
    $aidesCount[$owner] = $_aide->_totalSeek;
    unset($where[$key_where]);
    foreach ($aides[$owner] as $aide) {
        $aide->loadRefUser();
        $aide->loadRefFunction();
        $aide->loadRefGroup();
    }
    CStoredObject::massLoadBackRefs($aides[$owner], 'hypertext_links');
}
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("userSel", $userSel);
$smarty->assign("function", $function);
$smarty->assign("aides", $aides);
$smarty->assign("aidesCount", $aidesCount);
$smarty->assign("class", $class);
$smarty->assign("start", $start);
$smarty->assign("order_col_aide", $order_col_aide);
$smarty->assign("order_way", $order_way);
$smarty->assign("aide_id", $aide_id);
$smarty->display("inc_tabs_aides.tpl");
示例#14
0
 /**
  * Charge tout le suivi médical, composé d'observations, transmissions, consultations et prescriptions
  *
  * @param date $datetime_min Date de référence à partir de laquelle filtrer
  *
  * @return array
  */
 function loadSuiviMedical($datetime_min = null, $cible_trans = null, &$cibles = array(), &$last_trans_cible = array(), $user_id = null, &$users = array(), $print = 0)
 {
     if ($datetime_min) {
         $trans = new CTransmissionMedicale();
         $whereTrans = array();
         $whereTrans[] = "(degre = 'high' AND (date_max IS NULL OR date_max >= '{$datetime_min}')) OR (date >= '{$datetime_min}')";
         $whereTrans["sejour_id"] = " = '{$this->_id}'";
         $this->_back["transmissions"] = $trans->loadList($whereTrans, "date DESC, transmission_medicale_id DESC");
         $obs = new CObservationMedicale();
         $whereObs = array();
         $whereObs[] = "(degre = 'high') OR (date >= '{$datetime_min}')";
         $whereObs["sejour_id"] = " = '{$this->_id}'";
         $this->_back["observations"] = $obs->loadList($whereObs);
     } else {
         $this->loadBackRefs("observations");
         $this->loadBackRefs("transmissions", "date DESC, transmission_medicale_id DESC");
     }
     $consultations = $this->loadRefsConsultations();
     $this->_ref_suivi_medical = array();
     if (isset($this->_back["observations"])) {
         CObservationMedicale::massLoadRefAlerte($this->_back["observations"]);
         foreach ($this->_back["observations"] as $curr_obs) {
             /** @var CObservationMedicale $curr_obs */
             $curr_obs->loadRefsFwd();
             $users[$curr_obs->user_id] = $curr_obs->_ref_user;
             if ($user_id && $curr_obs->user_id != $user_id) {
                 continue;
             }
             $curr_obs->_ref_user->loadRefFunction();
             $curr_obs->canEdit();
             $this->_ref_suivi_medical[$curr_obs->date . $curr_obs->_id . "obs"] = $curr_obs;
         }
     }
     if (isset($this->_back["transmissions"])) {
         $trans_compact = CAppUI::conf("soins Transmissions trans_compact", CGroups::loadCurrent()) && !$print;
         $list_trans = array();
         /** @var CTransmissionMedicale $curr_trans **/
         foreach ($this->_back["transmissions"] as $curr_trans) {
             $curr_trans->loadRefsFwd();
             $users[$curr_trans->user_id] = $curr_trans->_ref_user;
             if ($user_id && $curr_trans->user_id != $user_id) {
                 continue;
             }
             $curr_trans->calculCibles($cibles);
             if ($cible_trans && $curr_trans->_cible != $cible_trans) {
                 continue;
             }
             $list_trans[] = $curr_trans;
             $curr_trans->canEdit();
             $curr_trans->loadRefUser();
             if ($curr_trans->libelle_ATC) {
                 if (!isset($last_trans_cible[$curr_trans->libelle_ATC])) {
                     $last_trans_cible[$curr_trans->libelle_ATC] = $curr_trans;
                 }
             } else {
                 if (!isset($last_trans_cible["{$curr_trans->object_class} {$curr_trans->object_id}"])) {
                     $last_trans_cible["{$curr_trans->object_class} {$curr_trans->object_id}"] = $curr_trans;
                 }
             }
         }
         foreach ($list_trans as $_trans) {
             $sort_key_pattern = "{$_trans->_class} {$_trans->user_id} {$_trans->object_id} {$_trans->object_class} {$_trans->libelle_ATC}";
             $sort_key = "{$_trans->date} {$sort_key_pattern}";
             $date_before = CMbDT::dateTime("-1 SECOND", $_trans->date);
             $sort_key_before = "{$date_before} {$sort_key_pattern}";
             $date_after = CMbDT::dateTime("+1 SECOND", $_trans->date);
             $sort_key_after = "{$date_after} {$sort_key_pattern}";
             if ($_trans->libelle_ATC && $last_trans_cible[$_trans->libelle_ATC] != $_trans && ($last_trans_cible[$_trans->libelle_ATC]->locked || $trans_compact && !array_key_exists($sort_key, $_trans) && !array_key_exists($sort_key_before, $this->_ref_suivi_medical) && !array_key_exists($sort_key_after, $this->_ref_suivi_medical)) || $_trans->object_id && ($last_trans_cible["{$_trans->object_class} {$_trans->object_id}"]->locked || $trans_compact && !array_key_exists($sort_key, $this->_ref_suivi_medical) && !array_key_exists($sort_key_before, $this->_ref_suivi_medical) && !array_key_exists($sort_key_after, $this->_ref_suivi_medical)) && $last_trans_cible["{$_trans->object_class} {$_trans->object_id}"] != $_trans) {
                 continue;
             }
             // Aggrégation à -1 sec
             if (array_key_exists($sort_key_before, $this->_ref_suivi_medical)) {
                 $sort_key = $sort_key_before;
             } else {
                 if (array_key_exists($sort_key_after, $this->_ref_suivi_medical)) {
                     $sort_key = $sort_key_after;
                 }
             }
             if (!isset($this->_ref_suivi_medical[$sort_key])) {
                 $this->_ref_suivi_medical[$sort_key] = array("data" => array(), "action" => array(), "result" => array());
             }
             if (!isset($this->_ref_suivi_medical[$sort_key][0])) {
                 $this->_ref_suivi_medical[$sort_key][0] = $_trans;
             }
             $this->_ref_suivi_medical[$sort_key][$_trans->type][] = $_trans;
         }
     }
     CStoredObject::massLoadBackRefs($consultations, "consult_anesth");
     foreach ($consultations as $_consultation) {
         $_consultation->canEdit();
         $_consultation->loadRefConsultAnesth();
         $unset = false;
         foreach ($_consultation->_refs_dossiers_anesth as $_dossier_anesth) {
             $_dossier_anesth->loadRefOperation();
             $_dossier_anesth->loadRefsTechniques();
             // Retrait des dossiers d'anesthésie non liés à une intervention du séjour
             if (!$_dossier_anesth->operation_id) {
                 $unset = true;
                 continue;
             }
         }
         if ($unset) {
             continue;
         }
         $_consultation->loadRefPlageConsult();
         $_consultation->loadRefPraticien()->loadRefFunction();
         $this->_ref_suivi_medical[$_consultation->_guid . $_consultation->_datetime] = $_consultation;
     }
     if (CModule::getActive("dPprescription") && $this->type == "urg" && CAppUI::conf("dPprescription CPrescription prescription_suivi_soins", CGroups::loadCurrent())) {
         $this->loadRefPrescriptionSejour();
         $prescription = $this->_ref_prescription_sejour;
         // Chargement des lignes de prescriptions d'elements
         $prescription->loadRefsLinesElement();
         $prescription->loadRefsLinesAllComments();
         foreach ($prescription->_ref_prescription_lines_all_comments as $_comment) {
             $_comment->canEdit();
             $_comment->countBackRefs("transmissions");
             $this->_ref_suivi_medical["{$_comment->debut} {$_comment->time_debut} {$_comment->_guid}"] = $_comment;
         }
         // Ajout des lignes de prescription dans la liste du suivi de soins
         foreach ($prescription->_ref_prescription_lines_element as $_line_element) {
             $_line_element->canEdit();
             $_line_element->countBackRefs("transmissions");
             $this->_ref_suivi_medical["{$_line_element->debut} {$_line_element->time_debut} {$_line_element->_guid}"] = $_line_element;
         }
     }
     krsort($this->_ref_suivi_medical);
     return $this->_ref_suivi_medical;
 }
foreach ($ref_objects as $_object) {
    if ($_object instanceof CPatient) {
        $_object->loadIPP();
        continue;
    }
    if ($_object instanceof CSejour) {
        $_object->loadNDA();
        $_object->loadRefCurrAffectation($creation_date);
        continue;
    }
}
/** @var CExConcept[] $concepts */
$concepts = CStoredObject::massLoadFwdRef($fields, "concept_id");
$lists = CStoredObject::massLoadFwdRef($concepts, "ex_list_id");
CStoredObject::massLoadBackRefs($lists, "list_items");
CStoredObject::massLoadBackRefs($concepts, "list_items");
$formula_token_values = array();
foreach ($fields as $_field) {
    /*if ($_field->formula == null) {
        continue;
      } */
    $formula_token_values[$_field->name] = array("values" => $_field->getFormulaValues(), "formula" => $_field->formula, "formulaView" => utf8_encode($_field->_formula));
}
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("ex_object", $ex_object);
$smarty->assign("ex_object_id", $ex_object_id);
$smarty->assign("ex_class_id", $ex_class_id);
$smarty->assign("object_guid", $object_guid);
$smarty->assign("object", $object);
$smarty->assign("_element_id", $_element_id);
示例#16
0
     }
 }
 if (!count($consultations) && !$empty) {
     unset($listPlages[$key_prat]["plages"][$_plage->_id]);
     continue;
 }
 if (count($consultations) && $mode_vue == "horizontal") {
     $consultations = array_combine(range(0, count($consultations) - 1), $consultations);
 }
 // Préchargement de masse sur les consultations
 CStoredObject::massLoadFwdRef($consultations, "patient_id");
 CStoredObject::massLoadFwdRef($consultations, "sejour_id");
 CStoredObject::massLoadFwdRef($consultations, "categorie_id");
 CMbObject::massCountDocItems($consultations);
 /** @var CConsultAnesth[] $dossiers */
 $dossiers = CStoredObject::massLoadBackRefs($consultations, "consult_anesth");
 $count = CMbObject::massCountDocItems($dossiers);
 // Chargement du détail des consultations
 foreach ($consultations as $_consultation) {
     if ($mode_urgence) {
         $_consultation->getType();
         if ($_consultation->_type == "urg") {
             unset($consultations[$_consultation->_id]);
             continue;
         }
     }
     if ($heure_min === null) {
         $heure_min = $_consultation->heure;
     }
     if ($_consultation->heure < $heure_min) {
         $heure_min = $_consultation->heure;
示例#17
0
 */
$sejour_id = CValue::get("sejour_id");
$context = CValue::get("context", "all");
$relative_date = CValue::get("relative_date");
$sejour = new CSejour();
$sejour->load($sejour_id);
$prestations_j = CPrestationJournaliere::loadCurrentList($sejour->type);
$dates = array();
$prestations_p = array();
$liaisons_j = array();
$liaisons_p = array();
$date_modif = array();
CStoredObject::massLoadBackRefs($prestations_j, "items", "rank");
foreach ($prestations_j as $_prestation) {
    $items = $_prestation->loadRefsItems();
    CStoredObject::massLoadBackRefs($items, "sous_items", "nom");
    foreach ($items as $_item) {
        $_item->loadRefsSousItems();
    }
}
$sejour->loadRefPrescriptionSejour();
$sejour->loadRefCurrAffectation();
$sejour->loadRefsOperations();
$dossier_medical_sejour = $sejour->loadRefDossierMedical();
$dossier_medical_sejour->loadRefsAntecedents();
$patient = $sejour->loadRefPatient();
$patient->loadRefPhotoIdentite();
$patient->loadRefLatestConstantes();
$dossier_medical = $patient->loadRefDossierMedical();
$dossier_medical->loadRefsAntecedents();
$dossier_medical->loadRefsAllergies();
示例#18
0
    $kines[$kine_journee->_id] = $kine_journee;
    $kine_referent = $bilan->_ref_kine_referent;
    if (!$kine_journee->_id) {
        $kines[$kine_referent->_id] = $kine_referent;
    }
    if ($filter->referent_id && $kine_referent->_id != $filter->referent_id && $kine_journee->_id != $filter->referent_id) {
        unset($kines[$kine_journee->_id]);
        if (!$kine_journee->_id) {
            unset($kines[$kine_referent->_id]);
        }
        unset($sejours[$_sejour->_id]);
        continue;
    }
}
// Chargement du détail des séjour
CStoredObject::massLoadBackRefs($sejours, "notes");
CStoredObject::massLoadFwdRef($sejours, "patient_id");
foreach ($sejours as $_sejour) {
    $kine_journee = $_sejour->_ref_bilan_ssr->_ref_kine_journee;
    $kine_referent = $_sejour->_ref_bilan_ssr->_ref_kine_referent;
    // Regroupement par kine
    $sejours_by_kine[$kine_referent->_id][] = $_sejour;
    if ($kine_journee->_id && $kine_journee->_id != $kine_referent->_id) {
        $sejours_by_kine[$kine_journee->_id][] = $_sejour;
    }
    // Détail du séjour
    $_sejour->checkDaysRelative($date);
    $_sejour->loadNDA();
    $_sejour->loadRefsNotes();
    // Patient
    $patient = $_sejour->loadRefPatient();
示例#19
0
    case "entree_prevue":
        $order = "sejour.entree_prevue ASC";
        break;
    case "entree_reelle":
        $order = "sejour.entree_reelle ASC";
        break;
    default:
        $order = "users.user_last_name, users.user_first_name, sejour.entree";
        break;
}
/** @var CSejour[] $sejours */
$sejours = $sejour->loadList($where, $order, null, null, $ljoin);
CStoredObject::massLoadFwdRef($sejours, "praticien_id");
CStoredObject::massLoadFwdRef($sejours, "patient_id");
CStoredObject::massLoadFwdRef($sejours, "prestation_id");
CStoredObject::massLoadBackRefs($sejours, "affectations");
$listByPrat = array();
foreach ($sejours as $sejour) {
    $sejour->loadRefPraticien();
    $sejour->loadRefsAffectations();
    $sejour->loadRefPatient();
    $sejour->loadRefPrestation();
    $sejour->loadNDA();
    $sejour->_ref_first_affectation->loadRefLit();
    $sejour->_ref_first_affectation->_ref_lit->loadCompleteView();
    $curr_prat = $sejour->praticien_id;
    if (!isset($listByPrat[$curr_prat])) {
        $listByPrat[$curr_prat]["praticien"] = $sejour->_ref_praticien;
    }
    $listByPrat[$curr_prat]["sejours"][] = $sejour;
}
 /**
  * @param CExClassField[] $fields Fields to get display of
  *
  * @return void
  */
 function setFieldsDisplay($fields)
 {
     CStoredObject::massLoadBackRefs($fields, "predicates");
     $default = array();
     $this->_fields_display_struct = array();
     $all_predicates = array();
     foreach ($fields as $_field) {
         if ($_field->disabled) {
             continue;
         }
         if ($_field->_count["predicates"] > 0) {
             $all_predicates += $_field->loadRefPredicates();
         }
     }
     CStoredObject::massLoadBackRefs($all_predicates, "properties");
     CStoredObject::massLoadBackRefs($all_predicates, "display_fields");
     CStoredObject::massLoadBackRefs($all_predicates, "display_messages");
     CStoredObject::massLoadBackRefs($all_predicates, "display_subgroups");
     CStoredObject::massLoadBackRefs($all_predicates, "display_pictures");
     foreach ($fields as $_field) {
         if ($_field->disabled) {
             continue;
         }
         $_affected = array();
         $_predicates = array();
         if ($_field->_count["predicates"] > 0) {
             $_predicates = $_field->loadRefPredicates();
         }
         foreach ($_predicates as $_predicate) {
             $_struct = array("operator" => $_predicate->operator, "value" => $_predicate->value, "display" => array("fields" => array(), "messages" => array(), "subgroups" => array(), "pictures" => array()), "style" => array("fields" => array(), "messages" => array(), "subgroups" => array()));
             // Fields
             /** @var CExClassField[] $_display_fields */
             $_display_fields = $_predicate->loadBackRefs("display_fields");
             foreach ($_display_fields as $_display) {
                 $_struct["display"]["fields"][] = $_display->name;
             }
             // Messages
             $_display_messages = $_predicate->loadBackRefs("display_messages");
             foreach ($_display_messages as $_display) {
                 $_struct["display"]["messages"][] = $_display->_guid;
             }
             // Subgroups
             $_display_subgroups = $_predicate->loadBackRefs("display_subgroups");
             foreach ($_display_subgroups as $_display) {
                 $_struct["display"]["subgroups"][] = $_display->_guid;
             }
             // Pictures
             $_display_pictures = $_predicate->loadBackRefs("display_pictures");
             foreach ($_display_pictures as $_display) {
                 $_struct["display"]["pictures"][] = $_display->_guid;
             }
             $_styles = $_predicate->loadRefProperties();
             foreach ($_styles as $_style) {
                 /** @var CExClassField|CExClassMessage|CExClassFieldSubgroup $_ref_object */
                 $_ref_object = $_style->loadTargetObject();
                 $default[$_ref_object->_guid] = $_ref_object->getDefaultProperties();
                 switch ($_style->object_class) {
                     case "CExClassField":
                         $_field_name = $_ref_object->name;
                         $_struct["style"]["fields"][] = array("name" => $_field_name, "type" => $_style->type, "camelized" => $this->camelize($_style->type), "value" => $_style->value);
                         $_affected[$_ref_object->_guid] = array("type" => "field", "name" => $_field_name);
                         break;
                     case "CExClassMessage":
                         $_struct["style"]["messages"][] = array("guid" => $_ref_object->_guid, "type" => $_style->type, "camelized" => $this->camelize($_style->type), "value" => $_style->value);
                         $_affected[$_ref_object->_guid] = array("type" => "message", "guid" => $_ref_object->_guid);
                         break;
                     case "CExClassFieldSubgroup":
                         $_struct["style"]["subgroups"][] = array("guid" => $_ref_object->_guid, "type" => $_style->type, "camelized" => $this->camelize($_style->type), "value" => $_style->value);
                         $_affected[$_ref_object->_guid] = array("type" => "subgroup", "guid" => $_ref_object->_guid);
                         break;
                     default:
                         // ignore
                         break;
                 }
             }
             $this->_fields_display_struct[$_field->name]["predicates"][] = $_struct;
         }
         if (!empty($_affected)) {
             $this->_fields_display_struct[$_field->name]["affects"] = $_affected;
         }
     }
     $this->_fields_default_properties = $default;
 }
示例#21
0
 */
CCanDo::checkRead();
$date = CValue::get("date", CMbDT::date());
$group = CGroups::loadCurrent();
$date_min = CMbDT::date("-" . CAppUI::conf("maternite CGrossesse min_check_terme", $group) . " DAYS", $date);
$date_max = CMbDT::date("+" . CAppUI::conf("maternite CGrossesse max_check_terme", $group) . " DAYS", $date);
$where = array();
$ljoin = array();
$where["grossesse.terme_prevu"] = "BETWEEN '{$date_min}' AND '{$date_max}'";
$where["grossesse.group_id"] = "= '{$group->_id}' ";
$where["grossesse.active"] = "= '1'";
$ljoin["patients"] = "patients.patient_id = grossesse.parturiente_id";
$grossesse = new CGrossesse();
/** @var CStoredObject[] $grossesses */
$grossesses = $grossesse->loadList($where, "terme_prevu ASC, nom ASC", null, null, $ljoin);
CStoredObject::massLoadFwdRef($grossesses, "parturiente_id");
CStoredObject::massCountBackRefs($grossesses, "sejours");
$consultations = CStoredObject::massLoadBackRefs($grossesses, "consultations");
CStoredObject::massLoadFwdRef($consultations, "plageconsult_id");
/** @var CGrossesse[] $grossesses */
foreach ($grossesses as $_grossesse) {
    $_grossesse->loadRefParturiente();
    $_grossesse->countRefSejours();
    $_grossesse->loadRefsConsultations(true);
}
$smarty = new CSmartyDP();
$smarty->assign("grossesses", $grossesses);
$smarty->assign("date", $date);
$smarty->assign("date_min", $date_min);
$smarty->assign("date_max", $date_max);
$smarty->display("inc_tdb_grossesses.tpl");
示例#22
0
    // Chargement du praticien référent
    $_sejour->loadRefAdresseParPraticien();
    // Chargement de l'affectation
    $affectation = $_sejour->loadRefFirstAffectation();
    // Chargement des appels
    $_sejour->loadRefsAppel('admission');
    // Chargement des interventions
    $whereOperations = array("annulee" => "= '0'");
    $operations = $_sejour->loadRefsOperations($whereOperations);
    $operations_total += $operations;
}
// Optimisation du chargement des interventions
/** @var CConsultAnesth[] $dossiers_anesth_total */
$dossiers_anesth_total = array();
$ljoin = array("consultation" => "consultation.consultation_id = consultation_anesth.consultation_id", "plageconsult" => "consultation.plageconsult_id = plageconsult.plageconsult_id");
CStoredObject::massLoadBackRefs($operations_total, "dossiers_anesthesie", "date DESC", null, $ljoin);
foreach ($operations_total as $operation) {
    $operation->loadRefsActes();
    $consult_anesth = $operation->loadRefsConsultAnesth();
    $dossiers_anesth_total[$consult_anesth->_id] = $consult_anesth;
}
// Optimisation du chargement des dossiers d'anesthésie
$consultations = CStoredObject::massLoadFwdRef($dossiers_anesth_total, "consultation_id");
CStoredObject::massLoadFwdRef($consultations, "plageconsult_id");
foreach ($dossiers_anesth_total as $dossier_anesth) {
    $consultation = $dossier_anesth->loadRefConsultation();
    $consultation->loadRefPlageConsult();
    $consultation->loadRefPraticien()->loadRefFunction();
}
if (CAppUI::conf("dPadmissions show_deficience")) {
    $dossiers = CMbArray::pluck($sejours, "_ref_patient", "_ref_dossier_medical");
示例#23
0
    if (CAppUI::conf("dPhospi vue_temporelle show_imc_patient", "CService-" . $_affectation_imc->service_id)) {
        $_affectation_imc->loadRefSejour()->loadRefPatient()->loadRefLatestConstantes(null, array("poids", "taille"));
    }
}
// Préchargement des users
$user = new CUser();
$where = array("user_id" => CSQLDataSource::prepareIn(CMbArray::pluck($_sejours, "praticien_id")));
$users = $user->loadList($where);
$praticiens = CStoredObject::massLoadFwdRef($_sejours, "praticien_id");
CStoredObject::massLoadFwdRef($praticiens, "function_id");
CStoredObject::massCountBackRefs($affectations, "affectations_enfant");
$_operations = CStoredObject::massLoadBackRefs($sejours, "operations", "date ASC");
CStoredObject::massLoadFwdRef($_operations, "plageop_id");
loadVueTempo($sejours, $suivi_affectation, null, $operations, $date_min, $date_max, $period, $prestation_id, $functions_filter, $filter_function, $sejours_non_affectes);
if (CAppUI::conf("dPadmissions show_deficience")) {
    CStoredObject::massLoadBackRefs($patients, "dossier_medical");
    $dossiers = CMbArray::pluck($sejours, "_ref_patient", "_ref_dossier_medical");
    CDossierMedical::massCountAntecedentsByType($dossiers, "deficience");
}
loadVueTempo($affectations, $suivi_affectation, null, $operations, $date_min, $date_max, $period, $prestation_id, $functions_filter, $filter_function, $sejours_non_affectes);
if (count($affectations) && CAppUI::conf("dPadmissions show_deficience")) {
    $dossiers = CMbArray::pluck($affectations, "_ref_sejour", "_ref_patient", "_ref_dossier_medical");
    CDossierMedical::massCountAntecedentsByType($dossiers, "deficience");
}
ksort($sejours_non_affectes, SORT_STRING);
$_sejour = new CSejour();
$_sejour->_type_admission = $_type_admission;
$smarty = new CSmartyDP();
$smarty->assign("sejours_non_affectes", $sejours_non_affectes);
$smarty->assign("_sejour", $_sejour);
$smarty->assign("triAdm", $triAdm);
示例#24
0
                    $_affectation->loadRefLit()->loadCompleteView();
                    $_affectation->_view = $_affectation->_ref_lit->_view;
                    $sejour = $_affectation->loadRefSejour(1);
                    $sejour->_ref_curr_affectation = $_affectation;
                }
            }
        }
    }
}
/* @var CPatient[] $patients */
$patients = CStoredObject::massLoadFwdRef($sejours, "patient_id");
CPatient::massLoadIPP($patients);
CStoredObject::massLoadBackRefs($patients, "dossier_medical");
CStoredObject::massLoadFwdRef($sejours, "praticien_id");
CStoredObject::massCountBackRefs($sejours, "tasks", array("realise" => "= '0'"), array(), "taches_non_realisees");
CStoredObject::massLoadBackRefs($sejours, "dossier_medical");
CSejour::massLoadSurrAffectation($sejours);
CSejour::massLoadBackRefs($sejours, "user_sejour");
CSejour::massLoadNDA($sejours);
$count_my_patient = 0;
foreach ($sejours as $sejour) {
    $count_my_patient += count($sejour->loadRefsUserSejour($userCourant));
    $sejour->loadRefPatient();
    $sejour->loadRefPraticien();
    $sejour->checkDaysRelative($date);
    $sejour->loadRefPrescriptionSejour();
    $prescription = $sejour->_ref_prescription_sejour;
    if ($prescription->_id) {
        $prescription->loadJourOp(CMbDT::date());
    }
    // Chargement des taches non effectuées
}
/* @var CConsultation[] $consultations*/
$consultation = new CConsultation();
$consultations = $consultation->loadList($where, null, null, null, $ljoin);
$totals["consultations"] = count($consultations);
/** @var CPlageConsult[] $plages */
$plages = CStoredObject::massLoadFwdRef($consultations, "plageconsult_id");
CStoredObject::massLoadFwdRef($consultations, "sejour_id");
CStoredObject::massLoadFwdRef($consultations, "patient_id");
// Pré-chargement des users
$where = array("user_id" => CSQLDataSource::prepareIn(CMbArray::pluck($plages, "chir_id")));
$user->loadList($where);
/** @var CMediusers[] $chirs */
$chirs = CStoredObject::massLoadFwdRef($plages, "chir_id");
CStoredObject::massLoadFwdRef($chirs, "function_id");
CStoredObject::massLoadBackRefs($consultations, "actes_ccam");
foreach ($consultations as $key => $_consult) {
    // Chargemement des codes CCAM
    $_consult->loadExtCodesCCAM();
    $codes_ccam = $_consult->_ext_codes_ccam;
    // Nombre d'acte cotés par le praticien et réinitialisation du count pour le cache
    $nb_actes_ccam = count($_consult->loadRefsActesCCAM());
    // Aucun acte prévu ou coté
    if (!count($codes_ccam) && !$_consult->_count_actes) {
        $_consult->loadRefSejour();
        $_consult->loadRefPraticien()->loadRefFunction();
        $_consult->loadRefPatient();
        continue;
    }
    // Actes prévus restant en suspend
    $activites = CMbArray::pluck($codes_ccam, "activites");
示例#26
0
 /**
  * @see parent::merge()
  */
 function merge($objects = array(), $fast = false)
 {
     $prescriptions = CStoredObject::massLoadBackRefs($objects, "prescription");
     if ($msg = parent::merge($objects, $fast)) {
         return $msg;
     }
     $this->store();
     if (count($prescriptions) > 1) {
         $prescription = new CPrescription();
         $prescription->object_class = $this->_class;
         $prescription->object_id = $this->_id;
         $prescription->type = "traitement";
         if ($msg = $prescription->merge($prescriptions, $fast)) {
             return $msg;
         }
     }
     return null;
 }