/**
  * @see parent::fillTemplate()
  */
 function fillTemplate(&$template)
 {
     $this->loadRefsFwd();
     $this->_ref_consultation->fillTemplate($template);
     $this->fillLimitedTemplate($template);
     $this->_ref_operation->fillLimitedTemplate($template);
     $this->_ref_sejour->fillLimitedTemplate($template);
     // Dossier médical
     $this->_ref_sejour->loadRefDossierMedical()->fillTemplate($template, "Sejour");
     if (CModule::getActive("dPprescription")) {
         $sejour = $this->_ref_sejour;
         $sejour->loadRefsPrescriptions();
         $prescription = isset($sejour->_ref_prescriptions["pre_admission"]) ? $sejour->_ref_prescriptions["pre_admission"] : new CPrescription();
         $prescription->type = "pre_admission";
         $prescription->fillLimitedTemplate($template);
         $prescription = isset($sejour->_ref_prescriptions["sejour"]) ? $sejour->_ref_prescriptions["sejour"] : new CPrescription();
         $prescription->type = "sejour";
         $prescription->fillLimitedTemplate($template);
         $prescription = isset($sejour->_ref_prescriptions["sortie"]) ? $sejour->_ref_prescriptions["sortie"] : new CPrescription();
         $prescription->type = "sortie";
         $prescription->fillLimitedTemplate($template);
     }
 }
