[ 'data_inicial' => null, 'data_final' => null, 'motivo_viagem' => null, 'municipio' => null, 'destino' => null, 'veiculo' => null, 'status' => null, 'paciente' => null, 'protocolo' => '' ], 'form' => self::getFormData() ]; } private static function getFormData() { $status = DB::table('transporte_paciente_viagem_status AS status') ->select( 'status.id', 'status.descricao', ) ->get(); return [ 'motivo_viagem' => null, 'municipio' => null, 'destino' => null, 'veiculo' => null, 'status' => $status, ]; } public static function getMotivos() { return DB::table('transporte_paciente_agendar_transporte as agendar') ->join('transporte_paciente_motivo_viagem_procedimento as motivo', 'agendar.motivo_id', 'motivo.id') ->select('motivo.id', 'motivo.descricao') ->groupBy('motivo.id') ->where('data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->get(); } public static function getMunicipios() { return DB::table('transporte_paciente_agendar_transporte as agendar') ->join('intranet.cadastro_municipio as municipio', 'municipio.id', 'agendar.municipio_id') ->select('municipio.id', 'municipio.nome') ->groupBy('municipio.id') ->where('data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->get(); } public static function getDestinos() { return DB::table('transporte_paciente_agendar_transporte as agendar') ->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id') ->select('destino.id', 'destino.descricao_destino as descricao') ->where('data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->when(request()->municipio, function($query) { $query->where('agendar.municipio_id', request()->municipio); }) ->groupBy('destino.id') ->get(); } public static function getVeiculos() { return DB::table('transporte_paciente_agendar_transporte as agendar') ->join('transporte_paciente_veiculo as veiculo', 'veiculo.id', 'agendar.veiculo_id') ->select( 'veiculo.id', DB::raw("CONCAT(veiculo.numero_placa, ' - ', veiculo.descricao_modelo) AS descricao") ) ->where('data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->where('veiculo.bloqueado', false) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->when(request()->municipio, function ($query) { $query->where('agendar.municipio_id', request()->municipio); }) ->when(request()->destino, function ($query) { $query->where('agendar.destino_id', request()->destino); }) ->orderBy('veiculo.numero_placa') ->groupBy('veiculo.id') ->get(); } public static function list() { $consulta = DB::table('transporte_paciente_agendar_transporte AS agendar') ->select( 'agendar.id', 'agendar.paciente_id AS paciente_id', 'cidadao.nome AS paciente_nome', DB::raw('DATE_FORMAT(cidadao.data_nascimento, "%d/%m/%Y") as data_nascimento'), 'cidadao.nome_social AS nome_social', 'cidadao.cns AS cns', 'cidadao.cpf AS cpf', 'cidadao.nome_mae AS nome_mae', 'motivo.descricao AS motivo_viagem', 'municipio.nome AS municipio', 'destino.descricao_destino AS destino', 'ponto.descricao AS ponto_referencia', DB::raw("CONCAT(veiculo.numero_placa, ' - ', veiculo.descricao_modelo) AS veiculo"), 'status.descricao AS status', 'paciente.prontuario', 'identidade.numero AS rg', 'tipo_logradouro.descricao AS logradouro_tipo', DB::raw("CONCAT(logradouro.nome, ' - ', bairro.nome) AS endereco"), 'logradouro.cep AS cep', 'bairro.nome AS bairro', 'cadastro_estado.uf AS uf', 'unidade.nome_fantasia AS unidade_referencia', DB::raw('LPAD(paciente.prontuario,6,0) as prontuario'), DB::raw("COALESCE(agendar.acompanhante, '-') AS acompanhante"), DB::raw("COALESCE(motorista.nome, '-') AS motorista"), DB::raw("TIME_FORMAT(agendar.horario, '%H:%i') AS horario"), DB::raw("IF(agendar.horario_saida, TIME_FORMAT(agendar.horario_saida, '%H:%i'),'-' ) AS horario_saida"), DB::raw('IF(transporte.protocolo, transporte.protocolo, "-") as protocolo'), 'agendar.data', 'agendar.observacao AS observacao_viagem', 'agendar.consulta_observacao AS observacao_paciente', ) ->leftJoin('cadastro_paciente AS paciente', 'agendar.paciente_id', 'paciente.id') ->leftJoin('cadastro_cidadao AS cidadao', 'paciente.cidadao_id', 'cidadao.id') ->leftJoin('transporte_paciente_motivo_viagem_procedimento as motivo', 'agendar.motivo_id', 'motivo.id') ->leftJoin('intranet.cadastro_municipio as municipio', 'agendar.municipio_id', 'municipio.id') ->leftJoin('transporte_paciente_destino AS destino', 'agendar.destino_id', 'destino.id') ->leftJoin('transporte_paciente_ponto AS ponto', 'agendar.ponto_id', 'ponto.id') ->leftJoin('transporte_paciente_viagem AS transporte', 'agendar.viagem_id', 'transporte.id') ->leftJoin('transporte_paciente_veiculo AS veiculo', 'transporte.veiculo_id', 'veiculo.id') ->leftJoin('transporte_paciente_condutor AS condutor', 'condutor.id', 'transporte.condutor_id') ->leftJoin('cadastro_usuario AS usuario', 'condutor.usuario_id', 'usuario.id') ->leftJoin('transporte_paciente_viagem_status AS status', 'transporte.status_id', 'status.id') ->leftJoin('cadastro_domicilio AS domicilio', 'domicilio.id', 'cidadao.domicilio_id') ->leftJoin('cadastro_endereco AS endereco', 'endereco.id', 'domicilio.endereco_id') ->leftJoin('cadastro_logradouro AS logradouro', 'logradouro.id', 'endereco.logradouro_id') ->leftJoin('cadastro_logradouro_tipo AS tipo_logradouro', 'tipo_logradouro.id', 'logradouro.id') ->leftJoin('cadastro_bairro AS bairro', 'bairro.id', 'logradouro.bairro_id') ->leftJoin('intranet.cadastro_municipio', 'cadastro_municipio.id', 'logradouro.municipio_id') ->leftJoin('intranet.cadastro_estado', 'cadastro_estado.id', 'cadastro_municipio.estado_id') ->leftJoin('cadastro_carteira_identidade AS identidade','identidade.cidadao_id', 'cidadao.id') ->leftJoin('cadastro_unidade AS unidade','unidade.id', 'paciente.unidade_id') ->leftJoin('cadastro_cidadao AS motorista', 'usuario.cidadao_id', 'motorista.id') ->where('agendar.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('agendar.data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->when(request()->municipio, function($query) { $query->where('agendar.municipio_id', request()->municipio); }) ->when(request()->destino, function($query) { $query->where('agendar.destino_id', request()->destino); }) ->when(request()->veiculo, function($query) { $query->where('agendar.veiculo_id', request()->veiculo); }) ->when(request()->paciente, function($query) { $query->where('agendar.paciente_id', request()->paciente); }) ->when(request()->protocolo, function($query) { $query->where('transporte.protocolo', request()->protocolo); }) ->when(request()->status, function($query) { $query->where('transporte.status_id', request()->status); }) ->orderBy('agendar.data', 'desc') ->orderBy('agendar.horario') ->groupBy('agendar.id') ->get(); $contagem = DB::table('transporte_paciente_agendar_transporte AS agendar') ->leftJoin('transporte_paciente_viagem AS viagem', 'viagem.id', 'agendar.viagem_id') ->select( DB::raw('SUM(IFNULL(agendar.acompanhante, 0) + 1) AS quantidade_paciente_acompanhante'), DB::raw('COUNT(agendar.id) AS quantidade_paciente'), ) ->where('agendar.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('agendar.data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->when(request()->municipio, function ($query) { $query->where('agendar.municipio_id', request()->municipio); }) ->when(request()->destino, function ($query) { $query->where('agendar.destino_id', request()->destino); }) ->when(request()->veiculo, function($query) { $query->where('agendar.veiculo_id', request()->veiculo); }) ->when(request()->paciente, function($query) { $query->where('agendar.paciente_id', request()->paciente); }) ->when(request()->protocolo, function($query) { $query->where('viagem.protocolo', request()->protocolo); }) ->when(request()->status, function($query) { $query->where('viagem.status_id', request()->status); }) ->get(); $totalizadores = [ 'total_paciente' => $contagem->sum('quantidade_paciente'), 'total_paciente_acompanhante' => $contagem->sum('quantidade_paciente_acompanhante'), ]; return ['consulta' => $consulta, 'totalizadores' => $totalizadores]; } }