915 lines
48 KiB
PHP
915 lines
48 KiB
PHP
<?php
|
|
|
|
namespace App\Services\TransportePaciente\Gerenciamento;
|
|
|
|
use App\Enums\Cadastro\SujeitoAtencao\PreferenciaNome;
|
|
use App\Enums\Cadastro\SujeitoAtencao\Subclassificacao;
|
|
use App\Enums\TransportePaciente\Funcionalidade;
|
|
use App\Enums\TransportePaciente\Status;
|
|
use App\Models\Cadastro\Parametrizacao\Parametrizacao as ParametrizacaoCadastro;
|
|
use App\Models\Cadastro\SujeitoAtencao\Paciente;
|
|
use App\Models\Intranet\Cliente;
|
|
use App\Models\TransportePaciente\Acompanhante;
|
|
use App\Models\TransportePaciente\Agendar\Agendar;
|
|
use App\Models\TransportePaciente\Destino\Destino;
|
|
use App\Models\TransportePaciente\Parametrizacao\Parametrizacao;
|
|
use App\Services\Service;
|
|
use App\Services\TransportePaciente\Agendar\AgendarService;
|
|
use App\Services\TransportePaciente\Agendar\HistoricoService;
|
|
use App\Utils\DataUtil;
|
|
use App\Utils\MaskUtil;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class GerenciamentoService extends Service
|
|
{
|
|
private static function getFormData($id)
|
|
{
|
|
$now = Carbon::now();
|
|
$currentDate = $now->format('Y-m-d');
|
|
|
|
$parametrizacao = Parametrizacao::first();
|
|
|
|
$paciente = Paciente::with([
|
|
'unidade:id,nome_fantasia',
|
|
'cidadao' => function ($query) {
|
|
$query->select('id', 'nome', 'nome_social', 'preferencia_nome_id', 'data_nascimento', 'cpf', 'sexo_id', 'domicilio_id', 'raca_cor_id', 'nacionalidade_id', 'cns')
|
|
->with([
|
|
'carteiraIdentidade:id,cidadao_id,numero',
|
|
'conveniosMedico:id,nome',
|
|
'situacaoFamiliarConjugal:id,descricao',
|
|
'telefones:id,cidadao_id,numero'
|
|
]);
|
|
},
|
|
'classificacao:id,descricao'
|
|
])->findOrFail($id);
|
|
|
|
$cidadao = $paciente->cidadao;
|
|
|
|
$endereco = $paciente->cidadao->domicilio->endereco ?? null;
|
|
|
|
$cliente = Cliente::where('link', app('config')->get('database.default'))->firstOrFail();
|
|
$currentLotacao = self::getCurrentLotacao();
|
|
|
|
$tipoPassageiro = DB::table('transporte_paciente_veiculo_tipo_passageiro')
|
|
->orderBy('descricao')
|
|
->get();
|
|
|
|
$tipo = DB::table('transporte_paciente_veiculo_tipo')
|
|
->orderBy('descricao')
|
|
->get();
|
|
|
|
$relacoes = DB::table('transporte_paciente_acompanhante_relacao')
|
|
->get();
|
|
|
|
$telefones = DB::table('cadastro_cidadao_telefone')
|
|
->select(DB::raw("CONCAT(SUBSTR(numero, 1, 2), ' ', SUBSTR(numero, 3)) as numero_formatado"))
|
|
->where('cidadao_id', $paciente->cidadao->id)
|
|
->get();
|
|
|
|
return [
|
|
'data_atual' => $now->format('d/m/Y'),
|
|
'periodo' => [
|
|
'start' => $currentDate,
|
|
'end' => $currentDate,
|
|
],
|
|
'municipios' => self::getMunicipios(),
|
|
'destinos' => self::getDestinos(),
|
|
'municipios_destinos' => Cache::remember('municipios_destinos', 60, function () {
|
|
return DB::table('transporte_paciente_destino as destino')
|
|
->select('municipio.id', 'municipio.nome')
|
|
->join('intranet.cadastro_municipio as municipio', 'destino.municipio_id', 'municipio.id')
|
|
->where('bloqueado', false)
|
|
->groupBy('destino.municipio_id')
|
|
->get();
|
|
}),
|
|
'pontos' => AgendarService::getPontos(),
|
|
'horariosSaida' => self::getHorariosSaida(),
|
|
'tipos_passageiro' => $tipoPassageiro,
|
|
'veiculo_obrigatorio' => $parametrizacao->veiculo ?? null,
|
|
'tipos_veiculo' => $tipo,
|
|
'horario_saida' => $parametrizacao->horario_saida ?? null,
|
|
'mensagem_protocolo' => $parametrizacao->mensagem_protocolo ?? null,
|
|
'agendar_transporte_jornada' => $parametrizacao->agendar_transporte_jornada ?? null,
|
|
'comprovante_acompanhante' => $parametrizacao->comprovante_acompanhante ?? null,
|
|
'relacoes' => $relacoes,
|
|
'paciente' => [
|
|
'id' => $paciente->id ?? null,
|
|
'nome' => $cidadao->nome ?? null,
|
|
'nome_social' => $cidadao->nome_social,
|
|
'prefere_nome_social' => $paciente->cidadao
|
|
->preferencia_nome_id === PreferenciaNome::NOME_SOCIAL,
|
|
'data_nascimento' => $cidadao->data_nascimento
|
|
? $cidadao->data_nascimento->format('d/m/Y')
|
|
: '',
|
|
'cpf' => $cidadao->cpf ? MaskUtil::getCpfMasked($paciente->cidadao->cpf) : null,
|
|
'rg' => $cidadao->carteiraIdentidade->numero ?? null,
|
|
'convenio_medico_nome' => $cidadao->conveniosMedico->first()->nome ?? null,
|
|
'situacao_familiar' => $cidadao->situacaoFamiliarConjugal->descricao ?? null,
|
|
'prontuario' => $paciente->prontuario,
|
|
'unidade' => $paciente->unidade->nome_fantasia ?? null,
|
|
'sexo' => $cidadao->sexo ?? '-',
|
|
'domicilio_id' => $cidadao->domicilio_id ?? null,
|
|
'raca_cor_id' => $cidadao->raca_cor_id ?? null,
|
|
'nacionalidade_id' => $cidadao->nacionalidade_id ?? null,
|
|
'classificacao_id' => $paciente->classificacao_id ?? '-',
|
|
'classificacao_nome' => $paciente->classificacao->descricao ?? '-',
|
|
'cns' => $cidadao->cns ? MaskUtil::getCnsMasked($cidadao->cns) : '',
|
|
'idade' => $cidadao->data_nascimento
|
|
? "{$cidadao->idade['anos']} ano(s), "
|
|
. "{$cidadao->idade['meses']} mês(es) e "
|
|
. "{$cidadao->idade['dias']} dia(s) "
|
|
: 'NÃO INFORMADA',
|
|
'telefones' => $telefones
|
|
],
|
|
'endereco' => [
|
|
'estado_id' => $endereco ? $endereco->logradouro->municipio->estado->id : null,
|
|
'municipio' => $endereco ? $endereco->logradouro->municipio : null,
|
|
'logradouro' => $endereco ? $endereco->logradouro : null,
|
|
'cep' => $endereco ? MaskUtil::getCepMasked($endereco->logradouro->cep) : null,
|
|
'numero' => $endereco ? $endereco->numero : null,
|
|
'sem_numero' => $endereco ? $endereco->sem_numero : null,
|
|
'complemento' => $endereco ? $endereco->complemento ?? '' : null,
|
|
'zona_id' => $endereco ? $endereco->zona_id : null,
|
|
],
|
|
'cliente' => [
|
|
'sistema' => [
|
|
'ramo_atividade' => [
|
|
'nome' => $cliente->sistema->ramoAtividade->nome ?? null,
|
|
],
|
|
'nome' => $cliente->sistema->nome ?? null,
|
|
'versao' => $cliente->sistema->versao ?? null,
|
|
],
|
|
'municipio' => [
|
|
'estado' => [
|
|
'uf' => $cliente->municipio->estado->uf ?? null,
|
|
],
|
|
'nome' => $cliente->municipio->nome ?? null,
|
|
],
|
|
'nome' => $cliente->nome ?? null,
|
|
'email' => $cliente->email ?? null,
|
|
'site' => $cliente->site ?? null,
|
|
'logotipo' => $cliente->logotipo ?? null,
|
|
],
|
|
'usuario' => $currentLotacao->usuario->cidadao->nome,
|
|
];
|
|
}
|
|
|
|
private static function getModelData($id)
|
|
{
|
|
$destino = [
|
|
'agendamentos' => self::getAgendamentos($id)
|
|
];
|
|
|
|
return $destino;
|
|
}
|
|
|
|
public static function show($id)
|
|
{
|
|
return [
|
|
'form' => self::getFormData($id),
|
|
'model' => self::getModelData($id),
|
|
];
|
|
}
|
|
|
|
public static function store()
|
|
{
|
|
$ids = [];
|
|
|
|
foreach (request()->agendar as $params) {
|
|
|
|
$escolher = Agendar::where('id', $params['id'])->first();
|
|
$status = $params["data_saida"] === $escolher->data_saida ? Status::MODIFICADO : Status::REAGENDADO;
|
|
|
|
if($params['veiculo_id'] != $escolher->veiculo_id) {
|
|
$escolher->veiculo_edited_by = self::getCurrentLotacao()->usuario->id;
|
|
$escolher->veiculo_edited_at = Carbon::now();
|
|
$escolher->funcionalidade_origem = Funcionalidade::GERENCIAMENTO_VIAGEM;
|
|
}
|
|
$escolher->fill($params);
|
|
$escolher->acompanhante_1_id = $params['acompanhante1_id'];
|
|
$escolher->acompanhante_2_id = $params['acompanhante2_id'];
|
|
$escolher->save();
|
|
|
|
HistoricoService::create($escolher, $status, $escolher->updated_lotacao_id);
|
|
|
|
if (isset($params['acompanhante1'])) {
|
|
|
|
$acompanhante1 = Acompanhante::where('id', $params['acompanhante1']['id'])->first() ?? new Acompanhante;
|
|
$acompanhante1->relacao_id = $params['acompanhante1']['relacao_id'] ?? null;
|
|
$acompanhante1->usuario_id = $params['acompanhante1']['usuario_id'] ?? null;
|
|
|
|
if (!$acompanhante1->usuario_id) {
|
|
|
|
if (isset($params['acompanhante1']['nome'])) {
|
|
if (is_array($params['acompanhante1']['nome'])) {
|
|
|
|
$acompanhante1->nome = $params['acompanhante1']['nome']['cidadao']['nome'] ?? null;
|
|
} else {
|
|
|
|
$acompanhante1->nome = $params['acompanhante1']['nome'];
|
|
}
|
|
} else {
|
|
$acompanhante1->nome = null;
|
|
}
|
|
|
|
$acompanhante1->telefone = isset($params['acompanhante1']['telefone'])
|
|
? preg_replace('/\D/', '', $params['acompanhante1']['telefone'])
|
|
: null;
|
|
}
|
|
|
|
$acompanhante1->save();
|
|
|
|
$agendar = Agendar::where('id', $params['id'])->first();
|
|
$agendar->acompanhante_1_id = $acompanhante1->id;
|
|
$agendar->save();
|
|
HistoricoService::create($agendar, Status::MODIFICADO, $agendar->updated_lotacao_id);
|
|
}
|
|
|
|
if (isset($params['acompanhante2'])) {
|
|
|
|
$acompanhante2 = Acompanhante::where('id', $params['acompanhante2']['id'])->first() ?? new Acompanhante;
|
|
$acompanhante2->relacao_id = $params['acompanhante2']['relacao_id'] ?? null;
|
|
$acompanhante2->usuario_id = $params['acompanhante2']['usuario_id'] ?? null;
|
|
|
|
if (!$acompanhante2->usuario_id) {
|
|
|
|
if (isset($params['acompanhante2']['nome'])) {
|
|
|
|
if (is_array($params['acompanhante2']['nome'])) {
|
|
|
|
$acompanhante2->nome = $params['acompanhante2']['nome']['cidadao']['nome'] ?? null;
|
|
} else {
|
|
|
|
$acompanhante2->nome = $params['acompanhante2']['nome'];
|
|
}
|
|
} else {
|
|
$acompanhante2->nome = null;
|
|
}
|
|
|
|
$acompanhante2->telefone = isset($params['acompanhante2']['telefone'])
|
|
? preg_replace('/\D/', '', $params['acompanhante2']['telefone'])
|
|
: null;
|
|
}
|
|
|
|
$acompanhante2->save();
|
|
|
|
$agendar = Agendar::where('id', $params['id'])->first();
|
|
$agendar->acompanhante_2_id = $acompanhante2->id;
|
|
$agendar->save();
|
|
HistoricoService::create($agendar, Status::MODIFICADO, $agendar->updated_lotacao_id);
|
|
}
|
|
|
|
|
|
$ids[] = $escolher->id;
|
|
}
|
|
|
|
if(!isset(request()->ids_cancelado)){
|
|
|
|
return;
|
|
}
|
|
|
|
$agendar = Agendar::where('paciente_id', request()->paciente_id)
|
|
->whereIn('id', request()->ids_cancelado);
|
|
|
|
$transportes = $agendar->get();
|
|
|
|
if($transportes->isNotEmpty()){
|
|
$agendar->update(['status_id' => Status::CANCELADO]);
|
|
|
|
foreach($transportes as $transporte) {
|
|
HistoricoService::create($transporte, Status::CANCELADO, $transporte->updated_lotacao_id);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function update()
|
|
{
|
|
foreach (request()->agendar as $params) {
|
|
|
|
$update = Agendar::find($params['id']);
|
|
|
|
if (isset($update)) {
|
|
|
|
$status = $params["data_saida"] === $update->data_saida ? Status::MODIFICADO : Status::REAGENDADO;
|
|
|
|
if($params['veiculo_id'] != $update->veiculo_id) {
|
|
$update->veiculo_edited_by = self::getCurrentLotacao()->usuario->id;
|
|
$update->veiculo_edited_at = Carbon::now();
|
|
$update->funcionalidade_origem = Funcionalidade::GERENCIAMENTO_VIAGEM;
|
|
}
|
|
|
|
$update->motivo_id = $params['motivo'];
|
|
$update->horario = $params['horario'];
|
|
$update->municipio_id = $params['municipio'];
|
|
$update->destino_id = $params['destino'];
|
|
$update->consulta_observacao = $params['consulta_observacao'];
|
|
$update->observacao = $params['observacao'];
|
|
$update->acompanhante = $params['acompanhante'];
|
|
$update->ponto_id = $params['ponto'];
|
|
$update->horario_saida = $params['horario_saida'];
|
|
$update->tipo_passageiro_id = $params['tipo_passageiro'];
|
|
$update->veiculo_id = $params['veiculo_id'];
|
|
$update->jornada_id = (isset($params['jornada_id']) && !empty($params['jornada_id'])) ? $params['jornada_id'] : null;
|
|
$update->acompanhante_1_id = $params['acompanhante'] >= 1 ? $params['acompanhante1_id'] : null;
|
|
$update->acompanhante_2_id = $params['acompanhante'] == 2 ? $params['acompanhante2_id'] : null;
|
|
$update->status_id = $status;
|
|
$update->updated_lotacao_id = self::getCurrentLotacao()->usuario->id;
|
|
|
|
if (!$params['items_selecionados']) {
|
|
|
|
$update->data = $params['data'];
|
|
$update->data_saida = $params['data_saida'];
|
|
}
|
|
|
|
$update->save();
|
|
|
|
HistoricoService::create($update, $status, $update->updated_lotacao_id);
|
|
|
|
if(isset($params['acompanhante1']) && $params['acompanhante'] >= 1) {
|
|
|
|
$acompanhante1 = Acompanhante::where('id', $params['acompanhante1']['id'])->first() ?? new Acompanhante;
|
|
$acompanhante1->relacao_id = $params['acompanhante1']['relacao_id'] ?? null;
|
|
$acompanhante1->usuario_id = $params['acompanhante1']['usuario_id'] ?? null;
|
|
|
|
if(!$acompanhante1->usuario_id) {
|
|
|
|
if (isset($params['acompanhante1']['nome'])) {
|
|
if (is_array($params['acompanhante1']['nome'])) {
|
|
|
|
$acompanhante1->nome = $params['acompanhante1']['nome']['cidadao']['nome'] ?? null;
|
|
} else {
|
|
|
|
$acompanhante1->nome = $params['acompanhante1']['nome'];
|
|
}
|
|
} else {
|
|
$acompanhante1->nome = null;
|
|
}
|
|
|
|
$acompanhante1->telefone = isset($params['acompanhante1']['telefone'])
|
|
? preg_replace('/\D/', '', $params['acompanhante1']['telefone'])
|
|
: null;
|
|
}
|
|
|
|
$acompanhante1->save();
|
|
|
|
$agendar = Agendar::where('id', $params['id'])->first();
|
|
$agendar->acompanhante_1_id = $acompanhante1->id;
|
|
$agendar->save();
|
|
}
|
|
|
|
if(isset($params['acompanhante2']) && $params['acompanhante'] == 2) {
|
|
|
|
$acompanhante2 = Acompanhante::where('id', $params['acompanhante2']['id'])->first() ?? new Acompanhante;
|
|
$acompanhante2->relacao_id = $params['acompanhante2']['relacao_id'] ?? null;
|
|
$acompanhante2->usuario_id = $params['acompanhante2']['usuario_id'] ?? null;
|
|
|
|
if(!$acompanhante2->usuario_id) {
|
|
|
|
if (isset($params['acompanhante2']['nome'])) {
|
|
if (is_array($params['acompanhante2']['nome'])) {
|
|
|
|
$acompanhante2->nome = $params['acompanhante2']['nome']['cidadao']['nome'] ?? null;
|
|
} else {
|
|
|
|
$acompanhante2->nome = $params['acompanhante2']['nome'];
|
|
}
|
|
} else {
|
|
$acompanhante2->nome = null;
|
|
}
|
|
|
|
$acompanhante2->telefone = isset($params['acompanhante2']['telefone'])
|
|
? preg_replace('/\D/', '', $params['acompanhante2']['telefone'])
|
|
: null;
|
|
}
|
|
|
|
$acompanhante2->save();
|
|
|
|
$agendar = Agendar::where('id', $params['id'])->first();
|
|
$agendar->acompanhante_2_id = $acompanhante2->id;
|
|
$agendar->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function getHorariosSaida()
|
|
{
|
|
$now = Carbon::now();
|
|
$currentDate = $now->format('Y-m-d');
|
|
|
|
$data_saida = request()->data_saida ?? $currentDate;
|
|
|
|
return Agendar::where('data_saida', $data_saida)
|
|
->whereNotNull('horario_saida')
|
|
->whereNull('veiculo_id')
|
|
->when(request()->municipio_id, function ($query) {
|
|
|
|
$query->where('municipio_id', request()->municipio_id);
|
|
})
|
|
->when(request()->destino_id, function ($query) {
|
|
|
|
$query->where('destino_id', request()->destino_id);
|
|
})
|
|
->select(DB::raw("TIME_FORMAT(horario_saida, '%H:%i') as horario_saida"))
|
|
->distinct()
|
|
->orderBy('horario_saida')
|
|
->get();
|
|
}
|
|
|
|
public static function getMunicipios()
|
|
{
|
|
$now = Carbon::now();
|
|
$currentDate = $now->format('Y-m-d');
|
|
|
|
$data_saida = request()->data_saida ?? $currentDate;
|
|
|
|
return Agendar::join('intranet.cadastro_municipio', 'intranet.cadastro_municipio.id', '=', 'transporte_paciente_agendar_transporte.municipio_id')
|
|
->where('transporte_paciente_agendar_transporte.data_saida', $data_saida)
|
|
->whereNull('transporte_paciente_agendar_transporte.veiculo_id')
|
|
->select('intranet.cadastro_municipio.id','intranet.cadastro_municipio.nome')
|
|
->distinct()
|
|
->get();
|
|
}
|
|
|
|
public static function getDestinos()
|
|
{
|
|
$now = Carbon::now();
|
|
$currentDate = $now->format('Y-m-d');
|
|
|
|
$data_saida = request()->data_saida ?? $currentDate;
|
|
|
|
return Destino::join('transporte_paciente_agendar_transporte', 'transporte_paciente_agendar_transporte.destino_id', '=', 'transporte_paciente_destino.id')
|
|
->whereNull('transporte_paciente_agendar_transporte.veiculo_id')
|
|
->where('transporte_paciente_destino.municipio_id', request()->municipio_id)
|
|
->where('transporte_paciente_agendar_transporte.data_saida', $data_saida)
|
|
->where('transporte_paciente_destino.bloqueado', false)
|
|
->select('transporte_paciente_destino.id','transporte_paciente_destino.descricao_destino as descricao')
|
|
->distinct()
|
|
->get();
|
|
}
|
|
|
|
public static function getAgendamentos($id)
|
|
{
|
|
$parametrizacao = Parametrizacao::first();
|
|
|
|
if(!$parametrizacao->campo_livre){
|
|
|
|
return DB::table('transporte_paciente_agendar_transporte')
|
|
->leftJoin('transporte_paciente_jornada as jornadas', 'transporte_paciente_agendar_transporte.jornada_id', 'jornadas.id')
|
|
->leftJoin('intranet.cadastro_municipio as municipios', 'transporte_paciente_agendar_transporte.municipio_id', 'municipios.id')
|
|
->leftJoin('intranet.cadastro_estado as estados', 'municipios.estado_id', 'estados.id')
|
|
->leftJoin('transporte_paciente_veiculo as veiculos', 'transporte_paciente_agendar_transporte.veiculo_id', 'veiculos.id')
|
|
->leftJoin('transporte_paciente_motivo_viagem_procedimento as motivos', 'transporte_paciente_agendar_transporte.motivo_id', '=', 'motivos.id')
|
|
->leftJoin('transporte_paciente_ponto as pontos', 'transporte_paciente_agendar_transporte.ponto_id', 'pontos.id')
|
|
->leftJoin('transporte_paciente_viagem as viagens', 'transporte_paciente_agendar_transporte.viagem_id', 'viagens.id')
|
|
->leftJoin('cadastro_lotacao as lotacoes', 'transporte_paciente_agendar_transporte.created_lotacao_id', 'lotacoes.id')
|
|
->leftJoin('cadastro_usuario as agendadores', 'lotacoes.usuario_id', 'agendadores.id')
|
|
->leftJoin('cadastro_cidadao as agendador_cidadaos', 'agendadores.cidadao_id', 'agendador_cidadaos.id')
|
|
->leftJoin('cadastro_infraestrutura as infraestruturas', 'lotacoes.infraestrutura_id', 'infraestruturas.id')
|
|
->leftJoin('cadastro_unidade as unidades', 'infraestruturas.unidade_id', 'unidades.id')
|
|
->leftJoin('transporte_paciente_veiculo_tipo_passageiro as tipo_passageiro', 'tipo_passageiro.id', 'transporte_paciente_agendar_transporte.tipo_passageiro_id')
|
|
->leftJoin('transporte_paciente_destino as paciente_destino', 'paciente_destino.id', 'transporte_paciente_agendar_transporte.destino_id')
|
|
->leftJoin('transporte_paciente_acompanhante as paciente_acompanhante_1', 'paciente_acompanhante_1.id', 'transporte_paciente_agendar_transporte.acompanhante_1_id')
|
|
->leftJoin('cadastro_paciente as cadastro_paciente_acompanhante_1', 'cadastro_paciente_acompanhante_1.id', 'paciente_acompanhante_1.usuario_id')
|
|
->leftJoin('cadastro_cidadao as cadastro_cidadao_acompanhante_1', 'cadastro_paciente_acompanhante_1.cidadao_id', 'cadastro_cidadao_acompanhante_1.id')
|
|
->leftJoin('cadastro_cidadao_telefone as telefone_acompanhante_1', function ($join) {
|
|
|
|
$join->on('cadastro_cidadao_acompanhante_1.id', '=', 'telefone_acompanhante_1.cidadao_id')
|
|
->whereNull('telefone_acompanhante_1.deleted_at')
|
|
->where('telefone_acompanhante_1.principal', true);
|
|
})
|
|
->leftJoin('transporte_paciente_acompanhante as paciente_acompanhante_2', 'paciente_acompanhante_2.id', 'transporte_paciente_agendar_transporte.acompanhante_2_id')
|
|
->leftJoin('cadastro_paciente as cadastro_paciente_acompanhante_2', 'cadastro_paciente_acompanhante_2.id', 'paciente_acompanhante_2.usuario_id')
|
|
->leftJoin('cadastro_cidadao as cadastro_cidadao_acompanhante_2', 'cadastro_paciente_acompanhante_2.cidadao_id', 'cadastro_cidadao_acompanhante_2.id')
|
|
->leftJoin('cadastro_cidadao_telefone as telefone_acompanhante_2', function ($join) {
|
|
|
|
$join->on('cadastro_cidadao_acompanhante_2.id', '=', 'telefone_acompanhante_2.cidadao_id')
|
|
->whereNull('telefone_acompanhante_2.deleted_at')
|
|
->where('telefone_acompanhante_2.principal', true);
|
|
})
|
|
->where('transporte_paciente_agendar_transporte.paciente_id', $id)
|
|
->where(function ($query) {
|
|
$query->whereNotIn('transporte_paciente_agendar_transporte.status_id', [Status::CANCELADO])
|
|
->orWhereNull('transporte_paciente_agendar_transporte.status_id');
|
|
})
|
|
->select(
|
|
'transporte_paciente_agendar_transporte.*',
|
|
'jornadas.data_inicial',
|
|
'jornadas.data_final',
|
|
'municipios.nome as municipio_nome',
|
|
'estados.uf as estado_uf',
|
|
'veiculos.numero_placa',
|
|
'veiculos.descricao_modelo',
|
|
'motivos.descricao as motivo_descricao',
|
|
'pontos.casa_paciente',
|
|
'pontos.descricao as ponto_descricao',
|
|
'viagens.protocolo',
|
|
'agendador_cidadaos.nome as agendador_nome',
|
|
'unidades.nome_fantasia as unidade_agendadora',
|
|
'tipo_passageiro.descricao as tipo_passageiro_descricao',
|
|
'paciente_destino.descricao_destino as destino_descricao',
|
|
'paciente_acompanhante_1.id as acompanhante_1_id',
|
|
'paciente_acompanhante_1.usuario_id as acompanhante_1_usuario_id',
|
|
'cadastro_cidadao_acompanhante_1.nome as acompanhante_1_nome',
|
|
'cadastro_cidadao_acompanhante_1.cns as acompanhante_1_cns',
|
|
'telefone_acompanhante_1.numero as acompanhante_1_telefone',
|
|
'paciente_acompanhante_1.relacao_id as acompanhante_1_relacao_id',
|
|
'paciente_acompanhante_2.id as acompanhante_2_id',
|
|
'paciente_acompanhante_2.usuario_id as acompanhante_2_usuario_id',
|
|
'cadastro_cidadao_acompanhante_2.nome as acompanhante_2_nome',
|
|
'cadastro_cidadao_acompanhante_2.cns as acompanhante_2_cns',
|
|
'telefone_acompanhante_2.numero as acompanhante_2_telefone',
|
|
'paciente_acompanhante_2.relacao_id as acompanhante_2_relacao_id',
|
|
)
|
|
->get()
|
|
->map(function ($query) {
|
|
return [
|
|
'id' => $query->id ?? null,
|
|
'selecionado' => false,
|
|
'alterado' => false,
|
|
'jornada_id' => $query->jornada_id ?? null,
|
|
'paciente_id' => $query->paciente_id ?? null,
|
|
'acompanhante1_id' => $query->acompanhante_1_id ?? null,
|
|
'acompanhante2_id' => $query->acompanhante_2_id ?? null,
|
|
'paciente_nome' => $query->paciente_nome ?? null,
|
|
'numero_placa' => $query->numero_placa ?? null,
|
|
'descricao_modelo' => $query->descricao_modelo ?? null,
|
|
'consulta_observacao' => $query->consulta_observacao ?? null,
|
|
'observacao' => $query->observacao ?? null,
|
|
'supervisor_id' => $query->supervisor_id ?? null,
|
|
'data' => $query->data ?? null,
|
|
'data_saida' => $query->data_saida ?? null,
|
|
'acompanhante' => $query->acompanhante ?? null,
|
|
'horario' => (new Carbon($query->horario))->format('H:i') ?? null,
|
|
'horario_saida' => $query->horario_saida ? (new Carbon($query->horario_saida))->format('H:i') : null,
|
|
'uf' => $query->estado_uf ?? null,
|
|
'municipio' => [
|
|
'id' => $query->municipio_id,
|
|
'nome' => $query->municipio_nome ?? null,
|
|
],
|
|
'acompanhante1' => [
|
|
'nome' => [
|
|
'cidadao' => [
|
|
'nome' => $query->acompanhante_1_nome ?? null,
|
|
]
|
|
],
|
|
'id' => $query->acompanhante_1_id ?? null,
|
|
'usuario_id' => $query->acompanhante_1_usuario_id ?? null,
|
|
'cns' => $query->acompanhante_1_cns ?? null,
|
|
'telefone' => $query->acompanhante_1_telefone ?? null,
|
|
'relacao_id' => $query->acompanhante_1_relacao_id ?? null,
|
|
|
|
],
|
|
'acompanhante2' => [
|
|
'nome' => [
|
|
'cidadao' => [
|
|
'nome' => $query->acompanhante_2_nome ?? null,
|
|
]
|
|
],
|
|
'id' => $query->acompanhante_2_id ?? null,
|
|
'usuario_id' => $query->acompanhante_2_usuario_id ?? null,
|
|
'cns' => $query->acompanhante_2_cns ?? null,
|
|
'telefone' => $query->acompanhante_2_telefone ?? null,
|
|
'relacao_id' => $query->acompanhante_2_relacao_id ?? null,
|
|
],
|
|
'destino_id' => $query->destino_id ?? null,
|
|
'veiculo_id' => $query->veiculo_id ?? null,
|
|
'veiculo' => [
|
|
'descricao' => $query->numero_placa . ' - ' . $query->descricao_modelo,
|
|
],
|
|
'jornada_id' => $query->jornada_id ?? null,
|
|
'jornada' => [
|
|
'descricao' => $query->data_inicial . ' - ' . $query->data_final,
|
|
],
|
|
'ponto_id' => $query->ponto_id ?? null,
|
|
'tipo_passageiro_id' => $query->tipo_passageiro_id ?? null,
|
|
'tipo_passageiro' => [
|
|
'descricao' => strtoupper($query->tipo_passageiro_descricao ?? null),
|
|
],
|
|
'status_id' => $query->status_id ?? null,
|
|
'destino' => $query->destino_descricao ?? null,
|
|
'ponto' => $query->ponto_descricao ?? null,
|
|
'motivo' => [
|
|
'id' => $query->motivo_id ?? null,
|
|
'descricao' => $query->motivo_descricao ?? null,
|
|
],
|
|
'protocolo' => $query->protocolo ?? '-',
|
|
'data_agendamento' => (new Carbon($query->created_at))->format('d/m/Y'),
|
|
'agendador' => $query->agendador_nome ?? null,
|
|
'unidade_agendadora' => $query->unidade_agendadora ?? null,
|
|
];
|
|
});
|
|
|
|
} else {
|
|
|
|
return DB::table('transporte_paciente_agendar_transporte')
|
|
->leftJoin('transporte_paciente_jornada as jornadas', 'transporte_paciente_agendar_transporte.jornada_id', 'jornadas.id')
|
|
->leftJoin('intranet.cadastro_municipio as municipios', 'transporte_paciente_agendar_transporte.municipio_id', 'municipios.id')
|
|
->leftJoin('intranet.cadastro_estado as estados', 'municipios.estado_id', 'estados.id')
|
|
->leftJoin('transporte_paciente_veiculo as veiculos', 'transporte_paciente_agendar_transporte.veiculo_id', 'veiculos.id')
|
|
->leftJoin('transporte_paciente_motivo_viagem_procedimento as motivos', 'transporte_paciente_agendar_transporte.motivo_id', '=', 'motivos.id')
|
|
->leftJoin('transporte_paciente_ponto as pontos', 'transporte_paciente_agendar_transporte.ponto_id', 'pontos.id')
|
|
->leftJoin('transporte_paciente_viagem as viagens', 'transporte_paciente_agendar_transporte.viagem_id', 'viagens.id')
|
|
->leftJoin('cadastro_lotacao as lotacoes', 'transporte_paciente_agendar_transporte.created_lotacao_id', 'lotacoes.id')
|
|
->leftJoin('cadastro_usuario as agendadores', 'lotacoes.usuario_id', 'agendadores.id')
|
|
->leftJoin('cadastro_cidadao as agendador_cidadaos', 'agendadores.cidadao_id', 'agendador_cidadaos.id')
|
|
->leftJoin('cadastro_infraestrutura as infraestruturas', 'lotacoes.infraestrutura_id', 'infraestruturas.id')
|
|
->leftJoin('cadastro_unidade as unidades', 'infraestruturas.unidade_id', 'unidades.id')
|
|
->leftJoin('transporte_paciente_veiculo_tipo_passageiro as tipo_passageiro', 'tipo_passageiro.id', 'transporte_paciente_agendar_transporte.tipo_passageiro_id')
|
|
->leftJoin('transporte_paciente_destino as paciente_destino', 'paciente_destino.id', 'transporte_paciente_agendar_transporte.destino_id')
|
|
->leftJoin('transporte_paciente_acompanhante as paciente_acompanhante_1', 'paciente_acompanhante_1.id', 'transporte_paciente_agendar_transporte.acompanhante_1_id')
|
|
->leftJoin('transporte_paciente_acompanhante as paciente_acompanhante_2', 'paciente_acompanhante_2.id', 'transporte_paciente_agendar_transporte.acompanhante_2_id')
|
|
->leftJoin('cadastro_paciente as cadastro_paciente_acompanhante_2', 'cadastro_paciente_acompanhante_2.id', 'paciente_acompanhante_2.usuario_id')
|
|
->where('transporte_paciente_agendar_transporte.paciente_id', $id)
|
|
->where(function ($query) {
|
|
$query->whereNotIn('transporte_paciente_agendar_transporte.status_id', [Status::CANCELADO])
|
|
->orWhereNull('transporte_paciente_agendar_transporte.status_id');
|
|
})
|
|
->select(
|
|
'transporte_paciente_agendar_transporte.*',
|
|
'jornadas.data_inicial',
|
|
'jornadas.data_final',
|
|
'municipios.nome as municipio_nome',
|
|
'estados.uf as estado_uf',
|
|
'veiculos.numero_placa',
|
|
'veiculos.descricao_modelo',
|
|
'motivos.descricao as motivo_descricao',
|
|
'pontos.casa_paciente',
|
|
'pontos.descricao as ponto_descricao',
|
|
'viagens.protocolo',
|
|
'agendador_cidadaos.nome as agendador_nome',
|
|
'unidades.nome_fantasia as unidade_agendadora',
|
|
'tipo_passageiro.descricao as tipo_passageiro_descricao',
|
|
'paciente_destino.descricao_destino as destino_descricao',
|
|
'paciente_acompanhante_1.id as acompanhante_1_id',
|
|
'paciente_acompanhante_1.nome as acompanhante_1_nome',
|
|
'paciente_acompanhante_1.telefone as acompanhante_1_telefone',
|
|
'paciente_acompanhante_1.relacao_id as acompanhante_1_relacao_id',
|
|
'paciente_acompanhante_2.id as acompanhante_2_id',
|
|
'paciente_acompanhante_2.nome as acompanhante_2_nome',
|
|
'paciente_acompanhante_2.telefone as acompanhante_2_telefone',
|
|
'paciente_acompanhante_2.relacao_id as acompanhante_2_relacao_id',
|
|
)
|
|
->get()
|
|
->map(function ($query) {
|
|
return [
|
|
'id' => $query->id ?? null,
|
|
'selecionado' => false,
|
|
'alterado' => false,
|
|
'jornada_id' => $query->jornada_id ?? null,
|
|
'paciente_id' => $query->paciente_id ?? null,
|
|
'acompanhante1_id' => $query->acompanhante_1_id ?? null,
|
|
'acompanhante2_id' => $query->acompanhante_2_id ?? null,
|
|
'paciente_nome' => $query->paciente_nome ?? null,
|
|
'numero_placa' => $query->numero_placa ?? null,
|
|
'descricao_modelo' => $query->descricao_modelo ?? null,
|
|
'consulta_observacao' => $query->consulta_observacao ?? null,
|
|
'observacao' => $query->observacao ?? null,
|
|
'supervisor_id' => $query->supervisor_id ?? null,
|
|
'data' => $query->data ?? null,
|
|
'data_saida' => $query->data_saida ?? null,
|
|
'acompanhante' => $query->acompanhante ?? null,
|
|
'horario' => (new Carbon($query->horario))->format('H:i') ?? null,
|
|
'horario_saida' => $query->horario_saida ? (new Carbon($query->horario_saida))->format('H:i') : null,
|
|
'uf' => $query->estado_uf ?? null,
|
|
'municipio' => [
|
|
'id' => $query->municipio_id,
|
|
'nome' => $query->municipio_nome ?? null,
|
|
],
|
|
'acompanhante1' => [
|
|
'id' => $query->acompanhante_1_id ?? null,
|
|
'usuario_id' => $query->acompanhante_1_usuario_id ?? null,
|
|
'nome' => $query->acompanhante_1_nome ?? null,
|
|
'cns' => $query->acompanhante_1_cns ?? null,
|
|
'telefone' => $query->acompanhante_1_telefone ?? null,
|
|
'relacao_id' => $query->acompanhante_1_relacao_id ?? null,
|
|
],
|
|
'acompanhante2' => [
|
|
'id' => $query->acompanhante_2_id ?? null,
|
|
'usuario_id' => $query->acompanhante_2_usuario_id ?? null,
|
|
'nome' => $query->acompanhante_2_nome ?? null,
|
|
'cns' => $query->acompanhante_2_cns ?? null,
|
|
'telefone' => $query->acompanhante_2_telefone ?? null,
|
|
'relacao_id' => $query->acompanhante_2_relacao_id ?? null,
|
|
],
|
|
'destino_id' => $query->destino_id ?? null,
|
|
'veiculo_id' => $query->veiculo_id ?? null,
|
|
'veiculo' => [
|
|
'descricao' => $query->numero_placa . ' - ' . $query->descricao_modelo,
|
|
],
|
|
'jornada_id' => $query->jornada_id ?? null,
|
|
'jornada' => [
|
|
'descricao' => $query->data_inicial . ' - ' . $query->data_final,
|
|
],
|
|
'ponto_id' => $query->ponto_id ?? null,
|
|
'tipo_passageiro_id' => $query->tipo_passageiro_id ?? null,
|
|
'tipo_passageiro' => [
|
|
'descricao' => strtoupper($query->tipo_passageiro_descricao ?? null),
|
|
],
|
|
'status_id' => $query->status_id ?? null,
|
|
'destino' => $query->destino_descricao ?? null,
|
|
'ponto' => $query->ponto_descricao ?? null,
|
|
'motivo' => [
|
|
'id' => $query->motivo_id ?? null,
|
|
'descricao' => $query->motivo_descricao ?? null,
|
|
],
|
|
'protocolo' => $query->protocolo ?? '-',
|
|
'data_agendamento' => (new Carbon($query->created_at))->format('d/m/Y'),
|
|
'agendador' => $query->agendador_nome ?? null,
|
|
'unidade_agendadora' => $query->unidade_agendadora ?? null,
|
|
];
|
|
});
|
|
}
|
|
}
|
|
|
|
public static function datatable()
|
|
{
|
|
$parametrizacao = ParametrizacaoCadastro::first();
|
|
|
|
$quantidadeDias = $parametrizacao->cadastro_paciente_desatualizado_quantidade_dias ?? 0;
|
|
$provisorioBloqueado = $parametrizacao->cadastro_paciente_provisorio_bloqueado ?? false;
|
|
$provisorioQuantidadeDias = $parametrizacao->cadastro_paciente_provisorio_quantidade_dias ?? 0;
|
|
|
|
$pacientes = DB::table('cadastro_paciente')
|
|
->distinct()
|
|
->join('transporte_paciente_agendar_transporte', 'transporte_paciente_agendar_transporte.paciente_id', 'cadastro_paciente.id')
|
|
->leftJoin('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id')
|
|
->leftJoin(
|
|
'cadastro_carteira_identidade',
|
|
function ($leftJoin) {
|
|
|
|
$leftJoin->on('cadastro_carteira_identidade.cidadao_id', 'cadastro_cidadao.id')
|
|
->whereNull('cadastro_carteira_identidade.deleted_at')
|
|
->whereRaw('cadastro_carteira_identidade.id = (
|
|
SELECT id
|
|
FROM cadastro_carteira_identidade
|
|
WHERE cadastro_carteira_identidade.cidadao_id = cadastro_cidadao.id
|
|
ORDER BY cadastro_carteira_identidade.id
|
|
LIMIT 1
|
|
)');
|
|
}
|
|
)
|
|
->leftJoin('cadastro_domicilio', 'cadastro_domicilio.id', 'cadastro_cidadao.domicilio_id')
|
|
->leftJoin('cadastro_endereco', 'cadastro_endereco.id', 'cadastro_domicilio.endereco_id')
|
|
->leftJoin('cadastro_logradouro', 'cadastro_logradouro.id', 'cadastro_endereco.logradouro_id')
|
|
->leftJoin('intranet.cadastro_municipio', 'cadastro_municipio.id', 'cadastro_logradouro.municipio_id')
|
|
->leftJoin('intranet.cadastro_estado', 'cadastro_estado.id', 'cadastro_municipio.estado_id')
|
|
->leftJoin('cadastro_obito', function ($join) {
|
|
|
|
$join->on('cadastro_cidadao.id', '=', 'cadastro_obito.cidadao_id')
|
|
->whereNull('cadastro_obito.deleted_at');
|
|
})
|
|
->whereNull('cadastro_paciente.deleted_at')
|
|
->whereNull('cadastro_paciente.sequencial_desconhecido_em')
|
|
->whereIn('transporte_paciente_agendar_transporte.status_id', [1, 5, 6])
|
|
->select(
|
|
'cadastro_paciente.id',
|
|
'cadastro_paciente.bloqueado',
|
|
'cadastro_paciente.classificacao_id',
|
|
'cadastro_paciente.subclassificacao_id',
|
|
'cadastro_cidadao.nome',
|
|
'cadastro_cidadao.nome_social',
|
|
'cadastro_cidadao.preferencia_nome_id',
|
|
'cadastro_cidadao.data_nascimento',
|
|
'cadastro_cidadao.nome_mae',
|
|
'cadastro_cidadao.cpf',
|
|
'cadastro_cidadao.cns',
|
|
'cadastro_carteira_identidade.numero AS rg',
|
|
'cadastro_obito.obito_em',
|
|
DB::raw('LPAD(cadastro_paciente.prontuario,7,0) as prontuario'),
|
|
'cadastro_municipio.nome as municipio_nome',
|
|
'cadastro_estado.uf as uf',
|
|
DB::raw('GREATEST(cadastro_paciente.updated_at, cadastro_cidadao.updated_at) AS updated_at'),
|
|
DB::raw('
|
|
CASE
|
|
WHEN cadastro_paciente.updated_at IS NULL AND cadastro_cidadao.updated_at IS NULL THEN 1
|
|
WHEN cadastro_paciente.updated_at IS NOT NULL AND (cadastro_cidadao.updated_at IS NULL OR cadastro_paciente.updated_at > cadastro_cidadao.updated_at) THEN
|
|
CASE
|
|
WHEN ' . ($quantidadeDias > 0
|
|
? 'DATE_ADD(cadastro_paciente.updated_at, INTERVAL ' . $quantidadeDias . ' DAY) < NOW()'
|
|
: 'false') . '
|
|
THEN DATEDIFF(NOW(), DATE_ADD(cadastro_paciente.updated_at, INTERVAL ' . $quantidadeDias . ' DAY))
|
|
ELSE 0
|
|
END
|
|
WHEN cadastro_cidadao.updated_at IS NOT NULL AND (cadastro_paciente.updated_at IS NULL OR cadastro_cidadao.updated_at > cadastro_paciente.updated_at) THEN
|
|
CASE
|
|
WHEN ' . ($quantidadeDias > 0
|
|
? 'DATE_ADD(cadastro_cidadao.updated_at, INTERVAL ' . $quantidadeDias . ' DAY) < NOW()'
|
|
: 'false') . '
|
|
THEN DATEDIFF(NOW(), DATE_ADD(cadastro_cidadao.updated_at, INTERVAL ' . $quantidadeDias . ' DAY))
|
|
ELSE 0
|
|
END
|
|
ELSE 0
|
|
END as dias_cadastro_desatualizado
|
|
')
|
|
);
|
|
|
|
if (DataUtil::isStringTrue(request()->with_prontuario_unidade)) {
|
|
|
|
$pacientes->addSelect([
|
|
'prontuario_unidade' => function ($query) {
|
|
|
|
$query->select('cadastro_prontuario_unidade.prontuario')
|
|
->from('cadastro_prontuario_unidade')
|
|
->whereColumn('cadastro_prontuario_unidade.paciente_id', 'cadastro_paciente.id')
|
|
->where(
|
|
'cadastro_prontuario_unidade.unidade_id',
|
|
self::getCurrentCentroCusto()->infraestrutura->unidade_id
|
|
);
|
|
}
|
|
]);
|
|
}
|
|
|
|
if (!DataUtil::isStringTrue(request()->with_paciente_bloqueado)) {
|
|
|
|
$pacientes->where(function ($query) {
|
|
|
|
$query
|
|
->where('cadastro_paciente.bloqueado', false)
|
|
->orWhereNull('cadastro_paciente.bloqueado');
|
|
});
|
|
}
|
|
|
|
if (!DataUtil::isStringTrue(request()->with_paciente_provisorio) && $provisorioBloqueado) {
|
|
|
|
$pacientes->where(function ($query) use ($provisorioQuantidadeDias) {
|
|
$query->where('cadastro_paciente.subclassificacao_id', '!=', Subclassificacao::TEMPORARIO)
|
|
->orWhere(function ($query) use ($provisorioQuantidadeDias) {
|
|
$query->where('cadastro_paciente.subclassificacao_id', Subclassificacao::TEMPORARIO)
|
|
->where(function ($query) use ($provisorioQuantidadeDias) {
|
|
|
|
$query->where(function ($query) {
|
|
$query->whereNull('cadastro_paciente.validade_inicio')
|
|
->orWhereDate('cadastro_paciente.validade_inicio', '<=', Carbon::now()->format('Y-m-d'));
|
|
});
|
|
|
|
$query->where(function ($query) use ($provisorioQuantidadeDias) {
|
|
$query->whereNull('cadastro_paciente.validade_fim')
|
|
->orWhere(function ($query) use ($provisorioQuantidadeDias) {
|
|
if (!is_null($provisorioQuantidadeDias) && $provisorioQuantidadeDias > 0) {
|
|
$query->whereDate('cadastro_paciente.validade_fim', '>=', Carbon::now()->format('Y-m-d'))
|
|
->orWhereDate('cadastro_paciente.validade_fim', '>=', Carbon::now()->subDays($provisorioQuantidadeDias)->format('Y-m-d'));
|
|
} else {
|
|
$query->whereDate('cadastro_paciente.validade_fim', '>=', Carbon::now()->format('Y-m-d'));
|
|
}
|
|
});
|
|
});
|
|
});
|
|
})
|
|
->orWhereNull('cadastro_paciente.subclassificacao_id');
|
|
});
|
|
}
|
|
|
|
return datatables()
|
|
->of($pacientes)
|
|
->filterColumn('cadastro_paciente.prontuario', function ($query, $keyword) {
|
|
|
|
$query->whereRaw('LPAD(cadastro_paciente.prontuario,7,0) like ?', ["%{$keyword}%"]);
|
|
})
|
|
->filterColumn('cadastro_prontuario_unidade.prontuario', function ($query, $keyword) {
|
|
|
|
$query->whereRaw('(
|
|
SELECT cadastro_prontuario_unidade.prontuario
|
|
FROM cadastro_prontuario_unidade
|
|
WHERE cadastro_prontuario_unidade.paciente_id = cadastro_paciente.id
|
|
AND cadastro_prontuario_unidade.unidade_id = '
|
|
. self::getCurrentCentroCusto()->infraestrutura->unidade_id . '
|
|
) like ?', ["%{$keyword}%"]);
|
|
})
|
|
->filterColumn('cadastro_cidadao.cpf', function ($query, $keyword) {
|
|
|
|
$query
|
|
->whereRaw("cadastro_cidadao.cpf like ?", ["%{$keyword}%"])
|
|
->orWhereRaw(
|
|
"CONCAT(
|
|
SUBSTR(cadastro_cidadao.cpf,1,3),
|
|
'.',
|
|
SUBSTR(cadastro_cidadao.cpf,4,3),
|
|
'.',
|
|
SUBSTR(cadastro_cidadao.cpf,7,3),
|
|
'-',
|
|
SUBSTR(cadastro_cidadao.cpf,10,2)
|
|
) like ?",
|
|
["%{$keyword}%"]
|
|
);
|
|
})
|
|
->filterColumn('cadastro_cidadao.data_nascimento', function ($query, $keyword) {
|
|
|
|
$query
|
|
->whereRaw("DATE_FORMAT(cadastro_cidadao.data_nascimento, '%d/%m/%Y') like ?", ["%{$keyword}%"])
|
|
->orWhereRaw(
|
|
"CONCAT(
|
|
SUBSTR(cadastro_cidadao.data_nascimento,9,2),
|
|
SUBSTR(cadastro_cidadao.data_nascimento,6,2),
|
|
SUBSTR(cadastro_cidadao.data_nascimento,1,4)
|
|
) like ?",
|
|
["%{$keyword}%"]
|
|
);
|
|
})
|
|
->skipTotalRecords()
|
|
->toJson();
|
|
}
|
|
}
|