183 lines
8.2 KiB
PHP
183 lines
8.2 KiB
PHP
<?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(),
|
|
];
|
|
}
|
|
}
|