/**
 * $Id: vw_daily_check_item_category.php 25667 2014-11-03 11:07:55Z aurelie17 $
 *
 * @package    Mediboard
 * @subpackage SalleOp
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 25667 $
 */
CCanDo::checkAdmin();
$item_category_id = CValue::getOrSession('item_category_id');
$list_type_id = CValue::get('list_type_id');
$list_type = new CDailyCheckListType();
$list_type->load($list_type_id);
$item_category = new CDailyCheckItemCategory();
if ($item_category->load($item_category_id)) {
    $item_category->loadRefsNotes();
    $item_category->loadRefItemTypes();
} else {
    $item_category->list_type_id = $list_type_id;
    $item_category->target_class = $list_type->type == "ouverture_salle" ? "CSalle" : "CBlocOperatoire";
}
foreach (CDailyCheckList::$_HAS_classes as $_class) {
    unset($item_category->_specs["target_class"]->_locales[$_class]);
}
list($targets, $item_categories_by_class) = CDailyCheckItemCategory::getCategoriesTree();
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("item_category", $item_category);
$smarty->assign("targets", $targets);
 /**
  * Duplicate checklist HAS
  *
  * @return void|string
  */
 function duplicate()
 {
     $types_checklist = array_intersect(CDailyCheckList::$types, array($this->_type_has));
     foreach ($types_checklist as $type_name => $type) {
         $checklist_type = new CDailyCheckListType();
         $checklist_type->group_id = $this->group_id;
         $checklist_type->check_list_group_id = $this->_id;
         $checklist_type->type = 'intervention';
         $checklist_type->title = CAppUI::tr("CDailyCheckItemCategory.type." . $type_name);
         $checklist_type->description = CAppUI::tr("CDailyCheckList.{$type}.{$type_name}.small");
         $checklist_type->type_validateur = "chir_interv|op|op_panseuse|iade|sagefemme|manipulateur";
         if ($msg = $checklist_type->store()) {
             return $msg;
         }
         $where = array();
         $where["type"] = " = '{$type_name}'";
         $where["target_class"] = " = 'COperation'";
         $where["list_type_id"] = " IS NULL";
         $_categorie = new CDailyCheckItemCategory();
         foreach ($_categorie->loadList($where, "title") as $categorie) {
             /* @var CDailyCheckItemCategory $categorie*/
             $items = $categorie->loadRefItemTypes();
             $new_categorie = $categorie;
             $new_categorie->_id = "";
             $new_categorie->list_type_id = $checklist_type->_id;
             if ($msg = $new_categorie->store()) {
                 return $msg;
             }
             foreach ($items as $item) {
                 $new_item = $item;
                 $new_item->_id = "";
                 $new_item->category_id = $new_categorie->_id;
                 if ($msg = $new_item->store()) {
                     return $msg;
                 }
             }
         }
     }
     return null;
 }
