/**
  * @see parent::getBackProps()
  */
 function getBackProps()
 {
     $backProps = parent::getBackProps();
     $backProps["axes"] = "CSupervisionGraphAxis supervision_graph_id";
     $backProps["pack_links"] = "CSupervisionGraphToPack graph_id";
     return $backProps;
 }
 static function buildEventsGrid(COperation $interv, $time_debut_op_iso, $time_fin_op_iso, $time_min, $time_max)
 {
     // ---------------------------------------------------
     // Gestes, Medicaments, Perfusions peranesth
     $evenements = array("CAnesthPerop" => array(), "CAffectationPersonnel" => array());
     // Personnel de l'interv
     $interv->loadAffectationsPersonnel();
     foreach ($interv->_ref_affectations_personnel as $affectations) {
         foreach ($affectations as $_affectation) {
             if (!$_affectation->debut || !$_affectation->fin) {
                 continue;
             }
             $evenements["CAffectationPersonnel"][$_affectation->_id] = array("icon" => null, "label" => $_affectation->_ref_personnel, "unit" => null, "alert" => false, "datetime" => $_affectation->debut, "position" => CSupervisionTimedEntity::getPosition($_affectation->debut, $time_min, $time_max), "width" => CSupervisionTimedEntity::getWidth($_affectation->debut, $_affectation->fin, $time_min, $time_max), "object" => $_affectation, "editable" => false);
         }
     }
     // Personnel de la plage
     $plageop = $interv->_ref_plageop;
     $plageop->loadAffectationsPersonnel();
     foreach ($plageop->_ref_affectations_personnel as $affectations) {
         foreach ($affectations as $_affectation) {
             if (!$_affectation->debut || !$_affectation->fin) {
                 continue;
             }
             $evenements["CAffectationPersonnel"][$_affectation->_id] = array("icon" => null, "label" => $_affectation->_ref_personnel, "unit" => null, "alert" => false, "datetime" => $_affectation->debut, "position" => CSupervisionTimedEntity::getPosition($_affectation->debut, $time_min, $time_max), "width" => CSupervisionTimedEntity::getWidth($_affectation->debut, $_affectation->fin, $time_min, $time_max), "object" => $_affectation, "editable" => false);
         }
     }
     // Gestes perop
     $interv->loadRefsAnesthPerops();
     foreach ($interv->_ref_anesth_perops as $_perop) {
         $evenements["CAnesthPerop"][$_perop->_id] = array("icon" => null, "label" => $_perop->libelle, "unit" => null, "alert" => $_perop->incident, "datetime" => $_perop->datetime, "position" => CSupervisionTimedEntity::getPosition($_perop->datetime, $time_min, $time_max), "object" => $_perop, "editable" => true);
     }
     // Lignes de medicaments et d'elements
     $sejour = $interv->loadRefSejour();
     $prescription = $sejour->loadRefPrescriptionSejour();
     if ($prescription->_id) {
         $lines = $prescription->loadPeropLines(false);
         foreach ($lines as $_line_array) {
             $_line = $_line_array["object"];
             $key = "CPrescription._chapitres.{$_line->_chapitre}";
             if (!isset($evenements[$key])) {
                 $evenements[$key] = array("subitems" => array(), "icon" => $_line->_chapitre);
             }
             // Build view
             $_subkey = array("line" => $_line, "label" => "");
             $_view = "";
             if ($_line instanceof CPrescriptionLineElement) {
                 $_view = $_line->_view;
             } elseif ($_line instanceof CPrescriptionLineMix) {
                 foreach ($_line->_ref_lines as $_mix_item) {
                     $_view .= "{$_mix_item->_ucd_view} / ";
                 }
             } else {
                 $_view = $_line->_ucd_view;
             }
             $_subkey["label"] = $_view;
             $_subkey_guid = $_subkey["line"]->_guid;
             if (!isset($evenements[$key]["subitems"][$_subkey_guid])) {
                 $evenements[$key]["subitems"][$_subkey_guid] = array("label" => $_subkey["label"], "line" => $_line, "items" => array());
             }
             foreach ($_line_array["administrations"] as $_adms) {
                 $_adms = CModelObject::naturalSort($_adms, array("dateTime"));
                 foreach ($_adms as $_adm) {
                     $unite = "";
                     if ($_line instanceof CPrescriptionLineMedicament || $_line instanceof CPrescriptionLineMix) {
                         $unite = $_adm->_ref_object->_ref_produit->libelle_unite_presentation;
                     }
                     $evenements[$key]["subitems"][$_subkey_guid]["items"][] = array("label" => "", "unit" => "{$_adm->quantite} {$unite}", "alert" => false, "datetime" => $_adm->dateTime, "position" => CSupervisionTimedEntity::getPosition($_adm->dateTime, $time_min, $time_max), "object" => $_adm, "editable" => false);
                 }
             }
         }
     }
     return $evenements;
 }