コード例 #1
0
         $_prescription_line_mix->loadRefsVariations();
         foreach ($_prescription_line_mix->_ref_lines as $_perf_line) {
             $list_lines[$_prescription_line_mix->type_line][$_perf_line->_id] = $_perf_line;
             $_perf_line->loadRefsAdministrations($where);
             foreach ($_perf_line->_ref_administrations as $_administration_perf) {
                 $_administration_perf->loadRefAdministrateur();
                 $dossier[CMbDT::date($_administration_perf->dateTime)][$_prescription_line_mix->type_line][$_perf_line->_id][$_administration_perf->quantite][$_administration_perf->_id] = $_administration_perf;
             }
         }
     }
 }
 // Parcours des lignes de medicament et stockage du dossier cloturé
 if (count($prescription->_ref_lines_med_comments["med"])) {
     foreach ($prescription->_ref_lines_med_comments["med"] as $_atc => $lines_by_type) {
         if (!isset($atc_classes[$_atc])) {
             $medicament_produit = new CMedicamentProduit();
             $atc_classes[$_atc] = $medicament_produit->getLibelleATC($_atc);
         }
         foreach ($lines_by_type as $med_id => $_line_med) {
             $list_lines["med"][$_line_med->_id] = $_line_med;
             $_line_med->loadRefMomentArret();
             $_line_med->loadRefsAdministrations(null, $where);
             foreach ($_line_med->_ref_administrations as $_administration_med) {
                 $_administration_med->loadRefAdministrateur();
                 $dossier[CMbDT::date($_administration_med->dateTime)]["med"][$_line_med->_id][$_administration_med->quantite][$_administration_med->_id] = $_administration_med;
             }
         }
     }
 }
 // Parcours des lignes d'elements
 if (count($prescription->_ref_lines_elements_comments)) {
コード例 #2
0
 /**
  * Charge l'atc dans la pharmacie
  *
  * @return void
  */
 function loadMedicamentATC()
 {
     $med = CMedicamentProduit::get($this->code);
     $this->_classe_atc = $med->_ref_ATC_5_code;
 }
コード例 #3
0
CValue::setSession("keywords_composant", $keywords_composant);
CValue::setSession("composant", $composant);
CValue::setSession("keywords_indication", $keywords_indication);
CValue::setSession("indication", $indication);
CValue::setSession("type_indication", $type_indication);
CValue::setSession("commentaire", $commentaire);
$start = intval(CValue::get("start", 0));
$patient = new CPatient();
$ds = $patient->_spec->ds;
// fields
$fields = array("CPatient" => array("sexe" => "=", "_age_min" => null, "_age_max" => null, "medecin_traitant" => null, "patient_id" => "="), "CAntecedent" => array("rques" => "LIKE"), "CTraitement" => array("traitement" => "LIKE"), "CConsultation" => array("motif" => "LIKE", "_rques_consult" => null, "_examen_consult" => null, "conclusion" => "LIKE"), "CSejour" => array("type" => "=", "convalescence" => "LIKE", "_rques_sejour" => null, "entree" => null, "sortie" => null, "libelle" => "LIKE"), "COperation" => array("materiel" => "LIKE", "exam_per_op" => "LIKE", "examen" => "LIKE", "_libelle_interv" => null, "codes_ccam" => null, "_rques_interv" => null));
$one_field_presc = $code_cis || $code_ucd || $libelle_produit || $classes_atc || $composant || $indication || $commentaire;
$codes_cis = array();
// Si la recherche concerne un produit, on recherche les codes cis correpondant
if ($libelle_produit) {
    $medicament = new CMedicamentProduit();
    $produits = $medicament->searchProduitAutocomplete($libelle_produit, "100", null, 0, 0, 1, null);
    $codes_cis = array_unique(CMbArray::pluck($produits, "code_cis"));
}
$one_field = false || $one_field_presc;
$one_field_traitement = false;
$one_field_atcd = false;
$sejour_filled = false;
$consult_filled = false;
$interv_filled = false;
$from = null;
$to = null;
$data = array();
foreach ($fields as $_class => $_fields) {
    $data[$_class] = array_intersect_key($_GET, $_fields);
    $object = new $_class();
コード例 #4
0
 /**
  * @see parent::delete()
  */
 function delete()
 {
     $this->completeField('delivery_id', 'quantity', 'date_delivery', 'date_reception');
     $this->loadRefsFwd();
     $stock = $this->getStock();
     $stock->loadRefsFwd();
     $infinite_group_stock = CAppUI::conf('dPstock CProductStockGroup infinite_quantity') == '1';
     $stock_service = new CProductStockService();
     $stock_service->product_id = $stock->product_id;
     $stock_service->object_id = $this->_ref_delivery->service_id;
     $stock_service->object_class = "CService";
     // XXX
     $stock_service->loadMatchingObject();
     if (!$infinite_group_stock && $this->date_delivery) {
         $stock->quantity += $this->quantity;
         if ($msg = $stock->store()) {
             return $msg;
         }
     }
     if ($stock_service->_id && $this->date_reception) {
         $stock_service->quantity -= $this->quantity;
         if ($msg = $stock_service->store()) {
             return $msg;
         }
     }
     // Calcul du stock du sejour
     if ($this->_code_cis && $this->_ref_delivery->sejour_id && CModule::getActive("pharmacie")) {
         $stock_sejour = CStockSejour::getFromCIS($this->_code_cis, $this->_ref_delivery->sejour_id);
         if ($stock_sejour->_id) {
             $codes_cip = CMedicamentProduit::getArticleCodes($this->_code_cis);
             $ds = $this->getDS();
             $where = array();
             $where["product.code"] = $ds->prepareIn($codes_cip);
             $where["product_delivery.sejour_id"] = $ds->prepare("= '{$this->_ref_delivery->sejour_id}'");
             $ljoin = array();
             $ljoin["product_stock_group"] = "product_stock_group.stock_id = product_delivery.stock_id\r\n                                           AND product_delivery.stock_class = 'CProductStockGroup'";
             $ljoin["product"] = "product.product_id = product_stock_group.product_id";
             $delivery = new CProductDelivery();
             $delivery->loadObject($where, "product_delivery.date_dispensation DESC", null, $ljoin);
             // Si la delivrance actuelle est la derniere pour ce sejour et ce CIS
             if ($delivery->_id == $this->delivery_id) {
                 // Mise a jour de la quantité du stock en quantité d'administration
                 $code_cip = $this->_ref_delivery->loadRefStock()->loadRefProduct()->code;
                 $product = CMedicamentArticle::get($code_cip);
                 if ($product->getId()) {
                     $ratio = $product->_ratio_cis_cip;
                     // Mise à jour du stock
                     $stock_sejour->datetime = $this->_ref_delivery->datetime_min;
                     $stock_sejour->quantite -= $this->quantity / $ratio;
                     $stock_sejour->quantite = round($stock_sejour->quantite, 4);
                     if ($msg = $stock_sejour->store()) {
                         return $msg;
                     }
                 }
             }
         }
     }
     return parent::delete();
 }