This commit is contained in:
182
api/app/Services/Bpa/ExportRelatorioInconsistenciaService.php
Normal file
182
api/app/Services/Bpa/ExportRelatorioInconsistenciaService.php
Normal file
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Bpa;
|
||||
|
||||
use App\Enums\Sigtap\Registro;
|
||||
use App\Models\Bpa\Inconsistencia;
|
||||
use App\Services\Service;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ExportRelatorioInconsistenciaService extends Service
|
||||
{
|
||||
public static function index()
|
||||
{
|
||||
switch (request()->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(),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user