} else { foreach ($operation->_ref_actes_ccam as $acte) { $acte->guessAssociation(); } } $operation->loadRefSortieLocker()->loadRefFunction(); $sejour = $operation->_ref_sejour; $sejour->loadRefsFwd(); $sejour->loadRefPrescriptionSejour(); /** @var CAdministration[] $administrations */ $administrations = array(); $prescription_id = null; if (CModule::getActive("dPprescription")) { $prescription_id = $sejour->_ref_prescription_sejour->_id; if ($prescription_id) { $administrations = CAdministration::getPerop($prescription_id, false); } } // Chargement des constantes saisies durant l'intervention $whereConst = array(); $whereConst["datetime"] = "BETWEEN '{$operation->_datetime_reel}' AND '{$operation->_datetime_reel_fin}'"; $sejour->loadListConstantesMedicales($whereConst); // Tri des gestes et administrations perop par ordre chronologique $perops = array(); foreach ($administrations as $_administration) { $_administration->loadRefsFwd(); $perops[$_administration->dateTime][$_administration->_guid] = $_administration; } foreach ($operation->_ref_anesth_perops as $_perop) { $perops[$_perop->datetime][$_perop->_guid] = $_perop; }
* @package Mediboard * @subpackage pharmacie * @version $Revision: 19731 $ * @author SARL OpenXtrem * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html */ CCanDo::checkRead(); $service_id = CValue::getOrSession('service_id'); $all_stocks = CValue::getOrSession('all_stocks') == 'true'; $date_min = CValue::getOrSession('_date_min'); $date_max = CValue::getOrSession('_date_max'); CValue::setSession('_date_min', $date_min); CValue::setSession('_date_max', $date_max); $destockages = array(); // Chargement de toutes les administrations dans la periode donnee $administration = new CAdministration(); $where = array(); $where["dateTime"] = "BETWEEN '{$date_min}' AND '{$date_max}'"; $where["object_class"] = " = 'CPrescriptionLineMedicament'"; $administrations = $administration->loadList($where); // Calcul des quantités administrées foreach ($administrations as $_administration) { $_administration->loadTargetObject(); $line =& $_administration->_ref_object; $code_cip = $line->code_cip; if (!isset($destockages[$code_cip]["quantite"])) { $destockages[$code_cip]["quantite"] = 0; } $destockages[$code_cip]["quantite"] += $_administration->quantite; // Tableaux de cache de medicaments if (!isset($medicaments[$code_cip])) {
foreach ($prescription->_ref_prescription_lines as $_line_med) { $_line_med->loadRefParentLine(); } } if (count($prescription->_ref_prescription_lines_element)) { foreach ($prescription->_ref_prescription_lines_element as $_line_elt) { $_line_elt->loadRefParentLine(); } } } $signe_decalage = $nb_decalage < 0 ? "-" : "+"; $prolongation_time = CAppUI::conf("dPprescription general prolongation_time", $group->_guid); $sortie_sejour = $sejour->sortie_reelle || !$prolongation_time ? $sejour->sortie : CMbDT::dateTime("+ {$prolongation_time} HOURS", $sejour->sortie); $count_perop_adm = 0; if (CAppUI::conf("dPprescription general show_perop_suivi_soins", $group->_guid) && $prescription->_id && !$chapitre) { $count_perop_adm = CAdministration::countPerop($prescription->_id); } if (!$chapitre && CAppUI::pref("regroupement_med_plan_soins") && CAppUI::conf("soins suivi group_hors_amm_med", $group) && isset($prescription->_ref_lines_elt_for_plan["med_elt"])) { foreach ($prescription->_ref_lines_elt_for_plan["med_elt"] as $_line_elt) { $prescription->_nb_lines_plan_soins["all_med"]++; } unset($prescription->_ref_lines_elt_for_plan["med_elt"]); } /** * Tri par classe ATC * * @param string $atc1 ATC 1 * @param string $atc2 ATC 2 * * @return int */
/** * @see parent::store() * @todo Refactoring complet de la fonction store de la consultation * * ANALYSE DU CODE * 1. Gestion du désistement * 2. Premier if : creation d'une consultation à laquelle on doit attacher * un séjour (conf active): comportement DEPART / ARRIVEE * 3. Mise en cache du forfait FSE et facturable : uniquement dans le cas d'un séjour * 4. On load le séjour de la consultation * 5. On initialise le _adjust_sejour à false * 6. Dans le cas ou on a un séjour * 6.1. S'il est de type consultation, on ajuste le séjour en fonction du comportement DEPART / ARRIVEE * 6.2. Si la plage de consultation a été modifiée, adjust_sejour passe à true et on ajuste le séjour * en fonction du comportement DEPART / ARRIVEE (en passant par l'adjustSejour() ) * 6.3. Si on a un id (à virer) et que le chrono est modifié en PATIENT_ARRIVE, * si on gère les admissions auto (conf) on met une entrée réelle au séjour * 7. Si le patient est modifié, qu'on est pas en train de merger et qu'on a un séjour, * on empeche le store * 8. On appelle le parent::store() * 9. On passe le forfait SE et facturable au séjour * 10. On propage la modification du patient de la consultation au séjour * 11. Si on a ajusté le séjour et qu'on est dans un séjour de type conclut et que le séjour * n'a plus de consultations, on essaie de le supprimer, sinon on l'annule * 12. Gestion du tarif et précodage des actes (bindTarif) * 13. Bind FSE * ACTIONS * - Faire une fonction comportement_DEPART_ARRIVEE() * - Merger le 2, le 6.1 et le 6.2 (et le passer en 2 si possible) * - Faire une fonction pour le 6.3, le 7, le 10, le 11 * - Améliorer les fonctions 12 et 13 en incluant le test du behaviour fields * * COMPORTEMENT DEPART ARRIVEE * modif de la date d'une consultation ayant un séjour sur le modèle DEPART / ARRIVEE: * 1. Pour le DEPART : * -> on décroche la consultation de son ancien séjour * -> on ne touche pas à l'ancien séjour si : * - il est de type autre que consultation * - il a une entrée réelle * - il a d'autres consultations * -> sinon on l'annule * * 2. Pour l'ARRIVEE * -> si on a un séjour qui englobe : on la colle dedans * -> sinon on crée un séjour de consultation * * TESTS A EFFECTUER * 0. Création d'un pause * 0.1. Déplacement d'une pause * 1. Création d'une consultation simple C1 (Séjour S1) * 2. Création d'une deuxième consultation le même jour / même patient C2 (Séjour S1) * 3. Création d'une troisième consultation le même jour / même patient C3 (Séjour S1) * 4. Déplacement de la consultation C1 un autre jour (Séjour S2) * 5. Changement du nom du patient C2 (pas de modification car une autre consultation) * 6. Déplacement de C3 au même jour (Toujours séjour S1) * 7. Annulation de C1 (Suppression ou annulation de S1) * 8. Déplacement de C2 et C3 à un autre jour (séjour S3 créé, séjour S1 supprimé ou annulé) * 9. Arrivée du patient pour C2 (S3 a une entrée réelle) * 10. Déplacement de C3 dans un autre jour (S4) * 11. Déplacement de C2 dans un autre jour (S5 et S3 reste tel quel) */ function store() { $this->completeField('sejour_id', 'heure', 'plageconsult_id', 'si_desistement', 'annule'); if ($this->si_desistement === null) { $this->si_desistement = 0; } $this->annule = $this->annule === null || $this->annule === '' ? 0 : $this->annule; $uf_soins_id = $this->_uf_soins_id; // Consultation dans un séjour $sejour = new CSejour(); if (!$this->_id && !$this->sejour_id && CAppUI::conf("dPcabinet CConsultation attach_consult_sejour") && $this->patient_id || $this->_force_create_sejour) { // Recherche séjour englobant $facturable = $this->_facturable; if ($facturable === null) { $facturable = 1; } $this->loadRefPlageConsult(); $function = new CFunctions(); if ($this->_function_secondary_id) { $function->load($this->_function_secondary_id); } else { $user = new CMediusers(); $user->load($this->_ref_chir->_id); $function->load($user->function_id); } $datetime = $this->_datetime; $minutes_before_consult_sejour = CAppUI::conf("dPcabinet CConsultation minutes_before_consult_sejour"); $where = array(); $where['annule'] = " = '0'"; $where['type'] = " != 'seances'"; $where['patient_id'] = " = '{$this->patient_id}'"; if (!CAppUI::conf("dPcabinet CConsultation search_sejour_all_groups")) { $where['group_id'] = " = '{$function->group_id}'"; } $where['facturable'] = " = '{$facturable}'"; $datetime_before = CMbDT::dateTime("+{$minutes_before_consult_sejour} minute", "{$this->_date} {$this->heure}"); $where[] = "`sejour`.`entree` <= '{$datetime_before}' AND `sejour`.`sortie` >= '{$datetime}'"; if (!$this->_force_create_sejour) { $sejour->loadObject($where); } else { $sejour->_id = ""; } // Si pas de séjour et config alors le créer en type consultation if (!$sejour->_id && CAppUI::conf("dPcabinet CConsultation create_consult_sejour")) { $sejour->patient_id = $this->patient_id; $sejour->praticien_id = $this->_ref_chir->_id; $sejour->group_id = $function->group_id; $sejour->type = "consult"; $sejour->facturable = $facturable; $sejour->uf_soins_id = $uf_soins_id; $datetime = $this->_date && $this->heure ? "{$this->_date} {$this->heure}" : null; if ($this->chrono == self::PLANIFIE) { $sejour->entree_prevue = $datetime; } else { $sejour->entree_reelle = $datetime; } $sejour->sortie_prevue = "{$this->_date} 23:59:59"; if ($msg = $sejour->store()) { return $msg; } } $this->sejour_id = $sejour->_id; } // must be BEFORE loadRefSejour() $facturable = $this->_facturable; $forfait_se = $this->_forfait_se; $forfait_sd = $this->_forfait_sd; $this->_adjust_sejour = false; $this->loadRefSejour(); if ($this->sejour_id) { $this->loadRefPlageConsult(); // Si le séjour est de type consult if ($this->_ref_sejour->type == 'consult') { $this->_ref_sejour->loadRefsConsultations(); $this->_ref_sejour->_hour_entree_prevue = null; $this->_ref_sejour->_min_entree_prevue = null; $this->_ref_sejour->_hour_sortie_prevue = null; $this->_ref_sejour->_min_sortie_prevue = null; $date_consult = CMbDT::date($this->_datetime); // On déplace l'entrée et la sortie du séjour $entree = $this->_datetime; $sortie = $date_consult . " 23:59:59"; // Si on a une entrée réelle et que la date de la consultation est avant l'entrée réelle, on sort du store if ($this->_ref_sejour->entree_reelle && $date_consult < CMbDT::date($this->_ref_sejour->entree_reelle)) { return CAppUI::tr("CConsultation-denyDayChange"); } // Si on a une sortie réelle et que la date de la consultation est après la sortie réelle, on sort du store if ($this->_ref_sejour->sortie_reelle && $date_consult > CMbDT::date($this->_ref_sejour->sortie_reelle)) { return CAppUI::tr("CConsultation-denyDayChange-exit"); } // S'il n'y a qu'une seule consultation dans le séjour, et que le praticien de la consultation est modifié // (changement de plage), alors on modifie également le praticien du séjour if ($this->_id && $this->fieldModified("plageconsult_id") && count($this->_ref_sejour->_ref_consultations) == 1 && !$this->_ref_sejour->entree_reelle) { $this->_ref_sejour->praticien_id = $this->_ref_plageconsult->chir_id; } // S'il y a d'autres consultations dans le séjour, on étire l'entrée et la sortie // en parcourant la liste des consultations foreach ($this->_ref_sejour->_ref_consultations as $_consultation) { if ($_consultation->_id != $this->_id) { $_consultation->loadRefPlageConsult(); if ($_consultation->_datetime < $entree) { $entree = $_consultation->_datetime; } if ($_consultation->_datetime > $sortie) { $sortie = CMbDT::date($_consultation->_datetime) . " 23:59:59"; } } } $this->_ref_sejour->entree_prevue = $entree; $this->_ref_sejour->sortie_prevue = $sortie; $this->_ref_sejour->updateFormFields(); $this->_ref_sejour->_check_bounds = 0; $this->_ref_sejour->store(); } // Changement de journée pour la consult if ($this->fieldModified("plageconsult_id")) { $this->_adjust_sejour = true; // Pas le permettre si admission est déjà faite $max_hours = CAppUI::conf("dPcabinet CConsultation hours_after_changing_prat"); if ($this->_ref_sejour->entree_reelle && CMbDT::dateTime("+ {$max_hours} HOUR", $this->_ref_sejour->entree_reelle) < CMbDT::dateTime()) { return CAppUI::tr("CConsultation-denyPratChange", $max_hours); } $this->loadRefPlageConsult(); $dateTimePlage = $this->_datetime; $where = array(); $where['patient_id'] = " = '{$this->patient_id}'"; $where[] = "`sejour`.`entree` <= '{$dateTimePlage}' AND `sejour`.`sortie` >= '{$dateTimePlage}'"; $sejour = new CSejour(); $sejour->loadObject($where); $this->adjustSejour($sejour, $dateTimePlage); } if ($this->_id && $this->fieldModified("chrono", self::PATIENT_ARRIVE)) { $this->completeField("plageconsult_id"); $this->loadRefPlageConsult(); $this->_ref_chir->loadRefFunction(); $function = $this->_ref_chir->_ref_function; if ($function->admission_auto) { $sejour = new CSejour(); $sejour->load($this->sejour_id); $sejour->entree_reelle = $this->arrivee; if ($msg = $sejour->store()) { return $msg; } } } } $patient_modified = $this->fieldModified("patient_id"); // Si le patient est modifié et qu'il y a plus d'une consult dans le sejour, on empeche le store if (!$this->_forwardRefMerging && $this->sejour_id && $patient_modified && !$this->_skip_count && !$this->_sync_consults_from_sejour) { $this->loadRefSejour(); $consultations = $this->_ref_sejour->countBackRefs("consultations"); if ($consultations > 1) { return "Vous ne pouvez changer le patient d'une consultation si celle ci est contenue dans un séjour. Dissociez la consultation ou modifier le patient du séjour."; } } // Synchronisation AT $this->getType(); if ($this->_type === "urg" && $this->fieldModified("date_at")) { $rpu = $this->_ref_sejour->_ref_rpu; if (!$rpu->_date_at) { $rpu->_date_at = true; $rpu->date_at = $this->date_at; if ($msg = $rpu->store()) { return $msg; } } } // Update de reprise at // Par défaut, j+1 par rapport à fin at if ($this->fieldModified("fin_at") && $this->fin_at) { $this->reprise_at = CMbDT::dateTime("+1 DAY", $this->fin_at); } //Lors de la validation de la consultation // Enregistrement de la facture if ($this->fieldModified("valide", "1")) { //Si le DH est modifié, ceui ci se répercute sur le premier acte coté if ($this->fieldModified("secteur2") && (count($this->_tokens_ngap) || count($this->_tokens_ccam)) && count($this->loadRefsActes())) { $acte = reset($this->_ref_actes); $acte->montant_depassement += $this->secteur2 - $this->_old->secteur2; if ($msg = $acte->store()) { return $msg; } } $facture = $this->sejour_id ? new CFactureEtablissement() : new CFactureCabinet(); $facture->group_id = CGroups::loadCurrent()->_id; $facture->_consult_id = $this->_id; $facture->du_patient = $this->du_patient; $facture->du_tiers = $this->du_tiers; $facture->du_tva = $this->du_tva; $facture->taux_tva = $this->taux_tva; if (!count($this->loadRefsFraisDivers(1)) && count($this->loadRefsFraisDivers(2)) && $this->du_tva) { $facture->du_patient = $this->du_patient - $this->du_tva - $this->secteur3; $facture->du_tva = 0; $facture->taux_tva = $this->taux_tva; } if ($msg = $facture->store()) { echo $msg; } } //Lors de dévalidation de la consultation if ($this->fieldModified("valide", "0")) { $this->loadRefFacture(); foreach ($this->_ref_factures as $_facture) { $_facture->_consult_id = $this->_id; $_facture->cancelConsult(); } } if ($this->fieldModified("annule", "1")) { $this->loadRefConsultAnesth(); foreach ($this->_refs_dossiers_anesth as $_dossier_anesth) { if ($_dossier_anesth->operation_id) { $_dossier_anesth->operation_id = ''; if ($msg = $_dossier_anesth->store()) { return $msg; } } } } if ($this->fieldModified("annule", "0") || $this->annule == 0 && $this->motif_annulation) { $this->motif_annulation = ""; } // Standard store if ($msg = parent::store()) { return $msg; } if (CAppUI::pref("create_dossier_anesth")) { $this->createConsultAnesth(); } $this->completeField("_line_element_id"); // Création d'une tâche si la prise de rdv est issue du plan de soin if ($this->_line_element_id) { $task = new CSejourTask(); $task->consult_id = $this->_id; $task->sejour_id = $this->sejour_id; $task->prescription_line_element_id = $this->_line_element_id; $task->description = "Consultation prévue le " . $this->_ref_plageconsult->getFormattedValue("date"); $line_element = new CPrescriptionLineElement(); $line_element->load($this->_line_element_id); $this->motif = ($this->motif ? "{$this->motif}\n" : "") . $line_element->_view; $this->rques = ($this->rques ? "{$this->rques}\n" : "") . "Prescription d'hospitalisation, prescrit par le Dr " . $line_element->_ref_praticien->_view; // Planification manuelle à l'heure de la consultation $administration = new CAdministration(); $administration->administrateur_id = CAppUI::$user->_id; $administration->dateTime = $this->_datetime; $administration->quantite = $administration->planification = 1; $administration->unite_prise = "aucune_prise"; $administration->setObject($line_element); $this->element_prescription_id = $line_element->element_prescription_id; if ($msg = $administration->store()) { return $msg; } if ($msg = $task->store()) { return $msg; } if ($msg = parent::store()) { return $msg; } } // On note le résultat de la tâche si la consultation est terminée if ($this->chrono == CConsultation::TERMINE) { /** @var $task CSejourTask */ $task = $this->loadRefTask(); if ($task->_id) { $task->resultat = "Consultation terminée"; $task->realise = 1; if ($msg = $task->store()) { return $msg; } } } // Forfait SE et facturable. A laisser apres le store() if ($this->sejour_id && CAppUI::conf("dPcabinet CConsultation attach_consult_sejour")) { if ($forfait_se !== null || $facturable !== null || $forfait_sd !== null) { $this->_ref_sejour->forfait_se = $forfait_se; $this->_ref_sejour->forfait_sd = $forfait_sd; $this->_ref_sejour->facturable = $facturable; $this->_ref_sejour->uf_soins_id = $uf_soins_id; if ($msg = $this->_ref_sejour->store()) { return $msg; } $this->_forfait_se = null; $this->_forfait_sd = null; $this->_facturable = null; $this->_uf_soins_id = null; } } if ($this->_adjust_sejour && $this->_ref_sejour->type === "consult" && $sejour->_id) { $consultations = $this->_ref_sejour->countBackRefs("consultations"); if ($consultations < 1) { if ($msg = $this->_ref_sejour->delete()) { $this->_ref_sejour->annule = 1; if ($msg = $this->_ref_sejour->store()) { return $msg; } } } } // Gestion du tarif et precodage des actes if ($this->_bind_tarif && $this->_id) { if ($msg = $this->bindTarif()) { return $msg; } } // Bind FSE if ($this->_bind_fse && $this->_id) { if (CModule::getActive("fse")) { $fse = CFseFactory::createFSE(); if ($fse) { $fse->bindFSE($this); } } } return null; }
$service_id = CValue::getOrSession("service_id", "none"); $nb_decalage = CValue::get("nb_decalage"); $mode_dossier = CValue::get("mode_dossier", "administration"); $premedication = CValue::get("premedication"); $real_time = CValue::getOrSession("real_time", 0); $hide_old_lines = CValue::get("hide_old_lines", CAppUI::conf("soins suivi hide_old_line", $group->_guid)); $composition_dossier = array(); $bornes_composition_dossier = array(); $count_composition_dossier = array(); $configs = CConfigService::getAllFor($service_id); if (!$nb_decalage) { $nb_decalage = $configs["Nombre postes avant"]; } $planif_manuelle = CAppUI::conf("dPprescription CPrescription planif_manuelle", $group->_guid); $_dates = array(); $tabHours = CAdministration::getTimingPlanSoins($date, $configs); foreach ($tabHours as $_key_date => $_period_date) { foreach ($_period_date as $_key_periode => $_period_dates) { $count_composition_dossier[$_key_date][$_key_periode] = $planif_manuelle ? 3 : 2; $first_date = reset(array_keys($_period_dates)); $first_time = reset(reset($_period_dates)); $last_date = end(array_keys($_period_dates)); $last_time = end(end($_period_dates)); $composition_dossier[] = "{$_key_date}-{$_key_periode}"; $bornes_composition_dossier["{$_key_date}-{$_key_periode}"]["min"] = "{$first_date} {$first_time}:00:00"; $bornes_composition_dossier["{$_key_date}-{$_key_periode}"]["max"] = "{$last_date} {$last_time}:00:00"; foreach ($_period_dates as $_key_real_date => $_period_hours) { $count_composition_dossier[$_key_date][$_key_periode] += count($_period_hours); $_dates[$_key_real_date] = $_key_real_date; } }
$list_lines[$type_line][$line_mix->_id] = $line_mix; $list_lines["perf_line"][$line->_id] = $line; $time = CMbDT::transform($_planif->dateTime, null, "%H") . ":00:00"; $_date = CMbDT::date($_planif->dateTime); if (!isset($pancarte[$_prescription_id]["{$_date} {$time}"][$type_line][$line_mix->_id][$_planif->object_id]["prevue"])) { $pancarte[$_prescription_id]["{$_date} {$time}"][$type_line][$line_mix->_id][$_planif->object_id]["prevue"] = 0; } $pancarte[$_prescription_id]["{$_date} {$time}"][$type_line][$line_mix->_id][$_planif->object_id]["prevue"] += $line->_quantite_administration; if ($line_mix->_recent_modification) { $new[$_prescription_id]["{$_date} {$time}"] = 1; $pancarte[$_prescription_id]["{$_date} {$time}"][$type_line][$line_mix->_id][$_planif->object_id]["new"] = 1; } } } // Chargement des administrations $administration = new CAdministration(); $ljoin = array(); if ($with_med) { $ljoin["prescription_line_medicament"] = "(prescription_line_medicament.prescription_line_medicament_id = administration.object_id)\r\n AND (administration.object_class = 'CPrescriptionLineMedicament')"; $ljoin["prescription_line_mix_item"] = "(prescription_line_mix_item.prescription_line_mix_item_id = administration.object_id)\r\n AND (administration.object_class = 'CPrescriptionLineMixItem')"; $ljoin["prescription_line_mix"] = "prescription_line_mix_item.prescription_line_mix_id = prescription_line_mix.prescription_line_mix_id"; } if (count($categories_id_pancarte)) { $ljoin["prescription_line_element"] = "(prescription_line_element.prescription_line_element_id = administration.object_id)\r\n AND (administration.object_class = 'CPrescriptionLineElement')"; } $ljoin["prescription"] = ($with_med ? "(prescription_line_medicament.prescription_id = prescription.prescription_id) OR\r\n (prescription_line_mix.prescription_id = prescription.prescription_id)" : "") . (count($categories_id_pancarte) ? ($with_med ? "OR " : "") . "(prescription_line_element.prescription_id = prescription.prescription_id)" : ""); $administrations = array(); if ($with_med || count($categories_id_pancarte)) { $where = array(); $where["prescription.prescription_id"] = CSQLDataSource::prepareIn(CMbArray::pluck($prescriptions, "prescription_id")); if (count($categories_id_pancarte)) {
*/ $operation_id = CValue::getOrSession("operation_id"); // Chargement de l'intervention $operation = new COperation(); $operation->load($operation_id); // Chargement des gestes operatoires $operation->loadRefsAnesthPerops(); $operation->loadRefsFwd(); // Chargement des administrations per-op $operation->loadRefSejour(); $sejour =& $operation->_ref_sejour; $sejour->loadRefPrescriptionSejour(); $sejour->loadRefPatient(); $administrations = array(); if (CModule::getActive("dPprescription")) { $administrations = CAdministration::getPerop($sejour->_ref_prescription_sejour->_id); } // Chargement des constantes saisies durant l'intervention $whereConst = array(); $whereConst["datetime"] = "BETWEEN '{$operation->_datetime_reel}' AND '{$operation->_datetime_reel_fin}'"; $sejour->loadListConstantesMedicales($whereConst); // Tri des gestes et administrations perop par ordre chronologique $perops = array(); foreach ($administrations as $_administration) { $_administration->loadRefsFwd(); $perops[$_administration->dateTime][$_administration->_guid] = $_administration; } foreach ($operation->_ref_anesth_perops as $_perop) { $perops[$_perop->datetime][$_perop->_guid] = $_perop; } $constantes = array("pouls", "ta_gauche", "frequence_respiratoire", "score_sedation", "spo2", "diurese");
} break; case "poste": default: $postes = array("Poste 1" => CAppUI::conf("soins plan_soins hour_matin", $group->_guid), "Poste 2" => CAppUI::conf("soins plan_soins hour_midi", $group->_guid), "Poste 3" => CAppUI::conf("soins plan_soins hour_soir", $group->_guid), "Poste 4" => CAppUI::conf("soins plan_soins hour_nuit", $group->_guid)); $postes_to_hour = array("matin" => str_pad($postes["Poste 1"], 2, "0", STR_PAD_LEFT), "midi" => str_pad($postes["Poste 2"], 2, "0", STR_PAD_LEFT), "soir" => str_pad($postes["Poste 3"], 2, "0", STR_PAD_LEFT), "nuit" => str_pad($postes["Poste 4"], 2, "0", STR_PAD_LEFT)); $moments = array("poste-1" => "matin", "poste-2" => "midi", "poste-3" => "soir", "poste-4" => "nuit"); foreach ($dates as $_date) { $dates_plan_soin[$_date] = $moments; $colspan += 4; } break; } $dates_postes = array(); foreach ($dates as $_date) { $dates_postes[$_date] = CAdministration::getTimingPlanSoins($_date, $postes, $periods, 15, 15); } $postes_by_date = array(); foreach ($dates_postes as $_dates_postes) { foreach ($_dates_postes as $day => $__dates_postes) { foreach ($__dates_postes as $poste => $_dates) { foreach ($_dates as $_day => $hours) { foreach ($hours as $_hour) { @($postes_by_date[$_day][$_hour] = array("day" => $day, "moment" => $moments[$poste])); } } } } } $initiales = array(); /** @var $_sejour CSejour */