join('cadastro_cidadao as cidadao', 'cidadao.id', 'paciente.cidadao_id') ->join('atencao_basica_atividade_coletiva_participante as participante', 'participante.paciente_id', 'paciente.id') ->join('atencao_basica_atividade_coletiva as atividade_coletiva', 'atividade_coletiva.id', 'participante.atividade_coletiva_id') ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id') ->LeftJoin('atencao_basica_atividade_coletiva_procedimento as procedimento', 'procedimento.atividade_coletiva_id', 'atividade_coletiva.id') ->LeftJoin('sigtap.procedimento as sigtap_procedimento', 'sigtap_procedimento.id', 'procedimento.procedimento_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->when(request()->equipe_id, function($query) { $query->where('atividade_coletiva.equipe_id', request()->equipe_id); }) ->when(request()->atividade_tipo, function($query) { $query->where('atividade_tipo.id', request()->atividade_tipo); }) ->when(request()->publico_alvo_ids, function($query) { $query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids); }) ->when(request()->saude_tema_ids, function($query) { $query->whereIn('cadastro_saude_tema.id', request()->saude_tema_ids); }) ->when(request()->pratica_saude_ids, function($query) { $query->whereIn('cadastro_saude_pratica.id', request()->pratica_saude_ids); }) ->when(request()->procedimento_id, function($query) { $query->whereIn('sigtap_procedimento.id', request()->procedimento_id); }) ->whereNull('paciente.deleted_at') ->selectRaw(" paciente.id, cidadao.nome, cidadao.nome_social, cidadao.cns ") ->groupBy('paciente.id'); } public static function index(){ return [ 'model' => self::getModelData(), ]; } public static function getModelData(){ return [ 'periodo' => [ 'start' => null, 'end' => null, ], 'pseId' => null, 'turnoId' => null, 'unidadeId' => null, 'localAtendimentoId' => null, 'profissionalId' => null, 'ocupacaoId' => null, 'equipeId' => null, 'atividade_id' => null, 'publico_alvo' => PublicoAlvo::orderBy('id')->get(), 'saude_temas' => SaudeTema::orderBy('descricao')->get(), 'saude_pratica' => SaudePratica::orderBy('id')->get(), ]; } public static function list(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'atividade_coletiva.id', 'atividade_coletiva.data_cadastro', 'unidade.nome_fantasia as nome_unidade', 'cidadao_usuario.nome as nome_profissional', 'ocupacao.codigo as cbo_ocupacao', 'area.descricao as area', 'area.numero_ine as ine', 'atividade_tipo.descricao as atividade', 'atividade_coletiva.total_participantes', 'unidade.nome_fantasia as local_atendimento', 'atividade_coletiva.cnes', 'turno.descricao as descricao_turno', DB::raw("GROUP_CONCAT(DISTINCT cadastro_publico_alvo.descricao ORDER BY cadastro_publico_alvo.descricao SEPARATOR ', ') as descricao_publico_alvo"), DB::raw("GROUP_CONCAT(DISTINCT cadastro_saude_tema.descricao ORDER BY cadastro_saude_tema.descricao SEPARATOR ', ') as descricao_saude_tema"), DB::raw("GROUP_CONCAT(DISTINCT cadastro_saude_pratica.descricao ORDER BY cadastro_saude_pratica.descricao SEPARATOR ', ') as descricao_saude_pratica"), DB::raw("GROUP_CONCAT(DISTINCT sigtap_procedimento.codigo ORDER BY sigtap_procedimento.codigo SEPARATOR ', ') as codigo_procedimento"), DB::raw("COUNT(DISTINCT procedimento.id) as count_procedimentos"), DB::raw("COUNT(DISTINCT participante.paciente_id) as count_pessoas_avaliadas"), DB::raw(" CONCAT( CASE WHEN area.numero_ine IS NOT NULL THEN CONCAT('INE: ', area.numero_ine) ELSE '' END, CASE WHEN area.descricao IS NOT NULL AND area.numero_ine IS NOT NULL THEN ' - Área: ' WHEN area.descricao IS NOT NULL THEN 'Área: ' ELSE '' END, COALESCE(area.descricao, ''), CASE WHEN microarea.descricao IS NOT NULL AND (area.numero_ine IS NOT NULL OR area.descricao IS NOT NULL) THEN ' - Microárea: ' WHEN microarea.descricao IS NOT NULL THEN 'Microárea: ' ELSE '' END, COALESCE(microarea.descricao, '') ) AS equipe "), ]) ->leftJoin('atencao_basica_cadastro_pse as cadastro_pse', 'cadastro_pse.id', 'atividade_coletiva.pse_id') ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'usuario.cidadao_id') ->join('sigtap.ocupacao as ocupacao', 'ocupacao.id', 'atividade_coletiva.usuario_ocupacao_id') ->join('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->Leftjoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id' ) ->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id' ) ->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id') ->LeftJoin('atencao_basica_atividade_coletiva_procedimento as procedimento', 'procedimento.atividade_coletiva_id', 'atividade_coletiva.id') ->leftJoin('sigtap.procedimento as sigtap_procedimento', 'sigtap_procedimento.id', 'procedimento.procedimento_id') ->LeftJoin('atencao_basica_atividade_coletiva_participante as participante', 'participante.atividade_coletiva_id', 'atividade_coletiva.id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('cadastro_pse.id', request()->pse_id); }) ->when(request()->inep, function($query) { $query->where('atividade_coletiva.inep', request()->inep); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->unidade_id, function($query) { $query->where('unidade.id', request()->unidade_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('atividade_coletiva.usuario_id', request()->profissional_id); }) ->when(request()->publico_alvo_id, function($query) { $query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_id); }) ->when(request()->saude_tema_id, function($query) { $query->whereIn('cadastro_saude_tema.id', request()->saude_tema_id); }) ->when(request()->pratica_saude_id, function($query) { $query->whereIn('cadastro_saude_pratica.id', request()->pratica_saude_id); }) ->when(request()->procedimento_id, function($query) { $query->whereIn('sigtap_procedimento.id', request()->procedimento_id); }) ->when(request()->paciente_id, function($query) { $query->where('participante.paciente_id', request()->paciente_id); }) ->when(request()->avaliacao_alterada, function($query) { $query->where('participante.avaliacao_alterada', true); }) ->when(request()->parou_de_fumar, function($query) { $query->where('participante.parou_de_fumar', true); }) ->when(request()->abandonou_grupo, function($query) { $query->where('participante.abandonou_grupo', true); }) ->groupBy('atividade_coletiva.id') ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'data' => $item->data_cadastro, 'unidade' => $item->nome_unidade, 'profissional' => $item->nome_profissional, 'cbo' => $item->cbo_ocupacao, 'equipe' => $item->equipe, 'atividade' => $item->atividade, 'total_participantes' => $item->total_participantes, 'total_pessoas_avaliadas' => self::getPessoasAvaliadas($item->id), 'local_atendimento' => $item->local_atendimento, 'cnes' => $item->cnes, 'turno' => $item->descricao_turno, 'publico_alvo' => $item->descricao_publico_alvo, 'tema_saude' => $item->descricao_saude_tema, 'pratica_saude' => $item->descricao_saude_pratica, 'procedimentos_vinculados' => $item->codigo_procedimento, ]), 'totalizadores' => [ 'total_atividades' => $itens->count(), 'total_procedimentos' => $itens->sum('count_procedimentos'), 'total_pessoas_avaliadas' => $itens->sum('count_pessoas_avaliadas'), ], ]; } public static function getPses(){ $params = self::getParams(); $itens = DB::table('atencao_basica_cadastro_pse') ->select([ 'atencao_basica_cadastro_pse.id', 'atencao_basica_cadastro_pse.descricao' ]) ->distinct() ->Leftjoin('atencao_basica_atividade_coletiva', 'atencao_basica_atividade_coletiva.pse_id', 'atencao_basica_cadastro_pse.id') ->whereBetween('atencao_basica_atividade_coletiva.data_cadastro', $params->periodo) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getTurnos(){ $params = self::getParams(); $itens = DB::table('atencao_basica_cadastro_turno') ->select([ 'atencao_basica_cadastro_turno.id', 'atencao_basica_cadastro_turno.descricao' ]) ->distinct() ->join('atencao_basica_atividade_coletiva', 'atencao_basica_atividade_coletiva.turno_id', 'atencao_basica_cadastro_turno.id') ->whereBetween('atencao_basica_atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atencao_basica_atividade_coletiva.pse_id', request()->pse_id); }) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getUnidades(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select(['unidade.id', 'unidade.nome_fantasia']) ->distinct() ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'nomeFantasia' => $item->nome_fantasia, ]) ]; } public static function getLocaisAtendimentos(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'unidade.id', 'unidade.nome_fantasia' ]) ->distinct() ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'equipe.infraestrutura_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->unidade_id, function($query) { $query->where('equipe.unidade_id', request()->unidade_id); }) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'nomeFantasia' => $item->nome_fantasia, ]) ]; } public static function getProfissionais(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'usuario.id', 'cidadao_usuario.nome' ]) ->distinct() ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_infraestrutura as infraestrutura_unidade', 'infraestrutura_unidade.id', 'equipe.infraestrutura_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'infraestrutura_unidade.unidade_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'usuario.cidadao_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->unidade_id, function($query) { $query->where('infraestrutura_unidade.unidade_id', request()->unidade_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('infraestrutura_unidade.unidade_id', request()->local_atendimento_id); }) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'nome' => $item->nome, ]) ]; } public static function getOcupacoes(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'ocupacao.id', 'ocupacao.nome' ]) ->distinct() ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'usuario.cidadao_id') ->join('sigtap.ocupacao as ocupacao', 'ocupacao.id', 'atividade_coletiva.usuario_ocupacao_id' ) ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'nome' => $item->nome, ]) ]; } public static function getEquipes(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'equipe.id AS id', DB::raw(" CONCAT( CASE WHEN area.numero_ine IS NOT NULL THEN CONCAT('INE: ', area.numero_ine) ELSE '' END, CASE WHEN area.descricao IS NOT NULL AND area.numero_ine IS NOT NULL THEN ' - Área: ' WHEN area.descricao IS NOT NULL THEN 'Área: ' ELSE '' END, COALESCE(area.descricao, ''), CASE WHEN microarea.descricao IS NOT NULL AND (area.numero_ine IS NOT NULL OR area.descricao IS NOT NULL) THEN ' - Microárea: ' WHEN microarea.descricao IS NOT NULL THEN 'Microárea: ' ELSE '' END, COALESCE(microarea.descricao, '') ) AS descricao "), 'microarea.id as microarea_id' ]) ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->groupBy('equipe.id') ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getAtividades(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'atividade_tipo.id', 'atividade_tipo.descricao' ]) ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->when(request()->equipe_id, function($query) { $query->where('atividade_coletiva.equipe_id', request()->equipe_id); }) ->groupBy('atividade_tipo.id',) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getPublicosAlvo(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'cadastro_publico_alvo.id', 'cadastro_publico_alvo.descricao' ]) ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id' ) ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->when(request()->equipe_id, function($query) { $query->where('atividade_coletiva.equipe_id', request()->equipe_id); }) ->when(request()->atividade_tipo, function($query) { $query->where('atividade_tipo.id', request()->atividade_tipo); }) ->groupBy('cadastro_publico_alvo.id',) ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getTemasSaude(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'cadastro_saude_tema.id', 'cadastro_saude_tema.descricao' ]) ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id' ) ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->when(request()->equipe_id, function($query) { $query->where('atividade_coletiva.equipe_id', request()->equipe_id); }) ->when(request()->atividade_tipo, function($query) { $query->where('atividade_tipo.id', request()->atividade_tipo); }) ->when(request()->publico_alvo_ids, function($query) { $query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids); }) ->groupBy('cadastro_saude_tema.id') ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getPraticasSaude(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'cadastro_saude_pratica.id', 'cadastro_saude_pratica.descricao' ]) ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->when(request()->equipe_id, function($query) { $query->where('atividade_coletiva.equipe_id', request()->equipe_id); }) ->when(request()->atividade_tipo, function($query) { $query->where('atividade_tipo.id', request()->atividade_tipo); }) ->when(request()->publico_alvo_ids, function($query) { $query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids); }) ->when(request()->saude_tema_ids, function($query) { $query->whereIn('cadastro_saude_tema.id', request()->saude_tema_ids); }) ->groupBy('cadastro_saude_pratica.id') ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'descricao' => $item->descricao, ]) ]; } public static function getProcedimentos(){ $params = self::getParams(); $itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva') ->select([ 'atividade_coletiva.id as atividade_coletiva_id', 'sigtap_procedimento.id', 'sigtap_procedimento.nome' ]) ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id') ->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id') ->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id') ->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id') ->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id') ->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id') ->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id') ->LeftJoin('atencao_basica_atividade_coletiva_procedimento as procedimento', 'procedimento.atividade_coletiva_id', 'atividade_coletiva.id') ->leftJoin('sigtap.procedimento as sigtap_procedimento', 'sigtap_procedimento.id', 'procedimento.procedimento_id') ->whereBetween('atividade_coletiva.data_cadastro', $params->periodo) ->whereNotNull('procedimento.id') ->when(request()->pse_id, function($query) { $query->where('atividade_coletiva.pse_id', request()->pse_id); }) ->when(request()->turno_id, function($query) { $query->where('atividade_coletiva.turno_id', request()->turno_id); }) ->when(request()->local_atendimento_id, function($query) { $query->where('unidade.id', request()->local_atendimento_id); }) ->when(request()->profissional_id, function($query) { $query->where('usuario.id', request()->profissional_id); }) ->when(request()->ocupacao_id, function($query) { $query->where('usuario_ocupacao_id', request()->ocupacao_id); }) ->when(request()->equipe_id, function($query) { $query->where('atividade_coletiva.equipe_id', request()->equipe_id); }) ->when(request()->atividade_tipo, function($query) { $query->where('atividade_tipo.id', request()->atividade_tipo); }) ->when(request()->publico_alvo_ids, function($query) { $query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids); }) ->when(request()->saude_tema_ids, function($query) { $query->whereIn('cadastro_saude_tema.id', request()->saude_tema_ids); }) ->when(request()->pratica_saude_ids, function($query) { $query->whereIn('cadastro_saude_pratica.id', request()->pratica_saude_ids); }) ->groupBy('sigtap_procedimento.id') ->get(); return (object) [ 'itens' => $itens->map(fn ($item) => (object) [ 'id' => $item->id, 'nome' => $item->nome, 'atividade_coletiva_id' => $item->atividade_coletiva_id ]) ]; } public static function getParams(){ return (object) [ 'periodo' => [ 'start' => Carbon::createFromFormat('d/m/Y', request()->get('periodo')['data_inicial'])->setTime(0, 0, 0), 'end' => Carbon::createFromFormat('d/m/Y', request()->get('periodo')['data_final'])->setTime(23, 59, 59) ], ]; } public static function getPessoasAvaliadas($atividade_coletiva_id){ return DB::table('atencao_basica_atividade_coletiva_participante') ->where('atividade_coletiva_id', $atividade_coletiva_id) ->count('paciente_id'); } } ?>