A
download class.OMBS_Patient.php
Language: PHP
LOC: 143
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.OMBS_Patient.php,v 1.1 2003/08/15 07:08:10 rufustfirefly Exp $
	// $Author: rufustfirefly $
	// Support for the Open Medical Billing System by Synitech

class OMBS_Patient {

	function OMBS_Patient ($patient) {
		// Handle either patient object or patient id
		if (is_object($patient)) {
			$this->patient = $patient;
		} else {
			$this->patient = CreateObject('FreeMED.Patient', $patient);
		}
	} // end constructor OMBS_Patient

	function generate () {
		$buffer = '';
		$buffer .= "\n <!-- Bill for ".prepare($this->patient->fullName())." ( ".$this->patient->local_record['ptid']." ) -->\n\n";
		$buffer .= "<BILL>\n";
		$buffer .= "<PATIENT>\n";
		$buffer .= "\t<CONTACT>\n";
		$buffer .= "\t<NAME>\n";
		$buffer .= "\t\t<FIRST>".prepare($this->patient->ptfname)."</FIRST>\n";
		$buffer .= "\t\t<LAST>".prepare($this->patient->ptlname)."</LAST>\n";
		$buffer .= "\t\t<MIDDLE>".prepare($this->patient->ptmname)."</MIDDLE>\n";
		$buffer .= "\t</NAME>\n";

		$buffer .= "\t<ADDRESS>\n";
		$buffer .= "\t\t<STREET>".prepare($this->patient->local_record['ptaddr1'])."</STREET>\n";
		$buffer .= "\t\t<CITY>".prepare($this->patient->local_record['ptcity'])."</CITY>\n";
		$buffer .= "\t\t<STATE>".prepare($this->patient->local_record['ptstate'])."</STATE>\n";
		$buffer .= "\t\t<ZIP>".prepare($this->patient->local_record['ptzip'])."</ZIP>\n";
		$buffer .= "\t</ADDRESS>\n";

		$buffer .= "\t<TELEPHONE>\n";
		if ($this->patient->local_record['pthphone']) {
			// Only display phone if it exists
			$buffer .= "\t\t<FULLPHONE>".$this->_PhoneFormat($this->patient->local_record['pthphone'])."</FULLPHONE>\n";
		}
		$buffer .= "\t</TELEPHONE>\n";

		$buffer .= "\t</CONTACT>\n";

		// Date of birth
		$buffer .= $this->_DateToXML($this->patient->ptdob, 'DOB');

		// Gender
		if ($this->patient->isMale()) { $buffer .= "\t<SEX>Male</SEX>\n"; }
		if ($this->patient->isFemale()) { $buffer .= "\t<SEX>Female</SEX>\n"; }

		$buffer .= "</PATIENT>\n";

		// Physician
		if ($this->patient->local_record['ptdoc']) {
			$buffer .= $this->_PhysicianToXML($this->patient->local_record['ptdoc'], 0);
		}

		// Get procedures
		$procedures = $this->_GetProcedures();
		foreach ($procedures AS $__garbage => $procedure) {
			// Generate procedure
			$buffer .= $this->_ServiceToXML($procedure);
		}
		
		$buffer .= "</BILL>\n";

		return $buffer;
	} // end function OMBS_Patient->generate

	//----- Internal functions

	function _DateToXML ( $date, $element_name='STARTDATE', $tab = 1 ) {
		// Render tabs (for clean look)
		$t = ''; for ($i = 1; $i <= $tab; $i++) $t .= "\t";
		$buffer .= $t."<".$element_name.">\n";
		$buffer .= $t."\t<MONTH type=\"numeric\">".substr($date, 5, 2)."</MONTH>\n";
		$buffer .= $t."\t<DAY>".substr($date, 8, 2)."</DAY>\n";
		$buffer .= $t."\t<YEAR>".substr($date, 0, 4)."</YEAR>\n";
		$buffer .= $t."</".$element_name.">\n";
		return $buffer;
	}

