/**
  * logSejourAccess
  *
  * @param CSejour $sejour
  *
  * @return bool has the access been logged
  */
 static function logForSejour($sejour)
 {
     $group = $sejour->loadRefEtablissement();
     if (!CAppUI::conf("admin CLogAccessMedicalData enable_log_access", $group) || !$sejour->_id) {
         return false;
     }
     $user = CMediusers::get();
     $conf = CAppUI::conf("admin CLogAccessMedicalData round_datetime", $group);
     $datetime = CMbDT::dateTime();
     switch ($conf) {
         case '1m':
             // minute
             $datetime = CMbDT::format($datetime, "%y-%m-%d %H:%M:00");
             break;
         case '10m':
             // 10 minutes
             $minute = CMbDT::format($datetime, "%M");
             $minute = str_pad(floor($minute / 10) * 10, 2, 0, STR_PAD_RIGHT);
             $datetime = CMbDT::format($datetime, "%y-%m-%d %H:{$minute}:00");
             break;
         case '1d':
             // 1 day
             $datetime = CMbDT::format($datetime, "%y-%m-%d 00:00:00");
             break;
         default:
             // 1 hour
             $datetime = CMbDT::format($datetime, "%y-%m-%d %H:00:00");
             break;
     }
     return self::logintoDb($user->_id, $sejour->_class, $sejour->_id, $datetime, $group->_id);
 }
 /**
  * Load context
  *
  * @return CConsultation|CSejour|CPatient
  */
 function loadRefContext()
 {
     if ($this->context_class && $this->context_id) {
         $this->_ref_context = new $this->context_class();
         $this->_ref_context = $this->_ref_context->getCached($this->context_id);
     }
 }
 /**
  * @see parent::getPerm()
  */
 function getPerm($perm)
 {
     if (!isset($this->_ref_sejour->_id)) {
         $this->loadRefsFwd();
     }
     return $this->_ref_sejour->getPerm($perm);
 }
 /**
  * Charge le séjour associé
  *
  * @return CSejour
  */
 function loadRefSejour()
 {
     $this->_ref_sejour = new CSejour();
     $this->_ref_sejour->load($this->sejour_id);
     $this->_ref_sejour->loadRefsFwd();
     return $this->_ref_sejour;
 }
 /**
  * Generate content message
  *
  * @param CSejour $sejour Admit
  *
  * @return void
  */
 function generateFromOperation(CSejour $sejour)
 {
     $evenementsServeurEtatsPatient = $this->documentElement;
     // Ajout du patient
     $mbPatient = $sejour->loadRefPatient();
     $patient = $this->addElement($evenementsServeurEtatsPatient, "patient");
     $this->addPatient($patient, $mbPatient, false, true);
     // Ajout de la venue, c'est-à-dire le séjour
     $venue = $this->addElement($evenementsServeurEtatsPatient, "venue");
     $this->addVenue($venue, $sejour, false, true);
     $dateObservation = $this->addElement($evenementsServeurEtatsPatient, "dateObservation");
     $this->addDateHeure($dateObservation, CMbDT::dateTime());
     // Ajout des diagnostics
     $Diagnostics = $this->addElement($evenementsServeurEtatsPatient, "Diagnostics");
     $this->addDiagnosticsEtat($Diagnostics, $sejour);
     // Traitement final
     $this->purgeEmptyElements();
 }
Example #6
0
 /**
  * Create domains
  *
  * @return bool
  */
 protected function createDomain()
 {
     $ds = $this->ds;
     $groups = $ds->loadList("SELECT * FROM groups_mediboard");
     $tab = array("CPatient", "CSejour");
     foreach ($groups as $_group) {
         $group_id = $_group["group_id"];
         $group_configs = $ds->loadHash("SELECT * FROM groups_config WHERE object_id = '{$group_id}'");
         foreach ($tab as $object_class) {
             if ($object_class == "CPatient") {
                 $tag_group = CPatient::getTagIPP($group_id);
                 if (!$group_configs || !array_key_exists("ipp_range_min", $group_configs)) {
                     continue;
                 }
                 $range_min = $group_configs["ipp_range_min"];
                 $range_max = $group_configs["ipp_range_max"];
             } else {
                 $tag_group = CSejour::getTagNDA($group_id);
                 if (!$group_configs || !array_key_exists("nda_range_min", $group_configs)) {
                     continue;
                 }
                 $range_min = $group_configs["nda_range_min"];
                 $range_max = $group_configs["nda_range_max"];
             }
             if (!$tag_group) {
                 continue;
             }
             // Insert domain
             $query = "INSERT INTO `domain` (`domain_id`, `incrementer_id`, `actor_id`, `actor_class`, `tag`)\n                      VALUES (NULL, NULL, NULL, NULL, '{$tag_group}');";
             $ds->query($query);
             $domain_id = $ds->insertId();
             // Insert group domain
             $query = "INSERT INTO `group_domain` (`group_domain_id`, `group_id`, `domain_id`, `object_class`, `master`)\n                      VALUES (NULL, '{$group_id}', '{$domain_id}', '{$object_class}', '1');";
             $ds->query($query);
             // Select incrementer for this group
             $select = "SELECT *\n                     FROM `incrementer`\n                     LEFT JOIN `domain` ON `incrementer`.`incrementer_id` = `domain`.`incrementer_id`\n                     LEFT JOIN `group_domain` ON `domain`.`domain_id` = `group_domain`.`domain_id`\n                     WHERE `incrementer`.`object_class` = '{$object_class}'\n                     AND `group_domain`.`group_id` = '{$group_id}';";
             $incrementer = $ds->loadHash($select);
             $incrementer_id = $incrementer["incrementer_id"];
             if ($incrementer_id) {
                 // Update domain with incrementer_id
                 $query = "UPDATE `domain`\n                      SET `incrementer_id` = '{$incrementer_id}'\n                      WHERE `domain_id` = '{$domain_id}';";
                 $ds->query($query);
                 // Update incrementer
                 if (!array_key_exists("nda_range_min", $group_configs) || !$range_max || $range_min === null) {
                     continue;
                 }
                 $query = "UPDATE `incrementer`\n                      SET `range_min` = '{$range_min}', `range_max` = '{$range_max}'\n                      WHERE `incrementer_id` = '{$incrementer_id}';";
                 $ds->query($query);
             }
         }
     }
     // Update constraints to stick to the event
     return true;
 }
