function viewMsg($msg, $action, $txt = "") { global $m, $tab; $action = CAppUI::tr($action); if ($msg) { CAppUI::setMsg("{$action}: {$msg}", UI_MSG_ERROR); CAppUI::redirect("m={$m}&tab={$tab}"); return; } CAppUI::setMsg("{$action} {$txt}", UI_MSG_OK); } //récupération de l'identifiant du séjour à fusionner $sejour_id_merge = CValue::post("sejour_id_merge"); // Récupération du rpu $rpu_id = CValue::post("rpu_id"); $rpu = new CRPU(); $rpu->load($rpu_id); $sejour = $rpu->loadRefSejour(); $sejour_rpu = $sejour; $properties_sejour = $sejour->getProperties(); //Cas d'une collision ou d'un rattachement d'un séjour if ($sejour_id_merge) { $sejour_merge = new CSejour(); $sejour_merge->load($sejour_id_merge); $sejour_merge->entree_reelle = $sejour->entree_reelle; $sejour_merge->mode_entree_id = $sejour->mode_entree_id; $sejour_merge->mode_entree = $sejour->mode_entree; $sejour_merge->provenance = $sejour->provenance; $msg = $sejour_merge->merge(array($sejour)); viewMsg($msg, "Fusion"); $sejour = $sejour_merge;
<?php /** * $Id: ajax_refresh_sortie.php 22288 2014-03-04 10:34:24Z nicolasld $ * * @package Mediboard * @subpackage Urgences * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision: 22288 $ */ CCanDo::checkRead(); $user = CMediusers::get(); $group = CGroups::loadCurrent(); $rpu_id = CValue::get("rpu_id"); $rpu = new CRPU(); $rpu->load($rpu_id); $rpu->loadRefSejour(); $sejour = $rpu->_ref_sejour; $sejour->_ref_rpu = $rpu; $sejour->loadRefsFwd(); $sejour->_ref_rpu->loadRefSejourMutation(); $sejour_mutation = $rpu->_ref_sejour_mutation; $sejour_mutation->loadRefsAffectations(); $sejour_mutation->loadRefsConsultations(); $_nb_acte_sejour_rpu = 0; $valide = true; foreach ($sejour_mutation->_ref_consultations as $consult) { $consult->countActes(); $_nb_acte_sejour_rpu += $consult->_count_actes; if (!$consult->valide) {
/** * Récupération du séjour par le numéro de visite * * @param CSejour $newVenue Admit * @param array $data Datas * * @return bool */ function getSejourByVisitNumber(CSejour $newVenue, $data) { $sender = $this->_ref_sender; $venueVN = CValue::read($data['admitIdentifiers'], "VN"); $where = $ljoin = array(); $where["id_sante400.tag"] = " = '{$sender->_tag_visit_number}'"; $where["id_sante400.id400"] = " = '{$venueVN}'"; switch ($this->queryTextNode("PV1.2", $data["PV1"])) { // Identifie la venue pour actes et consultation externe case 'O': $consultation = new CConsultation(); $ljoin["id_sante400"] = "id_sante400.object_id = consultation.consultation_id"; $where["id_sante400.object_class"] = " = 'CConsultation'"; $where["consultation.type"] = " != 'chimio'"; $consultation->loadObject($where, null, null, $ljoin); // Nécessaire pour savoir quel objet créé en cas de besoin $this->_object_found_by_vn = $consultation; if (!$consultation->_id) { return false; } $newVenue->load($consultation->sejour_id); return true; // Identifie une séance // Identifie une séance case 'R': $consultation = new CConsultation(); $ljoin["id_sante400"] = "id_sante400.object_id = consultation.consultation_id"; $where["id_sante400.object_class"] = " = 'CConsultation'"; $where["consultation.type"] = " = 'chimio'"; $consultation->loadObject($where, null, null, $ljoin); // Nécessaire pour savoir quel objet créé en cas de besoin $this->_object_found_by_vn = $consultation; if (!$consultation->_id) { return false; } $newVenue->load($consultation->sejour_id); return true; // Identifie le n° de passage aux urgences // Identifie le n° de passage aux urgences case 'E': $rpu = new CRPU(); $ljoin["id_sante400"] = "id_sante400.object_id = rpu.rpu_id"; $where["id_sante400.object_class"] = " = 'CRPU'"; $rpu->loadObject($where, null, null, $ljoin); // Nécessaire pour savoir quel objet créé en cas de besoin $this->_object_found_by_vn = $rpu; if (!$rpu->_id) { return false; } $newVenue->load($rpu->sejour_id); return true; // Identifie le séjour ou hospitalisation à domicile // Identifie le séjour ou hospitalisation à domicile default: $idexVisitNumber = CIdSante400::getMatch("CSejour", $sender->_tag_visit_number, $venueVN); $this->_object_found_by_vn = $newVenue; if (!$idexVisitNumber->_id) { return false; } $newVenue->load($idexVisitNumber->object_id); $this->_object_found_by_vn = $newVenue; return true; } }
<?php /** * $Id: ajax_form_questions_motif.php 28128 2015-04-29 13:16:11Z aurelie17 $ * * @package Mediboard * @subpackage Urgences * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision: 28128 $ */ CCanDo::checkRead(); $rpu_id = CValue::getOrSession("rpu_id"); $rpu = new CRPU(); if ($rpu_id && !$rpu->load($rpu_id)) { global $m, $tab; CAppUI::setMsg("Ce RPU n'est pas ou plus disponible", UI_MSG_WARNING); CAppUI::redirect("m={$m}&tab={$tab}&rpu_id=0"); } $rpu->loadRefsReponses(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("rpu", $rpu); $smarty->display("inc_form_questions_motif.tpl");
computeAttente(array(array("Nombre de passages")), $series, $where, $ljoin, $dates, $period, $sejour, $total, "sejour.entree", "sejour.sortie"); break; case "duree_pec": $data[$axe] = array("options" => array("title" => utf8_encode("Durée de prise en charge"), "yaxis" => array("title" => "Nombre de passages"), "y2axis" => array("title" => "Temps (min.)")), "series" => array()); $series =& $data[$axe]['series']; computeAttente(array(array("Nombre de passages")), $series, $where, $ljoin, $dates, $period, $sejour, $total, "consultation._datetime", "sejour.sortie"); break; case "duree_attente": $data[$axe] = array("options" => array("title" => utf8_encode("Durée d'attente"), "yaxis" => array("title" => "Nombre de passages"), "y2axis" => array("title" => "Temps (min.)")), "series" => array()); $series =& $data[$axe]['series']; computeAttente(array(array("Nombre de passages")), $series, $where, $ljoin, $dates, $period, $sejour, $total, "sejour.entree", "consultation._datetime"); break; case "diag_infirmier": $data[$axe] = array('options' => array('title' => utf8_encode('Par diagnostique infirmier')), 'series' => array()); $ds = CSQLDataSource::get("std"); $rpu = new CRPU(); $ljoin = array('sejour' => 'rpu.sejour_id = sejour.sejour_id'); unset($where["sejour.type"]); $where["diag_infirmier"] = "IS NOT NULL"; $group = CGroups::loadCurrent(); $group_id = $group->_id; $where['sejour.group_id'] = " = '{$group_id}'"; $where['sejour.entree'] = "BETWEEN '" . reset($dates) . "' AND '" . end($dates) . "'"; $nb_rpus = $rpu->countList($where, null, $ljoin); $percent = CValue::get("_percent") * $nb_rpus; $percent = $percent / 100; $sql = "SELECT TRIM(TRAILING '\r\n' from substring_index( `diag_infirmier` , '\\n', 1 )) AS categorie, COUNT(*) as nb_diag\n FROM `rpu`\n LEFT JOIN `sejour` ON `rpu`.sejour_id = `sejour`.sejour_id\n WHERE `diag_infirmier` IS NOT NULL\n AND `group_id` = '{$group_id}'\n AND `entree` BETWEEN '" . reset($dates) . "' AND '" . end($dates) . "'\n GROUP BY categorie\n HAVING nb_diag > {$percent}"; $result = $ds->exec($sql); $areas = array(); while ($row = $ds->fetchArray($result)) { $areas[] = $row["categorie"];
/** * @see parent::fillTemplate() */ function fillTemplate(&$template) { // Chargement du fillTemplate du praticien $this->loadRefPraticien()->fillTemplate($template); // Ajout d'un fillTemplate du patient $this->loadRefPatient()->fillTemplate($template); $this->fillLimitedTemplate($template); // Dossier médical $this->loadRefDossierMedical()->fillTemplate($template, "Sejour"); // Prescription if (CModule::getActive('dPprescription')) { $prescriptions = $this->loadRefsPrescriptions(); $prescription = isset($prescriptions["pre_admission"]) ? $prescriptions["pre_admission"] : new CPrescription(); $prescription->type = "pre_admission"; $prescription->fillLimitedTemplate($template); $prescription = isset($prescriptions["sejour"]) ? $prescriptions["sejour"] : new CPrescription(); $prescription->type = "sejour"; $prescription->fillLimitedTemplate($template); $prescription = isset($prescriptions["sortie"]) ? $prescriptions["sortie"] : new CPrescription(); $prescription->type = "sortie"; $prescription->fillLimitedTemplate($template); } // RPU $this->loadRefRPU(); if ($this->_ref_rpu) { $this->_ref_rpu->fillLimitedTemplate($template); } }
$user = CAppUI::$user; $listResponsables = CAppUI::conf("dPurgences only_prat_responsable") ? $user->loadPraticiens(PERM_READ, $group->service_urgences_id) : $user->loadUsers(PERM_READ, $group->service_urgences_id); $listPrats = $user->loadPraticiens(PERM_READ, $group->service_urgences_id); $imagerie_etendue = CAppUI::conf("dPurgences CRPU imagerie_etendue", $group); $rpu = new CRPU(); $rpu_id = CValue::getOrSession("rpu_id"); if ($rpu_id && !$rpu->load($rpu_id)) { global $m, $tab; CAppUI::setMsg("Ce RPU n'est pas ou plus disponible", UI_MSG_WARNING); CAppUI::redirect("m={$m}&tab={$tab}&rpu_id=0"); } $rpu->loadRefBox()->loadRefChambre(); $rpu->loadRefIDEResponsable(); // Création d'un RPU pour un séjour existant if ($sejour_id = CValue::get("sejour_id")) { $rpu = new CRPU(); $rpu->sejour_id = $sejour_id; $rpu->loadMatchingObject(); $rpu->updateFormFields(); } if ($rpu->_id || $rpu->sejour_id) { // Mise en session de l'id de la consultation, si elle existe. $rpu->loadRefConsult(); if ($rpu->_ref_consult->_id) { CValue::setSession("selConsult", $rpu->_ref_consult->_id); } $rpu->loadFwdRef("_mode_entree_id"); $sejour = $rpu->_ref_sejour; $sejour->loadRefCurrAffectation(); $sejour->loadRefPrescriptionSejour(); $sejour->_ref_prescription_sejour->loadJourOp(CMbDT::date());
/** * $Id: vw_search_motif.php 28128 2015-04-29 13:16:11Z aurelie17 $ * * @package Mediboard * @subpackage Urgences * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision: 28128 $ */ CCanDo::checkRead(); $rpu_id = CValue::getOrSession("rpu_id"); $chapitre_id = CValue::getOrSession("chapitre_id"); $search = CValue::get("search"); $reload = CValue::get("reload", 0); $see_hors_ccmu = CValue::getOrSession("see_hors_ccmu", 0); $rpu = new CRPU(); $rpu->load($rpu_id); $rpu->loadRefMotif(); $rpu->loadRefsReponses(); $rpu->orderCtes(); $where = array(); if ($chapitre_id) { $where["chapitre_id"] = " = '{$chapitre_id}'"; } if ($search) { $where[] = "nom LIKE '%{$search}%' or code_diag LIKE '%{$search}%'"; } $motif = new CMotif(); $motifs = $motif->loadList($where, "chapitre_id", null, "motif_id"); if (!$see_hors_ccmu) { foreach ($motifs as $_motif) {
<?php /** * $Id$ * * @package Mediboard * @subpackage Urgences * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ */ CCanDo::checkEdit(); $rpu_id = CValue::get("rpu_id"); $sortie_reelle = CValue::get("sortie_reelle"); // Chargement du RPU $rpu = new CRPU(); $rpu->load($rpu_id); $rpu->loadRefSejourMutation(); // Chargement du séjour $sejour = $rpu->loadRefSejour(); $sejour->loadRefPatient()->loadIPP(); $sejour->loadNDA(); $sejour->loadRefsConsultations(); $sejour->loadRefCurrAffectation(); // Horaire par défaut $sejour->sortie_reelle = $sortie_reelle; if (!$sejour->sortie_reelle) { $sejour->sortie_reelle = CMbDT::dateTime(); } $where = array(); $where["entree"] = "<= '{$sejour->sortie_reelle}'";
<?php /** * $Id$ * * @package Mediboard * @subpackage Urgences * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ */ $rpu_id = CValue::get("rpu_id"); $rpu = new CRPU(); $rpu->load($rpu_id); // Si accès au module PMSI : peut modifier le diagnostic principal $access_pmsi = 0; if (CModule::exists("dPpmsi")) { $module = new CModule(); $module->mod_name = "dPpmsi"; $module->loadMatchingObject(); $access_pmsi = $module->getPerm(PERM_EDIT); } // Si praticien : peut modifier le CCMU, GEMSA et diagnostic principal $is_praticien = CUser::get()->loadRefMediuser()->isPraticien(); $smarty = new CSmartyDP(); $smarty->assign("rpu", $rpu); $smarty->assign("is_praticien", $is_praticien); $smarty->assign("access_pmsi", $access_pmsi); $smarty->display("inc_edit_fields_rpu.tpl");
<?php /** * $Id$ * * @category dPurgences * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ $rpu_id = CValue::get("rpu_id"); $rpu = new CRPU(); $rpu->load($rpu_id); $consult = $rpu->loadRefConsult(); if ($consult && $consult->_id) { $consult->loadRefsActes(); } if ($rpu->mutation_sejour_id) { $rpu->loadRefSejourMutation()->loadRefsActes(); } $group = CGroups::loadCurrent(); $cotation = CAppUI::conf("dPurgences Display check_cotation", $group); $gemsa = CAppUI::conf("dPurgences Display check_gemsa", $group); $ccmu = CAppUI::conf("dPurgences Display check_ccmu", $group); $dp = CAppUI::conf("dPurgences Display check_dp", $group); $display_sfmu = CAppUI::conf("dPurgences display_motif_sfmu"); $sfmu = CAppUI::conf("dPurgences CRPU gestion_motif_sfmu", $group); $value = array(); if ($cotation > 1) {
<?php /** * $Id:$ * * @package Mediboard * @subpackage Urgences * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision:$ */ CCanDo::checkRead(); $rpu_id = CValue::getOrSession("rpu_id"); $rpu = new CRPU(); $rpu->load($rpu_id); $rpu->loadRefEchelleTri(); $rpu->updateFormFields(); $rpu->_ref_sejour->loadRefGrossesse(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("rpu", $rpu); $smarty->assign("sejour", $rpu->_ref_sejour); $smarty->assign("patient", $rpu->_ref_sejour->_ref_patient); $smarty->display("vw_echelle_tri.tpl");
$extractPassages->type = "rpu"; $extractPassages->debut_selection = $debut_selection; $extractPassages->fin_selection = $fin_selection; $extractPassages->group_id = CGroups::loadCurrent()->_id; $extractPassages->store(); $doc_valid = null; $where = array(); /** Indispensable pour le cas des hospit sans relicat */ //$where['sejour.type'] = " = 'urg'"; $where['sejour.annule'] = " = '0'"; $where['sejour.entree'] = " BETWEEN '{$debut_selection}' AND '{$fin_selection}' "; $where['sejour.group_id'] = " = '" . CGroups::loadCurrent()->_id . "'"; $leftjoin = array(); $leftjoin['sejour'] = 'sejour.sejour_id = rpu.sejour_id'; $order = "entree ASC"; $rpu = new CRPU(); /** @var CRPU[] $rpus */ $rpus = $rpu->loadList($where, $order, null, null, $leftjoin); if (count($rpus) == 0) { CAppUI::stepAjax("Aucun RPU à extraire.", UI_MSG_ERROR); } foreach ($rpus as $_rpu) { $sejour = $_rpu->_ref_sejour; $sejour->loadExtDiagnostics(); $sejour->loadDiagnosticsAssocies(false); $sejour->loadRefsConsultations(); } // Appel de la fonction d'extraction du RPUSender $rpuSender = $extractPassages->getRPUSender(); if (!$rpuSender) { CAppUI::stepAjax("Aucun sender définit dans le module dPurgences.", UI_MSG_ERROR);
function addRPU($elParent, CRPU $mbObject) { $sejour = $mbObject->loadRefSejour(); $this->addElement($elParent, "CP", $mbObject->_cp); $this->addElement($elParent, "COMMUNE", $mbObject->_ville); $this->addElement($elParent, "NAISSANCE", CMbDT::transform($mbObject->_naissance, null, "%d/%m/%Y")); $this->addElement($elParent, "SEXE", strtoupper($mbObject->_sexe)); $this->addElement($elParent, "ENTREE", CMbDT::transform($sejour->entree, null, "%d/%m/%Y %H:%M")); $this->addElement($elParent, "MODE_ENTREE", $sejour->mode_entree); $this->addElement($elParent, "PROVENANCE", $sejour->provenance == "8" ? "5" : $sejour->provenance); if ($sejour->transport == "perso_taxi") { $sejour->transport = "perso"; } if ($sejour->transport == "ambu_vsl") { $sejour->transport = "ambu"; } $this->addElement($elParent, "TRANSPORT", strtoupper($sejour->transport)); $this->addElement($elParent, "TRANSPORT_PEC", strtoupper($mbObject->pec_transport)); $motif = CMbString::htmlSpecialChars($mbObject->motif); if (CAppUI::conf("dPurgences CRPU gestion_motif_sfmu", $sejour->loadRefEtablissement()) == 2 || $mbObject->motif_sfmu) { $motif = $mbObject->loadRefMotifSFMU()->code; } $this->addElement($elParent, "MOTIF", $motif); if (CModule::getActive("oscour") && CAppUI::conf("dPurgences gerer_circonstance") && CAppUI::conf("oscour version_complete")) { $circonstance = $mbObject->loadRefCirconstance(); $this->addElement($elParent, "CIRCONSTANCE", $circonstance->code); } $this->addElement($elParent, "GRAVITE", strtoupper($mbObject->ccmu)); $this->addElement($elParent, "DP", $mbObject->_DP[0] . preg_replace("/[^\\d]/", "", substr($mbObject->_DP, 1))); $liste_da = $this->addElement($elParent, "LISTE_DA"); if ($dr = $sejour->_ext_diagnostic_relie) { $this->addDiagAssocie($liste_da, $dr->code[0] . preg_replace("/[^\\d]/", "", substr($dr->code, 1))); } $das = $sejour->_diagnostics_associes; if (is_array($das)) { foreach ($das as $_da) { $_da = $_da[0] . preg_replace("/[^\\d]/", "", substr($_da, 1)); $this->addDiagAssocie($liste_da, $_da); } } $liste_actes = $this->addElement($elParent, "LISTE_ACTES"); $codes_ccam = $sejour->_ref_consult_atu->_codes_ccam; if (is_array($codes_ccam)) { foreach ($codes_ccam as $_code_ccam) { $this->addActeCCAM($liste_actes, $_code_ccam); } } $sortie = null; if ($sejour->sortie_reelle) { $sortie = $sejour->sortie_reelle; } else { // on recherche la première affectation qui n'est pas dans un service d'urgences ou externe $affectation = new CAffectation(); $ljoin["service"] = "`service`.`service_id` = `affectation`.`service_id`"; $where = array(); $where["sejour_id"] = " = '{$sejour->_id}'"; $where["service.cancelled"] = " = '0'"; $where["service.uhcd"] = " = '0'"; $where["service.urgence"] = " = '0'"; $affectation->loadObject($where, "entree ASC", null, $ljoin); if ($affectation->_id) { $sortie = $affectation->entree; } } if ($sortie) { $this->addElement($elParent, "SORTIE", CMbDT::transform($sortie, null, "%d/%m/%Y %H:%M")); } if (CModule::getActive("cerveau")) { // on recherche la première affectation vers UHCD $affectation = new CAffectation(); $ljoin["service"] = "`service`.`service_id` = `affectation`.`service_id`"; $ljoin["sejour"] = "`affectation`.`sejour_id` = `sejour`.`sejour_id`"; $where = array(); $where["affectation.sejour_id"] = " = '{$sejour->_id}'"; $where["service.cancelled"] = " = '0'"; $where["service.uhcd"] = " = '1'"; $where["sejour.uhcd"] = " = '1'"; $affectation->loadObject($where, "entree ASC", null, $ljoin); if (!$affectation->_id) { $mode_sortie = $mbObject->_mode_sortie; $destination = $sejour->destination; $orientation = $mbObject->orientation; // Dans le cas où l'on ne créé pas un relicat, on va aller chercher les valeurs sur l'affectation de médecine if ($mbObject->mutation_sejour_id && CAppUI::conf("dPurgences create_sejour_hospit")) { // on recherche la première affectation qui ni UHCD, ni URG $affectation_medecine = new CAffectation(); $ljoin["service"] = "`service`.`service_id` = `affectation`.`service_id`"; $ljoin["sejour"] = "`affectation`.`sejour_id` = `sejour`.`sejour_id`"; $where = array(); $where["affectation.sejour_id"] = " = '{$sejour->_id}'"; $where["service.cancelled"] = " = '0'"; $where["service.uhcd"] = " != '1'"; $where["service.urgence"] = " != '1'"; $affectation_medecine->loadObject($where, "entree ASC", null, $ljoin); if ($affectation_medecine) { $service = $affectation_medecine->loadRefService(); $mode_sortie = "6"; $destination = $service->default_destination; $orientation = $service->default_orientation; } } } else { // Dans le cas où l'on a eu une mutation les données du RPU concerne la mut. UHCD $mode_sortie = "6"; $destination = "1"; $orientation = "UHCD"; } $this->addElement($elParent, "MODE_SORTIE", $mode_sortie); $this->addElement($elParent, "DESTINATION", $destination); $this->addElement($elParent, "ORIENT", strtoupper($orientation)); if ($affectation->_id) { $this->addElement($elParent, "ENTREE_UHCD", CMbDT::transform($affectation->entree, null, "%d/%m/%Y %H:%M")); $this->addElement($elParent, "MODE_SORTIE_UHCD", $mbObject->_mode_sortie); $this->addElement($elParent, "DESTINATION_UHCD", $sejour->destination); $this->addElement($elParent, "ORIENT_UHCD", strtoupper($mbObject->orientation)); } } else { if (!$sortie) { $this->addElement($elParent, "SORTIE", CMbDT::transform($sejour->sortie_prevue, null, "%d/%m/%Y %H:%M")); } $this->addElement($elParent, "MODE_SORTIE", $mbObject->_mode_sortie); $this->addElement($elParent, "DESTINATION", $sejour->destination); $this->addElement($elParent, "ORIENT", strtoupper($mbObject->orientation)); } }
/** * Trigger after event store * * @param CMbObject $mbObject Object * * @return void */ function onAfterStore(CMbObject $mbObject) { if (!$this->isHandled($mbObject)) { return false; } /** @var CInteropReceiver $receiver */ $receiver = $mbObject->_receiver; $receiver->getInternationalizationCode($this->transaction); // Traitement Sejour if ($mbObject instanceof CSejour) { $sejour = $mbObject; $sejour->loadRefPatient(); // Si on ne souhaite explicitement pas de synchro if ($sejour->_no_synchro) { return; } // Si on est en train de créer un séjour et qu'il s'agit d'une naissance $current_log = $sejour->loadLastLog(); if ($current_log->type == "create" && $sejour->_naissance) { return; } // Si Serveur if (CAppUI::conf('smp server')) { return; } // Si le group_id du séjour est différent de celui du destinataire if ($sejour->group_id != $receiver->group_id) { return; } // Destinataire gère seulement les non facturables if ($receiver->_configs["send_no_facturable"] == "0" && $sejour->facturable) { return; } // Destinataire gère seulement les facturables if ($receiver->_configs["send_no_facturable"] == "2" && !$sejour->facturable) { return; } // Passage du séjour d'urgence en hospit, pas de génération de A06 if ($sejour->_en_mutation) { return; } // Si on ne gère les séjours du bébé on ne transmet pas séjour si c'est un séjour enfant if (!$receiver->_configs["send_child_admit"]) { $naissance = new CNaissance(); $naissance->sejour_enfant_id = $sejour->_id; $naissance->loadMatchingObject(); if ($naissance->_id) { return; } } // Recherche si on est sur un séjour de mutation $rpu = new CRPU(); $rpu->mutation_sejour_id = $sejour->_id; $rpu->loadMatchingObject(); if ($rpu->_id) { $sejour_rpu = $rpu->loadRefSejour(); if (!$sejour->_cancel_hospitalization && $sejour_rpu->mode_sortie != "mutation") { return; } } $current_affectation = null; $code = null; // Cas où : // * on est sur un séjour d'urgences qui n'est pas le relicat // * on est en train de réaliser la mutation /** @var CRPU $rpu */ $rpu = $sejour->loadRefRPU(); if ($rpu && $rpu->_id && $rpu->sejour_id != $rpu->mutation_sejour_id && $sejour->fieldModified("mode_sortie", "mutation") && !$sejour->UHCD) { $sejour = $rpu->loadRefSejourMutation(); $sejour->loadRefPatient(); $sejour->loadLastLog(); $sejour->_receiver = $receiver; $code = "A06"; // On récupère l'affectation courante qui n'a pas été transmise (affectation suite à la mutation) $current_affectation = $sejour->getCurrAffectation(); $sejour->_ref_hl7_affectation = $current_affectation; } elseif ($sejour->fieldModified("type", "urg") && $sejour->_cancel_hospitalization) { $sejour->loadRefPatient(); $sejour->loadLastLog(); $sejour->_receiver = $receiver; $code = "A07"; // On récupère l'affectation courante qui n'a pas été transmise (affectation suite à la mutation) $current_affectation = $sejour->getCurrAffectation(); $sejour->_ref_hl7_affectation = $current_affectation; } elseif ($rpu && $rpu->mutation_sejour_id && $rpu->sejour_id != $rpu->mutation_sejour_id) { return; } $code = $code ? $code : $this->getCodeSejour($sejour); // Dans le cas d'une création et que l'on renseigne entrée réelle et sortie réelle, // il est nécessaire de créer deux flux (A01 et A03) if ($sejour->_ref_last_log->type == "create" && $sejour->entree_reelle && $sejour->sortie_reelle) { $code = "A01"; // Cas où :très souvent // * on est l'initiateur du message // * le destinataire ne supporte pas le message if (!$this->isMessageSupported($this->transaction, $this->message, $code, $receiver)) { return; } if (!$sejour->_NDA) { // Génération du NDA dans le cas de la création, ce dernier n'était pas créé if ($msg = $sejour->generateNDA()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } $NDA = new CIdSante400(); $NDA->loadLatestFor($sejour, $receiver->_tag_sejour); $sejour->_NDA = $NDA->id400; } $patient = $sejour->_ref_patient; $patient->loadIPP($receiver->group_id); if (!$patient->_IPP) { if ($msg = $patient->generateIPP()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } } // Cas où lors de l'entrée réelle j'ai une affectation qui n'a pas été envoyée if ($sejour->fieldModified("entree_reelle") && !$sejour->_old->entree_reelle) { $current_affectation = $sejour->getCurrAffectation(); } $this->createMovement($code, $sejour, $current_affectation); // Envoi de l'événement $this->sendITI($this->profil, $this->transaction, $this->message, $code, $sejour); $code = "A03"; } if (!$code) { return; } // Cas où : // * on est l'initiateur du message // * le destinataire ne supporte pas le message if (!$this->isMessageSupported($this->transaction, $this->message, $code, $receiver)) { return; } if (!$sejour->_NDA) { // Génération du NDA dans le cas de la création, ce dernier n'était pas créé if ($msg = $sejour->generateNDA()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } $NDA = new CIdSante400(); $NDA->loadLatestFor($sejour, $receiver->_tag_sejour); $sejour->_NDA = $NDA->id400; } $patient = $sejour->_ref_patient; $patient->loadIPP($receiver->group_id); if (!$patient->_IPP) { if ($msg = $patient->generateIPP()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } } // Cas où lors de l'entrée réelle j'ai une affectation qui n'a pas été envoyée if ($sejour->fieldModified("entree_reelle") && !$sejour->_old->entree_reelle) { $current_affectation = $sejour->getCurrAffectation(); } $this->createMovement($code, $sejour, $current_affectation); // Envoi de l'événement $this->sendITI($this->profil, $this->transaction, $this->message, $code, $sejour); } // Traitement Affectation if ($mbObject instanceof CAffectation) { $affectation = $mbObject; $current_log = $affectation->_ref_current_log; if (!$current_log || $affectation->_no_synchro || !in_array($current_log->type, array("create", "store"))) { return; } // Affectation non liée à un séjour $sejour = $affectation->loadRefSejour(); if (!$sejour->_id) { return; } // Destinataire gère seulement les non facturables if ($receiver->_configs["send_no_facturable"] == "0" && $sejour->facturable) { return; } // Destinataire gère seulement les facturables if ($receiver->_configs["send_no_facturable"] == "2" && !$sejour->facturable) { return; } // Première affectation des urgences on ne la transmet pas, seulement pour l'évènement de bascule // Sauf si nous sommes dans un séjour d'UHCD if ($affectation->_mutation_urg && !$sejour->UHCD) { return; } // Si on ne gère les séjours du bébé on ne transmet pas l'affectation si c'est un séjour enfant if (!$receiver->_configs["send_child_admit"]) { $naissance = new CNaissance(); $naissance->sejour_enfant_id = $sejour->_id; $naissance->loadMatchingObject(); if ($naissance->_id) { return; } } // Pas d'envoie d'affectation si la patient n'est pas sortie des urgences $rpu = new CRPU(); $rpu->mutation_sejour_id = $sejour->_id; $rpu->loadMatchingObject(); if ($rpu->_id) { $sejour_rpu = $rpu->loadRefSejour(); if (!$affectation->_mutation_urg && $sejour_rpu->mode_sortie != "mutation") { return; } } // Pas d'envoie d'affectation pour les séjours reliquats // Sauf si le séjour est en UHCD $rpu = $sejour->loadRefRPU(); if ($rpu && $rpu->mutation_sejour_id && $rpu->sejour_id != $rpu->mutation_sejour_id && !$sejour->UHCD) { return; } // Si le group_id du séjour est différent de celui du destinataire if ($sejour->group_id != $receiver->group_id) { return; } // On envoie pas les affectations prévisionnelles if (!$receiver->_configs["send_provisional_affectation"] && $sejour->_etat == "preadmission") { return; } $first_affectation = $sejour->loadRefFirstAffectation(); $code = $this->getCodeAffectation($affectation, $first_affectation); // Cas où : // * on est l'initiateur du message // * le destinataire ne supporte pas le message if (!$this->isMessageSupported($this->transaction, $this->message, $code, $receiver)) { return; } $sejour->loadRefPatient(); $sejour->_receiver = $receiver; $patient = $sejour->_ref_patient; $patient->loadIPP($receiver->group_id); if (!$patient->_IPP) { if ($msg = $patient->generateIPP()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } } $this->createMovement($code, $sejour, $affectation); $service = $affectation->loadRefService(); $curr_affectation = $sejour->loadRefCurrAffectation(); // On envoie pas de mouvement antérieur à la dernière affectation if (($service->uhcd || $service->radiologie || $service->urgence) && $affectation->sortie < $curr_affectation->sortie) { return; } // Ne pas envoyer la sortie si le séjour a une entrée réelle et si on modifie ou créé un affectation if (!$receiver->_configs["send_expected_discharge_with_affectation"] && $sejour->entree_reelle) { $sejour->sortie_prevue = null; } // Envoi de l'événement $this->sendITI($this->profil, $this->transaction, $this->message, $code, $mbObject); } // Traitement Naissance if ($mbObject instanceof CNaissance) { $current_log = $mbObject->loadLastLog(); if ($current_log->type != "create") { return; } $naissance = $mbObject; if (!$this->isMessageSupported($this->transaction, $this->message, "A28", $receiver)) { return; } $sejour_enfant = $naissance->loadRefSejourEnfant(); // Création du bébé $enfant = $sejour_enfant->_ref_patient; $enfant->loadIPP($receiver->group_id); $enfant->_receiver = $receiver; $enfant->_naissance_id = $naissance->_id; if (!$enfant->_IPP) { if ($msg = $enfant->generateIPP()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } } // Envoi pas les patients qui n'ont pas d'IPP if (!$receiver->_configs["send_all_patients"] && !$enfant->_IPP) { return; } // Envoi du A28 pour la création du bébé $this->sendITI($this->profil, $this->transaction, $this->message, "A28", $enfant); $enfant->_IPP = null; // Si on gère les séjours du bébé on transmet le séjour ! if ($receiver->_configs["send_child_admit"]) { $sejour_enfant->_receiver = $receiver; // Si le group_id du séjour est différent de celui du destinataire if ($sejour_enfant->group_id != $receiver->group_id) { return; } $code = $this->getCodeBirth($sejour_enfant); // Cas où : // * on est l'initiateur du message // * le destinataire ne supporte pas le message if (!$this->isMessageSupported($this->transaction, $this->message, $code, $receiver)) { return; } if (!$sejour_enfant->_NDA) { // Génération du NDA dans le cas de la création, ce dernier n'était pas créé if ($msg = $sejour_enfant->generateNDA()) { CAppUI::setMsg($msg, UI_MSG_ERROR); } $NDA = new CIdSante400(); $NDA->loadLatestFor($sejour_enfant, $receiver->_tag_sejour); $sejour_enfant->_NDA = $NDA->id400; } $current_affectation = null; // Cas où lors de l'entrée réelle j'ai une affectation qui n'a pas été envoyée if ($sejour_enfant->fieldModified("entree_reelle") && !$sejour_enfant->_old->entree_reelle) { $current_affectation = $sejour_enfant->getCurrAffectation(); } $this->createMovement($code, $sejour_enfant, $current_affectation); // Envoi de l'événement $this->sendITI($this->profil, $this->transaction, $this->message, $code, $sejour_enfant); } } }
/** * $Id$ * * @category dPurgences * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision$ * @link http://www.mediboard.org */ $rpu_id = CValue::get("rpu_id"); $number_tolerance = CAppUI::conf("dPurgences CRPU search_visit_days_count", CGroups::loadCurrent()); $now = CMbDT::dateTime(); $after = CMbDT::dateTime("+ {$number_tolerance} DAY", $now); $rpu = new CRPU(); $rpu->load($rpu_id); $sejour_rpu = $rpu->loadRefSejour(); $patient = $sejour_rpu->loadRefPatient(); $sejour_rpu->type = "comp"; $collisions = $sejour_rpu->getCollisions(); $check_merge = ""; $sejours_futur = array(); $count_collision = count($collisions); $sejour_collision = ""; if ($count_collision == 1) { $sejour_collision = current($collisions); $sejour_collision->loadRefPraticien(); $check_merge = $sejour_rpu->checkMerge($collisions); } else { if (!$count_collision) {
* @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html * @version $Revision: 28128 $ */ CCanDo::checkRead(); $rpu_id = CValue::getOrSession("rpu_id"); $sejour_id = CValue::get("sejour_id"); $rpu = new CRPU(); if ($rpu_id && !$rpu->load($rpu_id)) { global $m, $tab; CAppUI::setMsg("Ce RPU n'est pas ou plus disponible", UI_MSG_WARNING); CAppUI::redirect("m={$m}&tab={$tab}&rpu_id=0"); } // Création d'un RPU pour un séjour existant if ($sejour_id) { $rpu = new CRPU(); $rpu->sejour_id = $sejour_id; $rpu->loadMatchingObject(); $rpu->updateFormFields(); } if ($rpu->_id || $rpu->sejour_id) { // Mise en session de l'id de la consultation, si elle existe. $rpu->loadRefConsult(); if ($rpu->_ref_consult->_id) { CValue::setSession("selConsult", $rpu->_ref_consult->_id); } $sejour = $rpu->_ref_sejour; $sejour->loadNDA(); $sejour->loadRefPraticien(1); $sejour->loadRefsNotes(); } else {
$where["entree"] = "<= '{$date_max}'"; $where["sortie"] = ">= '{$date_min}'"; $where[] = $q; $affs = $affectation->loadList($where); foreach ($affs as $_aff) { $affectations[$_aff->lit_id] = "1"; } } else { $date_tolerance = CAppUI::conf("dPurgences date_tolerance"); $date_before = CMbDT::date("-{$date_tolerance} DAY", $date); $date_after = CMbDT::date("+1 DAY", $date); $ljoin = array(); $ljoin["sejour"] = "rpu.sejour_id = sejour.sejour_id"; $where = array(); $where["sejour.type"] = " = 'urg'"; $where["sejour.entree"] = " BETWEEN '{$date_before}' AND '{$date_after}'"; $where["sejour.annule"] = " = '0'"; $where["sejour.group_id"] = "= '" . CGroups::loadCurrent()->_id . "'"; $where[] = $q; $rpu = new CRPU(); $rpus = $rpu->loadList($where, null, null, null, $ljoin); foreach ($rpus as $_rpu) { $affectations[$_rpu->box_id] = "1"; } } // Création du template $smarty = new CSmartyDP(); $smarty->assign("chambre", $chambre); $smarty->assign("patient", $patient); $smarty->assign("affectations", $affectations); $smarty->display("inc_choice_lit.tpl");