	function _FacilityToXML ( $facility ) {
		// Get facility record
		$f = freemed::get_link_rec('facility', $facility);
		
		$buffer .= "<FACILITY>\n";
		$buffer .= "\t<FACILITYNAME>".prepare($f['psrname'])."</FACILITYNAME>\n";

		// Address information
		
		$buffer .= "\t<ADDRESS>\n";
		$buffer .= "\t\t<STREET>".prepare($f['psraddr1'])."</STREET>\n";
		$buffer .= "\t\t<CITY>".prepare($f['psrcity'])."</CITY>\n";
		$buffer .= "\t\t<STATE>".prepare($f['psrstate'])."</STATE>\n";
		$buffer .= "\t\t<ZIP>".prepare($f['psrzip'])."</ZIP>\n";
		$buffer .= "\t</ADDRESS>\n";

		// Telephone
		if (!empty($f['psrphone'])) {
			$buffer .= "\t<TELEPHONE>\n";
			$buffer .= "\t\t<FULLPHONE>".$this->_PhoneFormat($f['psrphone'])."</FULLPHONE>\n";
			$buffer .= "\t</TELEPHONE>\n";
		}

		$buffer .= "</FACILITY>\n";
		return $buffer;
	}

	function _GetProcedures ( ) {
		global $sql;
		// Get all procedures
		$query = "SELECT * FROM procrec ".
			"WHERE procbillable = '0' AND ".
				"procbilled = '0' AND ".
				"procpatient = '".addslashes($this->patient->local_record['id'])."' ".
			"ORDER BY procpos, procphysician, procrefdoc, ".
				"proceoc, procclmtp, procdt";
		$result = $sql->query($query);
		if ($sql->results($result)) {
			$results = array ();
			while ($r = $sql->fetch_array($result)) {
				$results[] = $r['id'];
			}
			return $results;
		} else {
			return array ();
		}
	}

	function _PhoneFormat ( $phone ) {
		$area_code = substr($phone, 0, 3);
		$prefix    = substr($phone, 3, 3);
		$ext       = substr($phone, 6, 4);
		return '1-'.$area_code.'-'.$prefix.'-'.$ext;
	} // end function OMBS_Patient->_PhoneFormat

	function _PhysicianToXML ( $physician, $tab = 1 ) {
		$p = freemed::get_link_rec($physician, 'physician');
		$t = ''; for ($i=1; $i<=$tab; $i++) { $t .= "\t"; }

		$buffer .= $t."<PHYSICIAN>\n";
		$buffer .= $t."\t<CONTACT>\n";
		$buffer .= $t."\t<NAME>\n";
		$buffer .= $t."\t\t<FIRST>".prepare($p['phyfname'])."</FIRST>\n";
		$buffer .= $t."\t\t<MIDDLE>".prepare($p['phymname'])."</MIDDLE>\n";
		$buffer .= $t."\t\t<LAST>".prepare($p['phylname'])."</LAST>\n";
		$buffer .= $t."\t</NAME>\n";
		$buffer .= $t."\t</CONTACT>\n";
		$buffer .= $t."\t<FEDERALTAXID>".prepare($p['phyupin'])."</FEDERALTAXID>\n";
		$buffer .= $t."</PHYSICIAN>\n";
		return $buffer;
	} // end function OMBS_Patient->_PhysicianToXML

	function _PlanToXML ( $plan ) {

	} // end function OMBS_Patient->_PlanToXML

	function _ServiceToXML ( $procedure ) {
		$p = freemed::get_link_rec($procedure, 'procrec');

		$buffer .= "<SERVICE>\n";

		// <CODE> for diagnoses and procedural codes
		$buffer .= "\t<CODE>\n";

		// Add start date
		$buffer .= $this->_DateToXML($p['procdt'], 'STARTDATE', 2);

		// Render procedural code
		$buffer .= "\t\t<PROCEDURECODE>".freemed::get_link_field(
				$p['proccpt'],
				'cpt',
				'cptcode'
			)."</PROCEDURECODE>\n";

		// Loop through diagnoses
		for ($i=1; $i<=4; $i++) {
			// If it exists, add it
			if ($p['procdiag'.$i] > 0) {
				$buffer .= "\t\t<DIAGNOSIS>".
					freemed::get_link_field(
						$p['procdiag'.$i],
						'icd9',
						'icd9code'
					)."</DIAGNOSIS>\n";
			}
		}

		// <CODE> element has to contain both proc codes and diags
		$buffer .= "\t</CODE>\n";

		// Derive this based on actual service
		$buffer .= "\t<AMOUNTPAID>".($p['procamtpaid'] + 0).
				"</AMOUNTPAID>\n";

		// Footer
		$buffer .= "</SERVICE>\n";
		return $buffer;
	} // end function OMBS_Patient->_ServiceToXML

} // end class OMBS_Patient

?>

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