예제 #1
0
 function doStore()
 {
     parent::doStore();
     if (CModule::getActive("dPprescription") && !$this->_old->_id) {
         $p_to_c = new CPrescriptionProtocoleToConcept();
         $count_p_to_c = $p_to_c->countList();
         if ($count_p_to_c > 0) {
             /** @var CExObject $ex_object */
             $ex_object = $this->_obj;
             $all_fields = $ex_object->loadRefExClass()->loadRefsAllFields();
             $bool_concept_ids = array();
             foreach ($all_fields as $_field) {
                 if (strpos($_field->prop, "bool") === 0 && $_field->concept_id && $ex_object->{$_field->name} == "1") {
                     $bool_concept_ids[] = $_field->concept_id;
                 }
             }
             $bool_concept_ids = array_unique($bool_concept_ids);
             $where = array("concept_id" => $p_to_c->getDS()->prepareIn($bool_concept_ids));
             $protocole_ids = array_values(CMbArray::pluck($p_to_c->loadList($where), "protocole_id"));
             if (count($protocole_ids)) {
                 /** @var CSejour $sejour */
                 $sejour = $ex_object->getReferenceObject("CSejour");
                 if ($sejour && $sejour->_id) {
                     $prescription = $sejour->loadRefPrescriptionSejour();
                     if (!$prescription->_id) {
                         $prescription = new CPrescription();
                         $prescription->object_id = $sejour->_id;
                         $prescription->object_class = $sejour->_class;
                         $prescription->type = "sejour";
                         if ($msg = $prescription->store()) {
                             CAppUI::setMsg($msg, UI_MSG_WARNING);
                         }
                     }
                     $ops_ids = implode("-", CMbArray::pluck($sejour->loadRefsOperations(array("annulee" => "= '0'")), "operation_id"));
                     CAppUI::callbackAjax("window.opener.ExObject.checkOpsBeforeProtocole", $protocole_ids, $prescription->_id, $sejour->_id, $ops_ids);
                 }
             }
         }
     }
 }
<?php

/**
 * $Id: httpreq_vw_protocole_anesth.php 19840 2013-07-09 19:36:14Z phenxdesign $
 *
 * @package    Mediboard
 * @subpackage PlanningOp
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 19840 $
 */
