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);
                 }
             }
         }
     }
 }
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}");
}
CApp::rip();
Exemple #3
0
 /**
  * Apply a prescription protocol
  *
  * @param int $operation_id Operation ID
  *
  * @return null|string
  */
 function applyProtocolesPrescription($operation_id = null)
 {
     if (!$this->_protocole_prescription_chir_id) {
         return null;
     }
     // Application du protocole de prescription
     $prescription = new CPrescription();
     $prescription->object_class = $this->_class;
     $prescription->object_id = $this->_id;
     $prescription->type = "sejour";
     if ($msg = $prescription->store()) {
         return $msg;
     }
     /*
     if ($this->_protocole_prescription_anesth_id) {
       $prescription->applyPackOrProtocole(
         $this->_protocole_prescription_anesth_id,
         $this->praticien_id,
         CMbDT::date(),
         null,
         $operation_id
       );
     }
     */
     if ($this->_protocole_prescription_chir_id) {
         $prescription->_dhe_mode = true;
         $prescription->applyPackOrProtocole($this->_protocole_prescription_chir_id, $this->praticien_id, CMbDT::date(), null, $operation_id, null);
     }
     return null;
 }