global $atc_classes;
$atc_classes = array();
$datetime_min = "";
if ($period) {
    $datetime_min = CMbDT::dateTime("- {$period} HOURS");
}
// Chargement du sejour
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadNDA();
$sejour->loadExtDiagnostics();
$sejour->loadRefsConsultAnesth();
$sejour->_ref_consult_anesth->loadRefConsultation();
$sejour->canRead();
// Chargement des affectations
$sejour->loadRefCurrAffectation()->loadRefLit();
foreach ($sejour->loadRefsAffectations() as $_affectation) {
    $_affectation->loadRefLit();
}
// Chargement des tâches
foreach ($sejour->loadRefsTasks() as $_task) {
    $_task->loadRefPrescriptionLineElement();
    $_task->setDateAndAuthor();
    $_task->loadRefAuthor();
    $_task->loadRefAuthorRealise();
}
// Chargement des opérations
$sejour->loadRefsOperations();
foreach ($sejour->_ref_operations as $_interv) {
    $_interv->loadRefChir();
    $_interv->loadRefAnesth();
    $sejour->load($sejour_id);
    $sejour->loadRefsFwd();
    $praticien =& $sejour->_ref_praticien;
    $praticien->canDo();
    $patient =& $sejour->_ref_patient;
    $patient->loadRefsSejours();
    $sejours =& $patient->_ref_sejours;
} else {
    $patient = new CPatient();
    $patient->load($patient_id);
    $patient->loadRefsSejours();
    $sejours =& $patient->_ref_sejours;
}
$sejour->makeDatesOperations();
$sejour->loadNDA();
$sejour->loadRefCurrAffectation()->loadRefService();
$patient->loadRefsFwd();
$patient->loadRefsCorrespondants();
$patient->loadRefsCorrespondantsPatient();
$correspondantsMedicaux = array();
if ($patient->_ref_medecin_traitant->_id) {
    $correspondantsMedicaux["traitant"] = $patient->_ref_medecin_traitant;
}
foreach ($patient->_ref_medecins_correspondants as $correspondant) {
    $correspondantsMedicaux["correspondants"][] = $correspondant->_ref_medecin;
}
$medecin_adresse_par = "";
if ($sejour->adresse_par_prat_id && $sejour->adresse_par_prat_id != $patient->_ref_medecin_traitant->_id) {
    $medecin_adresse_par = new CMedecin();
    $medecin_adresse_par->load($sejour->adresse_par_prat_id);
}
CPrescription::$mode_plan_soins = true;
// Permet de gerer le cas ou des unites de prises contiennent des '
$unite_prise = stripslashes(preg_replace('~&#0*([0-9]+);~e', 'chr(\\1)', $unite_prise));
// Recuperation du sejour_id si seulement l'object est passé
if ($object_id && $object_class) {
    $object = new $object_class();
    $object->load($object_id);
    $sejour_id = $object->_ref_prescription->object_id;
}
// Initialisations
$operation = new COperation();
$operations = array();
// Chargement du sejour
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadRefCurrAffectation();
$sejour->_ref_curr_affectation->loadView();
if ($group->_id != $sejour->group_id) {
    CAppUI::stepAjax("Ce séjour n'est pas dans l'établissement courant", UI_MSG_WARNING);
    return;
}
$planif_manuelle = CAppUI::conf("dPprescription CPrescription planif_manuelle", $group->_guid);
$sejour->loadRefPatient();
$sejour->loadRefPraticien();
// Chargement des caracteristiques du patient
$patient =& $sejour->_ref_patient;
$patient->loadRefPhotoIdentite();
$patient->loadRefLatestConstantes(null, array("poids", "taille"));
$patient->loadRefDossierMedical();
$dossier_medical = $patient->_ref_dossier_medical;
if ($dossier_medical->_id) {
            $affectation->entree = $entree;
            $affectation->sortie = $sortie;
            if ($_lock_all_lits_urgences) {
                $affectation->function_id = $function_id;
            }
            if ($msg = $affectation->store()) {
                CAppUI::setMsg($msg, UI_MSG_ERROR);
            }
        }
    }
    echo CAppUI::getMsg();
    CApp::rip();
} else {
    $tolerance = CAppUI::conf("dPhospi CAffectation create_affectation_tolerance", CGroups::loadCurrent());
    $sejour_id = CValue::post("sejour_id");
    $affectation_id = CValue::post("affectation_id");
    //Si on est en création d'afectation et qu'il y a un sejour_id
    if (!$affectation_id && $sejour_id) {
        $sejour = new CSejour();
        $sejour->load($sejour_id);
        $curr_affectation = $sejour->loadRefCurrAffectation();
        //On modifie au lieu de créer une affectation si l'afectation courante ne dépasse pas la tolérance
        if ($curr_affectation && $curr_affectation->_id) {
            if (CMbDT::addDateTime("00:{$tolerance}:00", $curr_affectation->entree) > $entree) {
                $_POST["affectation_id"] = $curr_affectation->_id;
            }
        }
    }
    $do = new CDoObjectAddEdit("CAffectation", "affectation_id");
    $do->doIt();
}
$lit_id = CValue::post("lit_id");
$service_sortie_id = CValue::post("service_sortie_id");
$mode_sortie = CValue::post("mode_sortie");
$type = CValue::post("type");
$entree_preparee_trigger = CValue::post("_entree_preparee_trigger");
$sejour_id = CValue::post("sejour_id");
$create_affectation = CAppUI::conf("urgences create_affectation");
$sejour = new CSejour();
$sejour->load($sejour_id);
$rpu = $sejour->loadRefRPU();
if ($rpu && $rpu->mutation_sejour_id) {
    $sejour_id = $sejour->_ref_rpu->mutation_sejour_id;
}
$sejour_hospit = new CSejour();
$sejour_hospit->load($sejour_id);
$curr_affectation_hospit = $sejour_hospit->loadRefCurrAffectation();
// Pour un séjour ayant comme mode de sortie urgence:
if ($create_affectation && $mode_sortie == "mutation" && $rpu && $rpu->_id && ($lit_id && $curr_affectation_hospit->lit_id != $lit_id || $service_sortie_id && $curr_affectation_hospit->service_id != $service_sortie_id)) {
    // Création de l'affectation d'hospitalisation
    $affectation_hospit = new CAffectation();
    $affectation_hospit->entree = CMbDT::dateTime();
    $affectation_hospit->lit_id = $lit_id;
    $affectation_hospit->service_id = $service_sortie_id;
    // Mutation en provenance des urgences
    $affectation_hospit->_mutation_urg = true;
    $sejour_hospit->forceAffectation($affectation_hospit);
}
// Lancement des formulaires automatiques sur le champ entrée préparée
if ($sejour->_id && $entree_preparee_trigger && CModule::getActive("forms")) {
    $ex_class_events = CExClassEvent::getForObject($sejour, "preparation_entree_auto", "required");
    echo CExClassEvent::getJStrigger($ex_class_events);
$fin = CMbDT::date("next sunday", $debut);
$debut = CMbDT::date("+1 day", $debut);
$nbjours = 7;
$patient = $sejour->loadRefPatient();
// Chargement des caracteristiques du patient
$patient =& $sejour->_ref_patient;
$patient->loadRefPhotoIdentite();
$patient->loadRefLatestConstantes(null, array("poids", "taille"));
$dossier_medical = $patient->loadRefDossierMedical();
if ($dossier_medical->_id) {
    $dossier_medical->loadRefsAllergies();
    $dossier_medical->loadRefsAntecedents();
    $dossier_medical->countAntecedents();
    $dossier_medical->countAllergies();
}
$sejour->loadRefCurrAffectation($debut);
if (!$sejour->_ref_curr_affectation->_id) {
    $sejour->loadRefsAffectations();
    $sejour->_ref_curr_affectation = $sejour->_ref_last_affectation;
}
//Instanciation du planning
$planning = new CPlanningWeek($debut, $debut, $fin, $nbjours, false, 450, null, true);
$planning->title = "";
$planning->guid = $sejour->_guid;
$planning->hour_min = "07";
$planning->hour_max = "20";
$planning->pauses = array("12");
$ljoin = array();
$ljoin['plageconsult'] = "consultation.plageconsult_id = plageconsult.plageconsult_id";
$where = array();
$where[] = "plageconsult.date BETWEEN '{$debut}' AND '{$fin}'";