<?php /* $Id $ */ /** * @package Mediboard * @subpackage sip * @version $Revision: 19269 $ * @author SARL OpenXtrem * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html */ CCanDo::checkAdmin(); $receiver = new CDestinataireHprim(); $receivers = $receiver->loadMatchingList(); // Création du template $smarty = new CSmartyDP(); $smarty->assign("receivers", $receivers); $smarty->display("configure.tpl");
if ($sejour->_ref_prescripteurs) { $sejour->loadRefsPrescripteurs(); } $sejour->loadRefAdresseParPraticien(); $sejour->_ref_patient->loadRefsFwd(); $sejour->loadRefsActes(); foreach ($sejour->_ref_actes_ccam as $actes_ccam) { $actes_ccam->loadRefPraticien(); } $sejour->loadRefsAffectations(); $sejour->loadNDA(); $sejour->loadLogs(); $sejour->loadRefsConsultations(); $sejour->loadRefsConsultAnesth(); $sejour->_ref_last_log->type = "create"; $dest_hprim = new CDestinataireHprim(); $dest_hprim->message = "patients"; $dest_hprim->loadMatchingObject(); if (!$sejour->_NDA) { $nda = new CIdSante400(); //Paramétrage de l'id 400 $nda->object_class = "CSejour"; $nda->object_id = $nda->_id; $nda->tag = $dest_hprim->_tag_sejour; $nda->loadMatchingObject(); $sejour->_NDA = $nda->id400; } if (CAppUI::conf("sip send_sej_pa") && $sejour->_etat != "preadmission") { continue; } if (CAppUI::conf("sip sej_no_numdos") && $sejour->_NDA && $sejour->_NDA != "-") {
$max = $sip_config["export_segment"]; $max = min($max, $count); CAppUI::stepAjax("Export de {$max} sur {$count} objets de type 'CPatient' à partir de l'ID '{$idMin}'", UI_MSG_OK); // Time limit $seconds = max($max / 20, 120); CAppUI::stepAjax("Limite de temps du script positionné à '{$seconds}' secondes", UI_MSG_OK); CApp::setTimeLimit($seconds); // Export réel $errors = 0; $patients = $patient->loadList($where, $patient->_spec->key, "0, {$max}"); $echange = 0; foreach ($patients as $patient) { $patient->loadIPP(); $patient->loadRefsSejours(); $patient->_ref_last_log->type = "create"; $receiver = new CDestinataireHprim(); $receiver->load(CAppUI::conf("sip export_dest")); $receiver->loadConfigValues(); if (!$patient->_IPP) { $IPP = new CIdSante400(); //Paramétrage de l'id 400 $IPP->object_class = "CPatient"; $IPP->object_id = $patient->_id; $IPP->tag = $receiver->_tag_patient; $IPP->loadMatchingObject(); $patient->_IPP = $IPP->id400; } if (CAppUI::conf("sip pat_no_ipp") && $patient->_IPP && $patient->_IPP != "-" || !$receiver->_configs["send_all_patients"] && empty($patient->_ref_sejours)) { continue; } $dom = new CHPrimXMLEnregistrementPatient();
$notification->store(); } else { $notification->date_echange = ""; $notification->store(); } } else { $notification->date_echange = ""; $notification->store(); } } } else { // Chargement de l'objet /** @var CEchangeHprim $echange_hprim */ $echange_hprim = new $echange_hprim_classname(); $echange_hprim->load($echange_hprim_id); $dest_hprim = new CDestinataireHprim(); $dest_hprim->load($echange_hprim->receiver_id); $source = CExchangeSource::get("{$dest_hprim->_guid}-evenementPatient"); $source->setData($echange_hprim->_message); $source->send(); $acquittement = $source->getACQ(); if ($acquittement) { $domGetAcquittement = new CHPrimXMLAcquittementsPatients(); $domGetAcquittement->loadXML($acquittement); $doc_valid = $domGetAcquittement->schemaValidate(null, false, $dest_hprim->display_errors); if ($doc_valid) { $echange_hprim->statut_acquittement = $domGetAcquittement->getStatutAcquittementPatient(); } $echange_hprim->acquittement_valide = $doc_valid ? 1 : 0; $echange_hprim->date_echange = CMbDT::dateTime(); $echange_hprim->_acquittement = $acquittement;
if ($sejour->_ref_prescripteurs) { $sejour->loadRefsPrescripteurs(); } $sejour->loadRefAdresseParPraticien(); $sejour->_ref_patient->loadRefsFwd(); $sejour->loadRefsActes(); foreach ($sejour->_ref_actes_ccam as $actes_ccam) { $actes_ccam->loadRefPraticien(); } $sejour->loadRefsAffectations(); $sejour->loadNDA(); $sejour->loadLogs(); $sejour->loadRefsConsultations(); $sejour->loadRefsConsultAnesth(); $sejour->_ref_last_log->type = "create"; $dest_hprim = new CDestinataireHprim(); $dest_hprim->load(CAppUI::conf("sip export_dest")); $dest_hprim->loadConfigValues(); if (!$sejour->_NDA) { $nda = new CIdSante400(); //Paramétrage de l'id 400 $nda->object_class = "CSejour"; $nda->object_id = $sejour->_id; $nda->tag = $dest_hprim->_tag_sejour; $nda->loadMatchingObject(); $sejour->_NDA = $nda->id400; } if (!$sejour->_ref_patient->_IPP) { $IPP = new CIdSante400(); $IPP->object_class = "CPatient"; $IPP->object_id = $sejour->_ref_patient->_id;
/** * Mapping et enregistrement de la venue * * @param CSejour &$newVenue Séjour * @param array $data Datas * @param string $etatVenueEliminee État de la venue à éliminer * @param CIdSante400 &$idexVenue Idex de la venue * @param CIdSante400 &$idexVenueEliminee Idex de la venue à éliminer * * @return array */ private function mapAndStoreVenue(&$newVenue, $data, $etatVenueEliminee, CIdSante400 &$idexVenue, CIdSante400 &$idexVenueEliminee) { $sender = new CDestinataireHprim(); $sender->nom = $data['idClient']; $sender->loadMatchingObject(); $messages = array(); // Mapping de la venue a éliminer $newVenue = $this->mappingVenue($data['venueEliminee'], $newVenue); // Mapping de la venue a garder $newVenue = $this->mappingVenue($data['venue'], $newVenue); // Notifier les autres destinataires $newVenue->_eai_sender_guid = $sender->_guid; // Séjour retrouvé if ($newVenue->loadMatchingSejour() || $newVenue->_id) { $messages['_code_NumDos'] = "A121"; $messages['_code_Venue'] = "store"; } else { $messages['_code_NumDos'] = "I122"; $messages['_code_Venue'] = "create"; } $messages['msgVenue'] = $newVenue->store(); $messages['commentaire'] = CEAISejour::getComment($newVenue); $idexVenue->object_id = $newVenue->_id; $idexVenue->last_update = CMbDT::dateTime(); $messages['msgNumDosVenue'] = $idexVenue->store(); $idexVenueEliminee->tag = $etatVenueEliminee != "préadmission" ? CAppUI::conf('dPplanningOp CSejour tag_dossier_cancel') . $sender->_tag_sejour : CAppUI::conf('dPplanningOp CSejour tag_dossier_pa') . $sender->_tag_sejour; $idexVenueEliminee->object_id = $newVenue->_id; $idexVenueEliminee->last_update = CMbDT::dateTime(); $messages['msgNumDosVenueEliminee'] = $idexVenueEliminee->store(); return $messages; }
if ($sejour->_ref_prescripteurs) { $sejour->loadRefsPrescripteurs(); } $sejour->loadRefAdresseParPraticien(); $sejour->_ref_patient->loadRefsFwd(); $sejour->loadRefsActes(); foreach ($sejour->_ref_actes_ccam as $actes_ccam) { $actes_ccam->loadRefPraticien(); } $sejour->loadRefsAffectations(); $sejour->loadNDA(); $sejour->loadLogs(); $sejour->loadRefsConsultations(); $sejour->loadRefsConsultAnesth(); $sejour->_ref_last_log->type = "create"; $dest_hprim = new CDestinataireHprim(); $dest_hprim->load(CAppUI::conf("smp export_dest")); $dest_hprim->loadConfigValues(); if (!$sejour->_NDA) { $nda = new CIdSante400(); //Paramétrage de l'id 400 $nda->object_class = "CSejour"; $nda->object_id = $sejour->_id; $nda->tag = $dest_hprim->_tag_sejour; $nda->loadMatchingObject(); $sejour->_NDA = $nda->id400; } if (!$sejour->_ref_patient->_IPP) { $IPP = new CIdSante400(); $IPP->object_class = "CPatient"; $IPP->object_id = $sejour->_ref_patient->_id;
CAppUI::stepAjax("Type de l'échange invalide", UI_MSG_ERROR); } $files = CAppUI::readFiles($path); ini_set("memory_limit", "512M"); CApp::setTimeLimit(360); CMbObject::$useObjectCache = false; $counter = 0; foreach ($files as $_file) { $xmlfile = file_get_contents("{$path}/{$_file}"); // Chargement du fichier XML $domEvenement->loadXML($xmlfile); // Création de l'échange $echg_hprim = new CEchangeHprim(); $data = $domEvenement->getEnteteEvenementXML($evt); $data = array_merge($data, $domEvenement->getContentsXML()); $dest_hprim = new CDestinataireHprim(); $dest_hprim->register($data['idClient']); $echg_hprim->date_production = $data['dateHeureProduction']; $echg_hprim->date_echange = date("Y-m-d H:m:s", filemtime("{$path}/{$_file}")); $echg_hprim->group_id = CGroups::loadCurrent()->_id; $echg_hprim->receiver_id = $dest_hprim->_id; $echg_hprim->type = $domEvenement->type; $echg_hprim->sous_type = $domEvenement->sous_type; $echg_hprim->_message = utf8_encode($xmlfile); $doc_valid = $domEvenement->schemaValidate(null, false, $dest_hprim->display_errors); $echg_hprim->message_valide = $doc_valid ? 1 : 0; if ($type == "pmsi") { $echg_hprim->object_class = "CSejour"; $echg_hprim->object_id = str_replace("sj", "", $data['idSourceVenue']); $echg_hprim->id_permanent = $data['idCibleVenue']; } elseif ($type == "actes") {