817 lines
43 KiB
PHP
817 lines
43 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Imunizacao;
|
|
|
|
use App\Enums\Imunizacao\ParametrizacaoDescricaoVacina;
|
|
use App\Enums\Imunizacao\PreferenciaCampanha;
|
|
use App\Enums\Imunizacao\TipoRegistro;
|
|
use App\Models\AtencaoBasica\Parametrizacao\Equipe;
|
|
use App\Models\Imunizacao\RegistroAplicacao;
|
|
use App\Models\Imunizacao\RegistroAtualizacao;
|
|
use App\Models\Imunizacao\SalaVacinacao;
|
|
use App\Services\Service;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Support\Collection;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class RelatorioDeAplicacaoService extends Service
|
|
{
|
|
|
|
public static function index() {
|
|
$salaVacinacao = DB::table('imunizacao_sala_vacinacao')
|
|
->select([
|
|
'imunizacao_sala_vacinacao.id',
|
|
'cadastro_infraestrutura.unidade_id',
|
|
'imunizacao_sala_vacinacao.responsavel',
|
|
])
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id')
|
|
->where('imunizacao_sala_vacinacao.ativo', true)
|
|
->where('cadastro_infraestrutura.id', auth()->payload()->get('infraestrutura_id'))
|
|
->first();
|
|
|
|
$dataAtual = Carbon::today()->format('d/m/Y');
|
|
|
|
return [
|
|
"sala_vacinacao" => $salaVacinacao,
|
|
"data_atual" => $dataAtual
|
|
];
|
|
}
|
|
|
|
public static function search() {
|
|
$params = request()->all();
|
|
$existeFaixaEtariaInicial = false;
|
|
$existeFaixaEtariaFinal = false;
|
|
$preferenciaCampanha = $params['campanha'];
|
|
$tipoRegistro = $params['tipo_registro'];
|
|
|
|
$totalizadores = [
|
|
"aplicacao" => 0,
|
|
"atualizacao" => 0,
|
|
];
|
|
|
|
$registrosAplicacao = [];
|
|
$registrosAtualizacao = [];
|
|
$registrosCampanha = [];
|
|
$registros = [];
|
|
|
|
$parametrizacaoVacina = DB::table('imunizacao_parametrizacao')
|
|
->select('parametrizacao_descricao_vacina_id')
|
|
->first();
|
|
|
|
$rowVacina = self::formataDescricaoVacina($parametrizacaoVacina->parametrizacao_descricao_vacina_id, 'cadastro_vacina', 'vacina');
|
|
|
|
$queryAplicacao = self::getQuerySearchAplicacao($rowVacina, $params);
|
|
$queryCampanha = self::getQuerySearchCampanha($rowVacina, $params);
|
|
$queryAtualizacao = self::getQuerySearchAtualizacao($rowVacina, $params);
|
|
|
|
if($preferenciaCampanha != PreferenciaCampanha::NAO_INCLUIR) {
|
|
$registrosCampanha = $queryCampanha->get();
|
|
}
|
|
|
|
if($preferenciaCampanha != PreferenciaCampanha::MOSTRAR_EXCLUSIVAMENTE){
|
|
if($tipoRegistro != TipoRegistro::ATUALIZACAO) {
|
|
$registrosAplicacao = $queryAplicacao->get();
|
|
}
|
|
|
|
if($tipoRegistro != TipoRegistro::APLICACAO) {
|
|
$registrosAtualizacao = $queryAtualizacao->get();
|
|
}
|
|
}
|
|
|
|
$registros = [...$registrosCampanha, ...$registrosAplicacao, ...$registrosAtualizacao];
|
|
|
|
if($registros instanceof Collection && $registros->isEmpty()){
|
|
return [];
|
|
}
|
|
|
|
foreach ($params['faixa_etaria'] as $key => $faixas) {
|
|
foreach ($faixas as $_ => $faixa) {
|
|
if(isset($faixa)){
|
|
if($key == 'inicial'){
|
|
$existeFaixaEtariaInicial = true;
|
|
}
|
|
if($key == 'final'){
|
|
$existeFaixaEtariaFinal = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($registros as $key => $registro) {
|
|
$data = Carbon::createFromFormat('d/m/Y', $registro->data);
|
|
$idade = Carbon::createFromFormat('d/m/Y', $registro->idade);
|
|
$idadeEpoca = $data->diff($idade);
|
|
$registro->idade = "{$idadeEpoca->y}a {$idadeEpoca->m}m {$idadeEpoca->d}d";
|
|
|
|
if($existeFaixaEtariaInicial) {
|
|
$excluirFaixaInicial = self::vefificaFaixaInicial($params, $idadeEpoca);
|
|
|
|
if($excluirFaixaInicial){
|
|
unset($registros[$key]);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if($existeFaixaEtariaFinal) {
|
|
$excluirFaixaFinal = self::verificaFaixaFinal($params, $idadeEpoca);
|
|
|
|
if($excluirFaixaFinal){
|
|
unset($registros[$key]);
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($registros as $registro) {
|
|
if($registro->registro === "Aplicação"){
|
|
$totalizadores['aplicacao']++;
|
|
}
|
|
if($registro->registro === "Atualização"){
|
|
$totalizadores['atualizacao']++;
|
|
}
|
|
|
|
$totalizadores['paciente'][$registro->paciente_id] = $registro->paciente_id;
|
|
$totalizadores['unidade'][$registro->unidade_id] = $registro->unidade_id;
|
|
$totalizadores['sala'][$registro->sala_id] = $registro->sala_id;
|
|
$totalizadores['vacina'][$registro->vacina] = $registro->vacina;
|
|
}
|
|
|
|
$totalizadores['paciente'] = isset($totalizadores['paciente']) ? count($totalizadores['paciente']) : 0;
|
|
$totalizadores['unidade'] = isset($totalizadores['unidade']) ? count($totalizadores['unidade']) : 0;
|
|
$totalizadores['sala'] = isset($totalizadores['sala']) ? count($totalizadores['sala']) : 0;
|
|
$totalizadores['vacina'] = isset($totalizadores['vacina']) ? count($totalizadores['vacina']) : 0;
|
|
|
|
return([
|
|
"registros" =>[...$registros],
|
|
"totalizadores" => $totalizadores
|
|
]);
|
|
}
|
|
|
|
private static function getQuerySearchCampanha($rowVacina, $params) {
|
|
$periodo = $params['periodo'];
|
|
$salaVacinacao = $params['sala_vacinacao'];
|
|
$vacina = $params['vacina'];
|
|
$dose = $params['dose'];
|
|
$sexo = $params['sexo'];
|
|
$unidade = $params['unidade'];
|
|
$area = $params['area'];
|
|
$microarea = $params['microarea'];
|
|
$classificacao = $params['classificacao'];
|
|
$prontuario = $params['prontuario'];
|
|
|
|
return DB::table('imunizacao_registro_aplicacao')
|
|
->whereNotNull('imunizacao_registro_aplicacao.saida_vacina_id')
|
|
->whereNotNull('imunizacao_registro_aplicacao.campanha_id')
|
|
->whereBetween('imunizacao_registro_aplicacao.data_aplicacao', [
|
|
Carbon::createFromFormat('d/m/Y', $periodo['start'])->startOfDay(),
|
|
Carbon::createFromFormat('d/m/Y', $periodo['end'])->endOfDay(),
|
|
])
|
|
->where(fn($q) => isset($salaVacinacao) ? $q->where('imunizacao_sala_vacinacao.id', $salaVacinacao) : $q)
|
|
->where(fn($q) => isset($vacina) ? $q->where('cadastro_vacina.id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('imunizacao_dose.id', $dose) : $q)
|
|
->where(fn($q) => isset($sexo) ? $q->where('cadastro_sexo.id', $sexo) : $q)
|
|
->where(fn($q) => isset($unidade) ? $q->where('cadastro_unidade.id', $unidade) : $q)
|
|
->where(fn($q) => isset($area) ? $q->where('atencao_basica_parametrizacao_area.descricao', $area) : $q)
|
|
->where(fn($q) => isset($microarea) ? $q->where('atencao_basica_parametrizacao_microarea.descricao', $microarea) : $q)
|
|
->where(fn($q) => isset($classificacao) ? $q->where('cadastro_paciente_classificacao.id', $classificacao) : $q)
|
|
->where(fn($q) => isset($prontuario) ? $q->where('cadastro_paciente.prontuario', $prontuario) : $q)
|
|
->select(
|
|
'imunizacao_registro_aplicacao.id as registro_aplicacao_id',
|
|
'cadastro_paciente.id as paciente_id',
|
|
'cadastro_cidadao.nome as paciente',
|
|
'cadastro_sexo.descricao as sexo',
|
|
'cadastro_cidadao.cpf as cpf',
|
|
'cadastro_cidadao.cns as cns',
|
|
'cadastro_unidade.id as unidade_id',
|
|
'cadastro_unidade.nome_fantasia as unidade',
|
|
'cadastro_paciente_classificacao.descricao as classificacao',
|
|
'cadastro_paciente.prontuario as prontuario',
|
|
DB::raw("CONCAT(atencao_basica_parametrizacao_area.descricao, ' - ', unidade_area.nome_fantasia) as area"),
|
|
'atencao_basica_parametrizacao_microarea.descricao as microarea',
|
|
'agente_comunitario_cidadao.nome as agente',
|
|
'unidade_sala_vacinacao.id as sala_id',
|
|
'unidade_sala_vacinacao.nome_fantasia as sala',
|
|
$rowVacina,
|
|
'imunizacao_entrada_vacina.lote as lote',
|
|
'imunizacao_dose.nome as dose',
|
|
'atencao_basica_parametrizacao_equipe_usuario.equipe_id',
|
|
DB::raw('DATE_FORMAT(imunizacao_entrada_vacina.data_validade_lote, "%d/%m/%Y") AS validade'),
|
|
DB::raw('DATE_FORMAT(imunizacao_registro_aplicacao.data_aplicacao, "%d/%m/%Y") AS data'),
|
|
DB::raw('"Aplicação" AS registro'),
|
|
'imunizacao_estrategia.nome as estrategia',
|
|
DB::raw('DATE_FORMAT(cadastro_cidadao.data_nascimento, "%d/%m/%Y") AS idade'),
|
|
'imunizacao_campanha.nome as campanha',
|
|
)
|
|
->join('cadastro_paciente', 'cadastro_paciente.id', 'paciente_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id')
|
|
->join('cadastro_sexo', 'cadastro_sexo.id', 'cadastro_cidadao.sexo_id')
|
|
->leftJoin('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_paciente.unidade_id')
|
|
->join('cadastro_paciente_classificacao', 'cadastro_paciente_classificacao.id', 'cadastro_paciente.classificacao_id')
|
|
->join('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'imunizacao_registro_aplicacao.aplicador_id')
|
|
->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id')
|
|
->join('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id')
|
|
->join('cadastro_unidade as unidade_area', 'unidade_area.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
|
->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id')
|
|
->join('cadastro_usuario as agente_comunitario_usuario', 'agente_comunitario_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id')
|
|
->join('cadastro_cidadao as agente_comunitario_cidadao', 'agente_comunitario_cidadao.id', 'agente_comunitario_usuario.cidadao_id')
|
|
->join('imunizacao_saida_vacina', 'imunizacao_saida_vacina.id', 'imunizacao_registro_aplicacao.saida_vacina_id')
|
|
->join('imunizacao_saida', 'imunizacao_saida.id', 'imunizacao_saida_vacina.saida_id')
|
|
->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_saida_vacina.entrada_vacina_id')
|
|
->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_saida.sala_vacinacao_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id')
|
|
->leftJoin('cadastro_unidade as unidade_sala_vacinacao', 'unidade_sala_vacinacao.id', 'cadastro_infraestrutura.unidade_id')
|
|
->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_saida_vacina.vacina_id')
|
|
->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id')
|
|
->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id')
|
|
->join('imunizacao_campanha', 'imunizacao_campanha.id', 'imunizacao_registro_aplicacao.campanha_id');
|
|
}
|
|
|
|
private static function getQuerySearchAplicacao($rowVacina, $params) {
|
|
$periodo = $params['periodo'];
|
|
$salaVacinacao = $params['sala_vacinacao'];
|
|
$vacina = $params['vacina'];
|
|
$dose = $params['dose'];
|
|
$sexo = $params['sexo'];
|
|
$unidade = $params['unidade'];
|
|
$area = $params['area'];
|
|
$microarea = $params['microarea'];
|
|
$classificacao = $params['classificacao'];
|
|
$prontuario = $params['prontuario'];
|
|
|
|
return DB::table('imunizacao_registro_aplicacao')
|
|
->whereNotNull('imunizacao_registro_aplicacao.entrada_vacina_id')
|
|
->whereBetween('data_aplicacao', [
|
|
Carbon::createFromFormat('d/m/Y', $periodo['start'])->startOfDay(),
|
|
Carbon::createFromFormat('d/m/Y', $periodo['end'])->endOfDay(),
|
|
])
|
|
->where(fn($q) => isset($salaVacinacao) ? $q->where('imunizacao_sala_vacinacao.id', $salaVacinacao) : $q)
|
|
->where(fn($q) => isset($vacina) ? $q->where('cadastro_vacina.id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('imunizacao_dose.id', $dose) : $q)
|
|
->where(fn($q) => isset($sexo) ? $q->where('cadastro_sexo.id', $sexo) : $q)
|
|
->where(fn($q) => isset($unidade) ? $q->where('cadastro_unidade.id', $unidade) : $q)
|
|
->where(fn($q) => isset($area) ? $q->where('atencao_basica_parametrizacao_area.descricao', $area) : $q)
|
|
->where(fn($q) => isset($microarea) ? $q->where('atencao_basica_parametrizacao_microarea.descricao', $microarea) : $q)
|
|
->where(fn($q) => isset($classificacao) ? $q->where('cadastro_paciente_classificacao.id', $classificacao) : $q)
|
|
->where(fn($q) => isset($prontuario) ? $q->where('cadastro_paciente.prontuario', $prontuario) : $q)
|
|
->select(
|
|
'imunizacao_registro_aplicacao.id as registro_aplicacao_id',
|
|
'cadastro_paciente.id as paciente_id',
|
|
'cadastro_cidadao.nome as paciente',
|
|
'cadastro_sexo.descricao as sexo',
|
|
'cadastro_cidadao.cpf as cpf',
|
|
'cadastro_cidadao.cns as cns',
|
|
'cadastro_unidade.id as unidade_id',
|
|
'cadastro_unidade.nome_fantasia as unidade',
|
|
'cadastro_paciente_classificacao.descricao as classificacao',
|
|
'cadastro_paciente.prontuario as prontuario',
|
|
DB::raw("CONCAT(atencao_basica_parametrizacao_area.descricao, ' - ', unidade_area.nome_fantasia) as area"),
|
|
'atencao_basica_parametrizacao_microarea.descricao as microarea',
|
|
'agente_comunitario_cidadao.nome as agente',
|
|
'unidade_sala_vacinacao.id as sala_id',
|
|
'unidade_sala_vacinacao.nome_fantasia as sala',
|
|
$rowVacina,
|
|
'imunizacao_entrada_vacina.lote as lote',
|
|
'imunizacao_dose.nome as dose',
|
|
DB::raw('DATE_FORMAT(imunizacao_entrada_vacina.data_validade_lote, "%d/%m/%Y") AS validade'),
|
|
DB::raw('DATE_FORMAT(imunizacao_registro_aplicacao.data_aplicacao, "%d/%m/%Y") AS data'),
|
|
DB::raw('"Aplicação" AS registro'),
|
|
'imunizacao_estrategia.nome as estrategia',
|
|
DB::raw('"-" AS campanha'),
|
|
DB::raw('DATE_FORMAT(cadastro_cidadao.data_nascimento, "%d/%m/%Y") AS idade'),
|
|
'atencao_basica_parametrizacao_equipe_usuario.equipe_id',
|
|
)
|
|
->join('cadastro_paciente', 'cadastro_paciente.id', 'imunizacao_registro_aplicacao.paciente_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id')
|
|
->join('cadastro_sexo', 'cadastro_sexo.id', 'cadastro_cidadao.sexo_id')
|
|
|
|
->leftJoin('cadastro_paciente_classificacao', 'cadastro_paciente_classificacao.id', 'cadastro_paciente.classificacao_id')
|
|
->join('cadastro_usuario as agente_comunitario_usuario', 'agente_comunitario_usuario.id', 'imunizacao_registro_aplicacao.aplicador_id')
|
|
->join('cadastro_cidadao as agente_comunitario_cidadao', 'agente_comunitario_cidadao.id', 'agente_comunitario_usuario.cidadao_id')
|
|
->join('imunizacao_entrada_vacina', 'imunizacao_entrada_vacina.id', 'imunizacao_registro_aplicacao.entrada_vacina_id')
|
|
->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id')
|
|
->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id')
|
|
->join('cadastro_unidade as unidade_sala_vacinacao', 'unidade_sala_vacinacao.id', 'cadastro_infraestrutura.unidade_id')
|
|
->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_entrada_vacina.vacina_id')
|
|
->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_aplicacao.dose_id')
|
|
->join('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_aplicacao.estrategia_id')
|
|
->leftJoin('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'imunizacao_registro_aplicacao.aplicador_id')
|
|
->leftJoin('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id')
|
|
->leftJoin('cadastro_unidade as unidade_area', 'unidade_area.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
|
->leftJoin('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id')
|
|
->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id')
|
|
->leftJoin('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_paciente.unidade_id')
|
|
->groupBy('imunizacao_registro_aplicacao.id');
|
|
}
|
|
|
|
private static function getQuerySearchAtualizacao($rowVacina, $params) {
|
|
$periodo = $params['periodo'];
|
|
$salaVacinacao = $params['sala_vacinacao'];
|
|
$vacina = $params['vacina'];
|
|
$dose = $params['dose'];
|
|
$sexo = $params['sexo'];
|
|
$unidade = $params['unidade'];
|
|
$area = $params['area'];
|
|
$microarea = $params['microarea'];
|
|
$classificacao = $params['classificacao'];
|
|
$prontuario = $params['prontuario'];
|
|
|
|
return DB::table('imunizacao_registro_atualizacao')
|
|
->whereBetween('data_atualizacao', [
|
|
Carbon::createFromFormat('d/m/Y', $periodo['start'])->startOfDay(),
|
|
Carbon::createFromFormat('d/m/Y', $periodo['end'])->endOfDay(),
|
|
])
|
|
->where(fn($q) => isset($salaVacinacao) ? $q->where('imunizacao_sala_vacinacao.id', $salaVacinacao) : $q)
|
|
->where(fn($q) => isset($vacina) ? $q->where('cadastro_vacina.id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('imunizacao_dose.id', $dose) : $q)
|
|
->where(fn($q) => isset($sexo) ? $q->where('cadastro_sexo.id', $sexo) : $q)
|
|
->where(fn($q) => isset($unidade) ? $q->where('cadastro_unidade.id', $unidade) : $q)
|
|
->where(fn($q) => isset($area) ? $q->where('atencao_basica_parametrizacao_area.descricao', $area) : $q)
|
|
->where(fn($q) => isset($microarea) ? $q->where('atencao_basica_parametrizacao_microarea.descricao', $microarea) : $q)
|
|
->where(fn($q) => isset($classificacao) ? $q->where('cadastro_paciente_classificacao.id', $classificacao) : $q)
|
|
->where(fn($q) => isset($prontuario) ? $q->where('cadastro_paciente.prontuario', $prontuario) : $q)
|
|
->select(
|
|
'imunizacao_registro_atualizacao.id as registro_atualizacao_id',
|
|
'cadastro_paciente.id as paciente_id',
|
|
'cadastro_cidadao.nome as paciente',
|
|
'cadastro_sexo.descricao as sexo',
|
|
'cadastro_cidadao.cpf as cpf',
|
|
'cadastro_cidadao.cns as cns',
|
|
'cadastro_unidade.id as unidade_id',
|
|
'cadastro_unidade.nome_fantasia as unidade',
|
|
'cadastro_paciente_classificacao.descricao as classificacao',
|
|
'cadastro_paciente.prontuario as prontuario',
|
|
DB::raw("CONCAT(atencao_basica_parametrizacao_area.descricao, ' - ', unidade_area.nome_fantasia) as area"),
|
|
'atencao_basica_parametrizacao_microarea.descricao as microarea',
|
|
'agente_comunitario_cidadao.nome as agente',
|
|
'unidade_sala_vacinacao.id as sala_id',
|
|
'unidade_sala_vacinacao.nome_fantasia as sala',
|
|
$rowVacina,
|
|
'imunizacao_registro_atualizacao.lote as lote',
|
|
'imunizacao_dose.nome as dose',
|
|
DB::raw('"-" AS validade'),
|
|
DB::raw('DATE_FORMAT(imunizacao_registro_atualizacao.data_atualizacao, "%d/%m/%Y") AS data'),
|
|
DB::raw('"Atualização" AS registro'),
|
|
DB::raw('"-" AS campanha'),
|
|
'imunizacao_estrategia.nome as estrategia',
|
|
'atencao_basica_parametrizacao_equipe_usuario.equipe_id',
|
|
DB::raw('DATE_FORMAT(cadastro_cidadao.data_nascimento, "%d/%m/%Y") AS idade'),
|
|
)
|
|
->join('cadastro_paciente', 'cadastro_paciente.id', 'paciente_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_paciente.cidadao_id')
|
|
->join('cadastro_sexo', 'cadastro_sexo.id', 'cadastro_cidadao.sexo_id')
|
|
->leftJoin('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_paciente.unidade_id')
|
|
->join('cadastro_paciente_classificacao', 'cadastro_paciente_classificacao.id', 'cadastro_paciente.classificacao_id')
|
|
|
|
->leftJoin('atencao_basica_parametrizacao_equipe_usuario', 'atencao_basica_parametrizacao_equipe_usuario.usuario_id', 'imunizacao_registro_atualizacao.aplicador_id')
|
|
->leftJoin('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_parametrizacao_equipe_usuario.equipe_id')
|
|
->leftJoin('cadastro_unidade as unidade_area', 'unidade_area.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
|
->leftJoin('atencao_basica_parametrizacao_area', 'atencao_basica_parametrizacao_area.id', 'atencao_basica_parametrizacao_equipe.area_id')
|
|
->leftJoin('atencao_basica_parametrizacao_microarea', 'atencao_basica_parametrizacao_microarea.id', 'atencao_basica_parametrizacao_equipe.microarea_id')
|
|
->join('cadastro_usuario as agente_comunitario_usuario', 'agente_comunitario_usuario.id', 'imunizacao_registro_atualizacao.aplicador_id')
|
|
->join('cadastro_cidadao as agente_comunitario_cidadao', 'agente_comunitario_cidadao.id', 'agente_comunitario_usuario.cidadao_id')
|
|
->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_registro_atualizacao.sala_vacinacao_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id')
|
|
->join('cadastro_unidade as unidade_sala_vacinacao', 'unidade_sala_vacinacao.id', 'cadastro_infraestrutura.unidade_id')
|
|
->join('cadastro_vacina', 'cadastro_vacina.id', 'imunizacao_registro_atualizacao.vacina_id')
|
|
->join('imunizacao_dose', 'imunizacao_dose.id', 'imunizacao_registro_atualizacao.dose_id')
|
|
->leftJoin('imunizacao_estrategia', 'imunizacao_estrategia.id', 'imunizacao_registro_atualizacao.estrategia_id')
|
|
->groupBy('imunizacao_registro_atualizacao.id');
|
|
}
|
|
|
|
private static function vefificaFaixaInicial($params, $idadeEpoca) {
|
|
$anosIniciais = $params['faixa_etaria']['inicial']['anos'];
|
|
$mesesIniciais = $params['faixa_etaria']['inicial']['meses'];
|
|
$diasIniciais = $params['faixa_etaria']['inicial']['dias'];
|
|
|
|
// Verifica anos
|
|
if (isset($anosIniciais) && $idadeEpoca->y < $anosIniciais) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica meses quando os anos não estão definidos
|
|
if (!isset($anosIniciais) && isset($mesesIniciais) && (($idadeEpoca->y * 12 + $idadeEpoca->m) < $mesesIniciais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica meses quando anos e meses estão definidos
|
|
if ((isset($anosIniciais) && isset($mesesIniciais)) && ($idadeEpoca->y == $anosIniciais && $idadeEpoca->m < $mesesIniciais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias quando anos, meses e dias estão definidos
|
|
if ((isset($anosIniciais) && isset($mesesIniciais) && isset($diasIniciais)) &&
|
|
($idadeEpoca->y == $anosIniciais && $idadeEpoca->m == $mesesIniciais && $idadeEpoca->d < $diasIniciais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias quando apenas anos estão definidos
|
|
if (isset($anosIniciais) && !isset($mesesIniciais) && isset($diasIniciais) &&
|
|
($idadeEpoca->y == $anosIniciais && $idadeEpoca->d < $diasIniciais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias quando apenas meses estão definidos
|
|
if (!isset($anosIniciais) && isset($mesesIniciais) && isset($diasIniciais) &&
|
|
($idadeEpoca->m == $mesesIniciais && $idadeEpoca->d < $diasIniciais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias quando nem anos nem meses estão definidos
|
|
if (!isset($anosIniciais) && !isset($mesesIniciais) && isset($diasIniciais) &&
|
|
$idadeEpoca->d < $diasIniciais) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
private static function verificaFaixaFinal($params, $idadeEpoca){
|
|
$anosFinais = $params['faixa_etaria']['final']['anos'];
|
|
$mesesFinais = $params['faixa_etaria']['final']['meses'];
|
|
$diasFinais = $params['faixa_etaria']['final']['dias'];
|
|
|
|
if(!isset($anosFinais) && $idadeEpoca->y > 0){
|
|
return true;
|
|
}
|
|
|
|
if((!isset($anosFinais) && $idadeEpoca->y > 0) && (!isset($mesesFinais) && $idadeEpoca->m > 0)){
|
|
return true;
|
|
}
|
|
|
|
if (isset($anosFinais) && $idadeEpoca->y > $anosFinais) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica meses finais quando os anos não estão definidos
|
|
if (!isset($anosFinais) && isset($mesesFinais) && (($idadeEpoca->y * 12 + $idadeEpoca->m) > $mesesFinais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica meses finais quando anos e meses estão definidos
|
|
if ((isset($anosFinais) && isset($mesesFinais)) && ($idadeEpoca->y == $anosFinais && $idadeEpoca->m > $mesesFinais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias finais quando anos, meses e dias estão definidos
|
|
if ((isset($anosFinais) && isset($mesesFinais) && isset($diasFinais)) &&
|
|
($idadeEpoca->y == $anosFinais && $idadeEpoca->m == $mesesFinais && $idadeEpoca->d > $diasFinais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias finais quando apenas anos estão definidos
|
|
if (isset($anosFinais) && !isset($mesesFinais) && isset($diasFinais) &&
|
|
($idadeEpoca->y == $anosFinais && $idadeEpoca->d > $diasFinais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias finais quando apenas meses estão definidos
|
|
if (!isset($anosFinais) && isset($mesesFinais) && isset($diasFinais) &&
|
|
($idadeEpoca->m == $mesesFinais && $idadeEpoca->d > $diasFinais)) {
|
|
return true;
|
|
}
|
|
|
|
// Verifica dias finais quando nem anos nem meses estão definidos
|
|
if (!isset($anosFinais) && !isset($mesesFinais) && isset($diasFinais) &&
|
|
$idadeEpoca->d > $diasFinais) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public static function list() {
|
|
$params = request()->all();
|
|
$tipoListagem = $params['listar'];
|
|
|
|
switch ($tipoListagem) {
|
|
case 'salaVacinacao':
|
|
return self::getSalasVacinacao($params);
|
|
case 'vacina':
|
|
return self::getVacinas($params);
|
|
case 'dose':
|
|
return self::getDoses($params);
|
|
case 'unidade':
|
|
return self::getUnidades($params);
|
|
case 'classificacao':
|
|
return self::getClassificacoes();
|
|
case 'equipe':
|
|
return self::getEquipes($params);
|
|
default:
|
|
return response()->json(["error" => "Informe o tipo de listagem através do listar"], Response::HTTP_NOT_ACCEPTABLE);
|
|
}
|
|
}
|
|
|
|
private static function getSalasVacinacao($params) {
|
|
$ids = self::getIdsPorQueries('sala', $params);
|
|
|
|
return SalaVacinacao::whereIn('id', $ids)
|
|
->with('infraestrutura')
|
|
->get()
|
|
->map(fn($item) => [
|
|
'id' => $item->id,
|
|
'nome' => $item->infraestrutura->nome
|
|
]);
|
|
}
|
|
|
|
private static function getVacinas($params) {
|
|
$ids = self::getIdsPorQueries('vacina', $params);
|
|
|
|
$parametrizacaoVacina = DB::table('imunizacao_parametrizacao')
|
|
->select('parametrizacao_descricao_vacina_id')
|
|
->first();
|
|
|
|
return DB::table('cadastro_vacina')
|
|
->whereIn('id', $ids)
|
|
->select(
|
|
'id',
|
|
self::formataDescricaoVacina($parametrizacaoVacina->parametrizacao_descricao_vacina_id, 'cadastro_vacina', 'nome'),
|
|
)
|
|
->get();
|
|
}
|
|
|
|
private static function formataDescricaoVacina($descricaoVacina, $tabela, $apelidoCampo) {
|
|
$formato = '';
|
|
|
|
switch ($descricaoVacina) {
|
|
case ParametrizacaoDescricaoVacina::DESCRICAO:
|
|
$formato = "{$tabela}.nome as {$apelidoCampo}";
|
|
break;
|
|
case ParametrizacaoDescricaoVacina::DESCRICAO_ABREVIADA:
|
|
$formato = "{$tabela}.abreviacao as {$apelidoCampo}";
|
|
break;
|
|
case ParametrizacaoDescricaoVacina::SIGLA:
|
|
$formato = "{$tabela}.sigla as {$apelidoCampo}";
|
|
break;
|
|
case ParametrizacaoDescricaoVacina::SIGLA_DESCRICAO:
|
|
$formato = "CONCAT({$tabela}.sigla, ' - ', {$tabela}.nome) as {$apelidoCampo}";
|
|
break;
|
|
case ParametrizacaoDescricaoVacina::SIGLA_DESCRICAO_ABREVIADA:
|
|
$formato = "CONCAT({$tabela}.sigla, ' - ', {$tabela}.abreviacao) as {$apelidoCampo}";
|
|
break;
|
|
case ParametrizacaoDescricaoVacina::DESCRICAO_ABREVIADA_DESCRICAO:
|
|
$formato = "CONCAT({$tabela}.abreviacao, ' - ', {$tabela}.nome) as {$apelidoCampo}";
|
|
break;
|
|
case ParametrizacaoDescricaoVacina::SIGLA_DESCRICAO_ABREVIADA_DESCRICAO:
|
|
$formato = "CONCAT({$tabela}.sigla, ' - ', {$tabela}.abreviacao, ' - ', {$tabela}.nome) as {$apelidoCampo}";
|
|
break;
|
|
}
|
|
|
|
return DB::raw($formato);
|
|
}
|
|
|
|
|
|
private static function getDoses($params) {
|
|
$ids = self::getIdsPorQueries('dose', $params);
|
|
|
|
return DB::table('imunizacao_dose')
|
|
->whereIn('id', $ids)
|
|
->select('id', 'nome')
|
|
->get();
|
|
}
|
|
|
|
private static function getUnidades($params) {
|
|
$ids = self::getIdsPorQueries('unidade', $params);
|
|
|
|
return DB::table('cadastro_unidade')
|
|
->whereIn('id', $ids)
|
|
->select('id', 'nome_fantasia as nome')
|
|
->get();
|
|
}
|
|
|
|
private static function getClassificacoes() {
|
|
return DB::table('cadastro_paciente_classificacao')
|
|
->select('id', 'descricao as nome')
|
|
->get();
|
|
}
|
|
|
|
private static function getEquipes($params) {
|
|
$ids = self::getIdsPorQueries('equipe', $params);
|
|
|
|
$equipesIds = DB::table('atencao_basica_parametrizacao_equipe_usuario')
|
|
->select('equipe_id')
|
|
->whereIn('usuario_id', $ids)
|
|
->get()
|
|
->pluck('equipe_id', 'equipe_id')
|
|
->filter();
|
|
|
|
return Equipe::whereIn('id', $equipesIds)
|
|
->with(['area', 'microarea', 'unidade'])
|
|
->get()
|
|
->map(fn ($item) => [
|
|
'area' => [
|
|
"nome" => $item->area->descricao . ' - ' . $item->unidade->nome_fantasia,
|
|
"valor" => $item->area->descricao
|
|
],
|
|
'microarea' => $item->microarea ? $item->microarea->descricao : null,
|
|
])
|
|
->filter(fn ($item) => isset($item['microarea']));
|
|
}
|
|
|
|
private static function getQueryAplicacao($tipoConsulta, $params) {
|
|
$periodo = $params['periodo'];
|
|
$salaVacinacao = $params['sala_vacinacao'];
|
|
$vacina = $params['vacina'];
|
|
$vacinas = isset($params['vacinas']) ? explode(', ', $params['vacinas']) : [];
|
|
$dose = $params['dose'];
|
|
$sexo = $params['sexo'];
|
|
$unidade = $params['unidade'];
|
|
|
|
$query = RegistroAplicacao::whereNotNull('entrada_vacina_id')
|
|
->whereBetween('data_aplicacao', [
|
|
Carbon::createFromFormat('d/m/Y', $periodo['start'])->startOfDay(),
|
|
Carbon::createFromFormat('d/m/Y', $periodo['end'])->endOfDay(),
|
|
]);
|
|
|
|
switch ($tipoConsulta) {
|
|
case 'sala':
|
|
$query->with(['entradaVacina.entrada']);
|
|
break;
|
|
case 'vacina':
|
|
$query->with(['entradaVacina', 'entradaVacina.entrada'])
|
|
->whereHas('entradaVacina.entrada', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q);
|
|
break;
|
|
case 'dose':
|
|
$query->with(['entradaVacina', 'entradaVacina.entrada'])
|
|
->whereHas('entradaVacina.entrada', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->whereHas('entradaVacina', fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q->whereIn('vacina_id', $vacinas));
|
|
break;
|
|
case 'unidade':
|
|
$query->with(['entradaVacina', 'entradaVacina.entrada', 'paciente', 'paciente.cidadao'])
|
|
->whereHas('entradaVacina.entrada', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->whereHas('entradaVacina', fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('dose_id', $dose) : $q)
|
|
->whereHas('paciente.cidadao', fn($q) => isset($sexo) ? $q->where('sexo_id', $sexo) : $q)
|
|
->whereHas('paciente', fn($q) => $q->whereNotNull('unidade_id'));
|
|
break;
|
|
case 'equipe':
|
|
$query->with(['entradaVacina', 'entradaVacina.entrada', 'paciente', 'paciente.cidadao'])
|
|
->whereHas('entradaVacina.entrada', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->whereHas('entradaVacina', fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('dose_id', $dose) : $q)
|
|
->whereHas('paciente.cidadao', fn($q) => isset($sexo) ? $q->where('sexo_id', $sexo) : $q)
|
|
->whereHas('paciente', fn($q) => $q->whereNotNull('unidade_id'))
|
|
->whereHas('paciente', fn($q) => isset($unidade) ? $q->where('unidade_id', $unidade) : $q);
|
|
break;
|
|
}
|
|
|
|
return $query;
|
|
}
|
|
|
|
private static function getQueryCampanha($tipoConsulta, $params) {
|
|
$periodo = $params['periodo'];
|
|
$salaVacinacao = $params['sala_vacinacao'];
|
|
$vacina = $params['vacina'];
|
|
$vacinas = isset($params['vacinas']) ? explode(', ', $params['vacinas']) : [];
|
|
$dose = $params['dose'];
|
|
$sexo = $params['sexo'];
|
|
$unidade = $params['unidade'];
|
|
|
|
$query = RegistroAplicacao::whereNotNull('saida_vacina_id')
|
|
->whereNotNull('campanha_id')
|
|
->whereBetween('data_aplicacao', [
|
|
Carbon::createFromFormat('d/m/Y', $periodo['start'])->startOfDay(),
|
|
Carbon::createFromFormat('d/m/Y', $periodo['end'])->endOfDay(),
|
|
]);
|
|
|
|
switch ($tipoConsulta) {
|
|
case 'sala':
|
|
$query->with(['saidaVacina.saida'])
|
|
->whereHas('saidaVacina.saida', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q);
|
|
break;
|
|
case 'vacina':
|
|
$query->with(['saidaVacina', 'saidaVacina.saida'])
|
|
->whereHas('saidaVacina.saida', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q);
|
|
break;
|
|
case 'dose':
|
|
$query->with(['saidaVacina', 'saidaVacina.saida'])
|
|
->whereHas('saidaVacina.saida', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->whereHas('saidaVacina', fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q->whereIn('vacina_id', $vacinas));
|
|
break;
|
|
case 'unidade':
|
|
$query->with(['saidaVacina', 'saidaVacina.saida', 'paciente', 'paciente.cidadao'])
|
|
->whereHas('saidaVacina.saida', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->whereHas('saidaVacina', fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('dose_id', $dose) : $q)
|
|
->whereHas('paciente.cidadao', fn($q) => isset($sexo) ? $q->where('sexo_id', $sexo) : $q)
|
|
->whereHas('paciente', fn($q) => $q->whereNotNull('unidade_id'));
|
|
break;
|
|
case 'equipe':
|
|
$query->with(['saidaVacina', 'saidaVacina.saida', 'paciente', 'paciente.cidadao'])
|
|
->whereHas('saidaVacina.saida', fn($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->whereHas('saidaVacina', fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q)
|
|
->where(fn($q) => isset($dose) ? $q->where('dose_id', $dose) : $q)
|
|
->whereHas('paciente.cidadao', fn($q) => isset($sexo) ? $q->where('sexo_id', $sexo) : $q)
|
|
->whereHas('paciente', fn($q) => $q->whereNotNull('unidade_id'))
|
|
->whereHas('paciente', fn($q) => isset($unidade) ? $q->where('unidade_id', $unidade) : $q);
|
|
break;
|
|
}
|
|
|
|
return $query;
|
|
}
|
|
|
|
private static function getQueryAtualizacao($tipoConsulta, $params) {
|
|
$periodo = $params['periodo'];
|
|
$salaVacinacao = $params['sala_vacinacao'];
|
|
$vacina = $params['vacina'];
|
|
$vacinas = isset($params['vacinas']) ? explode(', ', $params['vacinas']) : [];
|
|
$sexo = $params['sexo'];
|
|
$unidade = $params['unidade'];
|
|
|
|
$query = RegistroAtualizacao::whereBetween('data_atualizacao', [
|
|
Carbon::createFromFormat('d/m/Y', $periodo['start'])->startOfDay(),
|
|
Carbon::createFromFormat('d/m/Y', $periodo['end'])->endOfDay(),
|
|
]);
|
|
|
|
switch ($tipoConsulta) {
|
|
case 'sala':
|
|
$query;
|
|
break;
|
|
case 'vacina':
|
|
$query->where(fn ($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q);
|
|
break;
|
|
case 'dose':
|
|
$query->where(fn ($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->where(fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q->whereIn('vacina_id', $vacinas));
|
|
break;
|
|
case 'unidade':
|
|
$query->with(['paciente', 'paciente.cidadao'])
|
|
->where(fn ($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->where(fn($q) => isset($vacina) ? $q->where('vacina_id', $vacina) : $q)
|
|
->whereHas('paciente.cidadao', fn($q) => isset($sexo) ? $q->where('sexo_id', $sexo) : $q);
|
|
break;
|
|
case 'equipe':
|
|
$query->with(['paciente.cidadao'])
|
|
->where(fn ($q) => isset($salaVacinacao) ? $q->where('sala_vacinacao_id', $salaVacinacao) : $q)
|
|
->where(fn($q) => isset ($vacina) ? $q->where('vacina_id', $vacina) : $q)
|
|
->whereHas('paciente.cidadao', fn($q) => isset($sexo) ? $q->where('sexo_id', $sexo) : $q)
|
|
->whereHas('paciente', fn($q) => isset($unidade) ? $q->where('unidade_id', $unidade) : $q);
|
|
break;
|
|
}
|
|
|
|
return $query;
|
|
}
|
|
|
|
private static function getIdsPorQueries($tipoConsulta, $params) {
|
|
$preferenciaCampanha = $params['campanha'];
|
|
$tipoRegistro = $params['tipo_registro'];
|
|
|
|
$idsAplicacao = [];
|
|
$idsAtualizacao = [];
|
|
$idsCampanha = [];
|
|
|
|
$queryAplicacao = self::getQueryAplicacao($tipoConsulta, $params);
|
|
$queryCampanha = self::getQueryCampanha($tipoConsulta, $params);
|
|
$queryAtualizacao = self::getQueryAtualizacao($tipoConsulta, $params);
|
|
|
|
$campoCampanha = '';
|
|
$campoAplicacao = '';
|
|
$campoAtualizacao = '';
|
|
|
|
switch ($tipoConsulta) {
|
|
case 'sala':
|
|
$campoCampanha = 'saidaVacina.saida.sala_vacinacao_id';
|
|
$campoAplicacao = 'entradaVacina.entrada.sala_vacinacao_id';
|
|
$campoAtualizacao = 'sala_vacinacao_id';
|
|
break;
|
|
case 'vacina':
|
|
$campoCampanha = 'saidaVacina.vacina_id';
|
|
$campoAplicacao = 'entradaVacina.vacina_id';
|
|
$campoAtualizacao = 'vacina_id';
|
|
break;
|
|
case 'dose':
|
|
$campoCampanha = 'dose_id';
|
|
$campoAplicacao = 'dose_id';
|
|
$campoAtualizacao = 'dose_id';
|
|
break;
|
|
case 'unidade':
|
|
$campoCampanha = 'paciente.unidade_id';
|
|
$campoAplicacao = 'paciente.unidade_id';
|
|
$campoAtualizacao = 'paciente.unidade_id';
|
|
break;
|
|
case 'equipe':
|
|
$campoCampanha = 'aplicador_id';
|
|
$campoAplicacao = 'aplicador_id';
|
|
$campoAtualizacao = 'aplicador_id';
|
|
break;
|
|
}
|
|
|
|
if($preferenciaCampanha != PreferenciaCampanha::NAO_INCLUIR) {
|
|
$idsCampanha = $queryCampanha->get()->pluck($campoCampanha, $campoCampanha)->filter();
|
|
}
|
|
|
|
if($preferenciaCampanha != PreferenciaCampanha::MOSTRAR_EXCLUSIVAMENTE){
|
|
if($tipoRegistro != TipoRegistro::ATUALIZACAO) {
|
|
$idsAplicacao = $queryAplicacao->get()->pluck($campoAplicacao, $campoAplicacao)->filter();
|
|
}
|
|
|
|
if($tipoRegistro != TipoRegistro::APLICACAO) {
|
|
$idsAtualizacao = $queryAtualizacao->get()->pluck($campoAtualizacao, $campoAtualizacao)->filter();
|
|
}
|
|
}
|
|
|
|
return [...$idsCampanha, ...$idsAplicacao, ...$idsAtualizacao];
|
|
}
|
|
}
|