<?php /** * Exchange viewer * * @category HprimXML * @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(); $echange_hprim_id = CValue::get("echange_hprim_id"); $echange_hprim = new CEchangeHprim(); $echange_hprim->load($echange_hprim_id); $evt = new CHPrimXMLEventPatient(); $domGetEvenement = $evt->getHPrimXMLEvenements($this->_message); $domGetEvenement->formatOutput = true; $doc_errors_msg = @$domGetEvenement->schemaValidate(null, true, false); $echange_hprim->_message = utf8_encode($domGetEvenement->saveXML()); // Création du template $smarty = new CSmartyDP(); $smarty->assign("echange_hprim", $echange_hprim); $smarty->display("echangeviewer.tpl");
/** * Send exchange * * @throws CMbException * * @return void */ function send() { $this->loadRefsInteropActor(); if (!$this->message_valide) { throw new CMbException("CExchangeDataFormat-msg-Invalid exchange"); } $receiver = $this->_ref_receiver; $receiver->loadConfigValues(); $evenement = null; $msg = $this->_message; if ($receiver instanceof CReceiverHL7v2) { if ($receiver->_configs["encoding"] == "UTF-8") { $msg = utf8_encode($msg); } $evenement = "evenementsPatient"; $data_format = CIHE::getEvent($this); } if ($receiver instanceof CDestinataireHprim) { if ($receiver->_configs["encoding"] == "UTF-8") { $msg = utf8_encode($msg); } if ($this->type == "patients") { $evenement = "evenementPatient"; $data_format = CHPrimXMLEventPatient::getHPrimXMLEvenements($this->_message); } if ($this->type == "pmsi") { $data_format = CHPrimXMLEventServeurActivitePmsi::getHPrimXMLEvenements($this->_message); $evenement = $data_format->sous_type; } } if ($receiver instanceof CPhastDestinataire) { $data_format = CPhastEvenementsPN13::getXMLEvenementsPN13($this->_message); $evenement = $data_format->sous_type; } if (!$evenement) { throw new CMbException("CExchangeDataFormat-msg-No events defined"); } $source = CExchangeSource::get("{$receiver->_guid}-{$evenement}"); if (!$source->_id || !$source->active) { throw new CMbException("CExchangeDataFormat-msg-No source for this actor"); } // Si on n'a pas d'IPP et NDA if ($this->master_idex_missing) { throw new CMbException("CExchangeDataFormat-msg-Master idex missing"); } $source->setData($msg, false, $this); $source->send(); $this->date_echange = CMbDT::dateTime(); // Si on n'a pas d'acquittement if (!($ack_data = $source->getACQ())) { $this->store(); return; } if ($this instanceof CEchangeHprim) { $ack_data = utf8_decode($ack_data); $ack = CHPrimXMLAcquittements::getAcquittementEvenementXML($data_format); $ack->loadXML($ack_data); $doc_valid = $ack->schemaValidate(); if ($doc_valid) { $this->statut_acquittement = $ack->getStatutAcquittement(); } } if ($this instanceof CExchangeHL7v2) { $ack = new CHL7v2Acknowledgment($data_format); $ack->handle($ack_data); $this->statut_acquittement = $ack->getStatutAcknowledgment(); $this->acquittement_valide = $ack->message->isOK(CHL7v2Error::E_ERROR) ? 1 : 0; } if ($this instanceof CExchangePhast) { $ack = new CPhastAcquittementsPN13(); $ack->loadXML($ack_data); $doc_valid = $ack->schemaValidate(); if ($doc_valid) { $this->statut_acquittement = $ack->getCodeAcquittement(); } } $this->_acquittement = $ack_data; $this->store(); }