/**
  * 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;
 }
コード例 #2
0
 /**
  * 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
 }
コード例 #3
0
ファイル: CER7Spec.class.php プロジェクト: fbone/mediboard4
 /**
  * @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);
 }
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
$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);
コード例 #6
0
/* $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");
コード例 #7
0
 /**
  * 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;
 }
コード例 #8
0
ファイル: ajax_write_hl7v2.php プロジェクト: fbone/mediboard4
$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);
コード例 #9
0
 /**
  * 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);
     }
 }
コード例 #10
0
ファイル: ajax_tools.php プロジェクト: fbone/mediboard4
             $_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");
コード例 #11
0
$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;