예제 #3
0
$type_personnel = array("op", "op_panseuse");
if (!$check_list->validator_id && $check_list->_id) {
    $validateurs = explode("|", $check_list->_ref_list_type->type_validateur);
    $type_personnel = array();
    foreach ($validateurs as $valid) {
        $type_personnel[] = $valid;
    }
}
$personnel = CPersonnel::loadListPers(array_unique(array_values($type_personnel)), true, true);
// Chargement des praticiens
$listChirs = new CMediusers();
$listChirs = $listChirs->loadPraticiens(PERM_DENY);
// Chargement des anesths
$listAnesths = new CMediusers();
$listAnesths = $listAnesths->loadAnesthesistes(PERM_DENY);
$check_item_category = new CDailyCheckItemCategory();
if ($check_list->_ref_list_type->type == "fermeture_salle") {
    $check_item_category->list_type_id = $check_list->list_type_id;
} else {
    $check_item_category->target_class = $check_list->object_class;
    $check_item_category->type = $check_list->type;
}
$check_item_categories = $check_item_category->loadMatchingList("title");
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("check_list", $check_list);
$smarty->assign("personnel", $personnel);
$smarty->assign("list_chirs", $listChirs);
$smarty->assign("list_anesths", $listAnesths);
$smarty->assign("anesth_id", $anesth_id);
$smarty->assign("anesth", $anesth);
    // Pas utiliser IN car on les souhaite dans l'ordre spécifié
    $validateurs = array();
    foreach ($validateur_ids as $_id) {
        $validateur = new CMediusers();
        $validateur->load($_id);
        $validateurs[$_id] = $validateur;
    }
} else {
    $validateurs = array();
}
$object = CMbObject::loadFromGuid($object_guid);
// Chargement des 3 check lists de l'OMS
$check_lists = array();
$check_item_categories = array();
$check_list = new CDailyCheckList();
$cat = new CDailyCheckItemCategory();
$cat->target_class = $object->_class;
// Pre-anesth, pre-op, post-op
foreach ($check_list->_specs["type"]->_list as $_type) {
    if (CDailyCheckList::$types[$_type] != $type_group) {
        continue;
    }
    $list = CDailyCheckList::getList($object, null, $_type);
    $list->loadItemTypes();
    $list->loadRefsFwd();
    $list->loadBackRefs('items');
    $list->isReadonly();
    if ($list->_ref_object instanceof COperation) {
        $list->_ref_object->loadRefPraticien();
    }
    $check_lists[$_type] = $list;
$item_category_id = CValue::get('item_category_id');
$group_id = CGroups::loadCurrent()->_id;
$item_type = new CDailyCheckItemType();
if ($item_type->load($item_type_id)) {
    $item_type->loadRefsNotes();
} else {
    $item_type->index = 1;
    $item_type->category_id = $item_category_id;
    $item_type->active = "1";
}
$item_type->loadRefCategory()->loadRefListType();
$item_category = new CDailyCheckItemCategory();
foreach (CDailyCheckList::$_HAS_classes as $_class) {
    unset($item_category->_specs["target_class"]->_locales[$_class]);
}
$category = new CDailyCheckItemCategory();
$category->load($item_category_id);
$op = $category->target_class == "COperation" ? 1 : 0;
list($targets, $item_categories_by_class) = CDailyCheckItemCategory::getCategoriesTree($op);
$target_class_list = array_keys($item_category->_specs["target_class"]->_locales);
foreach ($item_categories_by_class as $_class => $item_categories_by_target) {
    foreach ($item_categories_by_target as $_id => $_categories) {
        /** @var CDailyCheckItemCategory $_cat */
        foreach ($_categories as $_cat) {
            $_cat->loadBackRefs('item_types', array("`index`", "`title`"));
            /** @var CDailyCheckItemType $_type */
            foreach ($_cat->_back['item_types'] as $_id_type => $_type) {
                if ($_type->group_id != $group_id) {
                    unset($_cat->_back['item_types'][$_id_type]);
                }
            }
 if (!$selOp->prat_visite_anesth_id && $selOp->_ref_anesth->_id) {
     $selOp->prat_visite_anesth_id = $selOp->_ref_anesth->_id;
 }
 $selOp->loadLiaisonLibelle();
 $listAnesthType = new CTypeAnesth();
 $listAnesthType = $listAnesthType->loadGroupList();
 // Vérification de la check list journalière
 $daily_check_list = CDailyCheckList::getList($selOp->_ref_salle, $date);
 $daily_check_list->loadItemTypes();
 $daily_check_list->loadBackRefs('items');
 $cat = new CDailyCheckItemCategory();
 $cat->target_class = "CSalle";
 $daily_check_item_categories = $cat->loadMatchingList();
 // Chargement des 3 check lists de l'OMS
 $operation_check_list = new CDailyCheckList();
 $cat = new CDailyCheckItemCategory();
 $where_cat = array();
 $where_cat["target_class"] = " = 'COperation'";
 $where_cat["list_type_id"] = "IS NULL";
 $lists = array();
 // Pre-anesth, pre-op, post-op
 foreach ($operation_check_list->_specs["type"]->_list as $type) {
     $list = CDailyCheckList::getList($selOp, null, $type);
     $list->loadItemTypes();
     $list->loadRefsFwd();
     $list->loadBackRefs('items');
     $list->isReadonly();
     $list->_ref_object->loadRefPraticien();
     $operation_check_lists[$type] = $list;
     $where_cat["type"] = " = '{$type}'";
     $operation_check_item_categories[$type] = $cat->loadList($where_cat, "title");