/**
  * Get acknowledgment event
  *
  * @param CHPrimXMLEvenements $dom_evt Event
  *
  * @return CHPrimXMLAcquittementsFraisDivers|CHPrimXMLAcquittementsPatients|CHPrimXMLAcquittementsPmsi|
  * CHPrimXMLAcquittementsServeurActes|CHPrimXMLAcquittementsServeurIntervention|null
  */
 static function getAcquittementEvenementXML(CHPrimXMLEvenements $dom_evt)
 {
     // Message événement patient
     if ($dom_evt instanceof CHPrimXMLEvenementsPatients) {
         return new CHPrimXMLAcquittementsPatients();
     }
     // Message serveur activité PMSI
     if ($dom_evt instanceof CHPrimXMLEvenementsServeurActivitePmsi) {
         return CHPrimXMLAcquittementsServeurActivitePmsi::getEvtAcquittement($dom_evt);
     }
     return null;
 }
 /**
  * Send event PMSI
  *
  * @param CHPrimXMLEvenementsServeurActivitePmsi $dom_evt  Event
  * @param CMbObject                              $mbObject Object
  *
  * @throws CMbException
  *
  * @return void
  */
 function sendEvenementPMSI(CHPrimXMLEvenementsServeurActivitePmsi $dom_evt, CMbObject $mbObject)
 {
     if (!($msg = $dom_evt->generateTypeEvenement($mbObject))) {
         return;
     }
     $source = CExchangeSource::get("{$this->_guid}-{$dom_evt->sous_type}");
     if (!$source->_id || !$source->active) {
         return;
     }
     $exchange = $dom_evt->_ref_echange_hprim;
     $source->setData($msg, false, $exchange);
     try {
         $source->send();
     } catch (Exception $e) {
         throw new CMbException("CExchangeSource-no-response");
     }
     $exchange->date_echange = CMbDT::dateTime();
     $acq = $source->getACQ();
     if (!$acq) {
         $exchange->store();
         return;
     }
     $dom_acq = CHPrimXMLAcquittementsServeurActivitePmsi::getEvtAcquittement($dom_evt);
     $dom_acq->loadXML($acq);
     $dom_acq->_ref_echange_hprim = $exchange;
     $doc_valid = $dom_acq->schemaValidate(null, false, $this->display_errors);
     $exchange->statut_acquittement = $dom_acq->getStatutAcquittementServeurActivitePmsi();
     $exchange->acquittement_valide = $doc_valid ? 1 : 0;
     $exchange->_acquittement = $acq;
     $exchange->store();
 }