/**
  * Constructor
  *
  * @param CExchangeHprimSante $exchange   Exchange
  * @param String              $type_error Error type
  * @param String              $code_error Error code
  * @param String[]            $address    Error address
  * @param String              $field      Error field
  * @param String              $comment    Comment
  */
 function CHPrimSanteError($exchange, $type_error, $code_error, $address, $field, $comment = null)
 {
     $this->type_error = $type_error;
     $this->code_error = $code_error;
     $this->address = $address;
     $this->field = $field;
     $this->type = $exchange->type;
     $this->sous_type = $exchange->sous_type;
     $this->exchange = $exchange;
     $this->comment = CMbString::removeAllHTMLEntities($comment);
 }
 /**
  * @see parent::build
  */
 function build(CHPREvent $event)
 {
     parent::build($event);
     $error = $this->error;
     $acknowledgment = $this->acknowledgment;
     $exchange_hpr = $event->_exchange_hpr;
     $data = array();
     if ($error instanceof CHL7v2Error) {
         // ERR-1: Segment Row
         $data[] = $acknowledgment->_row;
         // ERR-2: Filename
         $data[] = $exchange_hpr->nom_fichier;
         // ERR-3: Date / Time of receipt
         $data[] = $exchange_hpr->date_production;
         // ERR-4: Severity
         $data[] = null;
         // ERR-5: Line number
         $data[] = null;
         // ERR-6: Error Location
         $data[] = null;
         // ERR-7: Field Position
         $data[] = null;
         // ERR-8: Error value
         $data[] = null;
         // ERR-9: Error type
         $data[] = null;
         // ERR-10: Original Text
         $data[] = null;
     } else {
         // ERR-1
         $data[] = $acknowledgment->_row;
         // ERR-2
         $data[] = $exchange_hpr->nom_fichier;
         // ERR-3
         $data[] = $exchange_hpr->date_production;
         // ERR-4
         $data[] = $error[0];
         // ERR-5
         $data[] = null;
         // ERR-6
         $data[] = array(array($error[2][0], $error[2][1], $error[2][2]));
         // ERR-7
         $data[] = null;
         // ERR-8
         $data[] = $error[4];
         // ERR-9
         $data[] = $error[5];
         // ERR-10
         $data[] = CMbString::removeAllHTMLEntities($error[6]);
     }
     $this->fill($data);
 }
 /**
  * Generate acknowledgment
  *
  * @param string $ack_code       Acknowledgment code
  * @param string $mb_error_codes Mediboard error code
  * @param null   $hl7_error_code HL7 error code
  * @param string $severity       Severity
  * @param null   $comments       Comments
  * @param null   $object         Object
  *
  * @return null|string
  */
 function generateAcknowledgment($ack_code, $mb_error_codes, $hl7_error_code = null, $severity = "E", $comments = null, $object = null)
 {
     $this->ack_code = $ack_code;
     $this->mb_error_codes = $mb_error_codes;
     $this->hl7_error_code = $hl7_error_code;
     $this->severity = $severity;
     $this->comments = CMbString::removeAllHTMLEntities($comments);
     $this->object = $object;
     $this->event->_exchange_hl7v2 = $this->_ref_exchange_hl7v2;
     $this->event_ack = new CHL7v2EventORR($this->event);
     $this->event_ack->build($this);
     $this->event_ack->flatten();
     $this->event_ack->msg_hl7 = utf8_encode($this->event_ack->msg_hl7);
     return $this->event_ack->msg_hl7;
 }
 /**
  * Ajout des erreurs et des avertissements dans l'acquittement
  *
  * @param string    $statut       Statut de l'acquittement
  * @param array     $codes        Codes d'erreurs
  * @param string    $commentaires Commentaire
  * @param CMbObject $mbObject     Object
  *
  * @return void
  */
 function addErreursAvertissements($statut, $codes, $commentaires = null, $mbObject = null)
 {
     $commentaires = CMbString::removeAllHTMLEntities($commentaires);
     $acquittementsPatients = $this->documentElement;
     $erreursAvertissements = $this->addElement($acquittementsPatients, "erreursAvertissements");
     if (is_array($codes)) {
         foreach ($codes as $code) {
             $translate = CAppUI::tr("hprimxml-error-{$code}");
             $this->addErreurAvertissement($erreursAvertissements, $statut, $code, $translate, $commentaires, $mbObject);
         }
     } else {
         $translate = CAppUI::tr("hprimxml-error-{$codes}");
         $this->addErreurAvertissement($erreursAvertissements, $statut, $codes, $translate, $commentaires, $mbObject);
     }
 }
 function addReponse($elParent, $statut, $codes, $mbObject = null, $commentaires = null)
 {
     if ($statut == "ok") {
         return;
     }
     $erreur = $this->addElement($elParent, "erreur");
     $libelle = null;
     if (is_array($codes)) {
         $code = implode("", $codes);
         foreach ($codes as $_code) {
             $libelle .= CAppUI::tr("hprimxml-error-{$_code}");
         }
     } else {
         $code = $codes;
         $libelle = CAppUI::tr("hprimxml-error-{$code}");
     }
     $this->addElement($erreur, "code", substr($code, 0, 17));
     $this->addElement($erreur, "libelle", substr($libelle, 0, 80));
     if ($commentaires) {
         $commentaires = CMbString::removeAllHTMLEntities($commentaires);
         $this->addElement($erreur, "commentaire", substr("{$libelle} : \"{$commentaires}\"", 0, 4000));
     }
 }
 /**
  * Store the file
  *
  * @param String  $prefix    Prefix for the name of file
  * @param String  $file_name Name of file
  * @param String  $file_type Type file
  * @param CSejour $sejour    Sejour
  * @param Array   &$erreur   Error
  *
  * @return bool
  */
 function storeFile($prefix, $file_name, $file_type, $sejour, &$erreur)
 {
     /** @var CInteropSender $sender */
     $sender = $this->_ref_sender;
     $exchange_hpr = $this->_ref_exchange_hpr;
     $file = false;
     $object_links = $sender->loadRefsObjectLinks();
     foreach ($object_links as $_object_link) {
         /** @var CInteropSender $sender_link */
         $sender_link = $_object_link->loadRefObject();
         $sender_link->loadRefsExchangesSources();
         foreach ($sender_link->_ref_exchanges_sources as $_source) {
             $path = $_source->getFullPath($file_name);
             /** @var CExchangeSource $_source */
             $data = $_source->getData($path);
             if (!$data) {
                 continue;
             }
             $file = new CFile();
             $file->file_name = "{$prefix} {$file_name}";
             $file->file_type = $file_type;
             $file->fillFields();
             $file->setObject($sejour);
             $file->putContent($data);
             if ($msg = $file->store()) {
                 $erreur[] = new CHPrimSanteError($exchange_hpr, "P", "17", array("OBX", $this->loop, $this->identifier_patient), "10.6", CMbString::removeAllHTMLEntities($msg));
                 continue;
             }
         }
     }
     if (!$file) {
         $erreur[] = new CHPrimSanteError($exchange_hpr, "P", "18", array("OBX", $this->loop, $this->identifier_patient), "10.6");
         return false;
     }
     return true;
 }