A
download class.Handler_HL7v2.php
Language: PHP
LOC: 60
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.php,v 1.3 2005/03/19 17:49:17 rufustfirefly Exp $
	// $Author: rufustfirefly $

// Class: FreeMED.Handler_HL7v2
//
//	Superclass to encapsulate HL7 v2.3 message handlers. Contains
//	methods to aid in translating HL7 segments to appropriate
//	FreeMED database links.
//
class Handler_HL7v2 {

	var $parser;

	// Method: Handler_HL7v2 constructor
	//
	// Parameters:
	//
	//	$parser - Passed parser object of type Parser_HL7v2
	//
	function Handler_HL7v2 ($parser) {
		$this->parser = &$parser;
	}

	function Type () {
		return false;
	}

	//----- Internal methods

	// Method: Handler_HL7v2->_ConvertDate
	//
	//	Convert date from HL7 v2.3 date format to standard
	//	SQL date format.
	//
	// Parameters:
	//
	//	$string - HL7 date format
	//
	// Returns:
	//
	//	SQL date formatted date.
	//
	function _ConvertDate ($string) {
		// Handle invalid dates
		if (strlen($string) != 8) return '';
		// Seperate out by components
		$y = substr($string, 0, 4);
		$m = substr($string, 4, 2);
		$d = substr($string, 6, 2);
		// ... and reassemble
		return $y . '-' . $m . '-' . $d;
	} // end method _ConvertDate

	// Method: Handler_HL7v2->_PIDToPatient
	//
	//	Determine patient identifier by PID segment.
	//
	// Parameters:
	//
	//	$pid - HL7v2 PID segment
	//
	// Returns:
	//
	//	Patient identifier, or 0 if none is found.
	//
	function _PIDToPatient ($pid) {
		$lname = $pid[HL7v2_PID_NAME][HL7v2_PID_NAME_LAST];
		$fname = $pid[HL7v2_PID_NAME][HL7v2_PID_NAME_FIRST];
		$mname = $pid[HL7v2_PID_NAME][HL7v2_PID_NAME_MIDDLE];
		$dob   = $this->_ConvertDate($pid[HL7v2_PID_DATEOFBIRTH]);
		$query = "SELECT * FROM patient WHERE ".
			"ptlname LIKE '".addslashes($lname)."' AND ".
			"ptfname LIKE '".addslashes($fname)."' AND ".
			"ptdob = '".addslashes($dob)."'";
		$result = $GLOBALS['sql']->query($query);
		if (!$GLOBALS['sql']->results($result)) {
			return 0; // false.... none found
		}
		// If we found it, return the id
		if ($GLOBALS['sql']->num_rows($result)) {
			$r = $GLOBALS['sql']->fetch_array($result);
			return stripslashes($r['id']);
		} else {
			die('_PIDToPatient - Need smarter algorithm ... several patients found in search.');
		}
	} // end method _PIDToPatient

	// Method: Handler_HL7v2->_StripToNumeric
	//
	//	Strip all non-numeric characters from a string
	//
	// Parameters:
	//
	//	$string - Original string
	//
	// Returns:
	//
	//	Numeric string.
	//
	function _StripToNumeric ($string) {
		$target = '';
		for ($pos=0; $pos<strlen($string); $pos++) {
			switch (substr($string, $pos, 1)) {
				case '0': case '1': case '2': case '3':
				case '4': case '5': case '6': case '7':
				case '8': case '9':
					$target .= substr($string, $pos, 1);
					break;
				default: // do nothing
					break;
			}
		}
		//print "original = $string, stripped = $target<br/>\n";
		return $target;
	} // end method _StripToNumeric

	// Method: Handler_HL7v2->_FixPhoneNumber
	//
	//	Make sure phone number has area code when pulling into
	//	system.
	//
	//	WARNING! THIS MAY NOT WORK OUTSIDE THE UNITED STATES!
	//
	// Parameters:
	//
	//	$phone - Original phone number
	//
	// Returns:
	//
	//	Phone number, possibly with system default area code.
	//
	function _FixPhoneNumber ($phone) {
		if (strlen($phone) == 7) {
			return freemed::config_value('default_area_code').$phone;
		} else {
			return $phone;
		}
	} // end method _FixPhoneNumber

} // end class Handler_HL7v2

?>

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