Esempio n. 1
0
         // 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();
 }
Esempio n. 2
0
$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);
Esempio n. 3
0
     $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");
Esempio n. 7
0
     $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();
}
Esempio n. 10
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;
 }
 /**
  * @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();
 }