/** * 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(); }
/** * 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; }
/** * 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) {
/** * $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");
* $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"; } }
// 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");
<?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");
/** * 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; }
<?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");
* * @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();
<?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;
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); }
$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);
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"]; }