* @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(); }
* @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; }
} // 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
} 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; }
} // 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;
* * @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; } }
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(); } }
$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");
/** * 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);
} } 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;
*/ $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();
$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();
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; }
*/ 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");
// 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");
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);
$_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");
/** * @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; }