private function getLabRequestChildrenRecursive($labNo, $externalLabRequestTree)
 {
     $extLabRequests = ExternalDump::where('parent_lab_no', '=', $labNo)->get();
     if (count($extLabRequests) > 1) {
         foreach ($extLabRequests as $extLabRequest) {
             $externalLabRequestTree->push($extLabRequest);
             $this->getLabRequestChildrenRecursive($extLabRequest->lab_no, $externalLabRequestTree);
         }
     }
     return $externalLabRequestTree;
 }
 /**
  *   Function to send Json request using Curl
  **/
 private function sendRequest($httpCurl, $jsonResponse, $labNo)
 {
     $jsonResponse = "labResult=" . $jsonResponse;
     //Foreach result in the array of results send to sanitas-url in config
     curl_setopt($httpCurl, CURLOPT_POSTFIELDS, $jsonResponse);
     $response = curl_exec($httpCurl);
     //"Test updated" is the actual response
     //TODO: Replace true with actual expected response this is just for testing
     if ($response == "Test updated") {
         //Set status in external lab-request to `sent`
         $updatedExternalRequest = ExternalDump::where('lab_no', '=', $labNo)->first();
         $updatedExternalRequest->result_returned = 1;
         $updatedExternalRequest->save();
     } else {
         //Set status in external lab-request to `sent`
         $updatedExternalRequest = ExternalDump::where('lab_no', '=', $labNo)->first();
         $updatedExternalRequest->result_returned = 2;
         $updatedExternalRequest->save();
         Log::error("HTTP Error: SanitasInterfacer failed to send {$jsonResponse} : Error message " + curl_error($httpCurl));
     }
 }
 public function send($testId)
 {
     //Sends results or any other flag back to where they came from
     $connection = $this->connectToMedboss();
     $test = Test::find($testId);
     $externalId = $test->external_id;
     $externalDump = ExternalDump::where('lab_no', '=', $externalId);
     if (!$externalDump->first()) {
         //Can't be sent to the external system
         return false;
     }
     $userId = Auth::user()->id;
     $resultsEntered = date_create($test->time_entered);
     $dateResultEntered = date_format($resultsEntered, 'Y-m-d');
     $timeResultEntered = date_format($resultsEntered, 'h:i:s');
     $results = getFormattedResults($testId);
     $lab_request_no = intval($lab_request_no);
     if ($externalDump->first()->result_returned == 1) {
         $query = mssql_query("UPDATE BlissLabResults SET TestResults = '{$result_ent}' WHERE RequestID = '{$externalId}' ");
     } else {
         $query = mssql_query("INSERT INTO BlissLabResults (RequestID,OfferedBy,DateOffered, TimeOffered, TestResults)\n                    VALUES ('{$externalId}','{$userId}','{$dateResultEntered}','{$timeResultEntered}','{$result_ent}') ");
     }
     if ($query) {
         //Set status in external lab-request to `sent`
         $updatedExternalRequest = ExternalDump::where('lab_no', '=', $externalId)->first();
         $updatedExternalRequest->result_returned = 1;
         $updatedExternalRequest->save();
     } else {
         //Set status in external lab-request to `sent`
         $updatedExternalRequest = ExternalDump::where('lab_no', '=', $externalId)->first();
         $updatedExternalRequest->result_returned = 2;
         $updatedExternalRequest->save();
         Log::error("MSSQL Query Error => " . mssql_get_last_message());
     }
     mssql_close($link);
 }
Exemple #4
0
 /**
  * External dump relationship
  */
 public function external()
 {
     return ExternalDump::where('lab_no', '=', $this->external_id)->get()->first();
 }
 public function testMultipleVisitTypes()
 {
     Interfacer::retrieve($this->labRequestJsonSimpleTestTwoVisits[0]);
     Interfacer::retrieve($this->labRequestJsonSimpleTestTwoVisits[1]);
     Interfacer::retrieve($this->labRequestJsonSimpleTestTwoVisits[2]);
     Interfacer::retrieve($this->labRequestJsonSimpleTestTwoVisits[3]);
     Interfacer::retrieve($this->labRequestJsonSimpleTestTwoVisits[4]);
     $externalDump = ExternalDump::where('lab_no', '=', $this->labRequestJsonSimpleTestTwoVisits[0]->labNo)->get();
     $this->assertTrue(count($externalDump) == 1);
     $this->assertEquals($this->labRequestJsonSimpleTestTwoVisits[0]->patientVisitNumber, $externalDump->first()->patient_visit_number);
     $externalDump = ExternalDump::where('lab_no', '=', $this->labRequestJsonSimpleTestTwoVisits[1]->labNo)->get();
     $this->assertTrue(count($externalDump) == 1);
     $this->assertEquals($this->labRequestJsonSimpleTestTwoVisits[1]->patientVisitNumber, $externalDump->first()->patient_visit_number);
     $externalDump = ExternalDump::where('lab_no', '=', $this->labRequestJsonSimpleTestTwoVisits[2]->labNo)->get();
     $this->assertTrue(count($externalDump) == 1);
     $this->assertEquals($this->labRequestJsonSimpleTestTwoVisits[2]->patientVisitNumber, $externalDump->first()->patient_visit_number);
     $externalDump = ExternalDump::where('lab_no', '=', $this->labRequestJsonSimpleTestTwoVisits[3]->labNo)->get();
     $this->assertTrue(count($externalDump) == 1);
     $this->assertEquals($this->labRequestJsonSimpleTestTwoVisits[3]->patientVisitNumber, $externalDump->first()->patient_visit_number);
     $externalDump = ExternalDump::where('lab_no', '=', $this->labRequestJsonSimpleTestTwoVisits[4]->labNo)->get();
     $this->assertTrue(count($externalDump) == 1);
     $this->assertEquals($this->labRequestJsonSimpleTestTwoVisits[4]->patientVisitNumber, $externalDump->first()->patient_visit_number);
     // Is there a Visit for this new patient?
     $visit = Visit::where('visit_number', '=', $this->labRequestJsonSimpleTestTwoVisits[0]->patientVisitNumber)->get();
     //var_dump($visit);
     //Two records inserted for same external visit
     $this->assertEquals(2, count($visit));
     //First is IP
     $this->assertEquals('Out-patient', $visit->first()->visit_type);
     //Second is OP
     $this->assertEquals('In-patient', $visit[1]->visit_type);
     //Two distinct internal visit id's
     $this->assertTrue($visit->first()->id != $visit[1]->id);
     //Check visit number is the same
     $this->assertEquals($visit->first()->visit_number, $visit[1]->visit_number);
 }