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();
/** * 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; }