static function getInstance(CExchangeHL7v2 $exchange)
 {
     $msg = $exchange->getMessage();
     if (self::isSource($msg->toXML()->getMSHEvenementXML())) {
         $object = new CSyslogQ22Consumer();
     } else {
         $object = new CSyslogQ22Supplier();
     }
     $object->setExchange($exchange);
     return $object;
 }
 static function getInstance(CExchangeHL7v2 $exchange)
 {
     $msg = $exchange->getMessage();
     if (self::isSource($msg->toXML()->getMSHEvenementXML())) {
         $object = new CSyslogProvideAndRegisterDocumentSetResponse();
     } else {
         // Not implemented yet
         return false;
     }
     $object->setExchange($exchange);
     return $object;
 }
<?php

/* $Id $ */
/**
 * @package Mediboard
 * @subpackage hl7
 * @version $Revision: 15199 $
 * @author SARL OpenXtrem
 * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 */
$er7 = CValue::post("er7");
$exchange_id = CValue::post("exchange_id");
$exchange = new CExchangeHL7v2();
$exchange->load($exchange_id);
$exchange->loadRefsInteropActor();
if ($exchange->receiver_id) {
    /** @var CInteropReceiver $actor */
    $actor = $exchange->_ref_receiver;
    $actor->loadConfigValues();
} else {
    /** @var CInteropSender $actor */
    $actor = $exchange->_ref_sender;
    $actor->getConfigs($exchange);
}
$hl7_message = new CHL7v2Message();
$hl7_message->parse($er7);
/** @var CHL7v2MessageXML $xml */
$xml = $hl7_message->toXML(null, false);
$MSH = $xml->queryNode("MSH");
$EVN = $xml->queryNode("EVN");
$PID = $xml->queryNode("PID");
 * @link     http://www.mediboard.org
 */
