// Calcul des prises prevues $line->calculQuantiteTotal(); foreach ($_dates as $curr_date) { $line->calculPrisesPrevues($curr_date, $planif_manuelle); } $line->calculAdministrations(); $line->updateAlerteAntibio(); if ($line->sans_planif) { foreach ($line->_ref_lines as $_line_mix) { if ($_line_mix->delay_prise) { $_line_mix->loadRefLastAdministration(); } } } // Chargement des transmissions de la prescription_line_mix $transmission = new CTransmissionMedicale(); $transmission->object_class = "CPrescriptionLineMix"; $transmission->object_id = $line->_id; $transmission->sejour_id = $sejour->_id; $transmissions = $transmission->loadMatchingList(); foreach ($transmissions as $_transmission) { $_transmission->loadRefsFwd(); if ($_transmission->object_id && $_transmission->object_class) { $prescription->_transmissions[$_transmission->object_class][$_transmission->object_id][$_transmission->_id] = $_transmission; } } } $line->countPlanifications(); if (in_array($line->jour_decalage, array("ER", "R"))) { $line->loadRefOperation(); }
$where = array("sejour_id" => CSQLDataSource::prepareIn($sejours_ids)); // Transmissions $whereTrans = $where; $whereTrans["libelle_atc"] = "IS NOT NULL"; $whereTrans["date"] = "BETWEEN '{$datetime_delta}' AND '{$datetime_avg}'"; $transmission = new CTransmissionMedicale(); $transmissions = $transmission->loadList($whereTrans, "date"); $whereTrans = $where; $whereTrans["date"] = "BETWEEN '{$datetime_delta}' AND '{$datetime_avg}'"; $whereTrans["object_id"] = "IS NOT NULL"; $transmission = new CTransmissionMedicale(); $transmissions = array_merge($transmissions, $transmission->loadList($whereTrans, "date")); $whereTrans = $where; $whereTrans["date"] = "BETWEEN '{$datetime_delta}' AND '{$datetime_avg}'"; $whereTrans[] = "object_id IS NULL and libelle_atc IS NULL"; $transmission = new CTransmissionMedicale(); $transmissions = array_merge($transmissions, $transmission->loadList($whereTrans, "date")); CStoredObject::massLoadFwdRef($transmissions, "user_id"); array_multisort(CMbArray::pluck($transmissions, "date"), SORT_ASC, $transmissions); // Observations $observation = new CObservationMedicale(); $whereObs = $where; $whereObs["date"] = "BETWEEN '{$datetime_delta}' AND '{$datetime_avg}'"; $observations = $observation->loadList($whereObs, "date"); CStoredObject::massLoadFwdRef($observations, "user_id"); // Consultations $consultation = new CConsultation(); $whereConsult = $where; $whereConsult["plageconsult.date"] = "BETWEEN '{$datetime_delta}' AND '{$datetime_avg}'"; $ljoin = array("plageconsult" => "plageconsult.plageconsult_id = consultation.plageconsult_id"); $consultations = $consultation->loadList($whereConsult, "plageconsult.date", null, null, $ljoin);
$last_op->loadRefChir(); $last_op->loadExtCodesCCAM(); $affectations = $_sejour->loadRefsAffectations(); $_lits = CMbObject::massLoadFwdRef($affectations, "lit_id"); CMbObject::massLoadFwdRef($_lits, "chambre_id"); } $sorter_affectation = CMbArray::pluck($sejours, "_ref_last_affectation", "_view"); $sorter_patient = CMbArray::pluck($sejours, "_ref_patient", "nom"); array_multisort($sorter_affectation, SORT_ASC, $sorter_patient, SORT_ASC, $sejours); $sejours_ids = array(); if (count($sejours)) { $sejours = array_combine(CMbArray::pluck($sejours, "_id"), $sejours); $sejours_ids = array_keys($sejours); } if ($do_trans) { $trans = new CTransmissionMedicale(); $whereTrans = array(); $whereTrans[] = "(degre = 'high' AND (date_max IS NULL OR date_max >= '{$dateTime_min}')) OR (date >= '{$dateTime_min}' AND date <= '{$dateTime_max}')"; $whereTrans["sejour_id"] = CSQLDataSource::prepareIn($sejours_ids); $transmissions = $trans->loadList($whereTrans, "FIND_IN_SET(sejour_id, '" . implode(',', $sejours_ids) . "')"); CMbObject::massLoadFwdRef($transmissions, "user_id"); foreach ($transmissions as $_trans) { $_trans->loadRefUser(); $_trans->loadTargetObject(); if ($_trans->_ref_object) { $_trans->_ref_object->loadRefsFwd(); } $_trans->_ref_sejour = $sejours[$_trans->sejour_id]; $trans_and_obs[$_trans->_ref_sejour->patient_id][$_trans->date][] = $_trans; } $obs = new CObservationMedicale();
if ($user_id) { $where["user_id"] = " = '{$user_id}'"; } if ($degre) { if ($degre == "urg_normal") { $where["degre"] = "IN('low', 'high')"; } if ($degre == "urg") { $where["degre"] = "= 'high'"; } } // Chargement des transmissions if ($load_transmissions == "1") { $ljoin["sejour"] = "transmission_medicale.sejour_id = sejour.sejour_id"; $ljoin["affectation"] = "sejour.sejour_id = affectation.sejour_id"; $transmission = new CTransmissionMedicale(); $transmissions = $transmission->loadList($where, null, null, "transmission_medicale_id", $ljoin); } // Chargement des observations if ($load_observations == "1") { $ljoin["sejour"] = "observation_medicale.sejour_id = sejour.sejour_id"; $ljoin["affectation"] = "sejour.sejour_id = affectation.sejour_id"; $observation = new CObservationMedicale(); $observations = $observation->loadList($where, null, null, "observation_medicale_id", $ljoin); } $cibles = array(); $trans_and_obs = array(); foreach ($transmissions as $_transmission) { $_transmission->loadRefsFwd(); $_transmission->_ref_sejour->loadRefPatient(); $_transmission->_ref_sejour->loadRefsAffectations();
<?php /** * $Id$ * * @package Mediboard * @subpackage Hospi * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ */ $sejour_id = CValue::get("sejour_id"); $transmission = new CTransmissionMedicale(); $where = array("sejour_id" => "= '{$sejour_id}'"); $nb_trans_obs = $transmission->countList($where); $observation = new CObservationMedicale(); $nb_trans_obs += $observation->countList($where); $consultation = new CConsultation(); $where["annule"] = "= '0'"; $nb_trans_obs += $consultation->countList($where); unset($where["annule"]); // Compter les consultations d'anesthésie hors séjour $sejour = new CSejour(); $sejour->load($sejour_id); $patient = $sejour->loadRefPatient(); $consultations = $patient->loadRefsConsultations(array("annule" => "= '0'")); CStoredObject::massCountBackRefs($consultations, "consult_anesth"); foreach ($consultations as $_consult) { if ($_consult->_count["consult_anesth"]) { $nb_trans_obs++; }
* @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision: 27632 $ */ CSessionHandler::writeClose(); $sejour_id = CValue::get("sejour_id"); // Chargement des observations d'importance haute de moins de 7 jours $observation = new CObservationMedicale(); $where = array(); $where["degre"] = " = 'high'"; $where["sejour_id"] = " = '{$sejour_id}'"; $where["date"] = " >= '" . CMbDT::dateTime("- 7 DAYS") . "'"; /* @var CObservationMedicale[] $observations */ $observations = $observation->loadList($where); // Chargement des transmissions d'importance haute ou des macrocibles de moins de 7 jours $transmission = new CTransmissionMedicale(); $where = array(); $where["date"] = " >= '" . CMbDT::dateTime("- 7 DAYS") . "'"; $where["sejour_id"] = " = '{$sejour_id}'"; $where[] = "degre = 'high' OR category_prescription.cible_importante = '1'"; if (CAppUI::conf("soins synthese transmission_date_limit", CGroups::loadCurrent()->_guid)) { $where[] = "date_max >= '" . CMbDT::dateTime() . "' OR date_max IS NULL"; } $ljoin = array(); $ljoin["category_prescription"] = "transmission_medicale.object_id = category_prescription.category_prescription_id\r\n AND transmission_medicale.object_class = 'CCategoryPrescription'"; /* @var CTransmissionMedicale[] $transmissions */ $transmissions = $transmission->loadList($where, null, null, null, $ljoin); $suivi = array(); CStoredObject::massLoadFwdRef($observations, "sejour_id"); $users = CStoredObject::massLoadFwdRef($observations, "user_id"); CStoredObject::massLoadFwdRef($users, "function_id");
$trans->canEdit(); $transmission->_text_action = $trans->text; $transmission->user_id = $trans->user_id; $transmission->date = $trans->date; $transmission->degre = $trans->degre; if ($trans->object_id && $trans->object_class) { $transmission->object_id = $trans->object_id; $transmission->object_class = $trans->object_class; } else { if ($trans->libelle_ATC) { $transmission->libelle_ATC = stripslashes($trans->libelle_ATC); } } } if ($result_id) { $trans = new CTransmissionMedicale(); $trans->load($result_id); $trans->canEdit(); $transmission->_text_result = $trans->text; $transmission->user_id = $trans->user_id; $transmission->date = $trans->date; $transmission->degre = $trans->degre; if ($trans->object_id && $trans->object_class) { $transmission->object_id = $trans->object_id; $transmission->object_class = $trans->object_class; } else { if ($trans->libelle_ATC) { $transmission->libelle_ATC = stripslashes($trans->libelle_ATC); } } }
/** * $Id$ * * Visualiser les transmissions d'une cible fermée * * @package Mediboard * @subpackage Hospi * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ */ CCanDo::checkRead(); $transmission_id = CValue::get("transmission_id"); $from_compact = CValue::get("from_compact", 0); $transmission = new CTransmissionMedicale(); $transmission->load($transmission_id); $transmission->loadTargetObject(); if ($transmission->_ref_object instanceof CAdministration) { $transmission->_ref_object->loadRefsFwd(); } $trans = new CTransmissionMedicale(); $trans->sejour_id = $transmission->sejour_id; if ($transmission->libelle_ATC) { $trans->libelle_ATC = $transmission->libelle_ATC; } else { if ($transmission->object_id && $transmission->object_class) { $trans->object_class = $transmission->object_class; $trans->object_id = $transmission->object_id; } }
<?php /** * $Id$ * * @package Mediboard * @subpackage Hospi * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ */ $sejour_id = CValue::get("sejour_id"); $libelle_ATC = CValue::get("libelle_ATC"); $object_id = CValue::get("object_id"); $object_class = CValue::get("object_class"); $transmission = new CTransmissionMedicale(); $transmissions = array(); $where = array(); $where["sejour_id"] = " = '{$sejour_id}'"; if ($object_id) { $where["object_id"] = " = '{$object_id}'"; $where["object_class"] = " = '{$object_class}'"; } else { $where["libelle_ATC"] = " LIKE '" . addslashes($libelle_ATC) . "'"; } $order_by = "DATE DESC"; /** @var CTransmissionMedicale[] $transmissions */ $transmissions = $transmission->loadlist($where, $order_by); foreach ($transmissions as $_transmission) { $_transmission->loadRefUser(); }
/** * 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; }
/** * @see parent::store() */ function store() { // Si une cible est définie, on Unlock la précédente transmission sur la même cible // (classe ATC ou catégorie de prescription) $this->completeField("sejour_id", "libelle_ATC", "object_id", "object_class"); if ($this->libelle_ATC || $this->object_id && $this->object_class) { $trans = new CTransmissionMedicale(); if ($this->libelle_ATC) { $trans->libelle_ATC = $this->libelle_ATC; } else { if ($this->object_id && $this->object_class) { $trans->object_class = $this->object_class; $trans->object_id = $this->object_id; } } $trans->sejour_id = $this->sejour_id; $trans->locked = 1; $trans->loadMatchingObject("transmission_medicale_id DESC"); if ($trans->_id && $trans->_id != $this->_id) { $trans->locked = 0; $trans->store(); } } return parent::store(); }