A
download class.Handler_HL7v2_A08.php
Language: PHP
LOC: 62
Project Info
FreeMED Project(freemed)
Server: SourceForge
Type: cvs
...reemed\freemed\freemed\lib\
   acl.php
   API.php
   bcadd.php
   calendar-functions.php
   class.AdminModule.php
   class.Agata.php
   class.Authorizations.php
   class.BaseModule.php
   class.BillingModule.php
   class.CalendarModule.php
   class.ClaimLog.php
   class.Coverage.php
   class.Debug.php
   class.diagnosis_set.php
   class.Djvu.php
   class.EMRModule.php
   class.Fax.php
   class.FixedFormEntry.php
   ...s.FixedFormRenderer.php
   class.FormRenderer.php
   class.FreeMEDSelfTest.php
   class.GeneralConfig.php
   class.GraphModule.php
   class.Guarantor.php
   class.Handler_HL7v2.php
   ...s.Handler_HL7v2_A04.php
   ...s.Handler_HL7v2_A08.php
   ...s.Handler_HL7v2_S12.php
   ...s.Handler_HL7v2_S15.php
   class.InsuranceCompany.php
   class.LanguageRegistry.php
   class.Ledger.php
   ...s.MaintenanceModule.php
   class.Messages.php
   class.OMBS_Patient.php
   class.OMBS_Wrapper.php
   class.Parser_HL7v2.php
   class.Patient.php
   class.Payer.php
   class.PHPlot.php
   class.Physician.php
   class.Procedure.php
   class.RecordLock.php
   class.Remitt.php
   class.ReportsModule.php
   class.rxlist.php
   class.Scheduler.php
   class.TeX.php
   class.User.php
   class.UtilityModule.php
   class.vCalendar.php
   class.vCalendarEvent.php
   error_handler.php
   freemed.php
   i18n.php
   iso-set.php
   macros.php
   mail-functions.php
   settings.php
   settings.php.tmpl
   xml.php
   xmlrpc_services.php

<?php
	// $Id: class.Handler_HL7v2_A08.php,v 1.8 2005/03/19 17:49:17 rufustfirefly Exp $
	// $Author: rufustfirefly $

LoadObjectDependency('_FreeMED.Handler_HL7v2');

class Handler_HL7v2_A08 extends Handler_HL7v2 {

	function Handle () {
		syslog(LOG_INFO, 'HL7 parser| Entered A08 parser');
		if (!is_object($this->parser)) {
			die('Handler_HL7v2_A08: parser object not present');
		}

		// Loop for each PID
		foreach ($this->parser->message['PID'] AS $k => $v) {
			// Understanding that this breaks true HL7 compliance,
			// this will check to see if the PID exists in the
			// system and generate the equivalent of an A04 call
			// if it does not.
			$exist_query = $GLOBALS['sql']->query(
				"SELECT * FROM patient WHERE ptid='".
				addslashes($v[HL7v2_PID_ID])."'"
			);

			// Select matching PV1 segment (hack?)
			$pv1 = $this->parser->message['PV1'][$k];
			if ($pv1[HL7v2_PV1_REFERRING][HL7v2_PV1_REFERRING_ID]) {
				syslog(LOG_INFO, 'HL7 parser| PV1 - for ID #'.$pv1[HL7v2_PV1_REFERRING][HL7v2_PV1_REFERRING_ID].' found '.$this->parser->__composite_to_provider($pv1[HL7v2_PV1_REFERRING]));
			}
			
			// Create array of variables
			$variables = array (
				'ptlname' => $v[HL7v2_PID_NAME][HL7v2_PID_NAME_LAST],
				'ptfname' => $v[HL7v2_PID_NAME][HL7v2_PID_NAME_FIRST],
				'ptmname' => $v[HL7v2_PID_NAME][HL7v2_PID_NAME_MIDDLE],
				'ptdob' => $this->_ConvertDate($v[HL7v2_PID_DATEOFBIRTH]),
				'ptsex' => strtolower($v[HL7v2_PID_GENDER]),
				'ptaddr1' => $v[HL7v2_PID_ADDRESS][HL7v2_PID_ADDRESS_LINE1],
				'ptaddr2' => $v[HL7v2_PID_ADDRESS][HL7v2_PID_ADDRESS_LINE2],
				'ptcity' => $v[HL7v2_PID_ADDRESS][HL7v2_PID_ADDRESS_CITY],
				'ptstate' => $v[HL7v2_PID_ADDRESS][HL7v2_PID_ADDRESS_STATE],
				'ptzip' => $v[HL7v2_PID_ADDRESS][HL7v2_PID_ADDRESS_ZIPCODE],
				//'ptcountry' => $this->parser->PID['patient']['country'],
				'pthphone' => $this->_FixPhoneNumber($this->_StripToNumeric($v[HL7v2_PID_PHONE_HOME])),
				'ptwphone' => $this->_FixPhoneNumber($this->_StripToNumeric($v[HL7v2_PID_PHONE_WORK])),
				'ptssn' => $this->_StripToNumeric($v[HL7v2_PID_SOCIALSECURITY]),
				'ptarchive' => '0',
				'ptid' => $v[HL7v2_PID_ID]
			);
			// Don't put referrers in who aren't specified
			if ($pv1[HL7v2_PV1_REFERRING]) {
				$variables['ptrefdoc'] = $this->parser->__composite_to_provider($pv1[HL7v2_PV1_REFERRING]);
			}
			if ($GLOBALS['sql']->results($exist_query)) {
				// Exists, proceed with A08
				$query = $GLOBALS['sql']->update_query(
					'patient',
					$variables,
					array ('ptid' => $v[HL7v2_PID_ID])
				);
				syslog(LOG_INFO, 'HL7 parser| query = '.$query);
				$result = $GLOBALS['sql']->query($query);
				$r = $GLOBALS['sql']->fetch_array($GLOBALS['sql']->query("SELECT * FROM patient WHERE ptid='".addslashes($v[HL7v2_PID_ID])."'"));
				freemed::handler_breakpoint('PatientModify', array($r['pid']));
			} else {
				// Otherwise use A04 type query to add patient
				$query = $GLOBALS['sql']->insert_query(
					'patient',
					$variables
				);
				syslog(LOG_INFO, 'HL7 parser| query = '.$query);
				$result = $GLOBALS['sql']->query($query);
				$pid = $GLOBALS['sql']->last_record($result);
				freemed::handler_breakpoint('PatientAdd', array($pid));
			}
		}
	} // end method Handle

	function Type () { return 'ADT'; }

} // end class Handler_HL7v2_A08

?>

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us