This commit is contained in:
@@ -0,0 +1,772 @@
|
||||
<?php
|
||||
namespace App\Services\AtencaoBasica;
|
||||
|
||||
use App\Models\AtencaoBasica\AtividadeColetiva\PublicoAlvo;
|
||||
use App\Models\AtencaoBasica\AtividadeColetiva\SaudePratica;
|
||||
use App\Models\AtencaoBasica\AtividadeColetiva\SaudeTema;
|
||||
use App\Services\Service;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RelatorioAtividadeColetivaService extends Service {
|
||||
|
||||
public static function autocompletePaciente()
|
||||
{
|
||||
|
||||
$params = self::getParams();
|
||||
return DB::table('cadastro_paciente as paciente')
|
||||
->join('cadastro_cidadao as cidadao', 'cidadao.id', 'paciente.cidadao_id')
|
||||
->join('atencao_basica_atividade_coletiva_participante as participante', 'participante.paciente_id', 'paciente.id')
|
||||
->join('atencao_basica_atividade_coletiva as atividade_coletiva', 'atividade_coletiva.id', 'participante.atividade_coletiva_id')
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id')
|
||||
->LeftJoin('atencao_basica_atividade_coletiva_procedimento as procedimento', 'procedimento.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->LeftJoin('sigtap.procedimento as sigtap_procedimento', 'sigtap_procedimento.id', 'procedimento.procedimento_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->when(request()->equipe_id, function($query) {
|
||||
$query->where('atividade_coletiva.equipe_id', request()->equipe_id);
|
||||
})
|
||||
->when(request()->atividade_tipo, function($query) {
|
||||
$query->where('atividade_tipo.id', request()->atividade_tipo);
|
||||
})
|
||||
->when(request()->publico_alvo_ids, function($query) {
|
||||
$query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids);
|
||||
})
|
||||
->when(request()->saude_tema_ids, function($query) {
|
||||
$query->whereIn('cadastro_saude_tema.id', request()->saude_tema_ids);
|
||||
})
|
||||
->when(request()->pratica_saude_ids, function($query) {
|
||||
$query->whereIn('cadastro_saude_pratica.id', request()->pratica_saude_ids);
|
||||
})
|
||||
->when(request()->procedimento_id, function($query) {
|
||||
$query->whereIn('sigtap_procedimento.id', request()->procedimento_id);
|
||||
})
|
||||
->whereNull('paciente.deleted_at')
|
||||
->selectRaw("
|
||||
paciente.id,
|
||||
cidadao.nome,
|
||||
cidadao.nome_social,
|
||||
cidadao.cns
|
||||
")
|
||||
->groupBy('paciente.id');
|
||||
}
|
||||
|
||||
public static function index(){
|
||||
return [
|
||||
'model' => self::getModelData(),
|
||||
];
|
||||
}
|
||||
|
||||
public static function getModelData(){
|
||||
return [
|
||||
'periodo' => [
|
||||
'start' => null,
|
||||
'end' => null,
|
||||
],
|
||||
'pseId' => null,
|
||||
'turnoId' => null,
|
||||
'unidadeId' => null,
|
||||
'localAtendimentoId' => null,
|
||||
'profissionalId' => null,
|
||||
'ocupacaoId' => null,
|
||||
'equipeId' => null,
|
||||
'atividade_id' => null,
|
||||
'publico_alvo' => PublicoAlvo::orderBy('id')->get(),
|
||||
'saude_temas' => SaudeTema::orderBy('descricao')->get(),
|
||||
'saude_pratica' => SaudePratica::orderBy('id')->get(),
|
||||
];
|
||||
}
|
||||
|
||||
public static function list(){
|
||||
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'atividade_coletiva.id',
|
||||
'atividade_coletiva.data_cadastro',
|
||||
'unidade.nome_fantasia as nome_unidade',
|
||||
'cidadao_usuario.nome as nome_profissional',
|
||||
'ocupacao.codigo as cbo_ocupacao',
|
||||
'area.descricao as area',
|
||||
'area.numero_ine as ine',
|
||||
'atividade_tipo.descricao as atividade',
|
||||
'atividade_coletiva.total_participantes',
|
||||
'unidade.nome_fantasia as local_atendimento',
|
||||
'atividade_coletiva.cnes',
|
||||
'turno.descricao as descricao_turno',
|
||||
DB::raw("GROUP_CONCAT(DISTINCT cadastro_publico_alvo.descricao ORDER BY cadastro_publico_alvo.descricao SEPARATOR ', ') as descricao_publico_alvo"),
|
||||
DB::raw("GROUP_CONCAT(DISTINCT cadastro_saude_tema.descricao ORDER BY cadastro_saude_tema.descricao SEPARATOR ', ') as descricao_saude_tema"),
|
||||
DB::raw("GROUP_CONCAT(DISTINCT cadastro_saude_pratica.descricao ORDER BY cadastro_saude_pratica.descricao SEPARATOR ', ') as descricao_saude_pratica"),
|
||||
DB::raw("GROUP_CONCAT(DISTINCT sigtap_procedimento.codigo ORDER BY sigtap_procedimento.codigo SEPARATOR ', ') as codigo_procedimento"),
|
||||
DB::raw("COUNT(DISTINCT procedimento.id) as count_procedimentos"),
|
||||
DB::raw("COUNT(DISTINCT participante.paciente_id) as count_pessoas_avaliadas"),
|
||||
DB::raw("
|
||||
CONCAT(
|
||||
CASE
|
||||
WHEN area.numero_ine IS NOT NULL THEN CONCAT('INE: ', area.numero_ine)
|
||||
ELSE ''
|
||||
END,
|
||||
CASE
|
||||
WHEN area.descricao IS NOT NULL AND area.numero_ine IS NOT NULL THEN ' - Área: '
|
||||
WHEN area.descricao IS NOT NULL THEN 'Área: '
|
||||
ELSE ''
|
||||
END,
|
||||
COALESCE(area.descricao, ''),
|
||||
CASE
|
||||
WHEN microarea.descricao IS NOT NULL AND (area.numero_ine IS NOT NULL OR area.descricao IS NOT NULL) THEN ' - Microárea: '
|
||||
WHEN microarea.descricao IS NOT NULL THEN 'Microárea: '
|
||||
ELSE ''
|
||||
END,
|
||||
COALESCE(microarea.descricao, '')
|
||||
) AS equipe
|
||||
"),
|
||||
])
|
||||
->leftJoin('atencao_basica_cadastro_pse as cadastro_pse', 'cadastro_pse.id', 'atividade_coletiva.pse_id')
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'usuario.cidadao_id')
|
||||
->join('sigtap.ocupacao as ocupacao', 'ocupacao.id', 'atividade_coletiva.usuario_ocupacao_id')
|
||||
->join('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->Leftjoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id' )
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id' )
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id')
|
||||
->LeftJoin('atencao_basica_atividade_coletiva_procedimento as procedimento', 'procedimento.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->leftJoin('sigtap.procedimento as sigtap_procedimento', 'sigtap_procedimento.id', 'procedimento.procedimento_id')
|
||||
->LeftJoin('atencao_basica_atividade_coletiva_participante as participante', 'participante.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('cadastro_pse.id', request()->pse_id);
|
||||
})
|
||||
->when(request()->inep, function($query) {
|
||||
$query->where('atividade_coletiva.inep', request()->inep);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->unidade_id, function($query) {
|
||||
$query->where('unidade.id', request()->unidade_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('atividade_coletiva.usuario_id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->publico_alvo_id, function($query) {
|
||||
$query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_id);
|
||||
})
|
||||
->when(request()->saude_tema_id, function($query) {
|
||||
$query->whereIn('cadastro_saude_tema.id', request()->saude_tema_id);
|
||||
})
|
||||
->when(request()->pratica_saude_id, function($query) {
|
||||
$query->whereIn('cadastro_saude_pratica.id', request()->pratica_saude_id);
|
||||
})
|
||||
->when(request()->procedimento_id, function($query) {
|
||||
$query->whereIn('sigtap_procedimento.id', request()->procedimento_id);
|
||||
})
|
||||
->when(request()->paciente_id, function($query) {
|
||||
$query->where('participante.paciente_id', request()->paciente_id);
|
||||
})
|
||||
->when(request()->avaliacao_alterada, function($query) {
|
||||
$query->where('participante.avaliacao_alterada', true);
|
||||
})
|
||||
->when(request()->parou_de_fumar, function($query) {
|
||||
$query->where('participante.parou_de_fumar', true);
|
||||
})
|
||||
->when(request()->abandonou_grupo, function($query) {
|
||||
$query->where('participante.abandonou_grupo', true);
|
||||
})
|
||||
->groupBy('atividade_coletiva.id')
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'data' => $item->data_cadastro,
|
||||
'unidade' => $item->nome_unidade,
|
||||
'profissional' => $item->nome_profissional,
|
||||
'cbo' => $item->cbo_ocupacao,
|
||||
'equipe' => $item->equipe,
|
||||
'atividade' => $item->atividade,
|
||||
'total_participantes' => $item->total_participantes,
|
||||
'total_pessoas_avaliadas' => self::getPessoasAvaliadas($item->id),
|
||||
'local_atendimento' => $item->local_atendimento,
|
||||
'cnes' => $item->cnes,
|
||||
'turno' => $item->descricao_turno,
|
||||
'publico_alvo' => $item->descricao_publico_alvo,
|
||||
'tema_saude' => $item->descricao_saude_tema,
|
||||
'pratica_saude' => $item->descricao_saude_pratica,
|
||||
'procedimentos_vinculados' => $item->codigo_procedimento,
|
||||
]),
|
||||
'totalizadores' => [
|
||||
'total_atividades' => $itens->count(),
|
||||
'total_procedimentos' => $itens->sum('count_procedimentos'),
|
||||
'total_pessoas_avaliadas' => $itens->sum('count_pessoas_avaliadas'),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPses(){
|
||||
|
||||
$params = self::getParams();
|
||||
|
||||
|
||||
$itens = DB::table('atencao_basica_cadastro_pse')
|
||||
->select([
|
||||
'atencao_basica_cadastro_pse.id',
|
||||
'atencao_basica_cadastro_pse.descricao'
|
||||
])
|
||||
->distinct()
|
||||
->Leftjoin('atencao_basica_atividade_coletiva', 'atencao_basica_atividade_coletiva.pse_id', 'atencao_basica_cadastro_pse.id')
|
||||
->whereBetween('atencao_basica_atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
public static function getTurnos(){
|
||||
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_cadastro_turno')
|
||||
->select([
|
||||
'atencao_basica_cadastro_turno.id',
|
||||
'atencao_basica_cadastro_turno.descricao'
|
||||
])
|
||||
->distinct()
|
||||
->join('atencao_basica_atividade_coletiva', 'atencao_basica_atividade_coletiva.turno_id', 'atencao_basica_cadastro_turno.id')
|
||||
->whereBetween('atencao_basica_atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atencao_basica_atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
public static function getUnidades(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select(['unidade.id', 'unidade.nome_fantasia'])
|
||||
->distinct()
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->get();
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'nomeFantasia' => $item->nome_fantasia,
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
public static function getLocaisAtendimentos(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'unidade.id',
|
||||
'unidade.nome_fantasia'
|
||||
])
|
||||
->distinct()
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'equipe.infraestrutura_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->unidade_id, function($query) {
|
||||
$query->where('equipe.unidade_id', request()->unidade_id);
|
||||
})
|
||||
->get();
|
||||
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'nomeFantasia' => $item->nome_fantasia,
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
public static function getProfissionais(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'usuario.id',
|
||||
'cidadao_usuario.nome'
|
||||
])
|
||||
->distinct()
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_infraestrutura as infraestrutura_unidade', 'infraestrutura_unidade.id', 'equipe.infraestrutura_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'infraestrutura_unidade.unidade_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'usuario.cidadao_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->unidade_id, function($query) {
|
||||
$query->where('infraestrutura_unidade.unidade_id', request()->unidade_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('infraestrutura_unidade.unidade_id', request()->local_atendimento_id);
|
||||
})
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'nome' => $item->nome,
|
||||
])
|
||||
];
|
||||
}
|
||||
public static function getOcupacoes(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'ocupacao.id',
|
||||
'ocupacao.nome'
|
||||
])
|
||||
->distinct()
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'usuario.cidadao_id')
|
||||
->join('sigtap.ocupacao as ocupacao', 'ocupacao.id', 'atividade_coletiva.usuario_ocupacao_id' )
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'nome' => $item->nome,
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEquipes(){
|
||||
$params = self::getParams();
|
||||
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'equipe.id AS id',
|
||||
DB::raw("
|
||||
CONCAT(
|
||||
CASE
|
||||
WHEN area.numero_ine IS NOT NULL THEN CONCAT('INE: ', area.numero_ine)
|
||||
ELSE ''
|
||||
END,
|
||||
CASE
|
||||
WHEN area.descricao IS NOT NULL AND area.numero_ine IS NOT NULL THEN ' - Área: '
|
||||
WHEN area.descricao IS NOT NULL THEN 'Área: '
|
||||
ELSE ''
|
||||
END,
|
||||
COALESCE(area.descricao, ''),
|
||||
CASE
|
||||
WHEN microarea.descricao IS NOT NULL AND (area.numero_ine IS NOT NULL OR area.descricao IS NOT NULL) THEN ' - Microárea: '
|
||||
WHEN microarea.descricao IS NOT NULL THEN 'Microárea: '
|
||||
ELSE ''
|
||||
END,
|
||||
COALESCE(microarea.descricao, '')
|
||||
) AS descricao
|
||||
"),
|
||||
'microarea.id as microarea_id'
|
||||
])
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->groupBy('equipe.id')
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
}
|
||||
public static function getAtividades(){
|
||||
$params = self::getParams();
|
||||
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'atividade_tipo.id',
|
||||
'atividade_tipo.descricao'
|
||||
])
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->when(request()->equipe_id, function($query) {
|
||||
$query->where('atividade_coletiva.equipe_id', request()->equipe_id);
|
||||
})
|
||||
->groupBy('atividade_tipo.id',)
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPublicosAlvo(){
|
||||
$params = self::getParams();
|
||||
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'cadastro_publico_alvo.id',
|
||||
'cadastro_publico_alvo.descricao'
|
||||
])
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id' )
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->when(request()->equipe_id, function($query) {
|
||||
$query->where('atividade_coletiva.equipe_id', request()->equipe_id);
|
||||
})
|
||||
->when(request()->atividade_tipo, function($query) {
|
||||
$query->where('atividade_tipo.id', request()->atividade_tipo);
|
||||
})
|
||||
->groupBy('cadastro_publico_alvo.id',)
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static function getTemasSaude(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'cadastro_saude_tema.id',
|
||||
'cadastro_saude_tema.descricao'
|
||||
])
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id' )
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->when(request()->equipe_id, function($query) {
|
||||
$query->where('atividade_coletiva.equipe_id', request()->equipe_id);
|
||||
})
|
||||
->when(request()->atividade_tipo, function($query) {
|
||||
$query->where('atividade_tipo.id', request()->atividade_tipo);
|
||||
})
|
||||
->when(request()->publico_alvo_ids, function($query) {
|
||||
$query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids);
|
||||
})
|
||||
->groupBy('cadastro_saude_tema.id')
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
public static function getPraticasSaude(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'cadastro_saude_pratica.id',
|
||||
'cadastro_saude_pratica.descricao'
|
||||
])
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->when(request()->equipe_id, function($query) {
|
||||
$query->where('atividade_coletiva.equipe_id', request()->equipe_id);
|
||||
})
|
||||
->when(request()->atividade_tipo, function($query) {
|
||||
$query->where('atividade_tipo.id', request()->atividade_tipo);
|
||||
})
|
||||
->when(request()->publico_alvo_ids, function($query) {
|
||||
$query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids);
|
||||
})
|
||||
->when(request()->saude_tema_ids, function($query) {
|
||||
$query->whereIn('cadastro_saude_tema.id', request()->saude_tema_ids);
|
||||
})
|
||||
->groupBy('cadastro_saude_pratica.id')
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'descricao' => $item->descricao,
|
||||
])
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
public static function getProcedimentos(){
|
||||
$params = self::getParams();
|
||||
$itens = DB::table('atencao_basica_atividade_coletiva as atividade_coletiva')
|
||||
->select([
|
||||
'atividade_coletiva.id as atividade_coletiva_id',
|
||||
'sigtap_procedimento.id',
|
||||
'sigtap_procedimento.nome'
|
||||
])
|
||||
->join('atencao_basica_parametrizacao_equipe as equipe', 'equipe.id', 'atividade_coletiva.equipe_id')
|
||||
->join('cadastro_usuario as usuario', 'usuario.id', 'atividade_coletiva.usuario_id')
|
||||
->join('cadastro_unidade as unidade', 'unidade.id', 'equipe.unidade_id')
|
||||
->join('atencao_basica_cadastro_atividade_tipo as atividade_tipo', 'atividade_tipo.id', 'atividade_coletiva.atividade_tipo_id')
|
||||
->join('atencao_basica_cadastro_turno as turno', 'turno.id', 'atividade_coletiva.turno_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_area as area', 'area.id', 'equipe.area_id')
|
||||
->leftJoin('atencao_basica_parametrizacao_microarea as microarea', 'microarea.id', 'equipe.microarea_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_publico_alvo as publico_alvo', 'publico_alvo.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_publico_alvo as cadastro_publico_alvo', 'cadastro_publico_alvo.id', 'publico_alvo.publico_alvo_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_tema as saude_tema', 'saude_tema.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_tema as cadastro_saude_tema', 'cadastro_saude_tema.id', 'saude_tema.saude_tema_id')
|
||||
->Leftjoin('atencao_basica_atividade_coletiva_saude_pratica as saude_pratica', 'saude_pratica.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->Leftjoin('atencao_basica_cadastro_saude_pratica as cadastro_saude_pratica', 'cadastro_saude_pratica.id', 'saude_pratica.saude_pratica_id')
|
||||
->LeftJoin('atencao_basica_atividade_coletiva_procedimento as procedimento', 'procedimento.atividade_coletiva_id', 'atividade_coletiva.id')
|
||||
->leftJoin('sigtap.procedimento as sigtap_procedimento', 'sigtap_procedimento.id', 'procedimento.procedimento_id')
|
||||
->whereBetween('atividade_coletiva.data_cadastro', $params->periodo)
|
||||
->whereNotNull('procedimento.id')
|
||||
->when(request()->pse_id, function($query) {
|
||||
$query->where('atividade_coletiva.pse_id', request()->pse_id);
|
||||
})
|
||||
->when(request()->turno_id, function($query) {
|
||||
$query->where('atividade_coletiva.turno_id', request()->turno_id);
|
||||
})
|
||||
->when(request()->local_atendimento_id, function($query) {
|
||||
$query->where('unidade.id', request()->local_atendimento_id);
|
||||
})
|
||||
->when(request()->profissional_id, function($query) {
|
||||
$query->where('usuario.id', request()->profissional_id);
|
||||
})
|
||||
->when(request()->ocupacao_id, function($query) {
|
||||
$query->where('usuario_ocupacao_id', request()->ocupacao_id);
|
||||
})
|
||||
->when(request()->equipe_id, function($query) {
|
||||
$query->where('atividade_coletiva.equipe_id', request()->equipe_id);
|
||||
})
|
||||
->when(request()->atividade_tipo, function($query) {
|
||||
$query->where('atividade_tipo.id', request()->atividade_tipo);
|
||||
})
|
||||
->when(request()->publico_alvo_ids, function($query) {
|
||||
$query->whereIn('cadastro_publico_alvo.id', request()->publico_alvo_ids);
|
||||
})
|
||||
->when(request()->saude_tema_ids, function($query) {
|
||||
$query->whereIn('cadastro_saude_tema.id', request()->saude_tema_ids);
|
||||
})
|
||||
->when(request()->pratica_saude_ids, function($query) {
|
||||
$query->whereIn('cadastro_saude_pratica.id', request()->pratica_saude_ids);
|
||||
})
|
||||
->groupBy('sigtap_procedimento.id')
|
||||
->get();
|
||||
|
||||
return (object) [
|
||||
'itens' => $itens->map(fn ($item) => (object) [
|
||||
'id' => $item->id,
|
||||
'nome' => $item->nome,
|
||||
'atividade_coletiva_id' => $item->atividade_coletiva_id
|
||||
])
|
||||
];
|
||||
|
||||
}
|
||||
public static function getParams(){
|
||||
|
||||
return (object) [
|
||||
'periodo' => [
|
||||
'start' => Carbon::createFromFormat('d/m/Y', request()->get('periodo')['data_inicial'])->setTime(0, 0, 0),
|
||||
'end' => Carbon::createFromFormat('d/m/Y', request()->get('periodo')['data_final'])->setTime(23, 59, 59)
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public static function getPessoasAvaliadas($atividade_coletiva_id){
|
||||
return DB::table('atencao_basica_atividade_coletiva_participante')
|
||||
->where('atividade_coletiva_id', $atividade_coletiva_id)
|
||||
->count('paciente_id');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user