* @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])) { $medicaments[$code_cip] =& $line->_ref_produit; } } // Calcul du nombre de boites correspondant aux administrations
$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)) { $where["prescription_line_element.element_prescription_id"] = CSQLDataSource::prepareIn($categories_id_pancarte); } $where["administration.dateTime"] = "BETWEEN '{$date_min}' AND '{$date_max}'"; $administrations = $administration->loadList($where, "prescription.prescription_id ASC, administration.dateTime ASC", null, null, $ljoin); } /* // Chargement des administrations $administration = new CAdministration(); $administrations = array(); $where = array(); $where["prescription.prescription_id"] = " = '$_prescription->_id'"; $where["administration.dateTime"] = " BETWEEN '$date_min' AND '$date_max'"; // CPrescriptionLineMedicament $ljoin = array( "prescription_line_medicament" => "(prescription_line_medicament.prescription_line_medicament_id = administration.object_id) AND (administration.object_class = 'CPrescriptionLineMedicament')", "prescription" => "prescription_line_medicament.prescription_id = prescription.prescription_id",