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;
Example #2
0
<?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");
Example #5
0
     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"];
Example #6
0
 /**
  * @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);
     }
 }
Example #7
0
$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());
Example #8
0
/**
 * $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}'";
Example #10
0
<?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) {
Example #17
0
 * @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 {
Example #18
0
    $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");