CCanDo::checkAdmin();
$do_purge = CValue::get("do_purge");
$date_max = CValue::get("date_max");
$months = CValue::get("months", 1);
$max = CValue::get("max", 1000);
// Use months syntax
if ($months) {
    $date_max = CMbDT::date("- {$months} MONTHS");
}
// Check params
if (!$date_max) {
    CAppUI::stepAjax("Merci d'indiquer une date fin de recherche.", UI_MSG_ERROR);
}
$exchange_hl7v2 = new CExchangeHL7v2();
// Dry run
if (!$do_purge) {
    $where = array();
    $where["exchange_hl7v2.date_production"] = "< '{$date_max}'";
    $where["exchange_hl7v2.message_content_id"] = "IS NOT NULL";
    $where["exchange_hl7v2.acquittement_content_id"] = "IS NOT NULL";
    $count = $exchange_hl7v2->countList($where);
    CAppUI::stepAjax("CExchangeHL7v2-msg-purge_count", UI_MSG_OK, $count);
    return;
}
// Filtre sur les enregistrements
$content_tabular = new CContentTabular();
$count = 0;
$count += deleteContentAndUpdateExchange($content_tabular, "message_content_id", $date_max, $max);
$count += deleteContentAndUpdateExchange($content_tabular, "acquittement_content_id", $date_max, $max);
 private function parseRawVersion($raw, $country_code = null)
 {
     $parts = explode($this->componentSeparator, $raw);
     CMbArray::removeValue("", $parts);
     $this->version = $version = $parts[0];
     $actor = $this->actor;
     $configs = new CHL7Config();
     if ($actor instanceof CInteropSender) {
         $exchange_hl7v2 = new CExchangeHL7v2();
         $configs = $exchange_hl7v2->getConfigs($actor->_guid);
     }
     // On privilégie le code du pays sur l'acteur d'intégration
     $country_code = $configs->country_code ? $configs->country_code : $country_code;
     // Recherche depuis le code du pays
     switch ($country_code) {
         case "FRA":
         case "FR":
             $this->i18n_code = "FR";
             $this->extension = $version = "FR_2.3";
             break;
         default:
     }
     // Version spécifique française spécifiée
     if (!$country_code && count($parts) > 1) {
         $this->i18n_code = $parts[1];
         $this->extension = $version = "{$parts['1']}_{$parts['2']}";
     }
     // Dans le cas où la version passée est incorrecte on met par défaut 2.5
     if (!in_array($version, self::$versions)) {
         $this->version = CAppUI::conf("hl7 default_version");
     }
 }
 /**
  * Event
  *
  * @param CExchangeDataFormat $data_format Data format
  *
  * @return null|string
  */
 function event(CExchangeDataFormat $data_format)
 {
     $msg = $data_format->_message;
     /** @var CHL7v2Event $evt */
     $evt = $data_format->_family_message;
     $evt->_data_format = $data_format;
     // Récupération des informations du message
     /** @var CHL7v2MessageXML $dom_evt */
     $dom_evt = $evt->handle($msg);
     $dom_evt->_is_i18n = $evt->_is_i18n;
     try {
         // Création de l'échange
         $exchange_hl7v2 = new CExchangeHL7v2();
         $exchange_hl7v2->load($data_format->_exchange_id);
         // Récupération des données du segment MSH
         $data = $dom_evt->getMSHEvenementXML();
         // Gestion de l'acquittement
         $ack = $dom_evt->getEventACK($evt);
         $ack->message_control_id = $data['identifiantMessage'];
         // Message non supporté pour cet utilisateur
         $evt_class = CHL7Event::getEventClass($evt);
         if (!in_array($evt_class, $data_format->_messages_supported_class)) {
             $data_format->_ref_sender->_delete_file = false;
             // Pas de création d'échange dans le cas :
             // * où l'on ne souhaite pas traiter le message
             // * où le sender n'enregistre pas les messages non pris en charge
             if (!$data_format->_to_treatment || !$data_format->_ref_sender->save_unsupported_message) {
                 return;
             }
             $exchange_hl7v2->populateExchange($data_format, $evt);
             $exchange_hl7v2->loadRefsInteropActor();
             $exchange_hl7v2->populateErrorExchange(null, $evt);
             $ack->_ref_exchange_hl7v2 = $exchange_hl7v2;
             $msgAck = $ack->generateAcknowledgment("AR", "E001", "201");
             $exchange_hl7v2->populateErrorExchange($ack);
             return $msgAck;
         }
         $sender = $data_format->_ref_sender;
         $sender->getConfigs($data_format);
         // Acquittement d'erreur d'un document XML recu non valide
         if (!$sender->_configs["bypass_validating"] && !$evt->message->isOK(CHL7v2Error::E_ERROR)) {
             $exchange_hl7v2->populateExchange($data_format, $evt);
             $exchange_hl7v2->loadRefsInteropActor();
             $exchange_hl7v2->populateErrorExchange(null, $evt);
             $ack->_ref_exchange_hl7v2 = $exchange_hl7v2;
             $msgAck = $ack->generateAcknowledgment("AR", "E002", "207");
             $exchange_hl7v2->populateErrorExchange($ack);
             return $msgAck;
         }
         $exchange_hl7v2->populateExchange($data_format, $evt);
         $exchange_hl7v2->message_valide = 1;
         // Gestion des notifications ?
         if (!$exchange_hl7v2->_id) {
             $exchange_hl7v2->date_production = CMbDT::dateTime();
             $exchange_hl7v2->identifiant_emetteur = $data['identifiantMessage'];
         }
         $exchange_hl7v2->store();
         // Pas de traitement du message
         if (!$data_format->_to_treatment) {
             return;
         }
         $exchange_hl7v2->loadRefsInteropActor();
         // Chargement des configs de l'expéditeur
         $sender = $exchange_hl7v2->_ref_sender;
         $sender->getConfigs($data_format);
         if (!$dom_evt->checkApplicationAndFacility($data, $sender)) {
             return;
         }
         if (!empty($sender->_configs["handle_mode"])) {
             CHL7v2Message::setHandleMode($sender->_configs["handle_mode"]);
         }
         $dom_evt->_ref_exchange_hl7v2 = $exchange_hl7v2;
         $ack->_ref_exchange_hl7v2 = $exchange_hl7v2;
         // Message PAM / DEC / PDQ / SWF
         $msgAck = self::handleEvent($exchange_hl7v2, $dom_evt, $ack, $data);
         CHL7v2Message::resetBuildMode();
     } catch (Exception $e) {
         $exchange_hl7v2->populateExchange($data_format, $evt);
         $exchange_hl7v2->loadRefsInteropActor();
         $exchange_hl7v2->populateErrorExchange(null, $evt);
         $ack = new CHL7v2Acknowledgment($evt);
         $ack->message_control_id = isset($data['identifiantMessage']) ? $data['identifiantMessage'] : "000000000";
         $ack->_ref_exchange_hl7v2 = $exchange_hl7v2;
         $msgAck = $ack->generateAcknowledgment("AR", "E003", "207", "E", $e->getMessage());
         $exchange_hl7v2->populateErrorExchange($ack);
         CHL7v2Message::resetBuildMode();
     }
     return $msgAck;
 }
 * @license  GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version  $Revision$
 * @link     http://www.mediboard.org
 */
CCanDo::checkRead();
$receiver_guid = CValue::get("receiver_guid");
$exclude_event = CValue::get("exclude_event");
$include_event = CValue::get("include_event");
/** @var CReceiverHL7v2 $receiver */
$receiver = CMbObject::loadFromGuid($receiver_guid);
if (!$receiver && !$receiver->_id && !$receiver->actif) {
    return;
}
$receiver->loadConfigValues();
$where = '';
$echange_hl7v2 = new CExchangeHL7v2();
$ds = $echange_hl7v2->getDS();
$where['statut_acquittement'] = "IS NULL";
$where['sender_id'] = "IS NULL";
$where['receiver_id'] = "= '{$receiver->_id}'";
$where['message_valide'] = "= '1'";
$where['date_echange'] = "IS NULL";
$where['date_production'] = "BETWEEN '" . CMbDT::dateTime("-3 DAYS") . "' AND '" . CMbDT::dateTime("+1 DAYS") . "'";
if ($exclude_event) {
    $exclude_event = explode("|", $exclude_event);
    $where['code'] = $ds->prepareNotIn($exclude_event);
}
if ($include_event) {
    $include_event = explode("|", $include_event);
    $where['code'] = $ds->prepareIn($include_event);
}