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);
 }
 public function labResultsAction()
 {
     $orderId = (int) $this->_getParam('orderId');
     $order = new OrderLabTest();
     $order->orderId = $orderId;
     if (!$order->populate()) {
         $error = 'Order Id ' . $orderId . ' not found';
         trigger_error($error);
         throw new Exception($error);
     }
     $loinc = new ProcedureCodesLOINC();
     $loinc->loincNum = $order->labTest;
     $loinc->populate();
     $shortname = $loinc->shortname;
     if (!strlen($shortname) > 0) {
         $shortname = $loinc->longCommonName;
     }
     $labTest = new LabTest();
     $labTest->labOrderId = $order->orderId;
     $labTest->populateByLabOrderId();
     $labOrder = new LabOrder();
     $labOrder->labOrderId = $order->orderId;
     if (!$labOrder->populate()) {
         $labOrder->labOrderId = $order->orderId;
         $labOrder->patientId = $order->order->patientId;
         $labOrder->personId = $order->order->patientId;
         $labOrder->orderingProvider = $order->order->provider->displayName;
         $labOrder->manualOrderDate = $order->order->dateTime;
         $labOrder->orderDescription = $shortname;
         $labOrder->persist();
         $labTest = new LabTest();
         $labTest->labOrderId = $labOrder->labOrderId;
         $labTest->componentCode = $loinc->class;
         $labTest->service = $shortname;
         $labTest->orderNum = $order->orderId;
         $labTest->persist();
         $orderObs = strtolower($loinc->orderObs);
         if ($orderObs == 'both') {
             // create default lab_results
             $labResult = new LabResult();
             $labResult->description = $order->displayLabTest;
             $labResult->labTestId = $labTest->labTestId;
             $labResult->observationTime = date('Y-m-d H:i');
             $labResult->units = $loinc->exampleUcumUnits;
             $labResult->identifier = $loinc->loincNum;
             $labResult->persist();
         } else {
             if ($orderObs == 'order') {
                 // temporarily do nothing
             }
         }
     }
     $this->view->order = $order;
     $form = new WebVista_Form(array('name' => 'labTestId'));
     $form->setAction(Zend_Registry::get('baseUrl') . 'orders.raw/set-lab-test');
     $form->loadORM($labTest, 'LabTest');
     $this->view->form = $form;
     $this->render();
 }