コード例 #1
0
 /**
  * Send event
  *
  * @param CHL7v2Event $evenement Event type
  * @param CMbObject   $mbObject  Object
  *
  * @return null|string
  *
  * @throws CMbException
  */
 function sendEvent($evenement, CMbObject $mbObject)
 {
     $evenement->_receiver = $this;
     // build_mode = Mode simplifié lors de la génération du message
     $this->loadConfigValues();
     CHL7v2Message::setBuildMode($this->_configs["build_mode"]);
     $evenement->build($mbObject);
     CHL7v2Message::resetBuildMode();
     if (!($msg = $evenement->flatten())) {
         return null;
     }
     $exchange = $evenement->_exchange_hl7v2;
     // Si l'échange est invalide
     if (!$exchange->message_valide) {
         return null;
     }
     // Si on n'est pas en synchrone
     if (!$this->synchronous) {
         return null;
     }
     // Si on n'a pas d'IPP et NDA
     if ($exchange->master_idex_missing) {
         return null;
     }
     $evt = $this->getEventMessage($evenement->profil);
     $source = CExchangeSource::get("{$this->_guid}-{$evt}");
     if (!$source->_id || !$source->active) {
         return null;
     }
     if ($this->_configs["encoding"] == "UTF-8") {
         $msg = utf8_encode($msg);
     }
     $source->setData($msg, null, $exchange);
     try {
         $source->send();
     } catch (Exception $e) {
         throw new CMbException("CExchangeSource-no-response");
     }
     $exchange->date_echange = CMbDT::dateTime();
     $ack_data = $source->getACQ();
     if (!$ack_data) {
         $exchange->store();
         return null;
     }
     $data_format = CIHE::getEvent($exchange);
     $ack = new CHL7v2Acknowledgment($data_format);
     $ack->handle($ack_data);
     $exchange->date_echange = CMbDT::dateTime();
     $exchange->statut_acquittement = $ack->getStatutAcknowledgment();
     $exchange->acquittement_valide = $ack->message->isOK(CHL7v2Error::E_ERROR) ? 1 : 0;
     $exchange->_acquittement = $ack_data;
     $exchange->store();
     return $ack_data;
 }
コード例 #2
0
 $ipp = $xml->queryNode("PID.3", $PID);
 $PV1 = $xml->queryNode("PV1");
 $nda = $xml->queryNode("PV1.19", $PV1);
 if (!$ipp || $ipp && $ipp->nodeValue == "waiting" || (!$nda || $nda && $nda->nodeValue == "waiting")) {
     CHL7v2Message::setBuildMode($receiver->_configs["build_mode"]);
     $data_format->build($object);
     CHL7v2Message::resetBuildMode();
     $data_format->flatten();
     if (!$data_format->message->isOK(CHL7v2Error::E_ERROR)) {
         $_exchange->date_echange = "";
         $_exchange->store();
         continue;
     }
 }
 if ($_exchange->code != "A40" && (!$ipp && !$ipp->nodeValue || $ipp->nodeValue == "0" || ($_exchange->sous_type != "ITI30" || $_exchange->sous_type == "ITI30" && $_exchange->code == "A08") && !$nda && empty($nda->nodeValue))) {
     CHL7v2Message::setBuildMode($receiver->_configs["build_mode"]);
     $data_format->build($object);
     CHL7v2Message::resetBuildMode();
     $data_format->flatten();
     if (!$data_format->message->isOK(CHL7v2Error::E_ERROR)) {
         $_exchange->date_echange = "";
         $_exchange->store();
         continue;
     }
 }
 $evt = $receiver->getEventMessage($data_format->profil);
 $source = CExchangeSource::get("{$receiver->_guid}-{$evt}");
 if (!$source->_id || !$source->active) {
     new CMbException("Source inactive");
 }
 $msg = $data_format->msg_hl7 ? $data_format->msg_hl7 : $_exchange->_message;