843 lines
33 KiB
PHP
Executable File
843 lines
33 KiB
PHP
Executable File
<?php
|
|
|
|
if (!defined('BASEPATH'))
|
|
exit('No direct script access allowed');
|
|
|
|
class Patient_model extends CI_model {
|
|
|
|
function __construct() {
|
|
parent::__construct();
|
|
$this->load->database();
|
|
}
|
|
|
|
function insertPatient($data) {
|
|
$this->db->insert('patient_details', $data);
|
|
return $this->db->insert_id();
|
|
}
|
|
function updatePatient($data,$pid){
|
|
$this->db->where('id', $pid);
|
|
$this->db->update('patient_details', $data);
|
|
return 'phs2';
|
|
}
|
|
function getPatientByid($id){
|
|
$this->db->where('id', $id);
|
|
$query = $this->db->get('patient_details')->row();
|
|
$caregiver_type=$this->db->get_where('master_cg_skills',array('id'=>$query->level_of_service))->row();
|
|
$query->service_name=$caregiver_type->name;
|
|
// echo '<pre>'; print_r($query); echo '</pre>';die;
|
|
return $query;
|
|
}
|
|
|
|
function approvePatient($pid){
|
|
$data = array('approve_status' => 1);
|
|
$this->db->where('id', $pid);
|
|
$this->db->update('patient_details', $data);
|
|
return 'approved';
|
|
}
|
|
function activatePatient($pid){
|
|
$data = array('active_status' => 1);
|
|
$this->db->where('id', $pid);
|
|
$this->db->update('patient_details', $data);
|
|
return 'approved';
|
|
}
|
|
|
|
function addPatientDocuments($data){
|
|
$this->db->insert('patient_documents', $data);
|
|
return $this->db->insert_id();
|
|
}
|
|
|
|
function mdOrdersInsert($data)
|
|
{
|
|
$this->db->insert('md_orders', $data);
|
|
return $this->db->insert_id();
|
|
}
|
|
|
|
function mdOrdersUpdate($data,$pid)
|
|
{
|
|
$this->db->where('patient_id', $pid);
|
|
$this->db->update('md_orders', $data);
|
|
return $pid;
|
|
}
|
|
|
|
function insertPatientInsurance($data,$pid) {
|
|
|
|
$this->db->where('patient_id',$pid);
|
|
$query = $this->db->get('patient_insurance_info');
|
|
if ($query->num_rows() > 0){
|
|
$this->db->where('patient_id', $pid);
|
|
$this->db->update('patient_insurance_info', $data);
|
|
return $this->db->insert_id();
|
|
}
|
|
else{
|
|
$this->db->insert('patient_insurance_info', $data);
|
|
return $this->db->insert_id();
|
|
}
|
|
}
|
|
|
|
function insuranceInfoCheck($pid){
|
|
$this->db->where('patient_id',$pid);
|
|
$query = $this->db->get('patient_insurance_info');
|
|
return $query->num_rows();
|
|
}
|
|
|
|
|
|
/*get necessesary dropdown details*/
|
|
function getPatientDoc($id,$type){
|
|
$this->db->where('patient_id', $id);
|
|
$this->db->where('documents_type', $type);
|
|
$query = $this->db->get('patient_documents');
|
|
return $query->result();
|
|
}
|
|
|
|
function getDocDetails($id){
|
|
$this->db->where('id', $id);
|
|
$query = $this->db->get('patient_documents');
|
|
return $query->result();
|
|
}
|
|
|
|
function getLanguages() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_language');
|
|
return $query->result();
|
|
}
|
|
|
|
function getReferalSource() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_patient_ref');
|
|
return $query->result();
|
|
}
|
|
|
|
function getEleDep(){
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_ele_dependency');
|
|
return $query->result();
|
|
}
|
|
|
|
function getallergy(){
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_allergy');
|
|
return $query->result();
|
|
}
|
|
|
|
function getICD(){
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_icd');
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
function getLevelService() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_cg_skills');
|
|
return $query->result();
|
|
}
|
|
|
|
function getServiceActivity() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_service_activity');
|
|
return $query->result();
|
|
}
|
|
|
|
function getTherapyType() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_therapytype');
|
|
return $query->result();
|
|
}
|
|
function getAccessType() {
|
|
$query = $this->db->get('master_access_type');
|
|
return $query->result();
|
|
}
|
|
|
|
function getTubeType() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_tubetype');
|
|
return $query->result();
|
|
}
|
|
|
|
function getPayertype() {
|
|
$this->db->where('status', 1);
|
|
$query = $this->db->get('master_payertype');
|
|
return $query->result();
|
|
}
|
|
|
|
function getvendorLists() {
|
|
$query = $this->db->get('master_vendor');
|
|
return $query->result();
|
|
}
|
|
/*get necessesary dropdown details end*/
|
|
|
|
function getValueFrom($tableName,$fieldName,$fieldValue){
|
|
$this->db->where($fieldName, $fieldValue);
|
|
$query = $this->db->get($tableName);
|
|
return $query->result();
|
|
}
|
|
|
|
/* for data table */
|
|
|
|
function status_change($post){
|
|
|
|
|
|
$id = $post['id'];
|
|
$stat = $post['val'];
|
|
|
|
$this->db->set('status', $stat);
|
|
$this->db->where('id', $id);
|
|
$this->db->update('patient_details');
|
|
|
|
if($stat == '1')
|
|
{
|
|
return 'Status set active';
|
|
}
|
|
else{
|
|
return 'Status set deactive';
|
|
}
|
|
}
|
|
|
|
function getWherevalueInsInfo($id){
|
|
$this->db->where('patient_id', $id);
|
|
$query = $this->db->get('patient_insurance_info');
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
function getWherevalue($id){
|
|
$this->db->where('id', $id);
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
function getWhereMdOrders($id){
|
|
$this->db->where('patient_id', $id);
|
|
$query = $this->db->get('md_orders');
|
|
return $query->result();
|
|
}
|
|
|
|
function name_list(){
|
|
$this->db->where(array('active_status' => 1));
|
|
$query = $this->db->get('patient_details');
|
|
$this->db->order_by('id', 'DESC');
|
|
return $query->result();
|
|
}
|
|
|
|
function patientLists(){
|
|
$this->db->where(array('active_status' => 1));
|
|
$query = $this->db->get('patient_details');
|
|
$this->db->order_by('id', 'DESC');
|
|
return $query->result();
|
|
}
|
|
|
|
function getNameBysearch($search) {
|
|
$this->db->order_by('id', 'desc');
|
|
$this->db->like('id', $search);
|
|
$this->db->or_like('first_name', $search);
|
|
$this->db->or_like('last_name', $search);
|
|
$this->db->or_like('gender', $search);
|
|
$this->db->where(array('active_status' => 1));
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
function getNameByLimit($limit, $start) {
|
|
$this->db->order_by('id', 'desc');
|
|
$this->db->limit($limit, $start);
|
|
$this->db->where(array('active_status' => 1));
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
function getNameByLimitBySearch($limit, $start, $search) {
|
|
|
|
$this->db->like('id', $search);
|
|
|
|
$this->db->order_by('id', 'desc');
|
|
$this->db->or_like('first_name', $search);
|
|
$this->db->or_like('last_name', $search);
|
|
$this->db->or_like('gender', $search);
|
|
$this->db->where(array('active_status' => 1));
|
|
$this->db->limit($limit, $start);
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
function name_listPending(){
|
|
$query = $this->db->get('patient_details');
|
|
$this->db->order_by('id', 'DESC');
|
|
return $query->result();
|
|
}
|
|
|
|
function getNameBysearchPending($search) {
|
|
$this->db->order_by('id', 'desc');
|
|
$this->db->like('id', $search);
|
|
$this->db->or_like('first_name', $search);
|
|
$this->db->or_like('last_name', $search);
|
|
$this->db->or_like('gender', $search);
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
function getNameByLimitPending($limit, $start) {
|
|
$this->db->order_by('id', 'desc');
|
|
$this->db->limit($limit, $start);
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
function getNameByLimitBySearchPending($limit, $start, $search) {
|
|
|
|
$this->db->like('id', $search);
|
|
|
|
$this->db->order_by('id', 'desc');
|
|
$this->db->or_like('first_name', $search);
|
|
$this->db->or_like('last_name', $search);
|
|
$this->db->or_like('gender', $search);
|
|
|
|
$this->db->limit($limit, $start);
|
|
$query = $this->db->get('patient_details');
|
|
return $query->result();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function delete_patient($id)
|
|
{
|
|
$this->db->where('id', $id);
|
|
$this->db->delete('patient_details');
|
|
}
|
|
|
|
function getWhereAssessment($id){
|
|
$this->db->select('*');
|
|
$this->db->from('assessment a1');
|
|
$this->db->join('assessment_step2 a2', 'a1.id = a2.main_id', 'left');
|
|
$this->db->join('assessment_step3 a3', 'a1.id = a3.main_id', 'left');
|
|
$this->db->join('assessment_step4 a4', 'a1.id = a4.main_id', 'left');
|
|
$this->db->join('assessment_step5 a5', 'a1.id = a5.main_id', 'left');
|
|
$this->db->join('assessment_step6 a6', 'a1.id = a6.main_id', 'left');
|
|
|
|
$this->db->where('a1.patient_id',$id);
|
|
$query = $this->db->get();
|
|
return $query->result();
|
|
}
|
|
|
|
function getInitialAssessmentStatus($id)
|
|
{
|
|
$this->db->where('patient_id', $id);
|
|
$query = $this->db->get('assessment');
|
|
return $query->num_rows();
|
|
}
|
|
function getProgress($id){
|
|
$query=$this->db->get_where('patient_details', array('id' => $id))->row();
|
|
return $query->progress;
|
|
}
|
|
// scheduled visits
|
|
function getScheduledVisitsList($filter){
|
|
$currentDate = time();
|
|
$start_date='';
|
|
$end_date='';
|
|
if ($filter=='week') {
|
|
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
|
|
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
|
|
} elseif ($filter=='month') {
|
|
$start_date = date('Y-m-01');
|
|
$end_date = date('Y-m-t');
|
|
} elseif ($filter=='year') {
|
|
$currentYear = date('Y');
|
|
$start_date = date('Y-01-01', strtotime($currentYear));
|
|
$end_date = date('Y-12-31', strtotime($currentYear));
|
|
}
|
|
|
|
$this->db->select('*');
|
|
$this->db->from('caregiver_patient_clock_in_out');
|
|
$this->db->where(array('status' => 1));
|
|
if ($start_date!='' && $end_date!='') {
|
|
$this->db->where('DATE(created_on) >=', $start_date);
|
|
$this->db->where('DATE(created_on) <=', $end_date);
|
|
}
|
|
$query = $this->db->get();
|
|
return $query->num_rows();
|
|
}
|
|
function getScheduledVisitsListPage($limit, $start, $orderColumn, $orderType, $filter) {
|
|
$currentDate = time();
|
|
$start_date='';
|
|
$end_date='';
|
|
if ($filter=='week') {
|
|
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
|
|
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
|
|
} elseif ($filter=='month') {
|
|
$start_date = date('Y-m-01');
|
|
$end_date = date('Y-m-t');
|
|
} elseif ($filter=='year') {
|
|
$currentYear = date('Y');
|
|
$start_date = date('Y-01-01', strtotime($currentYear));
|
|
$end_date = date('Y-12-31', strtotime($currentYear));
|
|
}
|
|
|
|
$this->db->select('CONCAT(ca.fname, " ", ca.lname) as caregiver_name, CONCAT(pd.first_name, " ", pd.last_name) as patient_name, pcio.clock_in_time, pcio.clock_out_time, cs.name as service_type, pd.address');
|
|
$this->db->from('caregiver_patient_clock_in_out pcio');
|
|
$this->db->join('patient_details pd', 'pcio.patient_id = pd.id', 'left');
|
|
$this->db->join('caregiver ca', 'ca.id = pcio.caregiver_id', 'left');
|
|
$this->db->join('master_cg_skills cs', 'cs.id = pd.level_of_service', 'left');
|
|
if($orderColumn==0){
|
|
$this->db->order_by('pcio.id', $orderType);
|
|
}
|
|
else if($orderColumn==1){
|
|
$this->db->order_by('pcio.clock_in_time', $orderType);
|
|
}
|
|
else if($orderColumn==2){
|
|
$this->db->order_by('CONCAT(pd.first_name, " ", pd.last_name)', $orderType);
|
|
}
|
|
else if($orderColumn==3){
|
|
$this->db->order_by('pd.address', $orderType);
|
|
}
|
|
else if($orderColumn==4){
|
|
$this->db->order_by('cs.name', $orderType);
|
|
}
|
|
else if($orderColumn==5){
|
|
$this->db->order_by('CONCAT(ca.fname, " ", ca.lname)', $orderType);
|
|
}
|
|
else if($orderColumn==6){
|
|
$this->db->order_by('pcio.clock_in_time', $orderType);
|
|
}
|
|
else if($orderColumn==7){
|
|
$this->db->order_by('pcio.clock_out_time', $orderType);
|
|
}
|
|
$this->db->where(array('pcio.status' => 1));
|
|
if ($start_date!='' && $end_date!='') {
|
|
$this->db->where('DATE(pcio.created_on) >=', $start_date);
|
|
$this->db->where('DATE(pcio.created_on) <=', $end_date);
|
|
}
|
|
$this->db->limit($limit, $start);
|
|
$query = $this->db->get();
|
|
return $query->result();
|
|
}
|
|
function getScheduledVisitsBySearchListPage($limit, $start, $search,$orderColumn, $orderType, $filter) {
|
|
$currentDate = time();
|
|
$start_date='';
|
|
$end_date='';
|
|
if ($filter=='week') {
|
|
$start_date = date('Y-m-d', strtotime('this week', $currentDate));
|
|
$end_date = date('Y-m-d', strtotime('this week +6 days', $currentDate));
|
|
} elseif ($filter=='month') {
|
|
$start_date = date('Y-m-01');
|
|
$end_date = date('Y-m-t');
|
|
} elseif ($filter=='year') {
|
|
$currentYear = date('Y');
|
|
$start_date = date('Y-01-01', strtotime($currentYear));
|
|
$end_date = date('Y-12-31', strtotime($currentYear));
|
|
}
|
|
|
|
$this->db->select('CONCAT(ca.fname, " ", ca.lname) as caregiver_name, CONCAT(pd.first_name, " ", pd.last_name) as patient_name, pcio.clock_in_time, pcio.clock_out_time, cs.name as service_type, pd.address');
|
|
$this->db->from('caregiver_patient_clock_in_out pcio');
|
|
$this->db->join('patient_details pd', 'pcio.patient_id = pd.id', 'left');
|
|
$this->db->join('caregiver ca', 'ca.id = pcio.caregiver_id', 'left');
|
|
$this->db->join('master_cg_skills cs', 'cs.id = pd.level_of_service', 'left');
|
|
if($orderColumn==0){
|
|
$this->db->order_by('pcio.id', $orderType);
|
|
}
|
|
else if($orderColumn==1){
|
|
$this->db->order_by('pcio.clock_in_time', $orderType);
|
|
}
|
|
else if($orderColumn==2){
|
|
$this->db->order_by('pd.first_name', $orderType);
|
|
}
|
|
else if($orderColumn==3){
|
|
$this->db->order_by('pd.address', $orderType);
|
|
}
|
|
else if($orderColumn==4){
|
|
$this->db->order_by('cs.name', $orderType);
|
|
}
|
|
else if($orderColumn==5){
|
|
$this->db->order_by('ca.fname', $orderType);
|
|
}
|
|
else if($orderColumn==6){
|
|
$this->db->order_by('pcio.clock_in_time', $orderType);
|
|
}
|
|
else if($orderColumn==7){
|
|
$this->db->order_by('pcio.clock_out_time', $orderType);
|
|
}
|
|
$this->db->where(array('pcio.status' => 1));
|
|
if ($start_date!='' && $end_date!='') {
|
|
$this->db->where('DATE(pcio.created_on) >=', $start_date);
|
|
$this->db->where('DATE(pcio.created_on) <=', $end_date);
|
|
}
|
|
$this->db->group_start();
|
|
$this->db->like('pcio.id', $search);
|
|
$this->db->or_like("CONCAT(ca.fname, '', ca.lname)", $search);
|
|
$this->db->or_like("CONCAT(pd.first_name, '', pd.last_name)", $search);
|
|
$this->db->or_like('pcio.clock_in_time', $search);
|
|
$this->db->or_like('pcio.clock_out_time', $search);
|
|
$this->db->or_like('cs.name', $search);
|
|
$this->db->or_like('pd.address', $search);
|
|
$this->db->group_end();
|
|
$this->db->limit($limit, $start);
|
|
$query = $this->db->get();
|
|
return $query->result();
|
|
}
|
|
function model_get_open_cases($data){
|
|
try{
|
|
/*
|
|
| 1. New patients who didn't get any schedule yet.
|
|
| 2. Unconfirmed schedules [by caregiver]. (If current time crosses the scheduled end time).
|
|
| 3. Declined schedules [by caregiver].
|
|
| 4. Accepted schedules [by caregiver]. (If there is no clocked-in time between that scheduled start & end time).
|
|
*/
|
|
$from_api=isset($data['from_api'])&&$data['from_api']!=""?trim($data['from_api']):'';
|
|
$start=isset($data['start'])?(0+(int)($data['start'])):0;
|
|
$limit=isset($data['limit'])?(0+(int)($data['limit'])):10;
|
|
$search=isset($data['search'])&&$data['search']!=""?trim($data['search']):'';
|
|
$order_column=isset($data['order_column'])?(0+(int)($data['order_column'])):0;
|
|
$order_type=isset($data['order_type'])&&$data['order_type']!=""?trim($data['order_type']):'DESC';
|
|
$filter=isset($data['filter'])&&$data['filter']!=""?trim($data['filter']):'week';
|
|
|
|
$this->db->distinct();
|
|
$this->db->select(
|
|
'SQL_CALC_FOUND_ROWS
|
|
p.id,
|
|
p.reference_information,
|
|
p.reference_id,
|
|
p.referral_type,
|
|
p.patient_id,
|
|
p.first_name,
|
|
p.last_name,
|
|
CONCAT(p.first_name, " ", p.last_name) as name,
|
|
p.gender,
|
|
p.patient_email as email,
|
|
p.telephone,
|
|
p.primary_language,
|
|
p.level_of_service,
|
|
mcs.name AS service_type,
|
|
p.address,
|
|
JSON_UNQUOTE(JSON_EXTRACT(p.address, "$.City")) AS main_city,
|
|
JSON_UNQUOTE(JSON_EXTRACT(p.address, "$.Zipcode")) AS main_zipcode,',false
|
|
);
|
|
$this->db->from('patient_details p');
|
|
$this->db->join('master_cg_skills mcs', 'p.level_of_service = mcs.id', 'left');
|
|
$this->db->join('caregiver_schedule cs', 'p.id = cs.patient_id', 'left');
|
|
$this->db->join('caregiver_patient_clock_in_out cio', 'cs.id = cio.schedule_id', 'left');
|
|
$this->db->where('p.active_status', 1);
|
|
$this->db->group_start();
|
|
$this->db->where('(p.referral_type = "New" AND cs.patient_id IS NULL)');
|
|
$this->db->or_where('(cs.status = 1 AND cs.acceptance_status = "Unconfirmed" AND NOW() > cs.end)');
|
|
$this->db->or_where('(cs.status = 1 AND cs.acceptance_status = "Accepted" AND NOW() > cs.end AND cio.schedule_id IS NULL)');
|
|
$this->db->or_where('(cs.status = 1 AND cs.acceptance_status = "Declined")');
|
|
$this->db->group_end();
|
|
|
|
if($order_column==0){
|
|
$this->db->order_by('p.id', $order_type);
|
|
}elseif($order_column==1) {
|
|
$this->db->order_by('mcs.name', $order_type);
|
|
}elseif($order_column==2){
|
|
$this->db->order_by('p.first_name', $order_type);
|
|
}elseif($order_column==3){
|
|
$this->db->order_by('p.patient_email', $order_type);
|
|
}elseif($order_column==4){
|
|
$this->db->order_by('p.telephone', $order_type);
|
|
}elseif($order_column==5){
|
|
$this->db->order_by('p.address', $order_type);
|
|
}
|
|
|
|
if(isset($search) && $search!=''){
|
|
$this->db->group_start();
|
|
$this->db->like('p.id', $search);
|
|
$this->db->or_like('mcs.name', $search);
|
|
$this->db->or_like("CONCAT(p.first_name,' ',p.last_name)", $search);
|
|
$this->db->or_like('p.patient_email', $search);
|
|
$this->db->or_like('p.telephone', $search);
|
|
$this->db->or_like('p.address', $search);
|
|
$this->db->group_end();
|
|
}
|
|
|
|
if($from_api==''){
|
|
$this->db->limit($limit,$start);
|
|
}
|
|
|
|
$query=$this->db->get();
|
|
$openCases=$query->result_array();
|
|
$openCasesCount=$query->num_rows();
|
|
$main_query=$this->db->last_query();
|
|
$total_count=($this->db->query("SELECT FOUND_ROWS() AS total_rows"))->row()->total_rows;
|
|
$response=(object)[
|
|
'status'=>200,
|
|
'msg'=>'fetched successfully',
|
|
'data'=>(object)[
|
|
'total_count'=>$total_count,
|
|
'count'=>$openCasesCount,
|
|
'open_cases'=>$openCases,
|
|
'query'=>$main_query
|
|
]
|
|
];
|
|
return $response;
|
|
}catch(Exception $e){
|
|
$getMsg="Patient_model - model_get_open_cases: ".$e->getMessage();
|
|
echo $getMsg;
|
|
}
|
|
}
|
|
function model_get_patients($data){
|
|
try{
|
|
$from_api=isset($data['from_api'])&&$data['from_api']!=""?trim($data['from_api']):'';
|
|
$start=isset($data['start'])?(0+(int)($data['start'])):0;
|
|
$limit=isset($data['limit'])?(0+(int)($data['limit'])):10;
|
|
$search=isset($data['search'])&&$data['search']!=""?trim($data['search']):'';
|
|
$order_column=isset($data['order_column'])?(0+(int)($data['order_column'])):0;
|
|
$order_type=isset($data['order_type'])&&$data['order_type']!=""?trim($data['order_type']):'DESC';
|
|
|
|
$filter=isset($data['filter'])&&$data['filter']!=""?trim($data['filter']):'year';
|
|
$startDate=isset($data['start_date'])&&$data['start_date']!=""?trim($data['start_date']):null;
|
|
$endDate=isset($data['end_date'])&&$data['end_date']!=""?trim($data['end_date']):null;
|
|
|
|
$this->db->distinct();
|
|
$this->db->select(
|
|
'SQL_CALC_FOUND_ROWS
|
|
FROM_UNIXTIME(u.created_on) AS registered_on,
|
|
p.id,
|
|
p.reference_information,
|
|
p.reference_id,
|
|
p.referral_type,
|
|
p.patient_id,
|
|
p.first_name,
|
|
p.last_name,
|
|
CONCAT(p.first_name, " ", p.last_name) as name,
|
|
p.gender,
|
|
p.patient_email as email,
|
|
p.telephone,
|
|
p.primary_language,
|
|
p.level_of_service,
|
|
mcs.name AS service_type,
|
|
p.address,
|
|
JSON_UNQUOTE(JSON_EXTRACT(p.address, "$.City")) AS main_city,
|
|
JSON_UNQUOTE(JSON_EXTRACT(p.address, "$.Zipcode")) AS main_zipcode',false
|
|
);
|
|
$this->db->from('patient_details p');
|
|
$this->db->join('users u','p.ion_user_id=u.id');
|
|
$this->db->join('master_cg_skills mcs','p.level_of_service=mcs.id','left');
|
|
$this->db->where('p.active_status', 1);
|
|
$this->db->where('u.active', 1);
|
|
if($startDate!=null && $startDate!='' && $endDate!=null && $endDate!=''){
|
|
$this->db->where('DATE(FROM_UNIXTIME(u.created_on)) BETWEEN "'.$startDate.'" AND "'.$endDate.'"');
|
|
}
|
|
|
|
if($order_column==0){
|
|
$this->db->order_by('p.id', $order_type);
|
|
}elseif($order_column==1) {
|
|
$this->db->order_by('mcs.name', $order_type);
|
|
}elseif($order_column==2){
|
|
$this->db->order_by('p.first_name', $order_type);
|
|
}elseif($order_column==3){
|
|
$this->db->order_by('p.patient_email', $order_type);
|
|
}elseif($order_column==4){
|
|
$this->db->order_by('p.telephone', $order_type);
|
|
}elseif($order_column==5){
|
|
$this->db->order_by('p.address', $order_type);
|
|
}
|
|
|
|
if(isset($search) && $search!=''){
|
|
$this->db->group_start();
|
|
$this->db->like('p.id', $search);
|
|
$this->db->or_like('mcs.name', $search);
|
|
$this->db->or_like("CONCAT(p.first_name,' ',p.last_name)", $search);
|
|
$this->db->or_like('p.patient_email', $search);
|
|
$this->db->or_like('p.telephone', $search);
|
|
$this->db->or_like('p.address', $search);
|
|
$this->db->group_end();
|
|
}
|
|
|
|
if($from_api==''){
|
|
$this->db->limit($limit,$start);
|
|
}
|
|
|
|
$query=$this->db->get();
|
|
$activePatients=$query->result_array();
|
|
$activePatientsCount=$query->num_rows();
|
|
$main_query=$this->db->last_query();
|
|
$total_count=($this->db->query("SELECT FOUND_ROWS() AS total_rows"))->row()->total_rows;
|
|
$response=(object)[
|
|
'status'=>200,
|
|
'msg'=>'fetched successfully',
|
|
'data'=>(object)[
|
|
'total_count'=>$total_count,
|
|
'count'=>$activePatientsCount,
|
|
'patients'=>$activePatients,
|
|
'query'=>$main_query
|
|
]
|
|
];
|
|
return $response;
|
|
}catch(Exception $e){
|
|
$getMsg="Patient_model - model_get_patients: ".$e->getMessage();
|
|
echo $getMsg;
|
|
}
|
|
}
|
|
function model_get_schedules($data){
|
|
try{
|
|
$from_api=isset($data['from_api'])&&$data['from_api']!=""?trim($data['from_api']):'';
|
|
$start=isset($data['start'])?(0+(int)($data['start'])):0;
|
|
$limit=isset($data['limit'])?(0+(int)($data['limit'])):10;
|
|
$search=isset($data['search'])&&$data['search']!=""?trim($data['search']):'';
|
|
$order_column=isset($data['order_column'])?(0+(int)($data['order_column'])):0;
|
|
$order_type=isset($data['order_type'])&&$data['order_type']!=""?trim($data['order_type']):'DESC';
|
|
|
|
$filter=isset($data['filter'])&&$data['filter']!=""?trim($data['filter']):'year';
|
|
$startDate=isset($data['start_date'])&&$data['start_date']!=""?trim($data['start_date']):null;
|
|
$endDate=isset($data['end_date'])&&$data['end_date']!=""?trim($data['end_date']):null;
|
|
|
|
$this->db->distinct();
|
|
$this->db->select(
|
|
"SQL_CALC_FOUND_ROWS
|
|
(CASE
|
|
WHEN (cio.clock_in_time IS NULL
|
|
AND cio.clock_out_time IS NULL
|
|
AND cs.acceptance_status='Unconfirmed'
|
|
AND CURRENT_TIMESTAMP() < cs.end
|
|
) THEN 'unconfirmed'
|
|
WHEN (cio.clock_in_time IS NULL
|
|
AND cio.clock_out_time IS NULL
|
|
AND cs.acceptance_status='Accepted'
|
|
AND CURRENT_TIMESTAMP() < cs.end
|
|
) THEN 'upcoming'
|
|
WHEN (cio.clock_in_time IS NOT NULL
|
|
AND (
|
|
((cio.clock_out_time IS NULL OR cio.clock_out_time IS NOT NULL) AND cs.acceptance_status='Accepted')
|
|
OR (cio.clock_out_time IS NULL AND cs.acceptance_status='Reported')
|
|
)
|
|
) THEN 'ongoing'
|
|
WHEN (cio.clock_in_time IS NOT NULL
|
|
AND cio.clock_out_time IS NOT NULL
|
|
AND cs.acceptance_status='Reported'
|
|
) THEN 'completed'
|
|
WHEN (cio.clock_in_time IS NULL
|
|
AND cio.clock_out_time IS NULL
|
|
AND cs.acceptance_status IN('Unconfirmed','Accepted')
|
|
AND CURRENT_TIMESTAMP() > cs.end
|
|
) THEN 'missed'
|
|
WHEN (cio.clock_in_time IS NULL
|
|
AND cio.clock_out_time IS NULL
|
|
AND cs.acceptance_status='Declined'
|
|
) THEN 'declined'
|
|
ELSE 'undefined'
|
|
END) AS visit_status,
|
|
cs.acceptance_status,
|
|
(CASE
|
|
WHEN (cs.acceptance_status='Reported'
|
|
AND cio.clock_out_time IS NOT NULL
|
|
AND a.reporting_approval='0'
|
|
) THEN 'pending'
|
|
WHEN (cs.acceptance_status='Reported'
|
|
AND cio.clock_out_time IS NOT NULL
|
|
AND a.reporting_approval='1'
|
|
) THEN 'approved'
|
|
ELSE ''
|
|
END) AS approval_status,
|
|
cs.id AS schedule_id,
|
|
c.id AS caregiver_id,
|
|
p.id AS patient_id,
|
|
cs.start AS schedule_start,
|
|
cs.end AS schedule_end,
|
|
cio.clock_in_time,
|
|
cio.clock_out_time,
|
|
mcs.name AS service_type,
|
|
CONCAT(c.fname, ' ', c.lname) AS caregiver_name,
|
|
CONCAT(p.first_name, ' ', p.last_name) AS patient_name,
|
|
JSON_UNQUOTE(JSON_EXTRACT(p.address, '$.City')) AS patient_main_city,
|
|
JSON_UNQUOTE(JSON_EXTRACT(p.address, '$.Zipcode')) AS patient_main_zipcode",false
|
|
);
|
|
$this->db->from('caregiver_schedule cs');
|
|
$this->db->join('caregiver c', 'cs.caregiver_id=c.id', 'left');
|
|
$this->db->join('patient_details p', 'cs.patient_id=p.id', 'left');
|
|
$this->db->join('master_cg_skills mcs', 'p.level_of_service=mcs.id', 'left');
|
|
$this->db->join('caregiver_patient_clock_in_out cio', 'cs.id=cio.schedule_id', 'left');
|
|
$this->db->join('assessment a', 'cs.id=a.schedule_id', 'left');
|
|
$this->db->where('cs.status', '1');
|
|
if($startDate!=null && $startDate!='' && $endDate!=null && $endDate!=''){
|
|
$this->db->where('cs.start BETWEEN "'.$startDate.'" AND "'.$endDate.'"');
|
|
}
|
|
|
|
if($order_column==0){
|
|
$this->db->order_by('cs.id', $order_type);
|
|
// $this->db->order_by('cs.start', 'DESC');
|
|
}elseif($order_column==1) {
|
|
$this->db->order_by('cs.start', $order_type);
|
|
}elseif($order_column==2){
|
|
$this->db->order_by('p.first_name', $order_type);
|
|
}elseif($order_column==3){
|
|
$this->db->order_by('p.address', $order_type);
|
|
}elseif($order_column==4){
|
|
$this->db->order_by('mcs.name', $order_type);
|
|
}elseif($order_column==5){
|
|
$this->db->order_by('c.fname', $order_type);
|
|
}elseif($order_column==6){
|
|
$this->db->order_by('cs.acceptance_status', $order_type);
|
|
}
|
|
|
|
if(isset($search) && $search!=''){
|
|
if(in_array(strtolower($search),[
|
|
'unconfirmed',
|
|
'upcoming',
|
|
'ongoing',
|
|
'completed',
|
|
'missed',
|
|
'declined'
|
|
])){
|
|
$this->db->having('visit_status',$search);
|
|
}else if(in_array(strtolower($search),[
|
|
'approval pending',
|
|
'approved'
|
|
])){
|
|
$search=strtolower($search)=='approval pending'?'pending':$search;
|
|
$this->db->having('approval_status',$search);
|
|
}else{
|
|
$this->db->group_start();
|
|
$this->db->like('cs.id', $search);
|
|
$this->db->or_like('cs.start', $search);
|
|
$this->db->or_like("CONCAT(p.first_name,' ',p.last_name)", $search);
|
|
$this->db->or_like('p.address', $search);
|
|
$this->db->or_like('mcs.name', $search);
|
|
$this->db->or_like("CONCAT(c.fname,' ',c.lname)", $search);
|
|
$this->db->or_like('cs.acceptance_status', $search);
|
|
$this->db->group_end();
|
|
}
|
|
|
|
// if(preg_match('/['.preg_quote('unconfirmed','/').']/i', $search)){
|
|
|
|
// }if(preg_match('/['.preg_quote('upcoming','/').']/i', $search)){
|
|
|
|
// }if(preg_match('/['.preg_quote('ongoing','/').']/i', $search)){
|
|
|
|
// }if(preg_match('/['.preg_quote('completed','/').']/i', $search)){
|
|
|
|
// }if(preg_match('/['.preg_quote('missed','/').']/i', $search)){
|
|
|
|
// }if(preg_match('/['.preg_quote('declined','/').']/i', $search)){
|
|
|
|
// }
|
|
}
|
|
|
|
if($from_api==''){
|
|
$this->db->limit($limit,$start);
|
|
}
|
|
|
|
$query=$this->db->get();
|
|
$schedules=$query->result();
|
|
$schedulesCount=$query->num_rows();
|
|
$main_query=$this->db->last_query();
|
|
$total_count=($this->db->query("SELECT FOUND_ROWS() AS total_rows"))->row()->total_rows;
|
|
$response=(object)[
|
|
'status'=>200,
|
|
'msg'=>'fetched successfully',
|
|
'data'=>(object)[
|
|
'total_count'=>$total_count,
|
|
'count'=>$schedulesCount,
|
|
'schedules'=>$schedules,
|
|
'query'=>$main_query
|
|
]
|
|
];
|
|
return $response;
|
|
}catch(Exception $e){
|
|
$getMsg="CaregiverSchedule_model - model_get_schedules: ".$e->getMessage();
|
|
echo $getMsg;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* for data table end */ |