query('registro_codigo')) { case Registro::BPA_CONSOLIDADO: return self::getProcedimentosConsolidados(request()->query()); break; case Registro::BPA_INDIVIDUALIZADO: return self::getProcedimentosIndividualizados(request()->query()); break; } } private static function getProcedimentosConsolidados($params) { return DB::table('bpa_procedimento') ->join('cadastro_unidade', 'cadastro_unidade.id', 'bpa_procedimento.unidade_id') ->join('sigtap.competencia', 'competencia.id', 'bpa_procedimento.competencia_id') ->join('sigtap.procedimento', 'procedimento.id', 'bpa_procedimento.procedimento_id') ->join('sigtap.ocupacao', 'ocupacao.id', 'bpa_procedimento.ocupacao_id') ->join('sigtap.registro', 'registro.id', 'bpa_procedimento.registro_id') ->join('bpa_procedimento_inconsistencia', 'bpa_procedimento_inconsistencia.procedimento_id', 'bpa_procedimento.id') ->join('bpa_inconsistencia', 'bpa_inconsistencia.id', 'bpa_procedimento_inconsistencia.inconsistencia_id') ->select([ 'bpa_procedimento.id', 'bpa_procedimento.origem', 'cadastro_unidade.id AS unidade_id', 'cadastro_unidade.nome_fantasia AS unidade_nome', 'competencia.id AS competencia_id', 'competencia.valor AS competencia_valor', 'procedimento.id AS procedimento_id', 'procedimento.codigo AS procedimento_codigo', 'procedimento.nome AS procedimento_nome', 'registro.id AS registro_id', 'registro.codigo AS registro_codigo', 'ocupacao.id AS ocupacao_id', 'ocupacao.codigo AS ocupacao_codigo', 'ocupacao.nome AS ocupacao_nome', 'bpa_procedimento.idade', 'bpa_inconsistencia.codigo AS inconsistencia_codigo', 'bpa_inconsistencia.descricao AS inconsistencia_descricao', DB::raw('SUM(bpa_procedimento.quantidade) AS quantidade'), ]) ->whereNull('bpa_procedimento.deleted_at') ->where([ 'bpa_procedimento.unidade_id' => $params['unidade_id'], 'bpa_procedimento.competencia_id' => $params['competencia_id'], ]) ->where('registro.codigo', Registro::BPA_CONSOLIDADO) ->whereExists(function($query) { $query->select(DB::raw(1)) ->from('bpa_procedimento_inconsistencia') ->whereColumn('bpa_procedimento_inconsistencia.procedimento_id', 'bpa_procedimento.id'); }) ->groupBy([ 'bpa_procedimento.origem', 'cadastro_unidade.id', 'cadastro_unidade.nome_fantasia', 'competencia.valor', 'procedimento.id', 'procedimento.codigo', 'procedimento.nome', 'registro.id', 'registro.codigo', 'ocupacao.id', 'ocupacao.codigo', 'ocupacao.nome', 'bpa_procedimento.idade', ]) ->get(); } private static function getProcedimentosIndividualizados($params) { return DB::table('bpa_procedimento') ->select([ 'bpa_procedimento.origem', 'cadastro_unidade.id AS unidade_id', 'cadastro_unidade.nome_fantasia AS unidade_nome', 'competencia.id AS competencia_id', 'competencia.valor AS competencia_valor', 'cadastro_cidadao_usuario.nome AS usuario_nome', 'cadastro_paciente.id AS paciente_id', 'cadastro_cidadao_paciente.nome AS paciente_nome', 'procedimento.id AS procedimento_id', 'procedimento.codigo AS procedimento_codigo', 'procedimento.nome AS procedimento_nome', 'ocupacao.id AS ocupacao_id', 'ocupacao.codigo AS ocupacao_codigo', 'ocupacao.nome AS ocupacao_nome', 'bpa_procedimento.quantidade', 'registro.codigo AS registro_codigo', 'bpa_inconsistencia.codigo AS inconsistencia_codigo', 'bpa_inconsistencia.descricao AS inconsistencia_descricao', ]) ->join('cadastro_unidade', 'cadastro_unidade.id', 'bpa_procedimento.unidade_id') ->join('sigtap.competencia', 'competencia.id', 'bpa_procedimento.competencia_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'bpa_procedimento.usuario_id') ->join('cadastro_cidadao AS cadastro_cidadao_usuario', 'cadastro_cidadao_usuario.id', 'cadastro_usuario.cidadao_id') ->join('cadastro_paciente', 'cadastro_paciente.id', 'bpa_procedimento.paciente_id') ->join('cadastro_cidadao AS cadastro_cidadao_paciente', 'cadastro_cidadao_paciente.id', 'cadastro_paciente.cidadao_id') ->join('sigtap.procedimento', 'procedimento.id', 'bpa_procedimento.procedimento_id') ->join('sigtap.registro', 'registro.id', 'bpa_procedimento.registro_id') ->join('sigtap.ocupacao', 'ocupacao.id', 'bpa_procedimento.ocupacao_id') ->join('bpa_procedimento_inconsistencia', 'bpa_procedimento_inconsistencia.procedimento_id', 'bpa_procedimento.id') ->join('bpa_inconsistencia', 'bpa_inconsistencia.id', 'bpa_procedimento_inconsistencia.inconsistencia_id') ->whereNull('bpa_procedimento.deleted_at') ->where([ 'bpa_procedimento.unidade_id' => $params['unidade_id'], 'bpa_procedimento.competencia_id' => $params['competencia_id'], ]) ->where('registro.codigo', Registro::BPA_INDIVIDUALIZADO) ->whereExists(function($query) { $query->select(DB::raw(1)) ->from('bpa_procedimento_inconsistencia') ->whereColumn('bpa_procedimento_inconsistencia.procedimento_id', 'bpa_procedimento.id'); }) ->get(); } public static function getPrintExportData() { $resultado = self::index(); $colunas = collect(request()->selectedCols); $colunas = $colunas->reject(function ($item) { return $item['key'] === 'actions'; }); $colunasAdicionais = [ [ "key" => "inconsistencia_codigo", "label" => "Código", "class" => null ], [ "key" => "inconsistencia_descricao", "label" => "Descrição", "class" => null ] ]; $colunas = $colunas->map(function ($item) { return [ 'key' => $item['key'] === 'ocupacao' ? 'ocupacao_nome' : ($item['key'] === 'procedimento' ? 'procedimento_nome' : $item['key']), 'label' => $item['key'] === 'ocupacao' ? 'Ocupação' : ($item['key'] === 'procedimento' ? 'Procedimento' : $item['label']), 'class' => $item['class'], ]; }); $colunas = $colunas->merge($colunasAdicionais); $instrumento_registro = ''; if(Registro::BPA_CONSOLIDADO == request()->registro_codigo){ $instrumento_registro = 'BPA - Consolidado'; } if(Registro::BPA_INDIVIDUALIZADO == request()->registro_codigo){ $instrumento_registro = 'BPA - Individualizado'; } return [ 'itens' => $resultado, 'colunas' => $colunas, 'unidade' => $resultado->firstWhere('unidade_id', request()->unidade_id)->unidade_nome, 'competencia' => $resultado->firstWhere('competencia_id', request()->competencia_id)->competencia_valor, 'instrumento_registro' => $instrumento_registro, 'total' => $resultado->count(), ]; } }