self::getFormData(), 'model' => self::getModelData(), ]; } private static function getFormData() { return [ 'unidades' => [], 'equipes' => [], ]; } private static function getModelData() { return [ 'periodo' => [ 'start' => null, 'end' => null, ], 'unidade_id' => null, 'equipe_id' => null, ]; } public static function list() { $atendimentos = DB::table('atencao_basica_atendimento_odontologico as atendimento') ->where('atendimento.data_atendimento', '>=', request()->data_inicial) ->where('atendimento.data_atendimento', '<=', request()->data_final) ->when(request()->unidade_id, function($query) { $query->where('atendimento.unidade_id', request()->unidade_id); }) ->when(request()->equipe_id, function($query) { $query->where('atendimento.equipe_id', request()->equipe_id); }) ->get(); $tratamentosConcluidos = DB::table('atencao_basica_atendimento_odontologico_conduta_encaminhamento as conduta_encaminhamento') ->join('atencao_basica_atendimento_odontologico as atendimento', 'atendimento.id', 'conduta_encaminhamento.atendimento_odontologico_id') ->where('atendimento.data_atendimento', '>=', request()->data_inicial) ->where('atendimento.data_atendimento', '<=', request()->data_final) ->when(request()->unidade_id, function($query) { $query->where('atendimento.unidade_id', request()->unidade_id); }) ->when(request()->equipe_id, function($query) { $query->where('atendimento.equipe_id', request()->equipe_id); }) ->where('conduta_encaminhamento_id', CondutaEncaminhamento::TRATAMENTO_CONCLUIDO) ->get(); $instalacoesProteses = DB::table('atencao_basica_atendimento_odontologico_procedimento as procedimento') ->join('atencao_basica_atendimento_odontologico as atendimento', 'atendimento.id', 'procedimento.atendimento_odontologico_id') ->where('atendimento.data_atendimento', '>=', request()->data_inicial) ->where('atendimento.data_atendimento', '<=', request()->data_final) ->when(request()->unidade_id, function($query) { $query->where('atendimento.unidade_id', request()->unidade_id); }) ->when(request()->equipe_id, function($query) { $query->where('atendimento.equipe_id', request()->equipe_id); }) ->where('codigo_procedimento', Procedimento::INTALACAO_PROTESE_DENTARIA) ->get(); $escovacaoDentalSupervisionada = DB::table('atencao_basica_atendimento_odontologico_procedimento as procedimento') ->join('atencao_basica_atendimento_odontologico as atendimento', 'atendimento.id', 'procedimento.atendimento_odontologico_id') ->where('atendimento.data_atendimento', '>=', request()->data_inicial) ->where('atendimento.data_atendimento', '<=', request()->data_final) ->when(request()->unidade_id, function($query) { $query->where('atendimento.unidade_id', request()->unidade_id); }) ->when(request()->equipe_id, function($query) { $query->where('atendimento.equipe_id', request()->equipe_id); }) ->where('codigo_procedimento', Procedimento::ESCOVACAO_DENTAL_SUPERVISIONADA) ->get(); return [ 'primeira_consulta_odontologica' => $atendimentos->where('tipo_consulta_id', TipoConsulta::PRIMEIRA_CONSULTA)->count(), 'escovacao_dental_supervisionada' => $escovacaoDentalSupervisionada->count(), 'tratamento_concluido' => $tratamentosConcluidos->count(), 'urgencia' => $atendimentos->where('tipo_atendimento_id', TipoAtendimento::ATENDIMENTO_URGENCIA)->count(), 'gestante' => $atendimentos->sum('gestante'), 'instalacao_proteses_dentarias' => $instalacoesProteses->count(), 'total_atendimentos_odontologicos' => $atendimentos->count() ]; } public static function getUnidades() { return DB::table('atencao_basica_atendimento_odontologico as atendimento') ->select('unidade.id', 'unidade.nome_fantasia') ->join('cadastro_unidade as unidade', 'unidade.id', 'atendimento.unidade_id') ->where('atendimento.data_atendimento', '>=', request()->data_inicial) ->where('atendimento.data_atendimento', '<=', request()->data_final) ->orderBy('unidade.nome_fantasia') ->groupBy('unidade.id') ->get(); } public static function getEquipes() { return DB::table('atencao_basica_atendimento_odontologico as atendimento') ->select('equipe.id') ->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atendimento.equipe_id') ->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id') ->where('atendimento.data_atendimento', '>=', request()->data_inicial) ->where('atendimento.data_atendimento', '<=', request()->data_final) ->when(request()->unidade_id, function($query) { $query->where('atendimento.unidade_id', request()->unidade_id); }) ->orderBy('equipe.id') ->groupBy('equipe.id') ->get(); } public static function getPrintExportData() { $atendimentos = self::list(); $unidade = Unidade::find(request()->unidade_id); $equipe = Equipe::find(request()->equipe_id); return [ 'data_inicial' => Carbon::parse(request()->data_inicial)->format('d/m/Y'), 'data_final' => Carbon::parse(request()->data_final)->format('d/m/Y'), 'unidade' => $unidade->nome_fantasia ?? 'TODAS', 'equipe' => $equipe->id ?? 'TODOS', 'primeira_consulta_odontologica' => $atendimentos['primeira_consulta_odontologica'], 'escovacao_dental_supervisionada' => $atendimentos['escovacao_dental_supervisionada'], 'tratamento_concluido' => $atendimentos['tratamento_concluido'], 'urgencia' => $atendimentos['urgencia'], 'gestante' => $atendimentos['gestante'], 'instalacao_proteses_dentarias' => $atendimentos['instalacao_proteses_dentarias'], 'total_atendimentos_odontologicos' => $atendimentos['total_atendimentos_odontologicos'], ]; } }