Exemple #2
0
 /**
  * @see parent::fillLimitedTemplate()
  */
 function fillLimitedTemplate(&$template)
 {
     // Ajout du praticien pour les destinataires possibles (dans l'envoi d'un email)
     $chir = $this->loadRefPraticien();
     $template->destinataires[] = array("nom" => "Dr " . $chir->_user_last_name . " " . $chir->_user_first_name, "email" => $chir->_user_email, "tag" => "Praticien");
     $this->notify("BeforeFillLimitedTemplate", $template);
     $this->loadRefsOperations();
     $template->addLongDateProperty("Admission - Date longue", $this->entree_prevue);
     $template->addDateProperty("Admission - Date", $this->entree_prevue);
     $template->addTimeProperty("Admission - Heure", $this->entree_prevue);
     $template->addProperty("Admission - Type", $this->getFormattedValue("type"));
     $template->addProperty("Hospitalisation - Durée", $this->_duree_prevue);
     $template->addDateProperty("Hospitalisation - Date sortie", $this->sortie_prevue);
     $template->addProperty("Hospitalisation - Date sortie longue", $this->getFormattedValue("sortie_prevue"));
     $this->loadNDA();
     $template->addProperty("Sejour - Numéro de dossier", $this->_NDA);
     $template->addProperty("Sejour - Concerné par l'ALD", $this->getFormattedValue("ald"));
     $template->addBarcode("Sejour - Code barre ID", $this->_id);
     $template->addBarcode("Sejour - Code barre NDOS", $this->_NDA);
     $template->addDateProperty("Sejour - Date entrée", $this->entree);
     $template->addLongDateProperty("Sejour - Date entrée (longue)", $this->entree);
     $template->addTimeProperty("Sejour - Heure entrée", $this->entree);
     $template->addDateProperty("Sejour - Date sortie", $this->sortie);
     $template->addLongDateProperty("Sejour - Date sortie (longue)", $this->sortie);
     $template->addTimeProperty("Sejour - Heure sortie", $this->sortie);
     $template->addDateProperty("Sejour - Date entrée réelle", $this->entree_reelle);
     $template->addTimeProperty("Sejour - Heure entrée réelle", $this->entree_reelle);
     $template->addDateProperty("Sejour - Date sortie réelle", $this->sortie_reelle);
     $template->addTimeProperty("Sejour - Heure sortie réelle", $this->sortie_reelle);
     $template->addProperty("Sejour - Mode d'entrée", $this->getFormattedValue("mode_entree"));
     $template->addProperty("Sejour - Mode de sortie", $this->getFormattedValue("mode_sortie"));
     $template->addProperty("Sejour - Service de sortie", $this->getFormattedValue("service_sortie_id"));
     $template->addProperty("Sejour - Etablissement de sortie", $this->getFormattedValue("etablissement_sortie_id"));
     $template->addProperty("Sejour - Commentaires de sortie", $this->getFormattedValue("commentaires_sortie"));
     $template->addProperty("Sejour - Libelle", $this->getFormattedValue("libelle"));
     $template->addProperty("Sejour - Transport", $this->getFormattedValue("transport"));
     /** @var CExamIgs $last_exam_igs */
     $last_exam_igs = $this->loadLastBackRef("exams_igs");
     $template->addProperty("Sejour - Score IGS", $last_exam_igs->_id ? $last_exam_igs->scoreIGS : "");
     $template->addProperty("Sejour - Score IGS Simplifié", $last_exam_igs->_id ? $last_exam_igs->simplified_igs : "");
     $consult_anesth = $this->loadRefsConsultAnesth();
     $consult = $consult_anesth->loadRefConsultation();
     $consult->loadRefPlageConsult();
     $cpa_datetime = $consult->_id ? $consult->_datetime : "";
     $template->addDateProperty("Sejour - Consultation anesthésie - Date", $cpa_datetime);
     $template->addLongDateProperty("Sejour - Consultation anesthésie - Date (longue)", $cpa_datetime);
     $template->addLongDateProperty("Sejour - Consultation anesthésie - Date (longue, minuscule)", $cpa_datetime);
     $template->addTimeProperty("Sejour - Consultation anesthésie - Heure", $cpa_datetime);
     $this->loadRefsFiles();
     $list = CMbArray::pluck($this->_ref_files, "file_name");
     $template->addListProperty("Sejour - Liste des fichiers", $list);
     if (CAppUI::conf("dPurgences old_rpu") == "1") {
         if (CModule::getActive("sherpa")) {
             $rpu = $this->loadRefRPU();
             $template->addProperty("Sejour - Provenance", $rpu->_id ? $rpu->getFormattedValue("urprov") : "");
         }
     } else {
         $template->addProperty("Sejour - Provenance", $this->getFormattedValue("provenance"));
         $template->addProperty("Sejour - Destination", $this->getFormattedValue("destination"));
     }
     $this->loadRefPraticien();
     $template->addProperty("Hospitalisation - Praticien", "Dr " . $this->_ref_praticien->_view);
     $this->loadRefsAffectations();
     $this->_ref_last_affectation->loadView();
     $last_affectation = $this->_ref_last_affectation;
     $template->addProperty("Hospitalisation - Dernière affectation", $last_affectation->_view);
     $template->addProperty("Hospitalisation - Dernière affectation (Service)", $last_affectation->loadRefService()->_view);
     $template->addProperty("Hospitalisation - Dernière affectation (Secteur)", $last_affectation->_ref_service->loadRefSecteur()->nom);
     $affectations = array();
     if (count($this->_ref_affectations)) {
         foreach ($this->_ref_affectations as $_aff) {
             $affectations[] = "{$_aff->_view} du " . CMbDT::format($_aff->entree, CAppUI::conf("datetime")) . " au " . CMbDT::format($_aff->sortie, CAppUI::conf("datetime"));
         }
     }
     $template->addListProperty("Sejour - Affectations", $affectations);
     // Diagnostics
     $this->loadExtDiagnostics();
     $diag = $this->DP ? "{$this->DP}: {$this->_ext_diagnostic_principal->libelle}" : null;
     $template->addProperty("Sejour - Diagnostic Principal", $diag);
     $diag = $this->DR ? "{$this->DR}: {$this->_ext_diagnostic_relie->libelle}" : null;
     $template->addProperty("Sejour - Diagnostic Relié", $diag);
     $template->addProperty("Sejour - Remarques", $this->rques);
     // Chargement du suivi medical (transmissions, observations, prescriptions)
     $this->loadSuiviMedical();
     // Transmissions
     $transmissions = array();
     if (isset($this->_back["transmissions"])) {
         foreach ($this->_back["transmissions"] as $_trans) {
             $datetime = CMbDT::format($_trans->date, CAppUI::conf('datetime'));
             $transmissions["{$_trans->date} {$_trans->_guid}"] = "{$_trans->text}, le {$datetime}, {$_trans->_ref_user->_view}";
         }
     }
     $template->addListProperty("Sejour - Transmissions", $transmissions);
     $this->loadRefsTransmissions(false, true, false);
     $transmissions_hautes = array();
     foreach ($this->_ref_transmissions as $_trans) {
         $_trans->loadRefUser();
         $datetime = CMbDT::format($_trans->date, CAppUI::conf('datetime'));
         $transmissions_hautes["{$_trans->date} {$_trans->_guid}"] = "{$_trans->text}, le {$datetime}, {$_trans->_ref_user->_view}";
     }
     $template->addListProperty("Sejour - Transmissions - importance haute", $transmissions_hautes);
     $this->loadRefsTransmissions(true, false, true);
     $transmissions_macro = array();
     foreach ($this->_ref_transmissions as $_trans) {
         $_trans->loadRefUser();
         $datetime = CMbDT::format($_trans->date, CAppUI::conf('datetime'));
         $transmissions_macro["{$_trans->date} {$_trans->_guid}"] = "{$_trans->text}, le {$datetime}, {$_trans->_ref_user->_view}";
     }
     $template->addListProperty("Sejour - Transmissions - macrocible", $transmissions_macro);
     // Observations
     $observations = array();
     if (isset($this->_back["observations"])) {
         foreach ($this->_back["observations"] as $_obs) {
             $datetime = CMbDT::format($_obs->date, CAppUI::conf('datetime'));
             $observations["{$_obs->date} {$_obs->_guid}"] = "{$_obs->text}, le {$datetime}, {$_obs->_ref_user->_view}";
         }
         ksort($observations);
     }
     $template->addListProperty("Sejour - Observations", $observations);
     // Observation d'entrée
     /** @var CConsultation $obs_entree */
     $obs_entree = $this->loadRefObsEntree();
     $template->addProperty("Sejour - Observation entrée - Motif", $obs_entree->getFormattedValue("motif"));
     $template->addProperty("Sejour - Observation entrée - Examen clinique", $obs_entree->getFormattedValue("examen"));
     $template->addProperty("Sejour - Observation entrée - Remarques", $obs_entree->getFormattedValue("rques"));
     $template->addProperty("Sejour - Observation entrée - Traitements", $obs_entree->getFormattedValue("traitement"));
     $template->addProperty("Sejour - Observation entrée - Histoire de la maladie", $obs_entree->getFormattedValue("histoire_maladie"));
     $template->addProperty("Sejour - Observation entrée - Au total", $obs_entree->getFormattedValue("conclusion"));
     // Prescriptions
     $lines = array();
     if (CModule::getActive('dPprescription')) {
         $prescription = $this->loadRefPrescriptionSejour();
         $prescription->loadRefsLinesAllComments();
         $prescription->loadRefsLinesElement();
         if (isset($prescription->_ref_prescription_lines_all_comments)) {
             foreach ($prescription->_ref_prescription_lines_all_comments as $_comment) {
                 $datetime = CMbDT::format("{$_comment->debut} {$_comment->time_debut}", CAppUI::conf('datetime'));
                 $lines["{$_comment->debut} {$_comment->time_debut} {$_comment->_guid}"] = "{$_comment->_view}, {$datetime}, {$_comment->_ref_praticien->_view}";
             }
         }
         if (isset($prescription->_ref_prescription_lines_element)) {
             foreach ($prescription->_ref_prescription_lines_element as $_line_element) {
                 $datetime = CMbDT::format("{$_line_element->debut} {$_line_element->time_debut}", CAppUI::conf('datetime'));
                 $view = "{$_line_element->_view}";
                 if ($_line_element->commentaire) {
                     $view .= " ({$_line_element->commentaire})";
                 }
                 $view .= ", {$datetime}, " . $_line_element->_ref_praticien->_view;
                 $lines["{$_line_element->debut} {$_line_element->time_debut} {$_line_element->_guid}"] = $view;
             }
         }
         krsort($lines);
         $template->addListProperty("Sejour - Prescription light", $lines);
     }
     // Suivi médical: transmissions, observations, prescriptions
     $suivi_medical = $transmissions + $observations + $lines;
     krsort($suivi_medical);
     $template->addListProperty("Sejour - Suivi médical", $suivi_medical);
     // Interventions
     $operations = array();
     foreach ($this->_ref_operations as $_operation) {
         $_operation->loadRefPlageOp(true);
         $datetime = $_operation->getFormattedValue("_datetime");
         $chir = $_operation->loadRefChir(true);
         $operations[] = "le {$datetime}, par {$chir->_view}" . ($_operation->libelle ? " : {$_operation->libelle}" : "");
     }
     $template->addListProperty("Sejour - Intervention - Liste", $operations);
     // Dernière intervention
     $this->_ref_last_operation->fillLimitedTemplate($template);
     // Consultations
     $consults = array();
     foreach ($this->loadRefsConsultations() as $_consult) {
         $_consult->loadRefsDossiersAnesth();
         if (count($_consult->_refs_dossiers_anesth)) {
             foreach ($_consult->_refs_dossiers_anesth as $_dossier_anesth) {
                 if ($_dossier_anesth->conclusion) {
                     $consults[] = $_dossier_anesth->conclusion;
                 }
             }
         } else {
             if ($_consult->conclusion) {
                 $consults[] = $_consult->conclusion;
             }
         }
     }
     $template->addListProperty("Sejour - Conclusions des consultations", $consults);
     if (CAppUI::conf("dPhospi prestations systeme_prestations", CGroups::loadCurrent()) == "expert") {
         $items_liaisons = $this->loadBackRefs("items_liaisons", "date");
         CStoredObject::massLoadFwdRef($items_liaisons, "item_souhait_id");
         CStoredObject::massLoadFwdRef($items_liaisons, "sous_item_id");
         $souhaits = array();
         $ponctuelles = array();
         foreach ($items_liaisons as $_liaison) {
             $item_souhait = $_liaison->loadRefItem();
             if ($item_souhait->object_class == "CPrestationPonctuelle") {
                 $ponctuelles[] = $item_souhait->nom;
                 continue;
             }
             $sous_item = $_liaison->loadRefSousItem();
             $nom = $item_souhait;
             if ($sous_item->_id) {
                 $nom = $sous_item->nom;
             }
             $souhaits[] = $nom;
         }
         $template->addListProperty("Sejour - Prestations souhaitées", $souhaits);
         $template->addListProperty("Sejour - Prestations ponctuelles", $ponctuelles);
     }
     // Régime
     $regimes = array();
     if ($this->hormone_croissance) {
         $regimes[] = CAppUI::tr("CSejour-hormone_croissance");
     }
     if ($this->repas_sans_sel) {
         $regimes[] = CAppUI::tr("CSejour-repas_sans_sel");
     }
     if ($this->repas_sans_porc) {
         $regimes[] = CAppUI::tr("CSejour-repas_sans_porc");
     }
     if ($this->repas_diabete) {
         $regimes[] = CAppUI::tr("CSejour-repas_diabete");
     }
     if ($this->repas_sans_residu) {
         $regimes[] = CAppUI::tr("CSejour-repas_sans_residu");
     }
     if (!count($regimes)) {
         $template->addProperty("Sejour - Régime", CAppUI::tr("CSejour-no_diet_specified"));
     } else {
         $template->addListProperty("Sejour - Régime", $regimes);
     }
     if (CAppUI::conf("dPhospi prestations systeme_prestations", CGroups::loadCurrent()) == "expert") {
         $liaisons_j = $dates = $list_souhaits = array();
         self::getIntervallesPrestations($liaisons_j, $dates);
         foreach ($liaisons_j as $prestation_id => $_liaisons) {
             foreach ($_liaisons as $date => $_liaison) {
                 if (!$_liaison->item_souhait_id) {
                     continue;
                 }
                 $_item_souhait = $_liaison->loadRefItem();
                 $_sous_item = $_liaison->loadRefSousItem();
                 $dates_liaison = $dates[$_liaison->_id];
                 $list_souhaits[] = "Du " . CMbDT::dateToLocale($dates_liaison["debut"]) . " au " . CMbDT::dateToLocale($dates_liaison["fin"]) . " : " . ($_sous_item->_id ? $_sous_item->nom : $_item_souhait->nom);
             }
         }
         $template->addListProperty("Sejour - Prestations souhaitées", $list_souhaits);
     }
     if (CModule::getActive("forms")) {
         CExObject::addFormsToTemplate($template, $this, "Sejour");
     }
     if (CModule::getActive("dPfacturation") && CAppUI::conf("dPplanningOp CFactureEtablissement use_facture_etab")) {
         $this->loadRefsFactureEtablissement();
         $this->loadNRA();
         $this->_ref_last_facture->fillLimitedTemplate($template);
         $template->addProperty("Sejour - Nature du séjour", $this->getFormattedValue("_type_sejour"));
         $template->addProperty("Sejour - Remarques base", $this->getFormattedValue("_rques_assurance_maladie"));
         $template->addProperty("Sejour - Remarques compl.", $this->getFormattedValue("_rques_assurance_accident"));
         $template->addProperty("Sejour - Numéro de cas", $this->_ref_NRA && $this->_ref_NRA->_id ? $this->_ref_NRA->id400 : "-");
     }
     if (CModule::getActive("mvsante")) {
         CMVSante::fillLimitedTemplate($template, $this);
     }
     if (CModule::getActive("maternite")) {
         $grossesse = $this->loadRefGrossesse();
         $naissance = new CNaissance();
         $enfant = new CPatient();
         $constantes_enfant = new CConstantesMedicales();
         if ($this->grossesse_id && count($grossesse->loadRefsNaissances())) {
             /** @var CNaissance $naissance */
             $naissance = reset($grossesse->_ref_naissances);
             $enfant = $naissance->loadRefSejourEnfant()->loadRefPatient();
             $constantes_enfant = reset($enfant->loadRefLatestConstantes(null, array("poids")));
         }
         $template->addProperty("Sejour - Accouchement - Heure de naissance", $naissance->getFormattedValue("_heure"));
         $date_naiss = $naissance->date_time;
         $date_naiss_word = CMbDT::format($date_naiss, "%A") . " " . CMbString::toWords(CMbDT::format($date_naiss, "%d")) . " " . CMbDT::format($date_naiss, "%B") . " " . CMbString::toWords(CMbDT::format($date_naiss, "%Y"));
         $heure_naiss_word = CMbString::toWords(CMbDT::format($date_naiss, "%H")) . " heures " . CMbString::toWords(CMbDT::format($date_naiss, "%M")) . " minutes";
         $template->addProperty("Sejour - Accouchement - Date de naissance (lettre)", $date_naiss_word);
         $template->addProperty("Sejour - Accouchement - Heure de naissance (lettre)", $heure_naiss_word);
         $template->addProperty("Sejour - Accouchement - Sexe de l'enfant", $enfant->getFormattedValue("sexe"));
         $template->addProperty("Sejour - Accouchement - Poids (kg)", $constantes_enfant->poids . " kg");
         $template->addProperty("Sejour - Accouchement - Poids (g)", $constantes_enfant->_poids_g . " g");
         $template->addProperty("Sejour - Accouchement - Prénom de l'enfant", $enfant->prenom);
         $template->addProperty("Sejour - Accouchement - Nom de l'enfant", $enfant->nom);
     }
     $this->notify("AfterFillLimitedTemplate", $template);
 }