Example #7
0
 /**
  * check if we can access to the view following the configuration and already granted.
  *
  * @param CSejour $sejour sejour object
  *
  * @return bool
  */
 static function canAccess($sejour)
 {
     $group = $sejour->loadRefEtablissement();
     $user = CMediusers::get();
     //check for config and elements
     if (!$sejour->_id || !CAppUI::conf("admin CBrisDeGlace enable_bris_de_glace", $group) || $sejour->praticien_id == $user->_id || !$user->use_bris_de_glace) {
         return true;
     }
     $today = CMbDT::date();
     $bris = new self();
     $where = array();
     $where["date"] = " BETWEEN '{$today} 00:00:00' AND '{$today} 23:59:59'";
     $where["object_class"] = " = 'CSejour'";
     $where["object_id"] = " = '{$sejour->_id}'";
     $where["user_id"] = " = '{$user->_id}'";
     // no need of bris de glace
     if ($bris->countList($where)) {
         return true;
     }
     return false;
 }
 /**
  * @see parent::onAfterStore()
  */
 function onAfterStore(CMbObject $mbObject)
 {
     if (!$this->isHandled($mbObject)) {
         return false;
     }
     if (!$mbObject->_id || !$this->create) {
         return false;
     }
     $group_id = $mbObject->_id;
     $object_class = array("CSejour", "CPatient");
     global $dPconfig;
     $original_value = $dPconfig["eai"]["use_domain"];
     $dPconfig["eai"]["use_domain"] = "0";
     foreach ($object_class as $_class) {
         switch ($_class) {
             case "CSejour":
                 $tag_group = CSejour::getTagNDA($group_id);
                 break;
             case "CPatient":
                 $tag_group = CPatient::getTagIPP($group_id);
                 break;
             default:
                 $tag_group = null;
         }
         if (!$tag_group) {
             continue;
         }
         $domain = new CDomain();
         $domain->tag = $tag_group;
         if ($domain->store()) {
             continue;
         }
         $group_domain = new CGroupDomain();
         $group_domain->group_id = $group_id;
         $group_domain->domain_id = $domain->_id;
         $group_domain->object_class = $_class;
         $group_domain->master = "1";
         $group_domain->store();
     }
     $dPconfig["eai"]["use_domain"] = "{$original_value}";
     return true;
 }
<?php

/**
 * $Id$
 *
 * @category Soins
 * @package  Mediboard
 * @author   SARL OpenXtrem <*****@*****.**>
 * @license  GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version  $Revision$
 */
