/** * Handle acknowledgment * * @param string $ack_hl7 HL7 acknowledgment * * @return DOMDocument */ function handle($ack_hl7) { $this->message = new CHL7v2Message(); $this->message->parse($ack_hl7); $this->dom_message = $this->message->toXML(); return $this->dom_message; }
/** * Build * * @param CHL7Acknowledgment $object Object * * @return void */ function build($object) { // Création du message HL7 $this->message = new CHL7v2Message(); $this->message->version = $this->version; $this->message->name = $this->msg_codes; $message = $this->_exchange_hl7v2->_message; $hl7_message_initiator = new CHL7v2Message(); $hl7_message_initiator->parse($message); $this->message->_hl7_message_initiator = $hl7_message_initiator; // Message Header $this->addMSH(); // Message Acknowledgment $this->addMSA($object); // Error $trigger_event = $object->event; // Validation error if ($errors = $trigger_event->message->errors) { foreach ($errors as $_error) { $this->addERR($object, $_error); } } // ORC // OBR }
/** * @see parent::getValue() */ function getValue($object, $smarty = null, $params = array()) { $value = $object->{$this->fieldName}; if (isset($params["advanced"]) && $params["advanced"]) { $message = new CHL7v2Message(); $message->parse($value); return $message->flatten(true); } return CHL7v2Message::highlight($value); }
/** * Read HL7 file * @param $fileName Filename */ function readFile($fileName) { $message = new CHL7v2Message(); try { $fileContents = file_get_contents($fileName); $message->parse($fileContents); } catch (Exception $e) { exceptionHandler($e); return; } return $message; }
$er7 = CValue::post("er7"); $exchange_id = CValue::post("exchange_id"); $exchange = new CExchangeHL7v2(); $exchange->load($exchange_id); $exchange->loadRefsInteropActor(); if ($exchange->receiver_id) { /** @var CInteropReceiver $actor */ $actor = $exchange->_ref_receiver; $actor->loadConfigValues(); } else { /** @var CInteropSender $actor */ $actor = $exchange->_ref_sender; $actor->getConfigs($exchange); } $hl7_message = new CHL7v2Message(); $hl7_message->parse($er7); /** @var CHL7v2MessageXML $xml */ $xml = $hl7_message->toXML(null, false); $MSH = $xml->queryNode("MSH"); $EVN = $xml->queryNode("EVN"); $PID = $xml->queryNode("PID"); $PV1 = $xml->queryNode("PV1"); $PV2 = $xml->queryNode("PV2"); $ZBE = $xml->queryNode("ZBE"); $IPP = $NDA = null; $data = array(); $data["personIdentifiers"] = $xml->getPersonIdentifiers("PID.3", $PID, $actor); $data["admitIdentifiers"] = $xml->getAdmitIdentifiers($PV1, $actor); $names = array("nom" => "", "nom_jeune_fille" => ""); $prenom = null; $PID5 = $xml->query("PID.5", $PID);
/* $Id $ */ /** * @package Mediboard * @subpackage hl7 * @version $Revision$ * @author SARL OpenXtrem * @license GNU General Public License, see http://www.gnu.org/licenses/gpl.html */ CCanDo::checkRead(); $message_string = CValue::post("message"); if (!$message_string) { return; } $message_string = stripslashes($message_string); CValue::setSession("message", $message_string); try { $message = new CHL7v2Message(); $message->parse($message_string); $message->_errors_msg = !$message->isOK(CHL7v2Error::E_ERROR); $message->_warnings_msg = !$message->isOK(CHL7v2Error::E_WARNING); $message->_xml = CMbString::highlightCode("xml", $message->toXML()->saveXML()); } catch (CHL7v2Exception $e) { CAppUI::stepMessage(UI_MSG_ERROR, $e->getMessage() . " (" . $e->extraData . ")"); return; } // Création du template $smarty = new CSmartyDP(); $smarty->assign("message", $message); $smarty->assign("key", "input"); $smarty->display("inc_display_hl7v2_message.tpl");
/** * Parse HL7 message * * @param string $string Data * @param bool $parse_body Parse only header ? * @param null $actor Actor * * @return CHL7v2Message */ function parseMessage($string, $parse_body = true, $actor = null) { if (!$actor && isset($this->_ref_sender->_id)) { $actor = $this->_ref_sender; } if (!$actor && isset($this->_ref_receiver->_id)) { $actor = $this->_ref_receiver; } $hl7_message = new CHL7v2Message(); if (!$this->_id && $actor) { $this->sender_id = $actor->_id; $this->sender_class = $actor->_class; } if ($this->sender_id) { $this->loadRefSender(); $this->getConfigs($this->_ref_sender->_guid); $hl7_message->strict_segment_terminator = $this->_configs_format->strict_segment_terminator == 1; } $hl7_message->parse($string, $parse_body, $actor); return $hl7_message; }
$msg = new CHL7v2Message(); $msg->version = "2.5"; $msg->name = "ADT_A08"; //$msg->fieldSeparator = "a"; //$msg->componentSeparator = "b"; //$msg->subcomponentSeparator = "e"; //$msg->repetitionSeparator = "c"; //$msg->escapeCharacter = "d"; $segment = CHL7v2Segment::create("MSH", $msg); $data = array(null, null, "Mediboard", "Mediboard_finess", "no_receiver", null, CMbDT::dateTime(), null, null, "Msg ctrl id", "A", null, 15, null, null, null, null, "8859/1", null, null, null); $segment->fill($data); $msg->appendChild($segment); $segment = CHL7v2Segment::create("PID", $msg); $data = array(0 => 1, 1 => null, 2 => array(0 => array(0 => '323241', 1 => null, 2 => null, 3 => array(0 => 'Mediboard', 1 => '1.2.250.1.2.3.4', 2 => 'OpenXtrem'), 4 => 'RI'), 1 => array(0 => 'fgfg', 1 => null, 2 => null, 3 => array(0 => null, 1 => '1.2.250.1.213.1.4.2', 2 => 'ISO'), 4 => 'INS-C', 5 => null, 6 => '1946-10-17')), 3 => null, 4 => array(0 => array(0 => 'EZZHJ', 1 => 'Rtaso', 2 => 'qldax', 3 => null, 4 => 'dr', 5 => null, 6 => 'D', 7 => 'A'), 1 => array(0 => 'MEBJO', 1 => 'Rtaso', 2 => 'qldax', 3 => null, 4 => 'dr', 5 => null, 6 => 'L', 7 => 'A')), 5 => null, 6 => '1987-09-24', 7 => 'F', 8 => null, 9 => null, 10 => array(0 => array(0 => "adresse test \r\n \\ | & ^ ~", 1 => null, 2 => 'rtckkljfgrw', 3 => null, 4 => '4294967295', 5 => null, 6 => 'H'), 1 => array(0 => null, 1 => null, 2 => 'vlfxif', 3 => null, 4 => '40048', 5 => '000', 6 => 'BR')), 11 => null, 12 => array(0 => array(0 => '43502', 1 => 'PRN', 2 => 'PH'), 1 => array(0 => '42287', 1 => 'ORN', 2 => 'CP'), 2 => array(0 => 'oezym', 1 => 'ORN', 2 => 'PH')), 13 => null, 14 => null, 15 => null, 16 => null, 17 => null, 18 => null, 19 => null, 20 => null, 21 => null, 22 => null, 23 => null, 24 => null, 25 => null, 26 => null, 27 => null, 28 => '1905-05-06', 29 => 'Y'); $segment->fill($data); $msg->appendChild($segment); $msg->validate(); foreach ($msg->errors as $error) { mbTrace(@$error->entity->getPathString(), CAppUI::tr("CHL7v2Exception-" . $error->code) . " - " . $error->data); } echo "Généré"; echo $msg->flatten(true); $message_str = $msg->flatten(); echo "Parsé"; $msg2 = new CHL7v2Message(); $msg2->parse($message_str); $msg2->validate(); foreach ($msg2->errors as $error) { mbTrace(@$error->entity->getPathString(), CAppUI::tr("CHL7v2Exception-" . $error->code) . " - " . $error->data); } echo $msg2->flatten(true);
/** * Build * * @param CHL7Acknowledgment $object Object * * @return void */ function build($object) { // Création du message HL7 $this->message = new CHL7v2Message(); $this->message->version = $this->version; $this->message->name = $this->msg_codes; $message = $this->_exchange_hl7v2->_message; $hl7_message_initiator = new CHL7v2Message(); $hl7_message_initiator->parse($message); $this->message->_hl7_message_initiator = $hl7_message_initiator; // Message Header $this->addMSH(); // Message Acknowledgment $this->addMSA($object); // Error $trigger_event = $object->event; // Validation error if ($errors = $trigger_event->message->errors) { foreach ($errors as $_error) { $this->addERR($object, $_error); } } // Error unrecognized domain if ($object->QPD8_error) { $error = new CHL7v2Error(); $error->code = CHL7v2Exception::UNKNOWN_DOMAINS_RETURNED; $error->location = array("QPD", 1, 8, 1); $this->addERR($object, $error); } // Query Acknowledgment $this->addQAK($object->objects); // Query Parameter Definition $this->addQPD(); $i = 1; if (!$object->objects) { return; } // Results foreach ($object->objects as $_object) { if ($_object instanceof CPatient) { $_object->domains = $object->domains; $this->addPID($_object, $i); $i++; } if ($_object instanceof CSejour) { $_object->domains = $object->domains; $patient = $_object->loadRefPatient(); $patient->domains = $object->domains; $patient->_sejour = $_object; $this->addPID($patient, $i); $this->addPV1($_object, $i); $this->addPV2($_object, $i); $i++; } } $last = end($object->objects); if ($last && isset($last->_incremental_query)) { $last->_pointer = $last->_id; $this->addDSC($last); } }
$_exchange->reprocessing(); } catch (CMbException $e) { $e->stepAjax(UI_MSG_WARNING); } if (!$_exchange->_id) { CAppUI::stepAjax("CExchangeAny-msg-delete", UI_MSG_ALERT); } CAppUI::stepAjax("CExchangeDataFormat-reprocessed"); } break; case "detect_collision": $collisions = array(); foreach ($exchanges as $_exchange) { if ($_exchange instanceof CExchangeHL7v2) { $hl7_message = new CHL7v2Message(); $hl7_message->parse($_exchange->_message); $xml = $hl7_message->toXML(null, false); $PV1 = $xml->queryNode("PV1"); $PV2 = $xml->queryNode("PV2"); $sejour = new CSejour(); $sejour->load($_exchange->object_id); $sejour_hl7 = new CSejour(); $sejour_hl7->entree_prevue = $xml->queryTextNode("PV2.8/TS.1", $PV2); $sejour_hl7->entree_reelle = $xml->queryTextNode("PV1.44/TS.1", $PV1); $sejour_hl7->sortie_prevue = $xml->queryTextNode("PV2.9/TS.1", $PV2); $sejour_hl7->sortie_reelle = $xml->queryTextNode("PV1.45/TS.1", $PV1); $collisions[] = array("hl7" => $sejour_hl7, "mb" => $sejour); } } $smarty->assign("collisions", $collisions); $smarty->display("inc_detect_collisions.tpl");
$code = "Q23"; $patient = new CPatient(); $iti_handler = new CITIDelegatedHandler(); if (!$iti_handler->isMessageSupported($transaction, $message, $code, $receiver_hl7v2)) { CAppUI::stepAjax("No receiver supports this", UI_MSG_WARNING); return; } $patient->_receiver = $receiver_hl7v2; $patient->_patient_identifier_list = array("person_id_number" => $person_id_number, "person_namespace_id" => $person_namespace_id, "person_universal_id" => $person_universal_id, "person_universal_id_type" => $person_universal_id_type, "person_identifier_type_code" => $person_identifier_type_code); $patient->_domains_returned = array("domains_returned_namespace_id" => $domains_returned_namespace_id, "domains_returned_universal_id" => $domains_returned_universal_id, "domains_returned_universal_id_type" => $domains_returned_universal_id_type); // Envoi de l'évènement $ack_data = $iti_handler->sendITI($profil, $transaction, $message, $code, $patient); $objects = array(); if ($ack_data) { $hl7_message = new CHL7v2Message(); $hl7_message->parse($ack_data); $xml = $hl7_message->toXML(); $xpath = new DOMXPath($xml); // Patient $_pids = $xpath->query("//PID"); foreach ($_pids as $_element) { $ids = $xpath->query("PID.3", $_element); $_ids = array(); foreach ($ids as $_id) { $_domain_parts = array(); foreach ($xpath->query("CX.4/*", $_id) as $_domain_part) { $_domain_parts[] = $_domain_part->nodeValue; } $_ids[] = array("id" => $xpath->query("CX.1", $_id)->item(0)->nodeValue, "domain" => $_domain_parts); } $objects[] = $_ids;