Beispiel #1
0
function get_activity_specimen($lab_config_id, $user_id, $date_from, $date_to)
{
    $query_string = "SELECT * from specimen " . "WHERE user_id={$user_id} " . "AND (date_collected BETWEEN '{$date_from}' AND '{$date_to}') " . "ORDER BY date_collected DESC";
    $resultset = query_associative_all($query_string, $row_count);
    $retval = array();
    foreach ($resultset as $record) {
        $specimen = Specimen::getObject($record);
        $retval[] = $specimen;
    }
    return $retval;
}
Beispiel #2
0
 public static function getUnreported()
 {
     # Returns all test results that have been entered but not reported
     $query_string = "SELECT sp.* FROM specimen sp " . "WHERE sp.report_to <> '' " . "AND sp.date_reported IS NULL " . "AND ( " . "SELECT DISTINCT t.specimen_id FROM test t " . "WHERE t.specimen_id=sp.specimen_id " . "AND t.result = '' " . ") IS NULL";
     $resultset = query_associative_all($query_string, $row_count);
     $retval = array();
     if ($resultset == null) {
         return $retval;
     }
     foreach ($resultset as $record) {
         $retval[] = Specimen::getObject($record);
     }
     return $retval;
 }
            echo $patient->getAge();
            ?>
				</td>
				<?php 
        }
        ?>
                        
			<?php 
        if (strpos($_SERVER["HTTP_REFERER"], "search.php") !== false) {
            # Show status of most recently registered specimens
            $today = date("Y-m-d");
            $query_string = "SELECT * FROM specimen WHERE patient_id={$patient->patientId} and date_collected='{$today}'";
            $resultset = query_associative_all($query_string, $row_count);
            $status = LangUtil::$generalTerms['DONE'];
            foreach ($resultset as $record) {
                $specimen = Specimen::getObject($record);
                if ($specimen->statusCodeId == Specimen::$STATUS_PENDING || $specimen->statusCodeId == Specimen::$STATUS_REFERRED) {
                    $status = LangUtil::$generalTerms['PENDING_RESULTS'];
                    break;
                }
            }
            echo "<td>{$status}</td>";
        }
        ?>
			<td>
				<?php 
        if (strpos($_SERVER["HTTP_REFERER"], "find_patient.php") !== false || strpos($_SERVER["HTTP_REFERER"], "doctor_register.php") !== false) {
            # Called from find_patient.php. Show 'profile' and 'register specimen' link
            ?>
					<a href='new_specimen.php?pid=<?php 
            echo $patient->patientId;
Beispiel #4
0
$importPatientId = $_REQUEST['patientId'];
$importlabConfigIdEnd = strpos($importPatientId, "0");
$importLabConfigId = substr($importPatientId, 0, $importlabConfigIdEnd);
/*
$saved_db = DbUtil::switchToCountry($country);
$querySelect = 
	"SELECT * FROM patient ".
	"WHERE patient_id=$importPatientId";
$patientRecord = query_associative_one($querySelect);
DbUtil::switchRestore($saved_db);
*/
$saved_db = DbUtil::switchToLabConfig($importLabConfigId);
$querySelect = "SELECT * FROM specimen " . "WHERE patient_id={$importPatientId}";
$resultset = query_associative_all($querySelect, $rowCount);
foreach ($resultset as $record) {
    $specimenRecords[] = Specimen::getObject($record);
}
foreach ($specimenRecords as $specimenRecord) {
    $querySelect = "SELECT * FROM test " . "WHERE specimen_id={$specimenRecord->specimenId}";
    $resultset = query_associative_all($querySelect, $rowCount);
    foreach ($resultset as $record) {
        $testRecords[] = Test::getObject($record);
    }
}
DbUtil::switchRestore($saved_db);
/* Build a mapping of Specimens from the Global Table & make appropriate substitutions */
$saved_db = DbUtil::switchToGlobal();
$querySelect = "SELECT * FROM specimen_mapping";
$resultset = query_associative_all($querySelect, $rowCount);
if ($resultset) {
    $specimenIds = array();
Beispiel #5
0
 public function getSpecimenRegLog($user_id, $lab_config_id, $date_from, $date_to)
 {
     $saved_db = DbUtil::switchToLabConfig($lab_config_id);
     $date_from_parts = explode("-", $date_from);
     $date_to_parts = explode("-", $date_to);
     $date_from_ts = mktime(0, 0, 0, $date_from_parts[1], $date_from_parts[2], $date_from_parts[0]);
     $date_from_ts = date('Y-m-d H:i:s', $date_from_ts);
     $date_to_ts = mktime(0, 0, 0, $date_to_parts[1], $date_to_parts[2], $date_to_parts[0]);
     $date_to_ts = date('Y-m-d H:i:s', $date_to_ts);
     $query_string = "SELECT * FROM specimen " . "WHERE ts BETWEEN '{$date_from_ts}' AND '{$date_to_ts}' " . "AND user_id = {$user_id}";
     $resultset = query_associative_all($query_string, $row_count);
     $test_list = array();
     if (count($resultset) > 0) {
         foreach ($resultset as $record) {
             $test_list[] = Specimen::getObject($record);
         }
     }
     DbUtil::switchRestore($saved_db);
     return $test_list;
 }
Beispiel #6
0
function add_results_sequential($user_list = array())
{
    # Adds random result entries for scheduled specimen
    global $NUM_SPECIMENS, $F_PENDING, $SPECIMEN_ID_START;
    $lab_config_id = $_SESSION['lab_config_id'];
    $saved_db = DbUtil::switchToLabConfig($lab_config_id);
    $num_specimens2 = query_num_rows("specimen");
    $specimens_to_handle = floor($num_specimens2 * (1 - $F_PENDING));
    $specimen_target_list = array();
    $query_string = "SELECT * FROM specimen ORDER BY date_collected LIMIT " . $specimens_to_handle;
    $resultset = query_associative_all($query_string, $row_count);
    foreach ($resultset as $record) {
        $specimen_entry = Specimen::getObject($record);
        $specimen_target_list[] = $specimen_entry;
    }
    DbUtil::switchRestore($saved_db);
    $count = 0;
    $specimen_id_count = $SPECIMEN_ID_START;
    foreach ($specimen_target_list as $specimen) {
        if ($specimen == null) {
            # TODO:
        }
        $result_entry_ts = get_random_ts($specimen->dateCollected);
        if ($specimen == null) {
            #  Specimen does not exist
            //echo "Specimen does not exist<br>";
            //$count++;
            $specimen_id_count++;
            continue;
        }
        $saved_db = DbUtil::switchToLabConfig($_SESSION['lab_config_id']);
        $specimen_id = $specimen->specimenId;
        $status_code = get_specimen_status($specimen_id);
        DbUtil::switchRestore($saved_db);
        if ($status_code == Specimen::$STATUS_DONE) {
            # Results already entered
            //echo "Results already entered<br>";
            $count++;
            $specimen_id_count++;
            continue;
        }
        $patientId = $specimen->patientId;
        $currentPatient = Patient::getById($patientId);
        $hashValue = $currentPatient->generateHashValue();
        # Fetch tests scheduled for this specimen
        $test_list = get_tests_by_specimen_id($specimen_id);
        # For each test, fetch test measures and range from catalog
        foreach ($test_list as $test) {
            $measure_list = get_test_type_measures($test->testTypeId);
            $result_entry = "";
            foreach ($measure_list as $measure) {
                $range = get_measure_range($measure);
                # Select random result value
                $result_val = get_random_range_value($range);
                csv_append($result_val, $result_entry);
            }
            $test_id = $test->testId;
            # Update result field in test entry
            $saved_db = DbUtil::switchToLabConfig($lab_config_id);
            # Select random technician as the one of entered this result
            $user_id = 0;
            if (count($user_list) != 0) {
                $random_user_index = rand(1, count($user_list));
                $random_user = $user_list[$random_user_index - 1];
                $user_id = $random_user->userId;
            }
            add_test_result($test_id, $result_entry, "", "", $user_id, $result_entry_ts, $hashValue);
            # Randomly this test result mark as verified or keep as unverified
            # null or 0 => not verified, non-zero => verified.
            if (with_probability(0.9)) {
                $is_verified = 2;
                $test->setVerifiedBy($is_verified);
            }
            DbUtil::switchRestore($saved_db);
        }
        $saved_db = DbUtil::switchToLabConfig($lab_config_id);
        # Mark specimen as 'all tests done'
        update_specimen_status($specimen_id);
        # Randomly mark this specimen as reported or keep as unreported
        if (with_probability(0.9)) {
            $date_reported = date("Y-m-d H:i:s");
            $specimen->setDateReported($date_reported);
        }
        DbUtil::switchRestore($saved_db);
        # Update counters
        $count++;
        $specimen_id_count++;
    }
}