/** * 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(); }