public function hl7LabtestResultsAction()
 {
     $personId = (int) $this->_getParam('personId');
     $providerId = (int) Zend_Auth::getInstance()->getIdentity()->personId;
     $contents = LabResultsMessage::generate($personId, $providerId);
     $filename = 'hl7-labtest-results-' . $personId . '.er7';
     $this->hl7($contents, $filename);
 }
 public static function generate($patient, $provider)
 {
     if (!$patient instanceof Patient) {
         $patientId = (int) $patient;
         $patient = new Patient();
         $patient->personId = $patientId;
         $patient->populate();
     }
     self::$patient = $patient;
     if (!$provider instanceof Provider) {
         $providerId = (int) $provider;
         $provider = new Provider();
         $provider->personId = $providerId;
         $provider->populate();
     }
     self::$provider = $provider;
     $building = Building::getBuildingDefaultLocation($provider->personId);
     self::$providerBuilding = $building;
     $data = array();
     $data[] = self::generateMSH(array('buildingName' => $building->name));
     $data[] = self::generateSFT();
     $data[] = self::generatePID($patient);
     $order = new OrderLabTest();
     $iterator = $order->getIteratorByPersonId($patient->personId);
     foreach ($iterator as $orderLabTest) {
         $data[] = self::generateORC($orderLabTest->order->provider);
         $result = array();
         $result['orderLabTest'] = $orderLabTest;
         $loinc = new ProcedureCodesLOINC();
         $loinc->loincNum = $orderLabTest->labTest;
         $loinc->populate();
         $result['loinc'] = $loinc;
         $orderId = (int) $orderLabTest->orderId;
         $labTest = new LabTest();
         $labTest->populateByLabOrderId($orderId);
         $result['labTest'] = $labTest;
         $data[] = self::generateOBR($result);
         $labsIterator = new LabsIterator();
         $labsIterator->setFilters(array('orderId' => $orderId));
         foreach ($labsIterator as $row) {
             $result['result'] = $row;
             $data[] = self::generateOBX($result);
         }
         $data[] = self::generateSPM($orderLabTest->collectionSample);
     }
     return implode("\n", $data);
 }