コード例 #1
0
 /**
  * Codage CCAM vers les systèmes de facturation
  *
  * @param CHPrimXMLEvenementServeurActes $messageServeurActes Message H'XML serveur actes
  *
  * @return CHPrimXMLAcquittementsServeurActes messageAcquittement 
  **/
 function evenementServeurActes($messageServeurActes)
 {
     // Création de l'échange
     $echange_hprim = new CEchangeHprim();
     $messageAcquittement = null;
     $data = array();
     // Gestion de l'acquittement
     $domAcquittement = new CHPrimXMLAcquittementsServeurActes();
     $domGetEvenement = new CHPrimXMLEvenementsServeurActes();
     try {
         // Récupération des informations du message XML
         $domGetEvenement->loadXML($messageServeurActes);
         $doc_errors = $domGetEvenement->schemaValidate(null, true);
         $data = $domGetEvenement->getEnteteEvenementXML("evenementsServeurActes");
         $domAcquittement->identifiant = $data['identifiantMessage'];
         $domAcquittement->destinataire = $data['idClient'];
         $domAcquittement->destinataire_libelle = $data['libelleClient'];
         $domAcquittement->_sous_type_evt = $domGetEvenement->sous_type;
         // Acquittement d'erreur d'un document XML recu non valide
         if ($doc_errors !== true) {
             $messageAcquittement = $domAcquittement->generateAcquittementsServeurActivitePmsi("erreur", "E002", $doc_errors);
             $doc_valid = $domAcquittement->schemaValidate();
             $echange_hprim->date_production = CMbDT::dateTime();
             $echange_hprim->emetteur = $data['idClient'] ? $dest_hprim->_id : 0;
             $echange_hprim->destinataire = CAppUI::conf('mb_id');
             $echange_hprim->group_id = CGroups::loadCurrent()->_id;
             $echange_hprim->type = "pmsi";
             $echange_hprim->sous_type = $domGetEvenement->sous_type ? $domGetEvenement->sous_type : "inconnu";
             $echange_hprim->_message = $messageServeurActes;
             $echange_hprim->_acquittement = $messageAcquittement;
             $echange_hprim->statut_acquittement = "erreur";
             $echange_hprim->message_valide = 0;
             $echange_hprim->acquittement_valide = $doc_valid ? 1 : 0;
             $echange_hprim->store();
             return $messageAcquittement;
         }
         // Récupère l'initiateur du message s'il existe
         if (CAppUI::conf('sip server')) {
             $echange_hprim->identifiant_emetteur = intval($data['identifiantMessage']);
             $echange_hprim->loadMatchingObject();
         }
         if (!$echange_hprim->_id) {
             $echange_hprim->emetteur = $dest_hprim->_id;
             $echange_hprim->destinataire = CAppUI::conf('mb_id');
             $echange_hprim->group_id = CGroups::loadCurrent()->_id;
             $echange_hprim->identifiant_emetteur = $data['identifiantMessage'];
             $echange_hprim->type = "pmsi";
             $echange_hprim->sous_type = $domGetEvenement->sous_type;
             $echange_hprim->_message = $messageServeurActes;
             $echange_hprim->message_valide = 1;
         }
         $echange_hprim->date_production = CMbDT::dateTime();
         $echange_hprim->store();
         $data = array_merge($data, $domGetEvenement->getContentsXML());
         $echange_hprim->id_permanent = $data['idSourceVenue'];
         $messageAcquittement = $domGetEvenement->serveurActes($domAcquittement, $echange_hprim, $data);
         return $messageAcquittement;
     } catch (Exception $e) {
         /*$domAcquittement = new CHPrimXMLAcquittementsServeurActes();
           $domAcquittement->identifiant = $data['identifiantMessage'];
           $domAcquittement->destinataire = $data['idClient'];
           $domAcquittement->destinataire_libelle = $data['libelleClient'];
           $domAcquittement->_sous_type_evt = "evenementServeurActe";
           
           $messageAcquittement = $domAcquittement->generateAcquittementsServeurActivitePmsi("erreur", "E009", $e->getMessage());
           $doc_valid = $domAcquittement->schemaValidate();
           
           $echange_hprim->_acquittement = $messageAcquittement;
           $echange_hprim->statut_acquittement = "erreur";
           $echange_hprim->acquittement_valide = $doc_valid ? 1 : 0;
           $echange_hprim->date_echange = CMbDT::dateTime();
           $echange_hprim->store();*/
         return $messageAcquittement;
     }
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 /**
  * Génération de l'évènement
  *
  * @param CMbObject $mbObject   Object
  * @param bool      $referent   Référent ?
  * @param bool      $initiateur Initiateur ?
  *
  * @return string
  */
 function generateTypeEvenement(CMbObject $mbObject, $referent = false, $initiateur = false)
 {
     $echg_hprim = new CEchangeHprim();
     $echg_hprim->date_production = CMbDT::dateTime();
     $echg_hprim->sender_id = $this->_ref_sender ? $this->_ref_sender->_id : null;
     $echg_hprim->receiver_id = $this->_ref_receiver->_id;
     $echg_hprim->group_id = $this->_ref_receiver->group_id;
     $echg_hprim->type = $this->type;
     $echg_hprim->sous_type = $this->sous_type;
     $echg_hprim->object_id = $mbObject->_id;
     $echg_hprim->_message = utf8_encode($this->saveXML());
     $echg_hprim->initiateur_id = $initiateur;
     $echg_hprim->setObjectClassIdPermanent($mbObject);
     $echg_hprim->store();
     // Chargement des configs du destinataire
     $dest = $this->_ref_receiver;
     $dest->loadConfigValues();
     $this->_ref_echange_hprim = $echg_hprim;
     $this->generateEnteteMessage();
     $this->generateFromOperation($mbObject, $referent);
     $doc_valid = $this->schemaValidate(null, false, $this->_ref_receiver->display_errors);
     $echg_hprim->message_valide = $doc_valid ? 1 : 0;
     $this->saveTempFile();
     $msg = $this->saveXML();
     // On sauvegarde toujours en base le message en UTF-8
     $echg_hprim->_message = utf8_encode($msg);
     $echg_hprim->store();
     // On envoie le contenu et NON l'entête en UTF-8 si le destinataire est en UTF-8
     return $dest->_configs["encoding"] == "UTF-8" ? utf8_encode($msg) : $msg;
 }
コード例 #4
0
     $echg_hprim->group_id = CGroups::loadCurrent()->_id;
     $echg_hprim->receiver_id = $dest_hprim->_id;
     $echg_hprim->type = $domEvenement->type;
     $echg_hprim->sous_type = $domEvenement->sous_type;
     $echg_hprim->_message = utf8_encode($xmlfile);
     $doc_valid = $domEvenement->schemaValidate(null, false, $dest_hprim->display_errors);
     $echg_hprim->message_valide = $doc_valid ? 1 : 0;
     if ($type == "pmsi") {
         $echg_hprim->object_class = "CSejour";
         $echg_hprim->object_id = str_replace("sj", "", $data['idSourceVenue']);
         $echg_hprim->id_permanent = $data['idCibleVenue'];
     } elseif ($type == "actes") {
         $echg_hprim->object_class = "COperation";
         $echg_hprim->object_id = str_replace("op", "", $data["idSourceIntervention"]);
     }
     $echg_hprim->store();
     // Passage du séjour/opération en facturé
     $object = new $echg_hprim->object_class();
     $object->load($echg_hprim->object_id);
     $object->facture = 1;
     $msg = $object->store();
     // Suppression du fichier sur le disque
     if (!$msg) {
         unlink("{$path}/{$_file}");
     }
     $counter++;
     if ($counter == $limit) {
         CAppUI::stepAjax("Traitement de {$counter} fichiers terminé");
         return;
     }
 }