db_smartone = $this->load->database("onedev", true); } public function search_v2() { $prm = $this->sys_input; $orderID = $prm["order_id"]; $sql = "select T_OrderHeaderM_PatientID from t_orderheader where T_OrderHeaderID=?"; $query = $this->db_smartone->query($sql, array($orderID)); if (!$query) { $this->sys_error_db("Err : Patient", $this->db_smartone); exit; } $rows = $query->result_array(); if (count($rows) == 0) { $this->sys_error_db("No Patient", $this->db_smartone); exit; } $patientID = $rows[0]["T_OrderHeaderM_PatientID"]; // patient note $patient_note = ""; $sql_patient_note = "select M_PatientNote from m_patient where M_PatientID = ? AND M_PatientIsActive = 'Y'"; $query_patient_note = $this->db_smartone->query($sql_patient_note, [$patientID]); if (!$query_patient_note) { $this->sys_error_db("Err : Patient Note", $this->db_smartone); exit; } $rows_patient_note = $query_patient_note->result_array(); $patient_note = $rows_patient_note[0]['M_PatientNote']; $maxOrder = 10; $sql_min_id = "select min(T_OrderHeaderID) as minID from ( select (T_OrderHeaderID) from t_orderheader where T_OrderHeaderM_PatientID = ? and T_OrderHeaderID < ? and T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderDate < NOW() group by DATE(T_OrderHeaderDate) order by T_OrderHeaderDate desc limit 0, $maxOrder ) as minX"; $query = $this->db_smartone->query($sql_min_id, array($patientID, $orderID)); if (!$query) { $this->sys_error_db("Err : Patient", $this->db_smartone); exit; } $rows = $query->result_array(); $rowsXX = $query->result_array(); if (count($rows) == 0) { $this->sys_error_db("No Patient", $this->db_smartone); exit; } $minOrderID = $rows[0]["minID"]; $sql = "select date(T_OrderHeaderDate) T_OrderHeaderDate, T_OrderHeaderLabNumber,T_OrderHeaderID, T_TestID, T_TestShortName , T_OrderDetailResult, T_TestIsResult, T_OrderDetailResultFlag, (length(T_TestSasCode) - 6 ) / 2 Level, T_TestSasCode, Nat_UnitName, IFNULL(T_OrderDetailInternalNote,'') as T_OrderDetailInternalNote from t_orderheader join t_orderdetail on T_OrderHeaderM_PatientID = ? and T_OrderHeaderIsActive = 'Y' and T_OrderDetailIsActive = 'Y' and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderHeaderID < ? and T_OrderHeaderID >= ? join t_test on T_OrderDetailT_TestID = T_TestID join nat_unit on T_OrderDetailNat_UnitID = Nat_UnitID join group_resultdetail on T_TestID = Group_ResultDetailT_TestID and Group_ResultDetailGroup_ResultID = 1 order by T_TestSasCode"; $query = $this->db_smartone->query($sql, array($patientID, $orderID, $minOrderID)); if (!$query) { $this->sys_error_db("Err : History ", $this->db_smartone); exit; } $rows = $query->result_array(); $arr_result = array(); $prev_date = ""; $cur_idx = 0; $prev_id = 0; $arr_px = array(); $arr_code = array(); $arr_date = array(); $index_px = 0; $arr_test = array(); foreach ($rows as $r) { $is_result = $r["T_TestIsResult"]; if ($is_result == "N") { continue; } $order_id = $r["T_OrderHeaderID"]; $date = $r["T_OrderHeaderDate"]; $px_name = $r["T_TestShortName"]; $result = $r["T_OrderDetailResult"]; $result_T_OrderDetailInternalNote = $r['T_OrderDetailInternalNote']; if (is_numeric($result)) { $dec = strlen(substr(strrchr($result, "."), 1)); $result = number_format($result, $dec, ".", ","); } $result .= " " . $r["T_OrderDetailResultFlag"]; $px_code = $r["T_TestSasCode"]; if (!isset($arr_code[$px_code])) { $arr_result[] = array( "px_name" => $px_name, "code" => $r["T_TestSasCode"], "unit" => $r["Nat_UnitName"], "result" => array(), // T_OrderDetailInternalNote "notes" => [] ); $arr_code[$px_code] = true; $arr_px[$px_name] = array("code" => $r["T_TestSasCode"], "name" => $px_name); $arr_test[] = array("code" => $r["T_TestSasCode"], "name" => $px_name); $index_px = count($arr_result) - 1; } if (!in_array($date, $arr_date)) $arr_date[] = $date; $arr_result[$index_px]["result"][$date] = $result; $arr_result[$index_px]["notes"][$date] = $result_T_OrderDetailInternalNote; $prev_id = $order_id; $px_code = ""; } foreach ($arr_result as $idx => $v) { foreach ($arr_date as $date) { if (!isset($v["result"][$date])) { $arr_result[$idx]["result"][$date] = ""; } } } // // T_OrderDetailInternalNote foreach ($arr_result as $idx => $v) { foreach ($arr_date as $date) { if (!isset($v["notes"][$date])) { $arr_result[$idx]["notes"][$date] = ""; } } } sort($arr_date); $result = array( // "lastData" => $lastData, // "x" => $lastData['minID'], // "rowsXX"=> $rowsXX, // "countrowsXX" => count($rowsXX), "sql_min_id" => $sql_min_id, "sql_last"=> $this->db_smartone->last_query(), "patient_note" => $patient_note, "pxs" => $arr_test, "result" => $arr_result, "dates" => $arr_date ); $this->sys_ok($result); } public function old_search_v2() { $prm = $this->sys_input; $orderID = $prm["order_id"]; $sql = "select T_OrderHeaderM_PatientID from t_orderheader where T_OrderHeaderID=?"; $query = $this->db_smartone->query($sql, array($orderID)); if (!$query) { $this->sys_error_db("Err : Patient", $this->db_smartone); exit; } $rows = $query->result_array(); if (count($rows) == 0) { $this->sys_error_db("No Patient", $this->db_smartone); exit; } $patientID = $rows[0]["T_OrderHeaderM_PatientID"]; $maxOrder = 5; $sql = "select min(T_OrderHeaderID) minID from t_orderheader where T_OrderHeaderM_PatientID = ? and T_OrderHeaderID < ? and T_OrderHeaderIsActive = 'Y' order by T_OrderHeaderID desc limit 0, $maxOrder"; $query = $this->db_smartone->query($sql, array($patientID, $orderID)); if (!$query) { $this->sys_error_db("Err : Patient", $this->db_smartone); exit; } $rows = $query->result_array(); if (count($rows) == 0) { $this->sys_error_db("No Patient", $this->db_smartone); exit; } $minOrderID = $rows[0]["minID"]; $sql = "select date(T_OrderHeaderDate) T_OrderHeaderDate, T_OrderHeaderLabNumber,T_OrderHeaderID, T_TestID, T_TestShortName , T_OrderDetailResult, T_TestIsResult, T_OrderDetailResultFlag, (length(T_TestSasCode) - 6 ) / 2 Level, T_TestSasCode, Nat_UnitName from t_orderheader join t_orderdetail on T_OrderHeaderM_PatientID = ? and T_OrderHeaderIsActive = 'Y' and T_OrderDetailIsActive = 'Y' and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderHeaderID < ? and T_OrderHeaderID >= ? join t_test on T_OrderDetailT_TestID = T_TestID join nat_unit on T_OrderDetailNat_UnitID = Nat_UnitID join group_resultdetail on T_TestID = Group_ResultDetailT_TestID and Group_ResultDetailGroup_ResultID = 1 order by T_TestSasCode"; $query = $this->db_smartone->query($sql, array($patientID, $orderID, $minOrderID)); if (!$query) { $this->sys_error_db("Err : History ", $this->db_smartone); exit; } $rows = $query->result_array(); $arr_result = array(); $prev_date = ""; $cur_idx = 0; $prev_id = 0; $arr_px = array(); $arr_date = array(); $index_px = 0; $arr_test = array(); foreach ($rows as $r) { $is_result = $r["T_TestIsResult"]; if ($is_result == "N") continue; $order_id = $r["T_OrderHeaderID"]; $date = $r["T_OrderHeaderDate"]; $px_name = $r["T_TestShortName"]; $result = $r["T_OrderDetailResult"] . $r["T_OrderDetailResultFlag"]; if (!isset($arr_px[$px_name])) { $arr_result[] = array( "px_name" => $px_name, "code" => $r["T_TestSasCode"], "unit" => $r["Nat_UnitName"], "result" => array() ); $arr_px[$px_name] = array("code" => $r["T_TestSasCode"], "name" => $px_name); $arr_test[] = array("code" => $r["T_TestSasCode"], "name" => $px_name); $index_px = count($arr_result) - 1; } if (!in_array($date, $arr_date)) $arr_date[] = $date; $arr_result[$index_px]["result"][$date] = $result; $prev_id = $order_id; } foreach ($arr_result as $idx => $v) { foreach ($arr_date as $date) { if (!isset($v["result"][$date])) { $arr_result[$idx]["result"][$date] = ""; } } } sort($arr_date); $result = array("pxs" => $arr_test, "result" => $arr_result, "dates" => $arr_date); $this->sys_ok($result); } public function search() { $prm = $this->sys_input; $orderID = $prm["order_id"]; $sql = "select T_OrderHeaderM_PatientID from t_orderheader where T_OrderHeaderID=?"; $query = $this->db_smartone->query($sql, array($orderID)); if (!$query) { $this->sys_error_db("Err : Patient", $this->db_smartone); exit; } $rows = $query->result_array(); if (count($rows) == 0) { $this->sys_error_db("No Patient", $this->db_smartone); exit; } $patientID = $rows[0]["T_OrderHeaderM_PatientID"]; $sql = "select T_OrderHeaderDate, T_OrderHeaderLabNumber,T_OrderHeaderID, T_TestShortName , T_OrderDetailResult, T_TestIsResult, T_OrderDetailResultFlag, (length(T_TestSasCode) - 6 ) / 2 Level from t_orderheader join t_orderdetail on T_OrderHeaderM_PatientID = ? and T_OrderHeaderIsActive = 'Y' and T_OrderDetailIsActive = 'Y' and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderHeaderID < ? join t_test on T_OrderDetailT_TestID = T_TestID join group_resultdetail on T_TestID = Group_ResultDetailT_TestID and Group_ResultDetailGroup_ResultID = 1 order by T_OrderHeaderID, T_TestSasCode"; $query = $this->db_smartone->query($sql, array($patientID, $orderID)); if (!$query) { $this->sys_error_db("Err : History ", $this->db_smartone); exit; } $rows = $query->result_array(); $result = array(); $prev_date = ""; $cur_idx = 0; $max_hist = 4; foreach ($rows as $r) { $date = $r["T_OrderHeaderDate"]; if ($prev_date != $date) { if ($cur_idx == $max_hist) break; $result[]["date"] = $date; $cur_idx = count($result) - 1; $result[$cur_idx]["data"] = array(); $result[$cur_idx]["id"] = $r["T_OrderHeaderID"]; } $result[$cur_idx]["data"][] = array( "px_name" => $r["T_TestShortName"], "is_result" => $r["T_TestIsResult"], "result" => $r["T_OrderDetailResult"], "flag" => $r["T_OrderDetailResultFlag"], "level" => $r["Level"] ); $prev_date = $date; } $this->sys_ok($result); } }