/** * Récupération du tag du mediuser * * @return string */ function getTagMediuser() { $this->_ref_echange_hprim->loadRefsInteropActor(); return $this->_ref_echange_hprim->_ref_receiver->_tag_mediuser; }
/** * Event dispatch * * @param CExchangeDataFormat $data_format Exchange data format * * @throws CMbException * * @return string Acquittement */ function event(CExchangeDataFormat $data_format) { $msg = $data_format->_message; /** @var CHPrimXML $evt */ $evt = $data_format->_family_message; $evt->_data_format = $data_format; /** @var CHPrimXMLEvenements $dom_evt */ $dom_evt = $evt->getHPrimXMLEvenements($msg); $dom_evt_class = get_class($dom_evt); if (!in_array($dom_evt_class, $data_format->_messages_supported_class)) { throw new CMbException(CAppUI::tr("CEAIDispatcher-no_message_supported_for_this_actor", $dom_evt_class)); } // Récupération du noeud racine $root = $dom_evt->documentElement; $nodeName = $root->nodeName; // Création de l'échange $echg_hprim = new CEchangeHprim(); $data_format->loadRefsInteropActor(); $data_format->_ref_sender->getConfigs($data_format); $dom_evt->_ref_sender = $data_format->_ref_sender; try { // Récupération des données de l'entête $data = $dom_evt->getEnteteEvenementXML($nodeName); $echg_hprim->load($data_format->_exchange_id); // Gestion des notifications ? if (!$echg_hprim->_id) { $echg_hprim->populateEchange($data_format, $dom_evt); $echg_hprim->identifiant_emetteur = $data['identifiantMessage']; $echg_hprim->message_valide = 1; } $echg_hprim->loadRefsInteropActor(); // Chargement des configs de l'expéditeur $echg_hprim->_ref_sender->getConfigs($data_format); $configs = $echg_hprim->_ref_sender->_configs; $display_errors = isset($configs["display_errors"]) ? $configs["display_errors"] : true; $doc_errors = $dom_evt->schemaValidate(null, false, $display_errors); // Gestion de l'acquittement $dom_acq = CHPrimXMLAcquittements::getAcquittementEvenementXML($dom_evt); $dom_acq->_identifiant_acquitte = $data['identifiantMessage']; $dom_acq->_sous_type_evt = $dom_evt->sous_type; // Acquittement d'erreur d'un document XML recu non valide if ($doc_errors !== true) { $echg_hprim->populateEchange($data_format, $dom_evt); $dom_acq->_ref_echange_hprim = $echg_hprim; $msgAcq = $dom_acq->generateAcquittements($dom_acq instanceof CHPrimXMLAcquittementsServeurActivitePmsi ? "err" : "erreur", "E002", $doc_errors); $doc_valid = $dom_acq->schemaValidate(null, false, $display_errors); $echg_hprim->populateErrorEchange($msgAcq, $doc_valid, "erreur"); return $msgAcq; } $echg_hprim->date_production = CMbDT::dateTime(); $echg_hprim->store(); if (!$data_format->_to_treatment) { return null; } $dom_evt->_ref_echange_hprim = $echg_hprim; $dom_acq->_ref_echange_hprim = $echg_hprim; // Message événement patient if ($dom_evt instanceof CHPrimXMLEvenementsPatients) { return self::eventPatient($dom_evt, $dom_acq, $echg_hprim, $data); } // Message serveur activité PMSI if ($dom_evt instanceof CHPrimXMLEvenementsServeurActivitePmsi) { return self::eventPMSI($dom_evt, $dom_acq, $echg_hprim, $data); } } catch (Exception $e) { $echg_hprim->populateEchange($data_format, $dom_evt); $dom_acq = CHPrimXMLAcquittements::getAcquittementEvenementXML($dom_evt); // Type par défaut $dom_acq->_sous_type_evt = "none"; $dom_acq->_identifiant_acquitte = isset($data['identifiantMessage']) ? $data['identifiantMessage'] : "000000000"; $dom_acq->_ref_echange_hprim = $echg_hprim; $msgAcq = $dom_acq->generateAcquittements($dom_acq instanceof CHPrimXMLAcquittementsServeurActivitePmsi ? "err" : "erreur", "E009", $e->getMessage(), null, $data); $doc_valid = $dom_acq->schemaValidate(null, false, false); $echg_hprim->populateErrorEchange($msgAcq, $doc_valid, "erreur"); return $msgAcq; } return null; }