function getProviderDisplayName() { $provider = new Provider(); $provider->person_id = $this->treating_person_id; $provider->populate(); return $provider->person->getDisplayName(); }
protected function _createAudit($providerId, $personId, $visitId, $type) { $providerId = (int) $providerId; $personId = (int) $personId; $visitId = (int) $visitId; $audit = array(); $audit['objectClass'] = 'GenericAccessAudit'; $audit['objectId'] = $personId . ';' . $visitId; $audit['type'] = (int) $type; $audit['userId'] = $providerId; $audit['patientId'] = $personId; $values = array(); $provider = new Provider(); $provider->personId = $audit['userId']; $provider->populate(); $values['provider'] = $provider->toArray(); $patient = new Patient(); $patient->personId = $personId; $patient->populate(); $values['patient'] = $patient->toArray(); $values['personId'] = $patient->personId; $visit = new Visit(); $visit->visitId = $visitId; $visit->populate(); $values['visit'] = $visit->toArray(); $values['visitId'] = $visit->visitId; $audit['auditValues'] = $values; Audit::persistManualAuditArray($audit); }
public function __construct(array $data) { $this->measureNumber = isset($data['measureNumber']) ? (int) $data['measureNumber'] : 0; $this->denominator = isset($data['denominator']) ? (int) $data['denominator'] : 0; $this->numerator = isset($data['numerator']) ? (int) $data['numerator'] : 0; $this->exclusions = isset($data['exclusions']) ? (int) $data['exclusions'] : 0; $this->percentage = isset($data['percentage']) ? sprintf('%.2f', $data['percentage']) : 0; if (isset($data['visitDateStart'])) { $this->visitDateStart = date('m-d-Y', strtotime($data['visitDateStart'])); } else { $this->visitDateStart = date('01-01-Y'); } if (isset($data['visitDateEnd'])) { $this->visitDateEnd = date('m-d-Y', strtotime($data['visitDateEnd'])); } else { $this->visitDateEnd = date('12-31-Y'); } $provider = isset($data['provider']) ? $data['provider'] : ''; if (!$data['provider'] instanceof Provider) { $providerId = (int) $provider; $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); } $this->provider = $provider; if (isset($data['fileNumber'])) { $this->fileNumber = (int) $data['fileNumber']; } if (isset($data['numberOfFiles'])) { $this->numberOfFiles = (int) $data['numberOfFiles']; } }
public function __construct($tthis, $context, $data) { $this->tthis = $tthis; $this->context = $context; $this->data = $data; $year = 0; if (isset($tthis->_attributes['year'])) { $year = (int) $tthis->_attributes['year']; } if (!$year > 0) { $year = date('Y') - 1; } // default year to previous $this->dateStart = date('Y-m-d', strtotime($year . '-01-01')); $this->dateEnd = date('Y-m-d', strtotime($year . '-12-31')); $this->providerId = (int) Zend_Auth::getInstance()->getIdentity()->personId; $providerId = (int) $this->context; if ($providerId > 0) { $this->providerId = $providerId; } $info = array(); $info['dateStart'] = $this->dateStart; $info['dateEnd'] = $this->dateEnd; $provider = new Provider(); $provider->personId = $this->providerId; $provider->populate(); $info['provider'] = $provider; self::$info = $info; }
public function newAction() { $colIndex = $this->_getParam('colIndex'); $sessionFilters = $this->_calendarSession->filter; if (!isset($sessionFilters->columns[$colIndex])) { $msg = __('Cannot generate column with that index, there is no filter defined for that column Index: ') . $colIndex; throw new Exception($msg); } $column = $sessionFilters->columns[$colIndex]; $providerId = (int) $column['providerId']; $this->view->providerId = $providerId; $headerText = ''; if ($providerId > 0) { $provider = new Provider(); $provider->setPersonId($providerId); $provider->populate(); $headerText = $provider->displayName; } $roomId = 0; if (isset($column['roomId'])) { $roomId = $column['roomId']; } $this->view->roomId = $roomId; if ($roomId > 0) { $room = new Room(); $room->id = $roomId; $room->populate(); $headerText .= ' -> ' . $room->name; } if (isset($column['dateFilter'])) { $headerText .= " ({$column['dateFilter']})"; } $this->view->headerText = $headerText; $templates = array('' => ''); $templates['tpl1'] = 'Provider 1 Template'; $templates['tpl2'] = 'Provider 2 Template'; $templates['tpl3'] = 'Provider 3 Template'; $this->view->templates = $templates; // $this->_calendarSession->filter; calendar filter $this->render('new'); }
public function transmitEprescriptionAction() { $medicationId = (int) $this->_getParam('medicationId'); $medication = new Medication(); $medication->medicationId = $medicationId; $medication->populate(); //echo $medication->toString(); //echo $medicationId; $data = $medication->toArray(); $practice = new Practice(); $practice->practiceId = MainController::getActivePractice(); $practice->populate(); $data['practiceName'] = $practice->name; $pharmacy = new Pharmacy(); $pharmacy->pharmacyId = $medication->pharmacyId; $pharmacy->populate(); $data['pharmacy'] = $pharmacy->toArray(); $prescriber = new Provider(); $prescriber->personId = $medication->prescriberPersonId; $prescriber->populate(); $prescriber->person->populate(); $data['prescriber'] = $prescriber->toArray(); $data['prescriber']['agentFirstName'] = ''; $data['prescriber']['agentLastName'] = ''; $data['prescriber']['agentSuffix'] = ''; $addressIterator = new AddressIterator(); $addressIterator->setFilters(array('class' => 'person', 'personId' => $prescriber->personId)); $data['prescriber']['address'] = $addressIterator->first()->toArray(); $phoneIterator = new PhoneNumberIterator(); $phoneIterator->setFilters(array('class' => 'person', 'personId' => $prescriber->personId)); $data['prescriber']['phone'] = $phoneIterator->first()->toArray(); $patient = new Patient(); $patient->personId = $medication->personId; $patient->populate(); $data['patient'] = $patient->toArray(); $phoneIterator->setFilters(array('class' => 'person', 'personId' => $patient->personId)); $data['patient']['phone'] = $phoneIterator->first()->toArray(); //var_dump($data);exit; $data = $this->makePostArray($data); //var_dump($this->makePostArray($data));exit; //var_dump($data);exit; $transmitEPrescribeURL = Zend_Registry::get('config')->healthcloud->URL; $transmitEPrescribeURL .= "SSRX/NewRx?apiKey=" . Zend_Registry::get('config')->healthcloud->apiKey; $cookieFile = tempnam(sys_get_temp_dir(), "ssddcookies_"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $transmitEPrescribeURL); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFile); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); $output = curl_exec($ch); echo $output; exit; }
protected static function _generate4010A1($claimId, array $claim) { static $ctr = 0; static $visits = array(); static $practices = array(); static $insurancePrograms = array(); static $providers = array(); static $patients = array(); $claimId = (int) $claimId; $claimLine = new ClaimLine(); $claimLine->populateByClaimId($claimId); $visitId = (int) $claimLine->visitId; if (!isset($visits[$visitId])) { $visit = new Visit(); $visit->visitId = $visitId; $visit->populate(); $visits[$visitId] = $visit; } $visit = $visits[$visitId]; $patientId = (int) $visit->patientId; if (!isset($patients[$patientId])) { $patient = new Patient(); $patient->personId = $patientId; $patient->populate(); $patients[$patientId] = $patient; } $patient = $patients[$patientId]; $practiceId = (int) $visit->practiceId; if (!isset($practices[$practiceId])) { $practice = new Practice(); $practice->practiceId = $practiceId; $practice->populate(); $practices[$practiceId] = $practice; } $practice = $practices[$practiceId]; $insuranceProgramId = (int) $visit->activePayerId; if (!isset($insurancePrograms[$insuranceProgramId])) { $insurance = new InsuranceProgram(); $insurance->insuranceProgramId = $insuranceProgramId; $insurance->populate(); $insurancePrograms[$insuranceProgramId] = $insurance; } $insuranceProgram = $insurancePrograms[$insuranceProgramId]; $providerId = (int) $visit->treatingPersonId; if (!isset($providers[$providerId])) { $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $providers[$providerId] = $provider; } $provider = $providers[$providerId]; $billAs = (int) $provider->billAs; if ($billAs > 0) { $providerId = $billAs; if (!isset($providers[$providerId])) { $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $providers[$providerId] = $provider; } $provider = $providers[$providerId]; } $subscribers = array(); $enumeration = new Enumeration(); $enumeration->populateByUniqueName(InsuranceProgram::INSURANCE_ENUM_NAME); $enumerationClosure = new EnumerationClosure(); foreach ($enumerationClosure->getAllDescendants($enumeration->enumerationId, 1, true) as $enum) { $rowset = $enumerationClosure->getAllDescendants($enum->enumerationId, 1, true); if ($enum->key == InsuranceProgram::INSURANCE_SUBSCRIBER_ENUM_KEY) { foreach ($rowset as $row) { $subscribers[$row->key] = $row->name; } break; } } $insuredRelationship = new InsuredRelationship(); $db = Zend_Registry::get('dbAdapter'); $sqlSelect = $db->select()->from($insuredRelationship->_table)->where('insurance_program_id = ?', (int) $insuranceProgram->insuranceProgramId)->where('person_id = ?', (int) $patientId)->where('active = 1')->order('program_order')->limit(1); if ($row = $db->fetchRow($sqlSelect)) { $insuredRelationship->populateWithArray($row); } $subs = $insuredRelationship->subscriber; $subscriberAddr = $subs->address; $relationship = null; $relationshipCode = $insuredRelationship->subscriberToPatientRelationship; if (isset($subscribers[$relationshipCode])) { $relationship = $subscribers[$relationshipCode]; } if ($relationship === null) { $relationship = 'Self'; $relationshipCode = 18; $subs = new Person(); $subs->personId = $insuredRelationship->personId; $subs->populate(); } $subscriber = array('id' => (int) $subs->personId, 'relationship_code' => $relationshipCode, 'group_number' => $insuredRelationship->groupNumber, 'group_name' => $insuredRelationship->groupName, 'relationship' => $relationship, 'last_name' => $subs->lastName, 'first_name' => $subs->firstName, 'middle_name' => $subs->middleName, 'address' => array('line1' => $subscriberAddr->line1, 'line2' => $subscriberAddr->line2, 'city' => $subscriberAddr->city, 'state' => $subscriberAddr->state, 'zip' => $subscriberAddr->zipCode), 'date_of_birth' => date('Ymd', strtotime($subs->dateOfBirth)), 'gender' => $subs->gender, 'contract_type_code' => '', 'contract_amount' => '', 'contract_percent' => '', 'contract_code' => '', 'contract_discount_percent' => '', 'contract_version' => ''); $practiceAddr = $practice->primaryAddress; $room = new Room(); $room->roomId = (int) $visit->roomId; $room->populate(); $facility = $room->building; $phoneNumber = PhoneNumber::autoFixNumber($practice->mainPhone->number); $phoneLen = strlen($phoneNumber); if ($phoneLen < 10) { $phoneNumber = str_pad($phoneNumber, 10, '0', STR_PAD_LEFT); } else { if ($phoneLen > 10) { $phoneNumber = substr($phoneNumber, -10); } } $identifierType = ''; $identifier = $practice->identifier; if (strlen($identifier) > 0) { $identifierType = 'XX'; } //24'; $data = array('hlCount' => ++$ctr); $data['practice'] = array('name' => $practice->name, 'identifier_type' => $identifierType, 'identifier' => $identifier, 'address' => array('line1' => $practiceAddr->line1, 'line2' => $practiceAddr->line2, 'city' => $practiceAddr->city, 'state' => $practiceAddr->state, 'zip' => $practiceAddr->zipCode), 'phoneNumber' => $phoneNumber); $data['treating_facility'] = array('identifier' => $facility->identifier); $dateOfTreatment = date('Ymd', strtotime($visit->dateOfTreatment)); $payer2Id = $insuranceProgram->insuranceProgramId; if (strlen($payer2Id) < 2) { $payer2Id = str_pad($payer2Id, 2, '0', STR_PAD_LEFT); } $identifierType = ''; $identifier = $provider->person->identifier; if (strlen($identifier) > 0) { $identifierType = 'XX'; } //34'; $claimData = array('claim' => $claim, 'patient' => array('date_of_initial_treatment' => $dateOfTreatment, 'date_of_onset' => $dateOfTreatment, 'comment_type' => '', 'comment' => ''), 'treating_facility' => array('facility_code' => $facility->facilityCodeId, 'name' => $facility->name, 'address' => array('line1' => $facility->line1, 'line2' => $facility->line2, 'city' => $facility->city, 'state' => $facility->state, 'zip' => $facility->zipCode)), 'provider' => array('signature_on_file' => 'Y', 'accepts_assignment' => 'A', 'last_name' => $provider->person->lastName, 'first_name' => $provider->person->firstName, 'identifier_type' => $identifierType, 'identifier' => $identifier, 'identifier_2' => ''), 'billing_facility' => array('clia_number' => ''), 'subscriber' => $subscriber, 'clearing_house' => array('credit_max_amount' => '', 'repricing_method' => '', 'allowed_amount' => '', 'savings_amount' => '', 'identifier' => '', 'rate' => '', 'apg_code' => '', 'apg_amount' => '', 'reject_code' => '', 'compliance_code' => '', 'exception_code' => ''), 'referring_provider' => array('last_name' => '', 'first_name' => '', 'referral_type' => '', 'identifier_type' => '', 'identifier' => '', 'taxonomy_code' => ''), 'supervising_provider' => array('last_name' => '', 'first_name' => '', 'identifier_type' => '', 'identifier' => ''), 'payer2' => array('id' => $payer2Id, 'name' => $insuranceProgram->name)); $clm = array(); $iterator = new ClaimLineIterator(); $iterator->setFilters(array('claimId' => $claimId)); foreach ($iterator as $row) { $baseFee = (double) $row->baseFee; $adjustedFee = (double) $row->adjustedFee; $paid = (double) $row->paid; $billed = $row->totalMiscCharge; if ($baseFee > 0) { $billed += $baseFee - $adjustedFee; } $balance = abs($billed) - $paid; $clm[] = array('claim' => $claimData['claim'], 'patient' => $claimData['patient'], 'claim_line' => array('amount' => $balance, 'diagnosis1' => preg_replace('/[\\.]/', '', $row->diagnosisCode1), 'diagnosis2' => preg_replace('/[\\.]/', '', $row->diagnosisCode2), 'diagnosis3' => preg_replace('/[\\.]/', '', $row->diagnosisCode3), 'diagnosis4' => preg_replace('/[\\.]/', '', $row->diagnosisCode4), 'diagnosis5' => preg_replace('/[\\.]/', '', $row->diagnosisCode5), 'diagnosis6' => preg_replace('/[\\.]/', '', $row->diagnosisCode6), 'diagnosis7' => preg_replace('/[\\.]/', '', $row->diagnosisCode7), 'diagnosis8' => preg_replace('/[\\.]/', '', $row->diagnosisCode8), 'procedure' => $row->procedureCode, 'modifier1' => $row->modifier1, 'modifier2' => $row->modifier2, 'modifier3' => $row->modifier3, 'modifier4' => $row->modifier4, 'units' => str_replace('.00', '', $row->units), 'date_of_treatment' => $dateOfTreatment, 'clia_number' => ''), 'treating_facility' => $claimData['treating_facility'], 'provider' => $claimData['provider'], 'billing_facility' => $claimData['billing_facility'], 'subscriber' => $subscriber, 'clearing_house' => $claimData['clearing_house'], 'referring_provider' => $claimData['referring_provider'], 'supervising_provider' => $claimData['supervising_provider'], 'payer2' => $claimData['payer2']); } $hl2 = array(); $hl2[] = array('hlCount' => $ctr, 'hlCount2' => ++$ctr, 'payer' => array('responsibility' => 'P'), 'subscriber' => $subscriber, 'patient' => array('weight' => '', 'last_name' => $patient->lastName, 'first_name' => $patient->firstName), 'responsible_party' => array('last_name' => '', 'first_name' => '', 'address' => array('line1' => '', 'line2' => '', 'city' => '', 'state' => '', 'zip' => '')), 'CLM' => $clm); $data['HL2'] = $hl2; return $data; }
public static function handlereFaxSourceData(Audit $audit) { $data = array(); if ($audit->objectClass != 'ESignature') { return $data; } $eSignature = new ESignature(); $eSignature->eSignatureId = $audit->objectId; $eSignature->populate(); if ($eSignature->objectClass != 'Medication') { return $data; } $data['_audit'] = $audit; $medication = new Medication(); $medication->medicationId = $eSignature->objectId; $medication->populate(); $data['transmissionId'] = (int) $medication->medicationId; $data['recipients'] = array(); $patient = new Patient(); $patient->personId = $medication->personId; $patient->populate(); $pharmacyId = $patient->defaultPharmacyId; $provider = new Provider(); $provider->personId = $medication->prescriberPersonId; $provider->populate(); // recipients MUST be a pharmacy? $pharmacy = new Pharmacy(); $pharmacy->pharmacyId = $pharmacyId; $pharmacy->populate(); //$data['recipients'][] = array('fax'=>$pharmacy->Fax,'name'=>$pharmacy->StoreName,'company'=>$pharmacy->StoreName); // temporarily comment out the above recipient and use the hardcoded recipient $data['recipients'][] = array('fax' => '6022976632', 'name' => 'Jay Walker', 'company' => 'ClearHealth Inc.'); $prescription = new Prescription(); $prescription->prescriberName = $provider->firstName . ' ' . $provider->lastName . ' ' . $provider->title; $prescription->prescriberStateLicenseNumber = $provider->stateLicenseNumber; $prescription->prescriberDeaNumber = $provider->deaNumber; // Practice Info $primaryPracticeId = $provider->primaryPracticeId; $practice = new Practice(); $practice->id = $primaryPracticeId; $practice->populate(); $address = $practice->primaryAddress; $prescription->practiceName = $practice->name; $prescription->practiceAddress = $address->line1 . ' ' . $address->line2; $prescription->practiceCity = $address->city; $prescription->practiceState = $address->state; $prescription->practicePostalCode = $address->postalCode; $attachment = new Attachment(); $attachment->attachmentReferenceId = $provider->personId; $attachment->populateWithAttachmentReferenceId(); if ($attachment->attachmentId > 0) { $db = Zend_Registry::get('dbAdapter'); $sqlSelect = $db->select()->from('attachmentBlobs')->where('attachmentId = ?', (int) $attachment->attachmentId); if ($row = $db->fetchRow($sqlSelect)) { $tmpFile = tempnam('/tmp', 'ch30_sig_'); file_put_contents($tmpFile, $row['data']); $signatureFile = $tmpFile; $prescription->prescriberSignature = $signatureFile; } } $prescription->patientName = $patient->lastName . ', ' . $patient->firstName; $address = $patient->homeAddress; $prescription->patientAddress = $address->line1 . ' ' . $address->line2; $prescription->patientCity = $address->city; $prescription->patientState = $address->state; $prescription->patientPostalCode = $address->postalCode; $prescription->patientDateOfBirth = date('m/d/Y', strtotime($patient->dateOfBirth)); $prescription->medicationDatePrescribed = date('m/d/Y', strtotime($medication->datePrescribed)); $prescription->medicationDescription = $medication->description; $prescription->medicationComment = $medication->comment; $prescription->medicationQuantity = $medication->quantity; $prescription->medicationRefills = $medication->refills; $prescription->medicationDirections = $medication->directions; $prescription->medicationSubstitution = $medication->substitution; $prescription->create(); $filename = $prescription->imageFile; $fileType = pathinfo($filename, PATHINFO_EXTENSION); $data['files'] = array(); $contents = file_get_contents($filename); unlink($filename); $data['files'][] = array('contents' => base64_encode($contents), 'type' => $fileType); return $data; }
public function listPatientVisitTypesAction() { $patientId = (int) $this->_getParam('patientId'); $visitId = (int) $this->_getParam('visitId'); $rows = array(); if ($patientId > 0) { $patientVisitTypeIterator = new PatientVisitTypeIterator(); $patientVisitTypeIterator->setFilters(array('patientId' => $patientId, 'visitId' => $visitId)); foreach ($patientVisitTypeIterator as $visitType) { $provider = new Provider(); $provider->personId = $visitType->providerId; $provider->populate(); $tmp = array(); $tmp['id'] = $visitType->providerId; $tmp['data'][] = $provider->displayName; $tmp['data'][] = $visitType->isPrimary ? __('Primary') : ''; $rows[] = $tmp; } } $data = array(); $data['rows'] = $rows; $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct($data); }
protected function _syncLocation(EPrescriber $ePrescriber) { $ret = true; $dateActiveStart = strtotime($ePrescriber->dateActiveStart); $dateActiveEnd = strtotime($ePrescriber->dateActiveEnd); $serviceLevel = (int) $ePrescriber->serviceLevel; $personId = (int) $ePrescriber->providerId; $provider = new Provider(); $provider->personId = $personId; $provider->populate(); $provider->serviceLevel = $serviceLevel; if ($dateActiveStart > 0 && $dateActiveEnd > 0) { $provider->dateActiveStart = date('Y-m-d H:i:s', $dateActiveStart); $provider->dateActiveEnd = date('Y-m-d H:i:s', $dateActiveEnd); } $person = new Person(); $person->personId = $personId; $person->populate(); $practice = new Practice(); $practice->practiceId = $person->primaryPracticeId; $practice->populate(); $data = array(); $data['deaNumber'] = $provider->deaNumber; $data['stateLicenseNumber'] = $provider->stateLicenseNumber; //$data['portalId'] = Zend_Registry::get('config')->sureScripts->portalId; //$data['accountId'] = Zend_Registry::get('config')->sureScripts->accountId; $data['clinicName'] = '' . $practice->name; $data['lastName'] = $person->lastName; $data['firstName'] = $person->firstName; $address = $ePrescriber->building; $data['addressLine1'] = $address->line1; $data['addressLine2'] = $address->line2; $data['addressCity'] = $address->city; $data['addressState'] = $address->state; $data['addressZipCode'] = $address->zipCode; $data['email'] = $person->email; $data['phones'] = array(array('number' => PhoneNumber::autoFixNumber($address->phoneNumber), 'type' => 'TE'), array('number' => PhoneNumber::autoFixNumber($address->fax), 'type' => 'FX')); $data['specialtyCode'] = $provider->specialty; $specialtyQualifier = ''; if (strlen($provider->specialty) > 0) { $specialtyQualifier = 'AM'; } $data['specialtyQualifier'] = $specialtyQualifier; $data['serviceLevel'] = $provider->serviceLevel; $now = strtotime('now'); $days30 = strtotime('+30 days', $now); $activeStartTime = gmdate("Y-m-d\\TH:i:s.0", $now) . 'Z'; $activeEndTime = gmdate("Y-m-d\\TH:i:s.0", $days30) . 'Z'; $data['activeStartTime'] = $provider->dateActiveStartZ; $data['activeEndTime'] = $provider->dateActiveEndZ; $dateActiveEnd = strtotime(date('Y-m-d', strtotime($provider->dateActiveEndZ))); if ($dateActiveEnd <= strtotime(date('Y-m-d'))) { // to disable a prescriber ActiveEndTime must be set to current date and ServiceLevel must be set to zero. $data['activeEndTime'] = date('Y-m-d'); $data['serviceLevel'] = 0; $provider->serviceLevel = 0; } $provider->persist(); $identifierType = $provider->identifierType; if (strlen($identifierType) > 0) { $data[$identifierType] = $provider->identifier; } $messaging = new Messaging(); //$messaging->messagingId = ''; $type = 'add'; $messaging->messageType = 'AddPrescriber'; if (strlen($ePrescriber->SSID) > 0) { $messaging->messageType = 'UpdatePrescriber'; $data['SPI'] = $ePrescriber->SSID; $type = 'update'; } else { if (strlen($provider->sureScriptsSPI) > 0) { $messaging->messageType = 'AddPrescriberLocation'; $data['SPI'] = substr($provider->sureScriptsSPI, 0, -3); $type = 'addLocation'; } } // backupPortalId must be supplied if type is updateLocation $messaging->populate(); //$messaging->objectId = ''; //$messaging->objectClass = ''; $messaging->status = 'Sending'; $messaging->note = 'Sending prescriber data'; $messaging->dateStatus = date('Y-m-d H:i:s'); //$messaging->auditId = ''; $messaging->persist(); $query = http_build_query(array('type' => $type, 'data' => $data)); $ch = curl_init(); $ePrescribeURL = Zend_Registry::get('config')->healthcloud->URL; $ePrescribeURL .= 'ss-manager.raw/edit-prescriber?apiKey=' . Zend_Registry::get('config')->healthcloud->apiKey; curl_setopt($ch, CURLOPT_URL, $ePrescribeURL); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output = curl_exec($ch); trigger_error('OUTPUT: ' . $output, E_USER_NOTICE); $error = ""; $prescriberSPI = ''; $messaging->status = 'Sent'; $messaging->note = 'Prescriber data sent'; if (!curl_errno($ch)) { try { $responseXml = simplexml_load_string($output); if (isset($responseXml->error)) { $errorCode = (string) $responseXml->error->code; $errorMsg = (string) $responseXml->error->message; if (isset($responseXml->error->errorCode)) { $errorCode = (string) $responseXml->error->errorCode; } if (isset($responseXml->error->errorMsg)) { $errorMsg = (string) $responseXml->error->errorMsg; } $error = $errorMsg; trigger_error('There was an error enabling an ePresciber, Error code: ' . $errorCode . ' Error Message: ' . $errorMsg, E_USER_NOTICE); } elseif (isset($responseXml->data)) { $xml = new SimpleXMLElement($responseXml->data); $prescriber = $xml->AddPrescriberResponse->Prescriber; //if ($type == 'addLocation') { if (isset($xml->AddPrescriberLocationResponse)) { $prescriber = $xml->AddPrescriberLocationResponse->Prescriber; } $prescriberSPI = (string) $prescriber->Identification->SPI; if (!strlen($prescriberSPI) > 0) { $error = 'Registration failed for location ' . $ePrescriber->building->name; } } if (isset($responseXml->rawMessage)) { $messaging->rawMessage = base64_decode((string) $responseXml->rawMessage); $messaging->rawMessageResponse = base64_decode((string) $responseXml->rawMessageResponse); } } catch (Exception $e) { $error = __("There was an error connecting to HealthCloud to enable ePrescribing for this provider. Please try again or contact the system administrator."); trigger_error("There was an error enabling an ePresciber, the response couldn't be parsed as XML: " . $output, E_USER_NOTICE); } } else { $error = __("There was an error connecting to HealthCloud to enable ePrescribing for this provider. Please try again or contact the system administrator."); trigger_error("Curl error connecting to healthcare enabled an ePrescribe record: " . curl_error($ch), E_USER_NOTICE); } curl_close($ch); if (strlen($error) > 0) { $messaging->status = 'Error'; $messaging->note = $error; $ret = false; } if ($messaging->resend) { $messaging->resend = 0; } $messaging->retries++; $messaging->dateStatus = date('Y-m-d H:i:s'); $messaging->persist(); if (strlen($error) > 0) { return $error; } if (!strlen($provider->sureScriptsSPI) > 0) { // handler of the first SPI $provider->sureScriptsSPI = $prescriberSPI; $provider->persist(); } if ($type == 'add' || $type == 'addLocation') { $ePrescriber->SSID = $prescriberSPI; $ePrescriber->persist(); } return $ret; }
public function newRxAction() { $medicationId = 1077476; $data = array(); $medication = new Medication(); $medication->medicationId = $medicationId; $medication->populate(); $data['PrescriberOrderNumber'] = $medication->medicationId; $medData = array(); $medData['DrugDescription'] = $medication->description; $medData['Strength'] = $medication->strength; $medData['StrengthUnits'] = $medication->unit; $medData['Quantity'] = $medication->quantity; $medData['Directions'] = $medication->directions; $medData['Refills'] = $medication->refills; $medData['Substitutions'] = $medication->substitution; $medData['WrittenDate'] = date('Ymd', strtotime($medication->datePrescribed)); $data['medication'] = $medData; $pharmacy = new Pharmacy(); $pharmacy->pharmacyId = $medication->pharmacyId; $pharmacy->populate(); $pharmacyData = array(); $pharmacyData['NCPDPID'] = $pharmacy->NCPDPID; $pharmacyData['StoreName'] = $pharmacy->StoreName; $pharmacyData['AddressLine1'] = $pharmacy->AddressLine1 . ' ' . $pharmacy->AddressLine2; $pharmacyData['City'] = $pharmacy->City; $pharmacyData['State'] = $pharmacy->State; $pharmacyData['ZipCode'] = $pharmacy->Zip; $pharmacyData['PhoneNumber'] = $pharmacy->PhonePrimary; $data['pharmacy'] = $pharmacyData; $provider = new Provider(); $provider->personId = $medication->prescriberPersonId; $provider->populate(); $prescriberData = array(); $prescriberData['DEANumber'] = $provider->deaNumber; $prescriberData['SPI'] = $provider->sureScriptsSPI; $prescriberData['ClinicName'] = ''; $prescriberData['LastName'] = $provider->person->lastName; $prescriberData['FirstName'] = $provider->person->firstName; $prescriberData['Suffix'] = ''; $address = new Address(); $address->personId = $provider->personId; $address->populateWithPersonId(); $prescriberData['AddressLine1'] = $address->line1 . ' ' . $address->line2; $prescriberData['City'] = $address->city; $prescriberData['State'] = 'AZ'; //$address->state; $prescriberData['ZipCode'] = $address->zipCode; $phoneNumber = new PhoneNumber(); $phoneNumber->personId = $provider->personId; $phoneNumber->populateWithPersonId(); $prescriberData['PhoneNumber'] = $phoneNumber->number; $data['prescriber'] = $prescriberData; $patient = new Patient(); $patient->personId = $medication->personId; $patient->populate(); $patientData = array(); $patientData['LastName'] = $patient->person->lastName; $patientData['FirstName'] = $patient->person->firstName; $patientData['Gender'] = $patient->person->gender; $patientData['DateOfBirth'] = date('Ymd', strtotime($patient->person->dateOfBirth)); $address = new Address(); $address->personId = $patient->personId; $address->populateWithPersonId(); $patientData['AddressLine1'] = $address->line1 . ' ' . $address->line2; $patientData['City'] = $address->city; $patientData['State'] = 'AZ'; //$address->state; $patientData['ZipCode'] = $address->zipCode; $phoneNumber = new PhoneNumber(); $phoneNumber->personId = $patient->personId; $phoneNumber->populateWithPersonId(); $patientData['PhoneNumber'] = $phoneNumber->number; $data['patient'] = $patientData; $postFields = array(); foreach ($data as $type => $row) { if (is_array($row)) { foreach ($row as $field => $value) { $key = $type . '[' . $field . ']'; $postFields[$key] = $value; } } else { $postFields[$type] = $row; } } $ch = curl_init(); $ePrescribeURL = Zend_Registry::get('config')->healthcloud->URL; $ePrescribeURL .= 'ss-manager.raw/new-rx?apiKey=' . Zend_Registry::get('config')->healthcloud->apiKey; curl_setopt($ch, CURLOPT_URL, $ePrescribeURL); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_USERPWD, 'admin:ch3!'); $output = curl_exec($ch); trigger_error('OUTPUT: ' . $output, E_USER_NOTICE); $error = ""; if (!curl_errno($ch)) { try { $responseXml = simplexml_load_string($output); if (isset($responseXml->error)) { $errorCode = (string) $responseXml->error->code; $errorMsg = (string) $responseXml->error->message; if (isset($responseXml->error->errorCode)) { $errorCode = (string) $responseXml->error->errorCode; } if (isset($responseXml->error->errorMsg)) { $errorMsg = (string) $responseXml->error->errorMsg; } $error = $errorMsg; trigger_error('There was an error prescribing new medication, Error code: ' . $errorCode . ' Error Message: ' . $errorMsg, E_USER_NOTICE); } } catch (Exception $e) { $error = __("There was an error connecting to HealthCloud to prescribe new medication. Please try again or contact the system administrator."); trigger_error("There was an error prescribeing new medication, the response couldn't be parsed as XML: " . $output, E_USER_NOTICE); } } else { $error = __("There was an error connecting to HealthCloud to prescribe new medication. Please try again or contact the system administrator."); trigger_error("Curl error connecting to healthcare prescribed new medication: " . curl_error($ch), E_USER_NOTICE); } curl_close($ch); $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; if (strlen($error) > 0) { $this->getResponse()->setHttpResponseCode(500); $json->direct(array('error' => $error)); return; } $json->direct(true); }
protected function _generateColumnHeader(array $column) { $data = array(); $data['header'] = "{$column['dateFilter']}<br>"; $title = $column['dateFilter']; // temporarily set the header as providerId $providerId = $column['providerId']; $roomId = 0; if (isset($column['roomId'])) { $roomId = $column['roomId']; } if ($providerId > 0) { $provider = new Provider(); $provider->setPersonId($providerId); $provider->populate(); $name = $provider->last_name . ', ' . $provider->first_name; // we simply replace the comma with its html equivalent (,) because this may cause not to render the header $data['header'] .= str_replace(',', ',', $name); $title .= ' -> ' . $name; } if ($roomId > 0) { $room = new Room(); $room->id = $roomId; $room->populate(); if ($providerId > 0) { //$data['header'] .= '<br>'; $data['header'] .= ' - '; } $data['header'] .= $room->name; $title .= ' -> ' . $room->name; } $data['header'] = '<label title="' . $title . '">' . $data['header'] . '</label>'; return $data; }
public function defaultPatientHeaderAction() { $personId = (int) $this->_getParam('personId'); // e76f18cd-d388-4c53-b940-53cb81b80c5e $referenceId = $this->_getParam('referenceId'); $data = $this->_getAttachmentData($referenceId); $patient = new Patient(); $patient->personId = $personId; $patient->populate(); $person = $patient->person; $picture = ''; if ($person->activePhoto > 0) { $attachment = new Attachment(); $attachment->attachmentId = (int) $person->activePhoto; $attachment->populate(); $picture = base64_encode($attachment->rawData); } $xml = new SimpleXMLElement('<patientHeader/>'); $xmlPatient = $xml->addChild('patient'); $this->_addChild($xmlPatient, 'picture', $picture); $this->_addChild($xmlPatient, 'lastName', $person->lastName); $this->_addChild($xmlPatient, 'firstName', $person->firstName); $this->_addChild($xmlPatient, 'dateOfBirth', $person->dateOfBirth); $this->_addChild($xmlPatient, 'gender', $person->gender); $statistics = PatientStatisticsDefinition::getPatientStatistics($personId); $race = ''; if (isset($statistics['Race'])) { $race = $statistics['Race']; } else { if (isset($statistics['race'])) { $race = $statistics['race']; } } $this->_addChild($xmlPatient, 'race', $race); $this->_addChild($xmlPatient, 'maritalStatus', $person->displayMaritalStatus); $addresses = Address::listAddresses($personId); $phoneNumbers = PhoneNumber::listPhoneNumbers($personId); $address = null; if (isset($addresses[Address::TYPE_BILLING])) { $address = $addresses[Address::TYPE_BILLING]; } else { if (isset($addresses[Address::TYPE_HOME])) { $address = $addresses[Address::TYPE_HOME]; } else { if (isset($addresses[Address::TYPE_MAIN])) { $address = $addresses[Address::TYPE_MAIN]; } else { if (isset($addresses[Address::TYPE_SEC])) { $address = $addresses[Address::TYPE_SEC]; } else { if (isset($addresses[Address::TYPE_OTHER])) { $address = $addresses[Address::TYPE_OTHER]; } } } } } if ($address !== null) { $phone = ''; if (isset($phoneNumbers[PhoneNumber::TYPE_BILLING])) { $phone = $phoneNumbers[PhoneNumber::TYPE_BILLING]->number; } else { if (isset($phoneNumbers[PhoneNumber::TYPE_HOME])) { $phone = $phoneNumbers[PhoneNumber::TYPE_HOME]->number; } else { if (isset($phoneNumbers[PhoneNumber::TYPE_WORK])) { $phone = $phoneNumbers[PhoneNumber::TYPE_WORK]->number; } else { if (isset($phoneNumbers[PhoneNumber::TYPE_HOME_DAY])) { $phone = $phoneNumbers[PhoneNumber::TYPE_HOME_DAY]->number; } else { if (isset($phoneNumbers[PhoneNumber::TYPE_HOME_EVE])) { $phone = $phoneNumbers[PhoneNumber::TYPE_HOME_EVE]->number; } else { if (isset($phoneNumbers[PhoneNumber::TYPE_MOBILE])) { $phone = $phoneNumbers[PhoneNumber::TYPE_MOBILE]->number; } else { if (isset($phoneNumbers[PhoneNumber::TYPE_BEEPER])) { $phone = $phoneNumbers[PhoneNumber::TYPE_BEEPER]->number; } } } } } } } $this->_addChild($xmlPatient, 'billingLine1', $address->line1); $this->_addChild($xmlPatient, 'billingCity', $address->city); $this->_addChild($xmlPatient, 'billingState', $address->state); $this->_addChild($xmlPatient, 'billingZip', $address->postalCode); $this->_addChild($xmlPatient, 'phoneNumber', $phone); } if ($person->primaryPracticeId > 0) { $practice = new Practice(); $practice->practiceId = (int) $person->primaryPracticeId; $practice->populate(); $address = $practice->primaryAddress; $xmlPractice = $xml->addChild('practice'); $this->_addChild($xmlPractice, 'name', $practice->name); $this->_addChild($xmlPractice, 'primaryLine1', $address->line1); $this->_addChild($xmlPractice, 'primaryCity', $address->city); $this->_addChild($xmlPractice, 'primaryState', $address->state); $this->_addChild($xmlPractice, 'primaryZip', $address->postalCode); $this->_addChild($xmlPractice, 'mainPhone', $practice->mainPhone->number); $this->_addChild($xmlPractice, 'faxNumber', $practice->fax->number); } $insuredRelationship = new InsuredRelationship(); $insuredRelationshipIterator = $insuredRelationship->getIteratorByPersonId($personId); $primary = null; $secondary = null; foreach ($insuredRelationshipIterator as $item) { if (!$item->active) { continue; } if ($primary === null) { $primary = $item; } else { if ($secondary === null) { $secondary = $item; } else { break; } } } $xmlPayer = $xml->addChild('payer'); if ($primary !== null) { $this->_addChild($xmlPayer, 'primary', $primary->insuranceProgram->name); } if ($secondary !== null) { $this->_addChild($xmlPayer, 'secondary', $secondary->insuranceProgram->name); } /*$xmlGuarantor = $xml->addChild('guarantor'); $this->_addChild($xmlGuarantor,'lastName',''); $this->_addChild($xmlGuarantor,'firstName',''); $this->_addChild($xmlGuarantor,'dateOfBirth',''); $this->_addChild($xmlGuarantor,'phone','');*/ // get the current visit $xmlProvider = $xml->addChild('provider'); $lastName = ''; $firstName = ''; $dateOfBirth = ''; $phone = ''; $visit = new Visit(); $visit->populateLatestVisit($personId); if ($visit->visitId > 0) { $provider = new Provider(); $provider->personId = $visit->providerId; $provider->populate(); $person = $provider->person; $lastName = $person->lastName; $firstName = $person->firstName; $dateOfBirth = $person->dateOfBirth; $phone = $person->phoneNumber->number; } $this->_addChild($xmlProvider, 'lastName', $lastName); $this->_addChild($xmlProvider, 'firstName', $firstName); $this->_addChild($xmlProvider, 'dateOfBirth', $dateOfBirth); $this->_addChild($xmlProvider, 'phone', $phone); try { $content = ReportBase::mergepdfset($xml, $data); $this->getResponse()->setHeader('Content-Type', 'application/pdf'); } catch (Exception $e) { $content = '<script>alert("' . $e->getMessage() . '")</script>'; } $this->view->content = $content; $this->render('binary-template'); }
public function indexAction() { $personId = (int) Zend_Auth::getInstance()->getIdentity()->personId; $this->view->currentPersonId = $personId; $provider = new Provider(); $provider->person_id = $personId; $provider->populate(); $this->view->provider = $provider; $this->render(); }
public static function listCharges(array $filters) { $db = Zend_Registry::get('dbAdapter'); $sqlSelect = $db->select()->from('claimLines')->join('encounter', 'encounter.encounter_id = claimLines.visitId', array('SUM(claimLines.baseFee) AS totalBaseFee', 'SUM(claimLines.adjustedFee) AS totalAdjustedFee'))->order('claimLines.dateTime DESC')->order('claimLines.claimId DESC')->order('encounter.appointmentId')->group('encounter.encounter_id'); $sqlSelect = $db->select()->from('encounter')->order('encounter.date_of_treatment DESC'); $mscSelect = $db->select()->from('misc_charge', array('misc_charge.misc_charge_id AS id', 'misc_charge.amount AS billed', 'CONCAT(\'0\') AS paid', 'CONCAT(\'0\') AS writeOff', 'CONCAT(\'Misc Charge\') AS payer', 'encounter.date_of_treatment AS dateOfTreatment', 'misc_charge.charge_date AS dateBilled', 'CONCAT(patient.last_name,\', \',patient.first_name,\' \',patient.middle_name) AS patientName', 'CONCAT(\'\') AS facility', 'CONCAT(provider.last_name,\', \',provider.first_name,\' \',provider.middle_name) AS providerName'))->join('encounter', 'encounter.encounter_id = misc_charge.encounter_id')->join(array('patient' => 'person'), 'patient.person_id = encounter.patient_id')->join(array('provider' => 'person'), 'provider.person_id = encounter.treating_person_id')->order('misc_charge.charge_date DESC'); foreach ($filters as $key => $value) { switch ($key) { case 'dateRange': $sqlSelect->where("encounter.date_of_treatment BETWEEN '{$value['start']} 00:00:00' AND '{$value['end']} 23:59:59'"); $mscSelect->where("encounter.date_of_treatment BETWEEN '{$value['start']} 00:00:00' AND '{$value['end']} 23:59:59'"); break; case 'facilities': // practice, building, room if (!is_array($value)) { $value = array($value); } $facilities = array(); foreach ($value as $val) { $facilities[] = 'encounter.practice_id = ' . (int) $val['practice'] . ' AND encounter.building_id = ' . (int) $val['building'] . ' AND encounter.room_id = ' . (int) $val['room']; } $sqlSelect->where(implode(' OR ', $facilities)); $mscSelect->where(implode(' OR ', $facilities)); break; case 'payers': $payers = array(); foreach ($value as $payerId) { $payers[] = (int) $payerId; } $payers = implode(',', $payers); $sqlSelect->where('encounter.activePayerId IN (' . $payers . ')'); $mscSelect->where('encounter.activePayerId IN (' . $payers . ')'); break; case 'facility': // practice, building, room $sqlSelect->where('encounter.practice_id = ?', (int) $value['practice']); $sqlSelect->where('encounter.building_id = ?', (int) $value['building']); $sqlSelect->where('encounter.room_id = ?', (int) $value['room']); // practice, building, room $mscSelect->where('encounter.practice_id = ?', (int) $value['practice']); $mscSelect->where('encounter.building_id = ?', (int) $value['building']); $mscSelect->where('encounter.room_id = ?', (int) $value['room']); break; case 'insurer': $sqlSelect->where('encounter.activePayerId = ?', (int) $value); $mscSelect->where('encounter.activePayerId = ?', (int) $value); break; case 'visitId': $sqlSelect->where('encounter.encounter_id = ?', (int) $value); $mscSelect->where('encounter.encounter_id = ?', (int) $value); break; case 'provider': $value = array($value); case 'providers': $providers = array(); foreach ($value as $providerId) { $providers[] = (int) $providerId; } $providers = implode(',', $providers); $sqlSelect->where('encounter.treating_person_id IN (' . $providers . ')'); $mscSelect->where('encounter.treating_person_id IN (' . $providers . ')'); break; case 'closed': $sqlSelect->where('encounter.closed = ?', (int) $value); $mscSelect->where('encounter.closed = ?', (int) $value); break; case 'void': $sqlSelect->where('encounter.void = ?', (int) $value); $mscSelect->where('encounter.void = ?', (int) $value); break; } } $rows = array(); $visits = array(); $payers = array(); $facilities = array(); $patients = array(); $providers = array(); $stmt = $db->query($sqlSelect); $stmt->setFetchMode(Zend_Db::FETCH_ASSOC); while ($row = $stmt->fetch()) { $visit = new Visit(); $visit->populateWithArray($row); $visitId = (int) $visit->visitId; $acct = $visit->accountSummary; $paid = $acct['payment']; $writeoff = $acct['writeoff']; $total = $acct['total']; $billed = $acct['billed']; $balance = $acct['balance']; $payerId = isset($acct['claimLine']) ? $acct['claimLine']->insuranceProgramId : $visit->activePayerId; if (!isset($payers[$payerId])) { $payers[$payerId] = InsuranceProgram::getInsuranceProgram($payerId); } $patientId = (int) $visit->patientId; if (!isset($patients[$patientId])) { $patient = new Patient(); $patient->personId = $patientId; $patient->populate(); $patients[$patientId] = $patient; } $facilityId = (int) $visit->roomId; if (!isset($facilities[$facilityId])) { $facilities[$facilityId] = $visit->facility; } $providerId = (int) $visit->providerId; if (!isset($providers[$providerId])) { $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $providers[$providerId] = $provider; } $tmp = array(); $tmp['id'] = $visitId; $tmp['total'] = $total; $tmp['billed'] = $billed; $tmp['paid'] = $paid; $tmp['writeOff'] = $writeoff; $tmp['balance'] = $balance; $tmp['payer'] = $payers[$payerId]; $tmp['dateOfTreatment'] = $visit->dateOfTreatment; $tmp['dateBilled'] = isset($acct['claimLine']) ? $acct['claimLine']->dateTime : $visit->dateOfTreatment; $patientName = $patients[$patientId]->personId > 0 ? $patients[$patientId]->person->displayName : ''; $tmp['patientName'] = $patientName; $tmp['facility'] = $facilities[$facilityId]; $providerName = $providers[$providerId]->personId > 0 ? $providers[$providerId]->person->displayName : ''; $tmp['providerName'] = $providerName; $rows[] = $tmp; } $stmt = $db->query($mscSelect); $stmt->setFetchMode(Zend_Db::FETCH_ASSOC); while ($row = $stmt->fetch()) { $row['balance'] = (double) $row['billed'] - ((double) $row['paid'] + (double) $row['writeOff']); $rows[] = $row; } return $rows; }
public function listHistoryAction() { $personId = (int) $this->_getParam('personId'); $future = (int) $this->_getParam('future'); $rows = array(); $appointmentTemplate = new AppointmentTemplate(); $reasons = $appointmentTemplate->getAppointmentReasons(); $iterator = new AppointmentIterator(null, false); $filters = array('patientId' => $personId); if ($future) { $filters['start'] = date('Y-m-d'); } $iterator->setFilters($filters); foreach ($iterator as $app) { $personId = (int) $app->patientId; $appointmentId = (int) $app->appointmentId; $providerId = (int) $app->providerId; $roomId = (int) $app->roomId; list($dateStart, $timeStart) = explode(' ', $app->start); list($dateEnd, $timeEnd) = explode(' ', $app->end); $providerName = ''; if ($providerId > 0) { $provider = new Provider(); $provider->setPersonId($providerId); $provider->populate(); $providerName = $provider->displayName; } $roomName = ''; if ($roomId > 0) { $room = new Room(); $room->setRoomId($roomId); $room->populate(); $roomName = $room->displayName; } $routing = new Routing(); $routing->personId = $personId; $routing->appointmentId = $appointmentId; $routing->providerId = $providerId; $routing->roomId = $roomId; $routing->populateByAppointments(); $station = $routing->stationId; $reason = $app->reason; $appointmentReason = isset($reasons[$reason]) ? $reasons[$reason]['name'] : ''; $row = array(); $row['id'] = $appointmentId; $row['data'] = array(); $row['data'][] = $dateStart; $row['data'][] = $timeStart . ' - ' . $timeEnd; $row['data'][] = $providerName; $row['data'][] = $app->title; $row['data'][] = $roomName; $row['data'][] = $appointmentReason; $row['data'][] = $app->appointmentCode; $row['data'][] = $routing->stationId; $rows[] = $row; } $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct(array('rows' => $rows)); }
function processNextStationByAppointmentAction() { $appointmentId = (int) $this->_getParam('appointmentId'); $stationId = $this->_getParam('stationId'); $appointment = new Appointment(); $appointment->appointmentId = $appointmentId; $appointment->populate(); $provider = new Provider(); $provider->personId = $appointment->providerId; $provider->populate(); $routing = new Routing(); $routing->personId = $appointment->patientId; $routing->appointmentId = $appointment->appointmentId; $routing->providerId = $appointment->providerId; $routing->roomId = $appointment->roomId; $routing->populateByAppointments(); $routing->fromStationId = $routing->stationId; $routing->stationId = $stationId; $routing->timestamp = date('Y-m-d H:i:s'); $routing->persist(); $json = Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $json->direct(array(true)); }
public static function generate($patientId) { // v2.5.1 $patientId = (int) $patientId; $ret = array(); $msh = array(); $msh['messageType'] = array('code' => 'ORU', 'eventType' => 'R01', 'structure' => 'ORU_R01'); $ret[] = self::generateMSH($msh); // MSH $ret[] = self::generateSFT(); // SFT $ret[] = self::generatePID($patientId); // PID $filters = array('patientId' => $patientId); $labResults = array(); $labTests = array(); $labOrderTests = array(); $labsIterator = new LabsIterator(); $labsIterator->setFilters($filters); foreach ($labsIterator as $lab) { // get the lab order $labTestId = (int) $lab->labTestId; if (!isset($labTests[$labTestId])) { $labTest = new LabTest(); $labTest->labTestId = (int) $lab->labTestId; $labTest->populate(); $labTests[$labTestId] = $labTest; } $labTest = $labTests[$labTestId]; $orderId = (int) $labTest->labOrderId; if (!isset($labOrderTests[$orderId])) { $orderLabTest = new OrderLabTest(); $orderLabTest->orderId = $orderId; $orderLabTest->populate(); $labOrderTests[$orderId] = $orderLabTest; } $orderLabTest = $labOrderTests[$orderId]; if (!isset($labResults[$orderId])) { $labResults[$orderId] = array(); $labResults[$orderId]['results'] = array(); $labResults[$orderId]['labTest'] = $labTest; $labResults[$orderId]['orderLabTest'] = $orderLabTest; $providerId = (int) $orderLabTest->order->providerId; $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $labResults[$orderId]['provider'] = $provider; } $labResults[$orderId]['results'][] = $lab; } foreach ($base->labResults as $orderId => $value) { $ret[] = self::generateORC($value); // ORC $ret[] = self::generateOBR($value); // OBR foreach ($value['results'] as $result) { $data = array('result' => $result, 'labTest' => $value['labTest'], 'orderLabTest' => $value['orderLabTest'], 'provider' => $value['provider']); $ret[] = self::generateOBX($data); // OBX } $ret[] = self::generateSPM($value); // SPM } /*$iterator = new LabsIterator(); $iterator->setFilters(array('patientId'=>$patientId)); foreach ($iterator as $lab) { $data = array(); $data['lab'] = $lab; $orderLabTest = new OrderLabTest(); $orderLabTest->orderId = $lab->labTest->labOrderId; $orderLabTest->populate(); $data['orderLabTest'] = $orderLabTest; $loinc = new ProcedureCodesLOINC(); $loinc->loincNum = $orderLabTest->labTest; $loinc->populate(); $data['loinc'] = $loinc; $ret[] = self::generateOBR($data); // OBR $ret[] = self::generateOBX($data); // OBX $ret[] = self::generateSPM($data); // SPM }*/ return implode("\r\n", $ret); }
public function populate($patientId, $userId, $visitId) { $this->_patientId = (int) $patientId; $patient = new Patient(); $patient->personId = $this->_patientId; $patient->populate(); $this->_title = $patient->displayName . ' Healthcare Record'; $this->patient = $patient; $this->_userId = (int) $userId; $user = new User(); $user->personId = $this->_userId; $user->populate(); $this->user = $user; $visit = new Visit(); $visit->visitId = (int) $visitId; if ($visit->visitId > 0 && $visit->populate()) { $this->visit = $visit; } $this->building = Building::getBuildingDefaultLocation($this->user->personId); $performers = array(); $problemList = new ProblemList(); $filters = array(); $filters['personId'] = $this->_patientId; $this->setFiltersDateRange($filters); $problems = array(); $problemListIterator = new ProblemListIterator(); $problemListIterator->setFilters($filters); foreach ($problemListIterator as $problem) { $problems[] = $problem; $providerId = (int) $problem->providerId; if (!isset($performers[$providerId])) { $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $performers[$providerId] = $provider; } } $this->problemLists = $problems; unset($filters['personId']); $filters['patientId'] = $this->_patientId; $labResults = array(); $labTests = array(); $labOrderTests = array(); $labsIterator = new LabsIterator(); $labsIterator->setFilters($filters); foreach ($labsIterator as $lab) { // get the lab order $labTestId = (int) $lab->labTestId; if (!isset($labTests[$labTestId])) { $labTest = new LabTest(); $labTest->labTestId = (int) $lab->labTestId; $labTest->populate(); $labTests[$labTestId] = $labTest; } $labTest = $labTests[$labTestId]; $orderId = (int) $labTest->labOrderId; if (!isset($labOrderTests[$orderId])) { $orderLabTest = new OrderLabTest(); $orderLabTest->orderId = $orderId; $orderLabTest->populate(); $labOrderTests[$orderId] = $orderLabTest; } $orderLabTest = $labOrderTests[$orderId]; $providerId = (int) $orderLabTest->order->providerId; if (!isset($performers[$providerId])) { $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $performers[$providerId] = $provider; } if (!isset($labResults[$orderId])) { $labResults[$orderId] = array(); $labResults[$orderId]['results'] = array(); $labResults[$orderId]['labTest'] = $labTest; $labResults[$orderId]['orderLabTest'] = $orderLabTest; } $labResults[$orderId]['results'][] = $lab; } $this->labResults = $labResults; $this->performers = $performers; $this->populateHeader($this->_xml); $this->populateBody($this->_xml); return $this->_xml->asXML(); }
public function indexAction() { $identity = Zend_Auth::getInstance()->getIdentity(); $personId = (int) $identity->personId; $userId = $identity->userId; $user = new User(); $user->userId = $userId; $user->populate(); $currentPractice = ''; $currentBuilding = ''; if (strlen($user->preferences) > 0) { $this->xmlPreferences = new SimpleXMLElement($user->preferences); $currentLocation = (string) $this->xmlPreferences->currentLocation; $locationId = (int) $currentLocation; if ($locationId > 0) { $currentLocation = Room::location($locationId, true); $currentPractice = $currentLocation['practice']; $currentBuilding = $currentLocation['practice'] . '->' . $currentLocation['building']; } } $this->view->currentPractice = $currentPractice; $this->view->currentBuilding = $currentBuilding; $this->view->currentPersonId = $personId; $provider = new Provider(); $provider->person_id = $personId; $provider->populate(); $this->view->provider = $provider; $this->render(); }
protected function _generateEventColumnData(array $filters) { // filters assume to be sanitized $appointment = new Appointment(); $appointment->providerId = $filters['providerId']; $appointment->roomId = $filters['roomId']; $appointment->start = $filters['dateFilter'] . ' ' . self::FILTER_TIME_START; $appointment->end = $filters['dateFilter'] . ' ' . self::FILTER_TIME_END; $startTime = strtotime($appointment->start); $endTime = strtotime($appointment->end); // we need to get the length of time to create number of rows in the grid $timeLen = ($endTime - $startTime) / 60 / self::FILTER_MINUTES_INTERVAL; // NOTE: height is 22px for xp, default 20px // prepopulate return data $columnData = array(); //$maps = array(); $start = $startTime; $end = $endTime; $ctr = 0; while ($start <= $end) { $map = array(); $map['start'] = $start; $start = strtotime('+' . self::FILTER_MINUTES_INTERVAL . ' minutes', $start); $map['end'] = $start; //$maps[$ctr] = $map; $row = array(); // assign row id as rowNumber and columnIndex $columnData[$ctr] = array('id' => $ctr + 1, 'data' => array(''), 'map' => $map); $ctr++; } $columnDataCtr = count($columnData); $data = array('apps' => array(), 'events' => array()); $mapIndex = 0; $apps = array(); foreach ($appointment->getIter() as $app) { $start = strtotime($app->start); for ($i = $mapIndex; $i < $columnDataCtr; $i++) { $map = $columnData[$mapIndex]['map']; $mapIndex = $i; if ($start >= $map['start'] && $start <= $map['end']) { if (!isset($data['apps'][$i])) { $data['apps'][$i] = array(); } $data['apps'][$i][] = $app; break; } } } $mapIndex = 0; $events = array(); trigger_error('looping schedule event started'); $scheduleEvent = new ScheduleEvent(); $db = Zend_Registry::get('dbAdapter'); $sqlSelect = $db->select()->from('scheduleEvents')->where('providerId = ?', $appointment->providerId)->where('roomId = ?', $appointment->roomId)->where('start >= ?', $appointment->start)->where('end <= ?', $appointment->end)->where('start <= end')->order('start ASC'); $stmt = $db->query($sqlSelect); $stmt->setFetchMode(Zend_Db::FETCH_ASSOC); while ($row = $stmt->fetch()) { $event = new ScheduleEvent(); $event->populateWithArray($row); $start = strtotime($event->start); for ($i = $mapIndex; $i < $columnDataCtr; $i++) { $map = $columnData[$i]['map']; $mapIndex = $i; if ($start >= $map['start'] && $start <= $map['end']) { if (!isset($data['events'][$i])) { $data['events'][$i] = array(); } $data['events'][$i] = $event; break; } } } trigger_error('looping schedule event ended'); $colMultiplier = 1; $zIndex = 0; foreach ($data['apps'] as $index => $apps) { $ctr = count($apps); $columnData[$index]['userdata']['ctr'] = $ctr; if ($ctr > $colMultiplier) { $colMultiplier = $ctr; } for ($i = 0; $i < $ctr; $i++) { $app = $apps[$i]; $this->_populateAppointmentRow($app, $columnData, $index, $i, $ctr); } } $header = "{$filters['dateFilter']}<br>"; $title = $filters['dateFilter']; // temporarily set the header as providerId $providerId = (int) $filters['providerId']; $roomId = (int) $filters['roomId']; if ($providerId > 0) { $provider = new Provider(); $provider->setPersonId($providerId); $provider->populate(); $name = $provider->optionName; // we simply replace the comma with its html equivalent (,) because this may cause not to render the header $header .= str_replace(',', ',', $name); $title .= ' -> ' . $name; } if ($roomId > 0) { $room = new Room(); $room->id = $roomId; $room->populate(); if ($providerId > 0) { $header .= '<br>'; } $header .= $room->name; $title .= ' -> ' . $room->name; } $buildings = array(); foreach ($data['events'] as $index => $event) { $this->_populateScheduleEventRow($event, $columnData, $index); $buildingId = (int) $event->buildingId; $building = new Building(); $building->buildingId = $buildingId; $building->populate(); $buildings[$buildingId] = $building->displayName; } $eventBuilding = implode(', ', $buildings); $header .= '<br>(' . $eventBuilding . ')'; $title .= ' -> (' . $eventBuilding . ')'; $header = '<label title="' . $title . '">' . $header . '</label>'; for ($i = 0; $i < $columnDataCtr; $i++) { unset($columnData[$i]['map']); } $columnData[0]['userdata']['colMultiplier'] = $colMultiplier; $columnData[0]['userdata']['providerId'] = $appointment->providerId; $columnData[0]['userdata']['roomId'] = $appointment->roomId; $columnData[0]['userdata']['date'] = $filters['dateFilter']; return array('header' => $header, 'events' => array('rows' => $columnData)); }
public static function generateORC($provider) { // test#5 does not have this segment if (!$provider instanceof Provider) { $providerId = (int) $provider; $provider = new Provider(); $provider->personId = (int) $providerId; $provider->populate(); } $building = Building::getBuildingDefaultLocation($provider->personId); //$practice = self::$providerBuilding->practice; $practice = $building->practice; $practiceAddr = $practice->primaryAddress; if (!$practiceAddr->addressId > 0) { $practiceAddr = $practice->secondaryAddress; } $practicePhone = $practice->mainPhone; if (!$practicePhone->numberId > 0) { $practicePhone = $practice->secondaryPhone; } $phone = PhoneNumber::autoFixNumber($practicePhone->number); if (substr($phone, 0, 1) == 1) { $phone = substr($phone, 1); } $areaCode = substr($phone, 0, 3); $localNumber = substr($phone, 3); $addr = new Address(); foreach ($addr->getIteratorByPersonId($provider->personId) as $providerAddr) { break; } if (!isset($providerAddr)) { $providerAddr = new Address(); } $orc = 'ORC|RE|||||||||||'; if ($provider->personId > 0) { $providerId = strlen($provider->identifier) > 0 ? $provider->identifier : $provider->personId; $orc .= $providerId . '^' . $provider->person->lastName . '^' . $provider->person->firstName . '^^^^^^' . $building->name . '&2.16.840.1.113883.19.4.6&ISO'; } $orc .= '|||||||||' . $practice->name . '^L^^^^' . $building->name . '&2.16.840.1.113883.19.4.6&ISO^XX^^^' . $practice->identifier . '|' . $practiceAddr->line1 . '^^' . $practiceAddr->city . '^' . $practiceAddr->state . '^' . $practiceAddr->zipCode . '^^B|^^^^^' . $areaCode . '^' . $localNumber; if ($providerAddr->addressId > 0) { $orc .= '|' . $providerAddr->line1 . '^^' . $providerAddr->city . '^' . $providerAddr->state . '^' . $providerAddr->zipCode . '^^B'; } return $orc; }
protected static function _getPatientData($patient, $includeProvider = true, $providerId = null, $roomId = null) { $maritalStatusMap = array('SEPARATED' => 'A', 'DIVORCED' => 'D', 'MARRIED' => 'M', 'SINGLE' => 'S', 'WIDOWED' => 'W'); if (!$patient instanceof Patient) { $patientId = (int) $patient; $patient = new Patient(); $patient->personId = $patientId; $patient->populate(); } $personId = (int) $patient->personId; $person = $patient->person; $maritalStatus = $person->maritalStatus; if (isset($maritalStatusMap[$maritalStatus])) { $maritalStatus = $maritalStatusMap[$maritalStatus]; } $ethnicities = array(); $ethnicities['1'] = 1; $ethnicities['Hispanic/Latino'] = 1; $ethnicities['2'] = 2; $ethnicities['Not Hispanic/Latino'] = 2; $ethnicities['3'] = 3; $ethnicities['Unreported / Refused to Report'] = 3; $races = array(); $races['A'] = 'A'; $races['Asian'] = 'A'; $races['N'] = 'N'; $races['Native Hawaiian'] = 'N'; $races['P'] = 'P'; $races['Other Pacific Islander'] = 'P'; $races['B'] = 'B'; $races['Black / African American'] = 'B'; $races['I'] = 'I'; $races['American Indian / Alaska Native'] = 'I'; $races['W'] = 'C'; $races['White'] = 'C'; $races['M'] = 'M'; $races['More than one race'] = 'M'; $races['E'] = 'E'; $races['Unreported / Refused to Report'] = 'E'; $statistics = PatientStatisticsDefinition::getPatientStatistics($personId); $race = ''; if (isset($statistics['Race'])) { $race = $statistics['Race']; } if (isset($statistics['race'])) { $race = $statistics['race']; } $race = isset($races[$race]) ? $races[$race] : 'E'; $ethnicity = ''; if (isset($statistics['Ethnicity'])) { $ethnicity = $statistics['Ethnicity']; } if (isset($statistics['ethnicity'])) { $ethnicity = $statistics['ethnicity']; } $ethnicity = isset($ethnicities[$ethnicity]) ? $ethnicities[$ethnicity] : '3'; $language = ''; if (isset($statistics['Language'])) { $language = $statistics['Language']; } if (isset($statistics['language'])) { $language = $statistics['language']; } $language = ''; // temporarily set to empty $patientData = array(); $patientData['recordNumber'] = $patient->recordNumber; $patientData['lastName'] = $person->lastName; $patientData['firstName'] = $person->firstName; $patientData['middleName'] = $person->middleName; $patientData['suffix'] = $person->suffix; $patientData['dateOfBirth'] = date('Ymd', strtotime($person->dateOfBirth)); $patientData['gender'] = $person->gender; $patientData['race'] = $race; $patientData['ethnicity'] = $ethnicity; $address = $person->address; $patientData['line1'] = $address->line1; $patientData['line2'] = $address->line2; $patientData['city'] = $address->city; $patientData['state'] = $address->state; $patientData['zip'] = $address->postalCode; $homePhone = ''; $businessPhone = ''; $phoneNumber = new PhoneNumber(); $phoneNumber->personId = $personId; $phones = $phoneNumber->getPhoneNumbers(false); foreach ($phones as $phone) { if ($homePhone == '' && $phone['type'] == 'HP') { $homePhone = $phone['number']; } if ($businessPhone == '' && $phone['type'] == 'TE') { $businessPhone = $phone['number']; } if ($homePhone != '' && $businessPhone != '') { break; } } $patientData['homePhone'] = $homePhone; $patientData['businessPhone'] = $businessPhone; $patientData['language'] = $language; $patientData['maritalStatus'] = $maritalStatus; $patientData['accountNumber'] = ''; $patientData['ssn'] = $patient->person->identifierType == 'SSN' ? $patient->identifier : ''; if (!$includeProvider) { return $patientData; } $data = array(); $data['patient'] = $patientData; if ($providerId === null) { $providerId = (int) $patient->defaultProvider; } $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $provider->populate(); $providerData = array(); $providerData['id'] = $provider->personId; $providerData['lastName'] = $provider->person->lastName; $providerData['firstName'] = $provider->person->firstName; $providerData['middleName'] = $provider->person->middleName; $providerData['suffix'] = $provider->person->suffix; $room = new Room(); if ($roomId !== null && $roomId > 0) { $room->roomId = (int) $roomId; $room->populate(); $building = $room->building; $practice = $building->practice; //trigger_error('room: '.$roomId.':'.$room->name); } else { $practice = new Practice(); $building = new Building(); $practiceId = (int) $patient->person->primaryPracticeId; $practice->practiceId = $practiceId; $practice->populate(); //trigger_error('primary practice: '.$practiceId.':'.$practice->name); } $providerData['practice'] = $practice->name; $providerData['building'] = $building->name; $providerData['room'] = $room->name; $data['provider'] = $providerData; return $data; }
protected function _populateCMS1500XML(SimpleXMLElement $xml, ClaimLine $claimLine) { $claimId = (int) $claimLine->claimId; $visitId = (int) $claimLine->visitId; $payerId = (int) $claimLine->insuranceProgramId; $visit = new Visit(); $visit->visitId = $visitId; $visit->populate(); $dateOfTreatment = $visit->dateOfTreatment; $patientId = (int) $visit->patientId; $providerId = (int) $visit->treatingPersonId; $insuranceProgram = new InsuranceProgram(); $insuranceProgram->insuranceProgramId = $payerId; $insuranceProgram->populate(); $insuranceAddress = $insuranceProgram->address; $insuredRelationship = InsuredRelationship::filterByPayerPersonIds($payerId, $patientId); $patient = new Patient(); $patient->personId = $patientId; $patient->populate(); $patientAddress = $patient->address; $patientPhone = $patient->phoneNumber; $provider = new Provider(); $provider->personId = $providerId; $provider->populate(); $providerAddress = $provider->person->address; $providerPhone = $provider->phoneNumber; $buildingId = (int) $visit->buildingId; $building = new Building(); $building->buildingId = $buildingId; $building->populate(); $address = $building->practice->primaryAddress; $amountTotal = 0; $claimLines = array(); $iterator = new ClaimLineIterator(); $iterator->setFilters(array('claimId' => $claimId)); foreach ($iterator as $orm) { $amount = (double) $orm->baseFee; $amountTotal += $amount; $row = array(); $row['procedure'] = $orm->procedureCode; $modifiers = array(); for ($i = 1; $i <= 4; $i++) { $field = 'modifier' . $i; $key = $orm->{$field}; if (strlen($key) > 0) { $modifiers[$i] = $key; } } $row['modifier'] = implode(',', $modifiers); $row['amount'] = $amount; $row['units'] = $orm->units; $diagnoses = array(); for ($i = 1; $i <= 8; $i++) { $field = 'diagnosisCode' . $i; $key = $orm->{$field}; if (strlen($key) > 0) { $diagnoses[$key] = $key; } } $row['diagnoses'] = $diagnoses; $row['diagnosis_pointer'] = ''; // TODO: need to resolve on the issue of multiple diagnoses per claimLine $claimLines[] = $row; } $amountPaid = $claimLine->paid; $netAmountTotal = $amountTotal - $amountPaid; if ($payerId > 0) { $xmlPayer = $xml->addChild('payer'); $this->_addChild($xmlPayer, 'name', InsuranceProgram::getInsuranceProgram($payerId)); if ($insuranceAddress->addressId > 0) { $xmlFbaddress = $xmlPayer->addChild('fbaddress'); $this->_addChild($xmlFbaddress, 'line1', $insuranceAddress->line1); $this->_addChild($xmlFbaddress, 'line2', $insuranceAddress->line2); $this->_addChild($xmlFbaddress, 'city', $insuranceAddress->city); $this->_addChild($xmlFbaddress, 'state', $insuranceAddress->state); $this->_addChild($xmlFbaddress, 'zip', $insuranceAddress->zipCode); } } $xmlPatient = $xml->addChild('patient'); $this->_addChild($xmlPatient, 'record_number', $patient->recordNumber); $this->_addChild($xmlPatient, 'last_name', $patient->lastName); $this->_addChild($xmlPatient, 'first_name', $patient->firstName); $this->_addChild($xmlPatient, 'middle_name', $patient->middleName); if ($patientAddress->addressId > 0) { $xmlFbaddress = $xmlPatient->addChild('fbaddress'); $this->_addChild($xmlFbaddress, 'line1', $patientAddress->line1); $this->_addChild($xmlFbaddress, 'line2', $patientAddress->line2); $this->_addChild($xmlFbaddress, 'city', $patientAddress->city); $this->_addChild($xmlFbaddress, 'state', $patientAddress->state); $this->_addChild($xmlFbaddress, 'zip', $patientAddress->zipCode); } $this->_addChild($xmlPatient, 'phone_number', $patientPhone->number); $this->_addChild($xmlPatient, 'date_of_birth', $patient->dateOfBirth); $subscriber = $insuredRelationship->subscriber; $subscriberAddress = $subscriber->address; if ($subscriber->personId > 0) { $xmlSubscriber = $xml->addChild('subscriber'); $this->_addChild($xmlSubscriber, 'phone_number', $subscriber->phoneNumber->number); if ($subscriberAddress->addressId > 0) { $xmlFbaddress = $xmlSubscriber->addChild('fbaddress'); $this->_addChild($xmlFbaddress, 'line1', $subscriberAddress->line1); $this->_addChild($xmlFbaddress, 'line2', $subscriberAddress->line2); $this->_addChild($xmlFbaddress, 'city', $subscriberAddress->city); $this->_addChild($xmlFbaddress, 'state', $subscriberAddress->state); $this->_addChild($xmlFbaddress, 'zip', $subscriberAddress->zipCode); } $this->_addChild($xmlSubscriber, 'last_name', $subscriber->lastName); $this->_addChild($xmlSubscriber, 'first_name', $subscriber->firstName); $this->_addChild($xmlSubscriber, 'middle_name', $subscriber->middleName); $this->_addChild($xmlSubscriber, 'group_number', $insuredRelationship->groupNumber); $this->_addChild($xmlSubscriber, 'gender', $subscriber->gender); $this->_addChild($xmlSubscriber, 'date_of_birth', $subscriber->dateOfBirth); } if ($building->buildingId > 0) { $xmlPractice = $xml->addChild('practice'); $this->_addChild($xmlPractice, 'identifier', $building->practice->identifier); $xmlTreatingFacility = $xml->addChild('treating_facility'); $this->_addChild($xmlTreatingFacility, 'identifier', $building->identifier); $this->_addChild($xmlTreatingFacility, 'name', $building->name); $xmlFbaddress = $xmlTreatingFacility->addChild('fbaddress'); $this->_addChild($xmlFbaddress, 'line1', $building->line1); $this->_addChild($xmlFbaddress, 'line2', $building->line2); $this->_addChild($xmlFbaddress, 'city', $building->city); $this->_addChild($xmlFbaddress, 'state', $building->state); $this->_addChild($xmlFbaddress, 'zip', $building->zipCode); } $xmlProvider = $xml->addChild('provider'); $this->_addChild($xmlProvider, 'identifier', $provider->identifier); $this->_addChild($xmlProvider, 'first_name', $provider->firstName); $this->_addChild($xmlProvider, 'last_name', $provider->lastName); if ($providerAddress->addressId > 0) { $xmlFbaddress = $xmlProvider->addChild('fbaddress'); $this->_addChild($xmlFbaddress, 'line1', $providerAddress->line1); $this->_addChild($xmlFbaddress, 'line2', $providerAddress->line2); $this->_addChild($xmlFbaddress, 'city', $providerAddress->city); $this->_addChild($xmlFbaddress, 'state', $providerAddress->state); $this->_addChild($xmlFbaddress, 'zip', $providerAddress->zipCode); } $xmlDiagnoses = null; foreach ($claimLines as $row) { foreach ($row['diagnoses'] as $diagnosis) { if ($xmlDiagnoses === null) { $xmlDiagnoses = $xml->addChild('diagnoses'); } $this->_addChild($xmlDiagnoses, 'array', $diagnosis); } } $xmlClaimLine = null; $dateOfService = date('m d y', strtotime($dateOfTreatment)); foreach ($claimLines as $row) { if ($xmlClaimLine === null) { $xmlClaimLine = $xml->addChild('claim_lines'); } // 0 - 5 ONLY $xmlClaimLineArr = $xmlClaimLine->addChild('array'); $this->_addChild($xmlClaimLineArr, 'date_of_treatment', $dateOfService); $this->_addChild($xmlClaimLineArr, 'procedure', $row['procedure']); $this->_addChild($xmlClaimLineArr, 'modifier', $row['modifier']); $this->_addChild($xmlClaimLineArr, 'diagnosis_pointer', $row['diagnosis_pointer']); $this->_addChild($xmlClaimLineArr, 'amount', $row['amount']); $this->_addChild($xmlClaimLineArr, 'units', $row['units']); } $xmlClaim = $xml->addChild('claim'); $this->_addChild($xmlClaim, 'amount_total', $amountTotal); $this->_addChild($xmlClaim, 'amount_paid', $amountPaid); $this->_addChild($xmlClaim, 'net_amount_total', $netAmountTotal); //$doc = new DOMDocument(); //$doc->formatOutput = true; //$doc->loadXML($xml->asXML()); //file_put_contents('/tmp/claims.xml',$doc->saveXML()); }