CCanDo::checkEdit();
$consult_id = CValue::get("consult_id", 0);
$sejour_id = CValue::get("sejour_id", 0);
$chir_id = CValue::get("chir_id", 0);
$sejour = new CSejour();
$sejour->load($sejour_id);
if ($sejour->_id) {
    $chir = new CMediusers();
    if ($chir_id) {
        $chir->load($chir_id);
    } else {
        $chir->load($sejour->praticien_id);
    }
    $sejour->loadRefPraticien();
    $sejour->loadRefsActes();
    $sejour->updateFormFields();
    $sejour->_datetime = CMbDT::dateTime();
    // Récupération des tarifs
    /** @var CTarif $tarif */
    $tarif = new CTarif();
$period = CValue::get("period");
$forms_limit = CValue::get("forms_limit");
if (!$sejour_id) {
    CAppUI::stepMessage(UI_MSG_WARNING, "Veuillez sélectionner un sejour pour visualiser le dossier complet");
    return;
}
$fiches_anesthesies = array();
$formulaires = null;
global $atc_classes;
$atc_classes = array();
$datetime_min = "";
if ($period) {
    $datetime_min = CMbDT::dateTime("- {$period} HOURS");
}
// Chargement du sejour
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadNDA();
$sejour->loadExtDiagnostics();
$sejour->loadRefsConsultAnesth();
$sejour->_ref_consult_anesth->loadRefConsultation();
$sejour->canRead();
// Chargement des affectations
$sejour->loadRefCurrAffectation()->loadRefLit();
foreach ($sejour->loadRefsAffectations() as $_affectation) {
    $_affectation->loadRefLit();
}
// Chargement des tâches
foreach ($sejour->loadRefsTasks() as $_task) {
    $_task->loadRefPrescriptionLineElement();
    $_task->setDateAndAuthor();
    $testChir = new CMediusers();
    $testChir->load($chir_id);
    if ($testChir->isPraticien()) {
        $chir = $testChir;
    }
}
$chir->loadRefFunction();
$prat = $chir;
// Chargement du patient
$patient = new CPatient();
if ($patient_id && !$operation_id && !$sejour_id) {
    $patient->load($patient_id);
    $patient->loadRefsSejours();
}
// On récupère le séjour
$sejour = new CSejour();
if ($sejour_id && !$operation_id) {
    $sejour->load($sejour_id);
    CAccessMedicalData::checkForSejour($sejour);
    $sejour->loadRefsFwd();
    $sejour->loadRefCurrAffectation()->loadRefService();
    if (!$chir_id) {
        $chir = $sejour->_ref_praticien;
    }
    // On ne change a priori pas le praticien du séjour
    $sejour->_ref_praticien->canDo();
    $prat = $sejour->_ref_praticien;
    $patient = $sejour->_ref_patient;
}
$grossesse = new CGrossesse();
if ($grossesse_id && !$sejour_id && !$operation_id) {
Example #12
0
/**
 * $Id: httpreq_pathologies.php 20186 2013-08-19 07:47:12Z phenxdesign $
 *
 * @package    Mediboard
 * @subpackage Hospi
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 20186 $
 */
$affichage_patho = CValue::getOrSession("affichage_patho");
$date = CValue::getOrSession("date", CMbDT::date());
$pathos = new CDiscipline();
// Recuperation de l'id du sejour
$sejour_id = CValue::get("sejour_id");
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadRefPraticien();
$sejour->_ref_praticien->loadRefFunction();
$sejour->loadRefPatient();
$sejour->loadRefsOperations();
foreach ($sejour->_ref_operations as &$operation) {
    $operation->loadExtCodesCCAM();
}
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("pathos", $pathos);
$smarty->assign("date", $date);
$smarty->assign("curr_sejour", $sejour);
$smarty->assign("affichage_patho", $affichage_patho);
$smarty->display("inc_pathologies.tpl");
Example #13
0
 * $Id$
 *
 * @category Search
 * @package  Mediboard
 * @author   SARL OpenXtrem <*****@*****.**>
 * @license  GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @link     http://www.mediboard.org
 */
CCanDo::checkRead();
$prescription_id = CValue::get("prescription_id", null);
$sejour_id = CValue::get("sejour_id");
$contexte = CValue::get("contexte");
$user = CMediusers::get();
$_ref_object = new CSejour();
if ($sejour_id) {
    $sejour = new CSejour();
    $sejour->load($sejour_id);
    $_ref_object = $sejour;
    if (!$contexte) {
        $contexte = "pmsi";
    }
}
if ($prescription_id) {
    $prescription = new CPrescription();
    $prescription->load($prescription_id);
    $prescription->loadRefObject();
    $_ref_object = $prescription->_ref_object;
    if (!$contexte) {
        $contexte = $user->isPraticien() ? "prescription" : "pharmacie";
    }
}
Example #14
0
// Type d'affichage
$uhcd_affichage = CValue::postOrSession("uhcd_affichage", CAppUI::conf("dPurgences default_view"));
// Parametre de tri
$order_way = CValue::getOrSession("order_way", "DESC");
$order_col = CValue::getOrSession("order_col", CAppUI::pref("defaultRPUSort"));
// Selection de la date
$date = CValue::getOrSession("date", CMbDT::date());
$date_tolerance = CAppUI::conf("dPurgences date_tolerance");
$date_before = CMbDT::date("-{$date_tolerance} DAY", $date);
$date_after = CMbDT::date("+1 DAY", $date);
// L'utilisateur doit-il voir les informations médicales
$user = CMediusers::get();
$medicalView = $user->isMedical();
$group = CGroups::loadCurrent();
$listPrats = $user->loadPraticiens(PERM_READ, $group->service_urgences_id);
$sejour = new CSejour();
$where = array();
$ljoin["rpu"] = "sejour.sejour_id = rpu.sejour_id";
$ljoin["patients"] = "sejour.patient_id = patients.patient_id";
$where[] = "sejour.entree BETWEEN '{$date}' AND '{$date_after}' \n  OR (sejour.sortie_reelle IS NULL AND sejour.entree BETWEEN '{$date_before}' AND '{$date_after}' AND sejour.annule = '0')";
$where[] = CAppUI::pref("showMissingRPU") ? "sejour.type = 'comp' OR rpu.rpu_id IS NOT NULL" : "rpu.rpu_id IS NOT NULL";
$where["sejour.group_id"] = "= '{$group->_id}'";
$where["sejour.UHCD"] = "= '1'";
if ($uhcd_affichage == "prendre_en_charge") {
    $ljoin["consultation"] = "consultation.sejour_id = sejour.sejour_id";
    $where["consultation.consultation_id"] = "IS NULL";
}
if ($uhcd_affichage == "presents") {
    $where["sejour.sortie_reelle"] = "IS NULL";
    $where["sejour.annule"] = " = '0'";
    if (CAppUI::conf("dPurgences create_sejour_hospit")) {
$dateW = $consult->_ref_plageconsult->date;
$whereN = array();
$ljoin = array();
$ljoin["plageconsult"] = "plageconsult.plageconsult_id = consultation.plageconsult_id";
$whereN["patient_id"] = " = '{$consult->patient_id}'";
$whereN["plageconsult.date"] = " >= '{$dateW}'";
$whereN["heure"] = " >= '{$consult->heure}'";
/** @var CConsultation[] $consults */
$consults = $consult->loadListWithPerms(PERM_READ, $whereN, null, null, null, $ljoin);
foreach ($consults as $_consult) {
    $_consult->loadRefPraticien()->loadRefFunction();
    $_consult->loadRefSejour();
}
// sejours
$where = array();
$where[] = "'{$consult->_date}' BETWEEN DATE(entree) AND DATE(sortie)";
$where["sejour.type"] = "!= 'consult'";
$where["sejour.group_id"] = "= '{$group_id}'";
$where["sejour.patient_id"] = "= '{$consult->patient_id}'";
/** @var CSejour[] $sejours */
$sejour = new CSejour();
$sejours = $sejour->loadListWithPerms(PERM_READ, $where);
CMbObject::massLoadFwdRef($sejours, "praticien_id");
foreach ($sejours as $_sejour) {
    $_sejour->loadRefPraticien()->loadRefFunction();
}
$smarty = new CSmartyDP();
$smarty->assign("sejours", $sejours);
$smarty->assign("consult", $consult);
$smarty->assign("next_consults", $consults);
$smarty->display("inc_link_sejour.tpl");
Example #16
0
<?php

/**
 * $Id: httpreq_list_diags.php 19374 2013-06-01 12:56:17Z mytto $
 *
 * @package    Mediboard
 * @subpackage PMSI
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 19374 $
 */
CCanDo::checkEdit();
$sejour_id = CValue::getOrSession("sejour_id");
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadRefDossierMedical()->updateFormFields();
$patient = $sejour->loadRefPatient();
$patient->loadRefDossierMedical()->updateFormFields();
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("patient", $sejour->_ref_patient);
$smarty->assign("sejour", $sejour);
$smarty->display("inc_list_diags.tpl");
Example #17
0
 /**
  * Charge les séjours du patient
  *
  * @param array $where SQL where clauses
  *
  * @return CSejour[]n loadRef
  */
 function loadRefsSejours($where = array())
 {
     if (!$this->_id) {
         return $this->_ref_sejours = array();
     }
     $sejour = new CSejour();
     $group_id = CGroups::loadCurrent()->_id;
     $where["patient_id"] = "= '{$this->_id}'";
     if (CAppUI::conf("dPpatients CPatient multi_group") == "hidden") {
         $where["sejour.group_id"] = "= '{$group_id}'";
     }
     $order = "entree DESC";
     return $this->_ref_sejours = $sejour->loadList($where, $order);
 }
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;
    $rpu->sejour_id = $sejour_merge->_id;
}
// Creation d'un séjour reliquat
if (!CAppUI::conf("dPurgences create_sejour_hospit")) {
    // Clonage
    $sejour_rpu = new CSejour();
    foreach ($properties_sejour as $name => $value) {
        $sejour_rpu->{$name} = $value;
    }
    // Forcer le reliquat du séjour en urgences
    $sejour_rpu->type = "urg";
    // Enregistrement
    $sejour_rpu->_id = null;
    // Pas de génération du NDA, et pas de synchro (handler) du séjour
    $sejour_rpu->_generate_NDA = false;
    $sejour_rpu->_no_synchro = true;
    $msg = $sejour_rpu->store();
    viewMsg($msg, "Séjour reliquat enregistré");
    // Transfert du RPU sur l'ancien séjour
    $rpu->sejour_id = $sejour_rpu->_id;
}
Example #19
0
<?php

/**
 * $Id: httpreq_diagnostic.php 19357 2013-05-30 14:24:19Z mytto $
 *
 * @package    Mediboard
 * @subpackage PMSI
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 19357 $
 */
$sejour_id = CValue::getOrSession("sejour_id");
$modeDAS = CValue::getOrSession("modeDAS", 1);
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadExtDiagnostics();
$sejour->loadRefDossierMedical();
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("sejour", $sejour);
$smarty->assign("modeDAS", $modeDAS);
$smarty->display("inc_diagnostic.tpl");
<?php

/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage PlanningOp
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkRead();
$operation = new COperation();
$sejour = new CSejour();
if ($sejour_id = CValue::get("sejour_id")) {
    $sejour->load($sejour_id);
    $sejour->loadNDA();
    $sejour->loadRefsFwd();
    $patient =& $sejour->_ref_patient;
    $patient->loadRefs();
    // Si le modèle est redéfini, on l'utilise
    $model = CCompteRendu::getSpecialModel($sejour->_ref_praticien, "COperation", "[FICHE DHE]");
    if ($model->_id) {
        CCompteRendu::streamDocForObject($model, $sejour, "CDomPDFConverter");
    }
}
if ($operation_id = CValue::get("operation_id")) {
    $operation->load($operation_id);
    $operation->loadRefsFwd();
    $sejour = $operation->_ref_sejour;
    $operation->_ref_sejour->loadRefsFwd();
<?php

/**
 * Liste des hospitalisations en cours du tableau de bord
 *
 * @category Maternite
 * @package  Mediboard
 * @author   SARL OpenXtrem <*****@*****.**>
 * @license  GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version  SVN: $Id:$
 * @link     http://www.mediboard.org
 */
CCanDo::checkRead();
$date = CValue::get("date", CMbDT::date());
$group = CGroups::loadCurrent();
$sejour = new CSejour();
$where = array();
$where["sejour.grossesse_id"] = "IS NOT NULL";
$where["sejour.entree"] = "<= '{$date} 23:59:59' ";
$where["sejour.sortie"] = ">= '{$date} 00:00:00' ";
$where["sejour.group_id"] = " = '{$group->_id}' ";
$order = "sejour.entree DESC";
/** @var CSejour[] $listSejours */
$listSejours = $sejour->loadList($where, $order, null, null, null);
$grossesses = CMbObject::massLoadFwdRef($listSejours, "grossesse_id");
CMbObject::massLoadFwdRef($grossesses, "parturiente_id");
$naissances = CMbObject::massLoadBackRefs($grossesses, "naissances");
$sejours_enfant = CMbObject::massLoadFwdRef($naissances, "sejour_enfant_id");
CMbObject::massLoadFwdRef($sejours_enfant, "patient_id");
foreach ($listSejours as $_sejour) {
    $grossesse = $_sejour->loadRefGrossesse();
 /**
  * Get admit HL7 event code
  *
  * @param CSejour $sejour Admit
  *
  * @return null|string
  */
 function getCodeSejour(CSejour $sejour)
 {
     $current_log = $sejour->loadLastLog();
     if (!in_array($current_log->type, array("create", "store"))) {
         return null;
     }
     $receiver = $sejour->_receiver;
     $configs = $receiver->_configs;
     $sejour->loadOldObject();
     // Cas d'une pré-admission
     if ($sejour->_etat == "preadmission") {
         // Création d'une pré-admission
         if ($current_log->type == "create") {
             // Pending admit
             if ($configs["iti31_pending_event_management"] && $sejour->recuse == -1) {
                 return "A14";
             }
             return "A05";
         }
         // Cancel the pending admission
         if ($configs["iti31_pending_event_management"] && $sejour->recuse == -1 && $sejour->fieldModified("annule", "1")) {
             return "A27";
         }
         // Modification d'une pré-admission
         // Cas d'une annulation ?
         if ($sejour->fieldModified("annule", "1")) {
             return "A38";
         }
         // Cas d'un rétablissement d'annulation ?
         if ($sejour->fieldModified("annule", "0") && $sejour->_old->annule == 1) {
             return "A05";
         }
         // Annulation de l'admission
         if ($sejour->_old->entree_reelle && !$sejour->entree_reelle) {
             return "A11";
         }
         // Réattribution dossier administratif
         if ($sejour->fieldModified("patient_id")) {
             return "A44";
         }
         if (!$configs["modification_before_admit"] && !$sejour->entree_reelle) {
             return;
         }
         // Simple modification ?
         return $this->getModificationAdmitCode($sejour->_receiver);
     }
     // Cas d'un séjour en cours (entrée réelle)
     if ($sejour->_etat == "encours") {
         // Admission faite
         $sejour_old = $sejour->_old;
         if ($sejour->fieldModified("entree_reelle") && !$sejour_old->entree_reelle || $sejour->entree_reelle && !$sejour_old->entree_reelle) {
             // Patient externe
             if (in_array($sejour->type, self::$outpatient)) {
                 return "A04";
             }
             // Admission hospitalisé
             return "A01";
         }
         // Confirmation de sortie
         if ($sejour->fieldFirstModified("confirme")) {
             return "A16";
         }
         // Annulation confirmation de sortie
         if ($sejour->fieldEmptyValued("confirme")) {
             return "A25";
         }
         // Bascule du type et type_pec
         if ($sejour->fieldModified("type")) {
             $sejour->_old->_receiver = $sejour->_receiver;
             return $this->getBasculeCode($sejour->_old, $sejour);
         }
         // Changement du médecin responsable
         if ($sejour->fieldModified("praticien_id")) {
             $first_log = $sejour->loadFirstLog();
             $praticien_id = $sejour->getValueAtDate($first_log->date, "praticien_id");
             $send_change_attending_doctor = $configs["send_change_attending_doctor"];
             // Annulation du médecin responsable
             if ($sejour->praticien_id == $praticien_id) {
                 return $send_change_attending_doctor == "A54" ? "A55" : $this->getModificationAdmitCode($receiver);
             }
             return $send_change_attending_doctor == "A54" ? "A54" : $this->getModificationAdmitCode($receiver);
         }
         // Réattribution dossier administratif
         if ($sejour->fieldModified("patient_id")) {
             return "A44";
         }
         // Cas d'une annulation
         if ($sejour->fieldModified("annule", "1")) {
             return "A11";
         }
         // Cas d'une rétablissement on simule une nouvelle admission
         if ($sejour->fieldModified("annule", "0")) {
             // Patient externe
             if (in_array($sejour->type, self::$outpatient)) {
                 return "A04";
             }
             // Admission hospitalisé
             return "A01";
         }
         // Annulation de la sortie réelle
         if ($sejour->_old->sortie_reelle && !$sejour->sortie_reelle) {
             return "A13";
         }
         // Notification sur le transfert
         if ($configs["iti31_pending_event_management"] && $sejour->fieldModified("mode_sortie") && $sejour->mode_sortie == "transfert") {
             return "A15";
         }
         // Annulation de la notification sur le transfert
         if ($configs["iti31_pending_event_management"] && $sejour->_old->mode_sortie && $sejour->_old->mode_sortie == "transfert" && !$sejour->mode_sortie) {
             return "A26";
         }
         // On ne transmet pas les modifications d'un séjour dès lors que celui-ci a une entrée réelle
         if (!$receiver->_configs["send_change_after_admit"]) {
             return null;
         }
         // Simple modification ?
         return $this->getModificationAdmitCode($sejour->_receiver);
     }
     // Cas d'un séjour clôturé (sortie réelle)
     if ($sejour->_etat == "cloture") {
         // Sortie réelle renseignée
         if ($sejour->fieldModified("sortie_reelle") && !$sejour->_old->sortie_reelle) {
             return "A03";
         }
         // Modification de l'admission
         // Cas d'une annulation ?
         if ($sejour->fieldModified("annule", "1")) {
             return "A13";
         }
         // On ne transmet pas les modifications d'un séjour dès lors que celui-ci a une entrée réelle
         if (!$receiver->_configs["send_change_after_admit"]) {
             return null;
         }
         // Simple modification ?
         return $this->getModificationAdmitCode($sejour->_receiver);
     }
     return null;
 }
 * @subpackage Soins
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 27852 $
 */
ob_clean();
CApp::setMemoryLimit("1024M");
CApp::setTimeLimit(240);
$service_id = CValue::get("service_id");
$date = CValue::get("date", CMbDT::date());
$service = new CService();
$service->load($service_id);
$datetime_min = "{$date} 00:00:00";
$datetime_max = "{$date} 23:59:59";
$datetime_avg = "{$date} " . CMbDT::time();
$sejour = new CSejour();
$where = array();
$ljoin = array();
$ljoin["affectation"] = "sejour.sejour_id = affectation.sejour_id";
$where["sejour.entree"] = "<= '{$datetime_max}'";
$where["sejour.sortie"] = " >= '{$datetime_min}'";
$where["affectation.entree"] = "<= '{$datetime_max}'";
$where["affectation.sortie"] = ">= '{$datetime_min}'";
$where["affectation.service_id"] = " = '{$service_id}'";
/** @var CSejour[] $sejours */
$sejours = $sejour->loadList($where, null, null, "sejour.sejour_id", $ljoin);
$ordonnances = array();
foreach ($sejours as $_sejour) {
    $_prescription = $_sejour->loadRefPrescriptionSejour();
    $_patient = $_sejour->loadRefPatient();
    $params = array("prescription_id" => $_prescription->_id ?: "", "in_progress" => 1, "multipart" => 1);
$praticien->load($chirSel);
$where = array();
$ljoin = array();
if ($praticien->isAnesth()) {
    $ljoin = array();
    $ljoin["operations"] = "operations.sejour_id = sejour.sejour_id";
    $ljoin["plagesop"] = "operations.plageop_id = plagesop.plageop_id";
    $where[] = "operations.anesth_id = '{$chirSel}' OR (operations.anesth_id IS NULL AND plagesop.anesth_id = '{$chirSel}')";
} else {
    $where["sejour.praticien_id"] = "= '{$chirSel}'";
}
$where["sejour.entree"] = "<= '{$date} 23:59:59'";
$where["sejour.sortie"] = ">= '{$date} 00:00:00'";
$where["sejour.annule"] = "= '0'";
$where["sejour.group_id"] = "= '" . CGroups::loadCurrent()->_id . "'";
$sejour = new CSejour();
/** @var CSejour[] $listSejours */
$listSejours = $sejour->loadList($where, null, null, null, $ljoin);
CStoredObject::massLoadFwdRef($listSejours, "patient_id");
foreach ($listSejours as $_sejour) {
    $_sejour->loadRefPraticien();
    $_sejour->loadRefPatient();
    $_sejour->loadRefsOperations();
    $_sejour->loadRefCurrAffectation("{$date} " . CMbDT::time());
    $_sejour->_ref_curr_affectation->loadRefLit();
    $_sejour->_ref_curr_affectation->_ref_lit->loadCompleteView();
}
$lits = CMbArray::pluck($listSejours, "_ref_curr_affectation", "_ref_lit");
$sorter_chambre = CMbArray::pluck($lits, "_ref_chambre", "_view");
$sorter_service = CMbArray::pluck($lits, "_ref_chambre", "_ref_service", "_view");
$sorter_lit = CMbArray::pluck($lits, "_view");
Example #25
0
 *
 * @package    Mediboard
 * @subpackage PlanningOp
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision: 19840 $
 */
CCanDo::checkRead();
$sejour_id = CValue::get("sejour_id");
$patient_id = CValue::get("patient_id");
// Chargement du patient
$patient = new CPatient();
$patient->load($patient_id);
$patient->loadRefsCorrespondantsPatient();
// On récupére le séjour
$sejour = new CSejour();
if ($sejour_id) {
    $sejour->load($sejour_id);
    // On vérifie que l'utilisateur a les droits sur le sejour
    if (!$sejour->_canRead) {
        global $m, $tab;
        CAppUI::setMsg("Vous n'avez pas accés à ce séjour", UI_MSG_WARNING);
        CAppUI::redirect("m={$m}&tab={$tab}&sejour_id=0");
    }
    $patient = $sejour->_ref_patient;
} else {
    $sejour->patient_id = $patient->_id;
    $sejour->_ref_patient = $patient;
}
// Création du template
$smarty = new CSmartyDP();
Example #26
0
<?php

/**
 * $Id$
 *  
 * @category PMSI
 * @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
 */
CCanDo::checkEdit();
$sejour_id = CValue::get("sejour_id");
$sejour = new CSejour();
$sejour->load($sejour_id);
$sejour->loadExtDiagnostics();
$sejour->loadDiagnosticsAssocies();
$sejour->loadRelPatient();
$sejour->_ref_patient->loadRefDossierMedical();
$rss = null;
$cim_das = array();
$cim_das_patient = array();
if (CModule::getActive("atih") && CAppUI::conf("dPpmsi use_cim_pmsi")) {
    $rss = new CRSS();
    $rss->sejour_id = $sejour_id;
    $rss->loadMatchingObject();
    $rss->loadRefDiagnostics();
    $cim_dp = CCIM10::get($sejour->DP);
    $cim_dr = CCIM10::get($sejour->DR);
    $code = null;
Example #27
0
     if ($msg = $affectation->delete()) {
         CAppUI::stepAjax($msg, UI_MSG_ERROR);
     }
     break;
 case "A13":
     $sejour_id = CValue::post("sejour_id");
     $sejour = new CSejour();
     $sejour->load($sejour_id);
     $sejour->sortie_reelle = "";
     if ($msg = $sejour->store()) {
         CAppUI::stepAjax($msg, UI_MSG_ERROR);
     }
     break;
 case "INSERT":
     $sejour_id = CValue::post("sejour_id");
     $sejour = new CSejour();
     $sejour->load($sejour_id);
     $sejour->type = CValue::post("type");
     if ($sejour->type == "ambu" || $sejour->type == "urg") {
         $sejour->sortie_prevue = CMbDT::dateTime("+4 HOURS", $sejour->entree);
         if ($sejour->sortie_reelle) {
             $sejour->sortie_reelle = CMbDT::dateTime("+4 HOURS", $sejour->entree);
         }
         /* TODO Supprimer ceci après l'ajout des times picker */
         $sejour->_hour_entree_prevue = null;
         $sejour->_min_entree_prevue = null;
         $sejour->_hour_sortie_prevue = null;
         $sejour->_min_sortie_prevue = null;
     } elseif ($sejour->type == "comp") {
         $sejour->sortie_prevue = CMbDT::dateTime("+72 HOURS", $sejour->entree);
         if ($sejour->sortie_reelle) {
 /**
  * Enregistrement des actes CCAM
  * 
  * @param CHPrimXMLAcquittementsServeurActivitePmsi $dom_acq  DOM Acquittement
  * @param CMbObject                                 $mbObject Object
  * @param array                                     $data     Data that contain the nodes
  * 
  * @return string Acquittement 
  **/
 function handle(CHPrimXMLAcquittementsServeurActivitePmsi $dom_acq, CMbObject $mbObject, $data)
 {
     /** @var COperation $mbObject */
     $exchange_hprim = $this->_ref_echange_hprim;
     $sender = $exchange_hprim->_ref_sender;
     $sender->loadConfigValues();
     $this->_ref_sender = $sender;
     // Acquittement d'erreur : identifiants source du patient / séjour non fournis
     if (!$data['idSourcePatient'] || !$data['idSourceVenue']) {
         return $exchange_hprim->setAckError($dom_acq, "E206", null, $mbObject, $data);
     }
     // IPP non connu => message d'erreur
     $IPP = CIdSante400::getMatch("CPatient", $sender->_tag_patient, $data['idSourcePatient']);
     if (!$IPP->_id) {
         return $exchange_hprim->setAckError($dom_acq, "E013", null, $mbObject, $data);
     }
     // Chargement du patient
     $patient = new CPatient();
     $patient->load($IPP->object_id);
     // Num dossier non connu => message d'erreur
     $NDA = CIdSante400::getMatch("CSejour", $sender->_tag_sejour, $data['idSourceVenue']);
     if (!$NDA->_id) {
         return $exchange_hprim->setAckError($dom_acq, "E014", null, $mbObject, $data);
     }
     // Chargement du séjour
     $sejour = new CSejour();
     $sejour->load($NDA->object_id);
     // Si patient H'XML est différent du séjour
     if ($sejour->patient_id != $patient->_id) {
         return $exchange_hprim->setAckError($dom_acq, "E015", null, $mbObject, $data);
     }
     // Chargement du patient du séjour
     $sejour->loadRefPatient();
     //Mapping actes CCAM
     $actes = array("CCAM" => $this->mappingActesCCAM($data), "NGAP" => $this->mappingActesNGAP($data));
     $codes = array();
     $warning = array();
     foreach ($actes as $type => $_actes) {
         foreach ($_actes as $_key => $_acte) {
             $return = $this->storeActe($_acte, $type, $sejour, $patient, $sender->_tag_hprimxml);
             $number = $type == "CCAM" ? "0" : "1";
             //Cas d'une erreur lors de l'ajoutement
             if (!is_object($return)) {
                 $warning["A401"][] = $return;
                 $codes[$_acte["idSourceActe{$type}"]] = array("code" => "A4{$number}1", "commentaires" => $return);
                 $actes[$type][$_key]["statut"] = "avt";
                 continue;
             }
             $actes[$type][$_key]["statut"] = "ok";
             //Cas d'une modification ou d'un ajout
             if ($return->_id) {
                 $codes[$_acte["idSourceActe{$type}"]] = array("code" => "I4{$number}1", "commentaires" => null);
                 continue;
             }
             //Cas de la suppression
             $codes[$_acte["idSourceActe{$type}"]] = array("code" => "I4{$number}2", "commentaires" => null);
         }
     }
     return $exchange_hprim->setAck($dom_acq, $codes, $warning, null, $sejour, $actes);
 }
Example #29
0
$sejourVeille = new CSejour();
$whereVeille = array();
$whereVeille["sejour.entree"] = "<= '{$hierEntree}'";
$whereVeille["sejour.sortie"] = ">= '{$dateSortie}'";
$whereVeille["annule"] = "= '0'";
$whereVeille["type"] = "= 'comp'";
$countPresentVeille = $sejourVeille->countList($whereVeille);
// entree du jour
$sejourEntreeJour = new CSejour();
$whereEntree = array();
$whereEntree["sejour.entree"] = "BETWEEN '{$date_debut}' AND '{$date_fin}'";
$whereEntree["annule"] = "= '0'";
$whereEntree["type"] = "= 'comp'";
$countEntreeJour = $sejourEntreeJour->countList($whereEntree);
// sorties du jour
$sejourSortieJour = new CSejour();
$whereSortie = array();
$whereSortie["sejour.sortie"] = "BETWEEN '{$date_debut}' AND '{$date_fin}'";
$whereSortie["annule"] = "= '0'";
$whereSortie["type"] = "= 'comp'";
$countSortieJour = $sejourSortieJour->countList($whereSortie);
// Création du template
$smarty = new CSmartyDP();
$smarty->assign("date", $date);
$smarty->assign("totalHospi", $totalHospi);
$smarty->assign("totalMedecin", $totalMedecin);
$smarty->assign("totalAmbulatoire", $totalAmbulatoire);
$smarty->assign("services", $services);
$smarty->assign("list_affectations", $list_affectations);
$smarty->assign("total_service", $total_service);
$smarty->assign("countPresentVeille", $countPresentVeille);
Example #30
0
         if (isset($_POST["sc_patient_id"])) {
             $mbSejour->_ref_patient->_IPP = $_POST["sc_patient_id"];
         }
         if (isset($_POST["sc_venue_id"])) {
             $mbSejour->_NDA = $_POST["sc_venue_id"];
         }
         if (isset($_POST["cmca_uf_code"])) {
             $object->code_uf = $_POST["cmca_uf_code"];
         }
         if (isset($_POST["cmca_uf_libelle"])) {
             $object->libelle_uf = $_POST["cmca_uf_libelle"];
         }
     }
     break;
 case "CSejour":
     $object = new CSejour();
     // Chargement du séjour et génération du document
     $sejour_id = CValue::post("mb_sejour_id", CValue::getOrSession("object_id"));
     if ($object->load($sejour_id)) {
         $object->loadRefs();
         $object->loadRefDossierMedical();
         $object->loadNDA();
         $NDA = $object->_NDA;
         $object->_ref_patient->loadIPP();
         $IPP = $object->_ref_patient->_IPP;
         if (isset($_POST["sc_patient_id"])) {
             $object->_ref_patient->_IPP = $_POST["sc_patient_id"];
         }
         if (isset($_POST["sc_venue_id"])) {
             $object->_NDA = $_POST["sc_venue_id"];
         }