select([ 'cidadao.caracteristicas_fisicas', 'cidadao.nome', 'faa.id as faa_id', 'faa.numero as faa_numero', 'paciente.id as id', 'paciente.prontuario', 'paciente.classificacao_id', 'paciente.sequencial_desconhecido', 'sexo.descricao as sexo', DB::raw('DATE_FORMAT(COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em), "%d/%m/%Y") as data'), DB::raw('IF (cidadao.data_nascimento IS NULL, "Não informada", DATE_FORMAT(cidadao.data_nascimento, "%d/%m/%Y")) as data_nascimento'), DB::raw('IF (cidadao.nome_mae IS NULL, "Não informado", cidadao.nome_mae) as nome_mae'), ]) ->join('cadastro_cidadao as cidadao', 'cidadao.id', 'paciente.cidadao_id') ->join('cadastro_sexo as sexo', 'sexo.id', 'cidadao.sexo_id') ->join('cadastro_centro_custo as centro_custo', 'centro_custo.id', 'paciente.created_centro_custo_id') ->leftJoin('pronto_atendimento_faa as faa', 'faa.paciente_id', 'paciente.id') ->where('centro_custo.infraestrutura_id', $this->getCentroCustoLogado()->infraestrutura_id) ->where(function ($query) { $query->whereNotNull('paciente.sem_documentos_em') ->orWhereNotNull('paciente.sequencial_desconhecido_em'); }) ->whereNull('paciente.deleted_at'); if (!request()->get('order')) { $atendimentos->orderByRaw('COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em) DESC'); } return datatables() ->of($atendimentos) ->filterColumn('data', function ($query, $keyword) { $query->whereRaw("DATE_FORMAT(COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em), '%d/%m/%Y') like ?", ["%{$keyword}%"]) ->orWhereRaw( "CONCAT( SUBSTR(COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em),9,2), SUBSTR(COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em),6,2), SUBSTR(COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em),1,4) ) like ?", ["%{$keyword}%"] ); }) ->orderColumn('data', function ($query, $order) { $query->orderByRaw('COALESCE(paciente.sem_documentos_em, paciente.sequencial_desconhecido_em) ' . $order); }) ->skipTotalRecords() ->make(true); } public function index() { $lotacao = $this->getCurrentLotacao(); $permissaoUsuario = ParametrizacaoPermissaoUsuario::where('usuario_id', $lotacao->usuario_id) ->where('infraestrutura_id', $lotacao->infraestrutura_id) ->first(); $countUsuario = ParametrizacaoPermissaoUsuario::count(); $classificacoes = $permissaoUsuario ? PacienteClassificacao::orderBy('descricao') ->get() ->filter(function ($classificacao) use ($permissaoUsuario) { $exibe = false; switch ($classificacao->id) { case Classificacao::MUNICIPE: $exibe = $permissaoUsuario->municipe; break; case Classificacao::PROVISORIO: $exibe = $permissaoUsuario->provisorio; break; case Classificacao::OUTRO_MUNICIPIO: $exibe = $permissaoUsuario->outro_municipio; break; } return $exibe ? [ 'id' => $classificacao->id, 'descricao' => $classificacao->descricao ] : null; }) ->values() : []; return [ 'classificacoes' => $classificacoes, 'is_permissao_cadastro' => $countUsuario === 0 ? true : false, ]; } private function getCentroCustoLogado() { return CentroCusto::findOrFail(auth()->payload()->get('centro_custo_id')); } }