CCanDo::checkEdit();
$prescription_id = CValue::getOrSession("prescription_id");
$prescription = new CPrescription();
$prescription->load($prescription_id);
$smarty = new CSmartyDP();
$smarty->assign("prescription", $prescription);
$smarty->assign("nodebug", true);
$smarty->display("inc_vw_protocole_anesth.tpl");
예제 #3
0
CCanDo::checkRead();
$prescription_id = CValue::get("prescription_id", null);
$sejour_id = CValue::get("sejour_id");
$contexte = CValue::get("contexte");
$user = CMediusers::get();
$_ref_object = new CSejour();
if ($sejour_id) {
    $sejour = new CSejour();
    $sejour->load($sejour_id);
    $_ref_object = $sejour;
    if (!$contexte) {
        $contexte = "pmsi";
    }
}
if ($prescription_id) {
    $prescription = new CPrescription();
    $prescription->load($prescription_id);
    $prescription->loadRefObject();
    $_ref_object = $prescription->_ref_object;
    if (!$contexte) {
        $contexte = $user->isPraticien() ? "prescription" : "pharmacie";
    }
}
$favoris = new CSearchThesaurusEntry();
$favoris_sans_cibles = new CSearchThesaurusEntry();
$targets = new CSearchTargetEntry();
$actes_ccam = array();
$diags_cim = array();
$results = array();
$tab_favoris = array();
$date = CMbDT::date("-1 month");
예제 #4
0
if ($sejour->_id) {
    // Cas des urgences
    $rpu = $sejour->loadRefRPU();
}
$isPrescriptionInstalled = CModule::getActive("dPprescription");
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("consult", $consult);
$smarty->assign("isPrescriptionInstalled", $isPrescriptionInstalled);
$smarty->assign("listPrats", $listPrats);
if ($isPrescriptionInstalled) {
    $smarty->assign("line", new CPrescriptionLineMedicament());
    CPrescription::$_load_lite = true;
    $consult->_ref_sejour->loadRefPrescriptionSejour();
    $consultAnesth->loadRefSejour()->loadRefPrescriptionSejour();
    CPrescription::$_load_lite = false;
}
$smarty->assign("represcription", CValue::get("represcription", 0));
$smarty->assign("date", $date);
$smarty->assign("hour", $hour);
$smarty->assign("vue", $vue);
$smarty->assign("today", $today);
$smarty->assign("now", $now);
$smarty->assign("_is_anesth", $consult->_is_anesth);
$smarty->assign("consult_anesth", $consultAnesth);
$smarty->assign("_is_dentiste", $consult->_is_dentiste);
$smarty->assign("current_m", $current_m);
$smarty->assign("userSel", $userSel);
$smarty->assign("dossier_medical", $dossier_medical);
$smarty->assign("antecedents", $dossier_medical->_ref_antecedents_by_type);
$smarty->assign("tabs_count", CConsultation::makeTabsCount($consult, $dossier_medical, $consultAnesth, $sejour, $list_etat_dents));
        $_prescriptions = $prescription->loadList($where, null, null, "prescription_id", $ljoin);
        $keys = array_merge($keys, array_keys($_prescriptions));
        $prescriptions = array_merge($prescriptions, $_prescriptions);
        $ljoin = $ljoin_save;
    }
    foreach ($prescriptions as $_presc) {
        $_presc->_ref_object->loadRefPatient();
    }
    array_multisort(CMbArray::pluck($prescriptions, "_ref_object", "_ref_patient", "nom"), SORT_ASC, $prescriptions);
} else {
    $prescriptions = $prescription->loadList($where, "patients.nom", null, "prescription_id", $ljoin);
}
if ($type_prescription == "sortie_manquante") {
    foreach ($prescriptions as $_prescription) {
        // Recherche d'une prescription de sortie correspondant à la prescription de sejour
        $_prescription_sortie = new CPrescription();
        $_prescription_sortie->type = "sortie";
        $_prescription_sortie->object_id = $_prescription->object_id;
        $_prescription_sortie->object_class = $_prescription->object_class;
        $_prescription_sortie->loadMatchingObject();
        if ($_prescription_sortie->_id) {
            unset($prescriptions[$_prescription->_id]);
        }
    }
}
$sejour = new CSejour();
$sejour->_date_min = $date_min;
$sejour->_date_max = $date_max;
if (!$praticien_id && $user->isPraticien()) {
    $praticien_id = $user->_id;
}
예제 #6
0
        $smarty->assign("line", $line);
        $smarty->assign("line_id", $line->_id);
        $smarty->assign("line_class", $line->_class);
        $smarty->assign("transmissions_line", $line->_transmissions);
        $smarty->assign("administrations_line", $line->_administrations);
        $smarty->assign("unite_prise", $unite_prise);
        $smarty->display("../../dPprescription/templates/inc_vw_content_line_dossier_soin.tpl");
    }
} else {
    // Affichage d'un chapitre
    if ($chapitre) {
        $smarty->assign("move_dossier_soin", false);
        $smarty->assign("chapitre", $chapitre);
        $smarty->assign("nodebug", true);
        $smarty->display("../../dPprescription/templates/inc_chapitre_dossier_soin.tpl");
    } else {
        // Affichage du plan de soin complet
        if (CModule::getActive("dPprescription")) {
            // Multiple prescriptions existante pour le séjour (Fusion des prescriptions)
            $prescription_multiple = new CPrescription();
            $where = array("type" => " = 'sejour'", "object_class" => " = 'CSejour'", "object_id" => " = '{$prescription->object_id}'");
            $multiple_prescription = $prescription_multiple->loadIds($where);
            $smarty->assign("multiple_prescription", $multiple_prescription);
        }
        $sejour->countTasks();
        $sejour->countAlertsNotHandled("medium", "observation");
        $smarty->assign("admin_prescription", CModule::getCanDo("dPprescription")->admin || CMediusers::get()->isPraticien());
        $smarty->assign("move_dossier_soin", false);
        $smarty->display("inc_vw_dossier_soins.tpl");
    }
}
예제 #7
0
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);
CStoredObject::massLoadFwdRef($consultations, "plageconsult_id");
$smarty_cstes = new CSmartyDP("modules/dPpatients");
$smarty_cstes->assign("empty_lines", 2);
$smarty_cstes->assign("offline", 1);
// Constantes des 12 dernières heures
$where_cste = array("datetime" => "BETWEEN '" . CMbDT::subDateTime("12:00:00", $datetime_avg) . "' AND '{$datetime_avg}'");
CPrescriptionLine::$_offline_lite = true;
CPrescriptionLineMix::$_offline_lite = true;
CPrescription::$_offline_lite = true;
foreach ($sejours as $_sejour) {
    $patient = $_sejour->loadRefPatient();
    $_sejour->loadRefPraticien();
    $_sejour->loadJourOp($date);
    if ($service_id == "urgence") {
        $_sejour->_veille = CMbDT::date($_sejour->entree) != $date;
        $_sejour->loadRefRPU()->loadRefIDEResponsable();
    }
    $patients_offline[$patient->_guid]["sejour"] = $_sejour;
    // Transmissions
    $patients_offline[$patient->_guid]["transmissions"] = array();
    // Regroupement par cible
    $trans_sejour = array();
    foreach ($transmissions as $_trans) {
        if ($_trans->sejour_id != $_sejour->_id) {
// Si le service en session n'est pas dans l'etablissement courant
if (CGroups::loadCurrent()->_id != $service->group_id) {
    $service_id = "";
    $service = new CService();
}
$date = CValue::getOrSession("debut");
$prescription_id = CValue::get("prescription_id");
// Chargement des configs de services
if (!$service_id) {
    $service_id = "none";
}
$configs = CConfigService::getAllFor($service_id);
if (!$date) {
    $date = CMbDT::date();
}
$categories = CPrescription::getCategoriesForPeriod($service_id, $date, $real_time);
if (!count($categories_id_pancarte)) {
    $categories_id_pancarte = array("med");
    foreach ($categories as $_categorie) {
        foreach ($_categorie as $_elts) {
            $categories_id_pancarte = array_merge($categories_id_pancarte, array_keys($_elts));
        }
    }
}
$filter_line = new CPrescriptionLineMedicament();
$filter_line->debut = $date;
// Récupération de la liste des services
$where = array();
$where["externe"] = "= '0'";
$where["cancelled"] = "= '0'";
$service = new CService();
$consult_anesth->_id = $consult_anesth->operation_id = $consult_anesth->sejour_id = null;
if ($sejour_id) {
    $consult_anesth->sejour_id = $sejour_id;
}
if ($operation_id) {
    $consult_anesth->operation_id = $operation_id;
}
$msg = $consult_anesth->store();
$represcription = 0;
if ($msg) {
    CAppUI::setMsg($msg);
} else {
    CAppUI::setMsg(CAppUI::tr("CConsultAnesth-msg-duplicate"));
    //Création de la prescription de séjour selon pref user
    if ($consult_anesth->sejour_id && CAppUI::pref("show_replication_duplicate")) {
        $prescription = new CPrescription();
        $prescription->object_class = 'CSejour';
        $prescription->object_id = $consult_anesth->sejour_id;
        $prescription->type = 'sejour';
        if (!$prescription->loadMatchingObject()) {
            if ($msg = $prescription->store()) {
                CAppUI::setMsg($msg, UI_MSG_ERROR);
            }
        }
        $represcription = 1;
    }
}
echo CAppUI::getMsg();
if ($redirect) {
    CAppUI::redirect("m=cabinet&tab=edit_consultation&selConsult=" . $consult_anesth->consultation_id . "&dossier_anesth_id=" . $consult_anesth->_id . "&represcription={$represcription}");
}
예제 #10
0
     $whereCstes["context_class"] = " = 'CSejour'";
     $whereCstes["context_id"] = CSQLDataSource::prepareIn(array_keys($sejours));
     $constantes = $cste->loadList($whereCstes, "FIND_IN_SET(context_id, '" . implode(',', $sejours_ids) . "')");
     CMbObject::massLoadFwdRef($constantes, "user_id");
     foreach ($constantes as $_constante) {
         $_constante->loadRefUser();
         $_constante->_ref_context = $sejours[$_constante->context_id];
         $trans_and_obs[$_constante->patient_id][$_constante->datetime][] = $_constante;
     }
     // Tri des transmission, observations et constantes par date décroissante
     foreach ($trans_and_obs as &$_trans) {
         krsort($_trans, SORT_STRING);
     }
 }
 if ($do_medicaments || $do_injections || $do_perfusions || $do_aerosols || $do_elements || $do_stupefiants) {
     $prescription = new CPrescription();
     $wherePresc = array();
     $wherePresc["object_class"] = " = 'CSejour'";
     $wherePresc["object_id"] = CSQLDataSource::prepareIn(array_keys($sejours));
     $prescriptions = $prescription->loadList($wherePresc);
     foreach ($prescriptions as $_prescription) {
         $sejour = $sejours[$_prescription->object_id];
         $_prescription->_ref_object = $sejour;
         // Chargement des lignes
         $_prescription->loadRefsLinesMed("1", "1", "service");
         if ($do_elements) {
             $_prescription->loadRefsLinesElementByCat("1", "1", "", "service");
         }
         if ($do_perfusions || $do_aerosols || $do_stupefiants) {
             $_prescription->loadRefsPrescriptionLineMixes();
         }
 /**
  * @param CConsultation   $consult
  * @param CDossierMedical $dossier_medical
  * @param CConsultAnesth  $consultAnesth
  * @param CSejour         $sejour
  * @param array           $list_etat_dents
  *
  * @return array
  */
 static function makeTabsCount($consult, $dossier_medical, $consultAnesth, $sejour, $list_etat_dents)
 {
     $tabs_count = array("AntTrait" => 0, "Constantes" => 0, "prescription_sejour" => 0, "facteursRisque" => 0, "Examens" => 0, "Exams" => 0, "ExamsComp" => 0, "Intub" => 0, "InfoAnesth" => 0, "dossier_traitement" => 0, "dossier_suivi" => 0, "Actes" => 0, "fdrConsult" => 0, "reglement" => 0);
     if (CModule::getActive("dPprescription")) {
         CPrescription::$_load_lite = true;
     }
     foreach ($tabs_count as $_tab => $_count) {
         $count = 0;
         switch ($_tab) {
             case "AntTrait":
                 $prescription = $dossier_medical->loadRefPrescription();
                 $count_meds = 0;
                 if (CModule::getActive("dPprescription")) {
                     $count_meds = $prescription->countBackRefs("prescription_line_medicament");
                 }
                 $dossier_medical->countTraitements();
                 $dossier_medical->countAntecedents(false);
                 $dossier_medical->countAllergies();
                 $tabs_count[$_tab] = $dossier_medical->_count_antecedents + $dossier_medical->_count_allergies + $dossier_medical->_count_traitements + $count_meds + count($dossier_medical->_ext_codes_cim);
                 break;
             case "Constantes":
                 if ($sejour->_ref_rpu && $sejour->_ref_rpu->_id) {
                     $tabs_count[$_tab] = $sejour->countBackRefs("contextes_constante");
                 } else {
                     $tabs_count[$_tab] = $consult->countBackRefs("contextes_constante");
                 }
                 break;
             case "prescription_sejour":
                 $_sejour = $sejour;
                 if ($consultAnesth->_id && $consultAnesth->operation_id) {
                     $_sejour = $consultAnesth->loadRefOperation()->loadRefSejour();
                 }
                 if ($_sejour->_id) {
                     $_sejour->loadRefsPrescriptions();
                     foreach ($_sejour->_ref_prescriptions as $key => $_prescription) {
                         if (!$_prescription->_id) {
                             unset($_sejour->_ref_prescriptions[$key]);
                             continue;
                         }
                         $_sejour->_ref_prescriptions[$_prescription->_id] = $_prescription;
                         unset($_sejour->_ref_prescriptions[$key]);
                     }
                     if (count($_sejour->_ref_prescriptions)) {
                         $prescription = new CPrescription();
                         $prescription->massCountMedsElements($_sejour->_ref_prescriptions);
                         foreach ($_sejour->_ref_prescriptions as $_prescription) {
                             $count += array_sum($_prescription->_counts_by_chapitre);
                         }
                     }
                 }
                 $tabs_count[$_tab] = $count;
                 break;
             case "facteursRisque":
                 if (!$consultAnesth) {
                     break;
                 }
                 if ($dossier_medical->_id) {
                     $fields = array("risque_antibioprophylaxie", "risque_MCJ_chirurgie", "risque_MCJ_patient", "risque_prophylaxie", "risque_thrombo_chirurgie", "risque_thrombo_patient");
                     foreach ($fields as $_field) {
                         if ($dossier_medical->{$_field} != "NR") {
                             $count++;
                         }
                     }
                     if ($dossier_medical->facteurs_risque) {
                         $count++;
                     }
                 }
                 $tabs_count[$_tab] = $count;
                 break;
             case "Examens":
                 if ($consultAnesth->_id) {
                     break;
                 }
                 $fields = array("motif", "rques", "examen", "histoire_maladie", "conclusion");
                 foreach ($fields as $_field) {
                     if ($consult->{$_field}) {
                         $count++;
                     }
                 }
                 $count += $consult->countBackRefs("examaudio");
                 $count += $consult->countBackRefs("examnyha");
                 $count += $consult->countBackRefs("exampossum");
                 $tabs_count[$_tab] = $count;
                 break;
             case "Exams":
                 if (!$consultAnesth->_id) {
                     break;
                 }
                 $fields = array("examenCardio", "examenPulmo", "examenDigest", "examenAutre");
                 foreach ($fields as $_field) {
                     if ($consultAnesth->{$_field}) {
                         $count++;
                     }
                 }
                 if ($consult->examen != "") {
                     $count++;
                 }
                 $count += $consult->countBackRefs("examaudio");
                 $count += $consult->countBackRefs("examnyha");
                 $count += $consult->countBackRefs("exampossum");
                 $tabs_count[$_tab] = $count;
                 break;
             case "ExamsComp":
                 if (!$consultAnesth->_id) {
                     break;
                 }
                 $count += $consult->countBackRefs("examcomp");
                 if ($consultAnesth->result_ecg) {
                     $count++;
                 }
                 if ($consultAnesth->result_rp) {
                     $count++;
                 }
                 $tabs_count[$_tab] = $count;
                 break;
             case "Intub":
                 if (!$consultAnesth->_id) {
                     break;
                 }
                 $fields = array("mallampati", "bouche", "distThyro", "mob_cervicale", "etatBucco", "conclusion", "plus_de_55_ans", "edentation", "barbe", "imc_sup_26", "ronflements", "piercing");
                 foreach ($fields as $_field) {
                     if ($consultAnesth->{$_field}) {
                         $count++;
                     }
                 }
                 $count += count(array_filter($list_etat_dents));
                 $tabs_count[$_tab] = $count;
                 break;
             case "InfoAnesth":
                 if (!$consultAnesth->_id) {
                     break;
                 }
                 $op = $consultAnesth->loadRefOperation();
                 $fields_anesth = array("prepa_preop", "premedication", "apfel_femme", "apfel_non_fumeur", "apfel_atcd_nvp", "apfel_morphine");
                 $fields_op = array("passage_uscpo", "type_anesth", "ASA", "position");
                 foreach ($fields_anesth as $_field) {
                     if ($consultAnesth->{$_field}) {
                         $count++;
                     }
                 }
                 if ($op->_id) {
                     foreach ($fields_op as $_field) {
                         if ($op->{$_field}) {
                             $count++;
                         }
                     }
                 }
                 if ($consult->rques) {
                     $count++;
                 }
                 $count += $consultAnesth->countBackRefs("techniques");
                 $tabs_count[$_tab] = $count;
                 break;
             case "dossier_traitement":
                 break;
             case "dossier_suivi":
                 break;
             case "Actes":
                 $consult->countActes();
                 $tabs_count[$_tab] = $consult->_count_actes;
                 if ($sejour->_id) {
                     if ($sejour->DP) {
                         $tabs_count[$_tab]++;
                     }
                     if ($_sejour->DR) {
                         $tabs_count[$_tab]++;
                     }
                     $sejour->loadDiagnosticsAssocies();
                     $tabs_count[$_tab] += count($sejour->_diagnostics_associes);
                 }
                 break;
             case "fdrConsult":
                 $consult->_docitems_from_dossier_anesth = false;
                 $consult->countDocs();
                 $consult->countFiles();
                 $consult->loadRefsPrescriptions();
                 $tabs_count[$_tab] = $consult->_nb_docs + $consult->_nb_files;
                 if (isset($consult->_ref_prescriptions["externe"])) {
                     $tabs_count[$_tab]++;
                 }
                 if ($sejour->_id) {
                     $sejour->countDocs();
                     $sejour->countFiles();
                     $tabs_count[$_tab] += $sejour->_nb_docs + $sejour->_nb_files;
                 }
                 break;
             case "reglement":
                 $consult->loadRefFacture()->loadRefsReglements();
                 $tabs_count[$_tab] = count($consult->_ref_facture->_ref_reglements);
         }
     }
     if (CModule::getActive("dPprescription")) {
         CPrescription::$_load_lite = false;
     }
     return $tabs_count;
 }
예제 #12
0
$where["cancelled"] = "= '0'";
$service = new CService();
$services = $service->loadGroupList($where);
// Initialisations
$patients = array();
$alertes = array();
$perfs = array();
$new = array();
$urgences = array();
$lines = array();
$pancarte = array();
$lits = array();
$list_lines = array();
$nb_adm = array();
$prescriptions = array();
$prescription = new CPrescription();
if ($prescription_id) {
    $prescription->load($prescription_id);
    $prescriptions[$prescription->_id] = $prescription;
} else {
    // Chargement des prescriptions qui sont dans le service selectionné
    $ljoin = array();
    $ljoin["sejour"] = "prescription.object_id = sejour.sejour_id";
    $ljoin["affectation"] = "sejour.sejour_id = affectation.sejour_id";
    $where = array();
    $where["prescription.object_class"] = " = 'CSejour'";
    $where["prescription.type"] = " = 'sejour'";
    $where["affectation.service_id"] = " = '{$service_id}'";
    if ($real_time) {
        $time = CMbDT::time();
        $where["affectation.entree"] = " <= '{$date} {$time}'";
예제 #13
0
 * @package    Mediboard
 * @subpackage Cabinet
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::check();
global $can;
$consultation_id = CValue::get("consultation_id");
$sejour_id = CValue::get("sejour_id");
$count_prescription = 0;
if (CModule::getActive("dPprescription")) {
    // Chargement de la prescription de pre-admission
    $prescription_preadm = new CPrescription();
    $prescription_sejour = new CPrescription();
    $prescription_sortie = new CPrescription();
    if ($sejour_id) {
        $prescription_sortie->object_id = $prescription_sejour->object_id = $prescription_preadm->object_id = $sejour_id;
        $prescription_sortie->object_class = $prescription_sejour->object_class = $prescription_preadm->object_class = "CSejour";
        $prescription_preadm->type = "pre_admission";
        $prescription_preadm->loadMatchingObject();
        if ($prescription_preadm->_id) {
            $count_prescription++;
        }
        $prescription_sejour->type = "sejour";
        $prescription_sejour->loadMatchingObject();
        if ($prescription_sejour->_id) {
            $count_prescription++;
        }
        $prescription_sortie->type = "sortie";
        $prescription_sortie->loadMatchingObject();
예제 #14
0
                                }
                                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 ($mode_lite) {
        CPrescription::massLoadLastAdministration($prescription);
    }
}
// Dédoublonne les initiales
foreach ($initiales as $prescription_id => $_initiales) {
    foreach ($_initiales as $_date => $_initiales_by_date) {
        foreach ($_initiales_by_date as $_hour => $_initiales_by_hour) {
            $initiales[$prescription_id][$_date][$_hour] = array_unique($_initiales_by_hour);
        }
    }
}
$current_moment = isset($postes_by_date[$now_date]) && isset($postes_by_date[$now_date][CMbDT::transform(null, CMbDT::time(), "%H")]) ? $postes_by_date[$now_date][CMbDT::transform(null, CMbDT::time(), "%H")]["moment"] : "";
// Chargement des cis à risque
$where = array();
$where["risque"] = " = '1'";
$risques_cis = CProduitLivretTherapeutique::getCISList($where);
예제 #15
0
 /**
  * Vérification de la possibilité de merger plusieurs séjours
  *
  * @param CSejour[] $sejours Séjours concernés
  *
  * @return void|string
  */
 function checkMerge($sejours = array())
 {
     if ($msg = parent::checkMerge($sejours)) {
         return $msg;
     }
     // Cas des prescriptions
     $count_prescription = 0;
     foreach ($sejours as $_sejour) {
         $_sejour->loadRefPrescriptionSejour();
         if ($_sejour->_ref_prescription_sejour && $_sejour->_ref_prescription_sejour->_id) {
             // Suppression des prescriptions vide
             $prescription = new CPrescription();
             $prescription->load($_sejour->_ref_prescription_sejour->_id);
             $back_props = $prescription->getBackProps();
             $count_back_props = 0;
             // On retire les logs de la liste des backprops
             unset($back_props["logs"]);
             foreach ($back_props as $back_prop => $object) {
                 $count_back_props += $prescription->countBackRefs($back_prop);
             }
             if ($count_back_props == 0) {
                 $prescription->delete();
                 continue;
             }
             if ($count_prescription == 1) {
                 return "Impossible de fusionner des sejours qui comportent chacun des prescriptions de séjour";
             }
             $count_prescription++;
         }
     }
     // Cas des affectations
     $affectation = new CAffectation();
     $where["sejour_id"] = CSQLDataSource::prepareIn(CMbArray::pluck($sejours, "_id"));
     /** @var CAffectation[] $affectations */
     $affectations = $affectation->loadList($where);
     foreach ($affectations as $_affectation_1) {
         foreach ($affectations as $_affectation_2) {
             if ($_affectation_1->collide($_affectation_2)) {
                 return CAppUI::tr("CSejour-merge-warning-affectation-conflict", $_affectation_1->_view, $_affectation_2->_view);
             }
         }
     }
     return null;
 }
예제 #16
0
 /**
  * @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;
 }