init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,427 @@
<?php
namespace App\Models\AtencaoBasica\CadastroIndividual;
use App\Models\AtencaoBasica\CadastroIndividual\AcompanhamentoInfantil;
use App\Models\AtencaoBasica\CadastroIndividual\AlimentacaoDiaria;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualAcompanhamentoInfantil;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualDeficiente;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualDoencaCardiaca;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualDoencaRespiratoria;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualHigienePessoal;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualOrigemAlimentacao;
use App\Models\AtencaoBasica\CadastroIndividual\CadastroIndividualProblemasRins;
use App\Models\AtencaoBasica\CadastroIndividual\ComunidadeTradicional;
use App\Models\AtencaoBasica\CadastroIndividual\DoencaCardiaca;
use App\Models\AtencaoBasica\CadastroIndividual\DoencaRespiratoria;
use App\Models\AtencaoBasica\CadastroIndividual\HigienePessoal;
use App\Models\AtencaoBasica\CadastroIndividual\OrigemAlimentacao;
use App\Models\AtencaoBasica\CadastroIndividual\ProblemasRins;
use App\Models\AtencaoBasica\CadastroIndividual\SituacaoRua;
use App\Models\AtencaoBasica\Parametrizacao\Equipe;
use App\Models\Cadastro\SujeitoAtencao\Cidadao;
use App\Models\Cadastro\SujeitoAtencao\DeficienciaBase;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Models\Cadastro\SujeitoAtencao\Usuario;
use App\Models\Model;
use App\Models\Sigtap\Ocupacao;
class CadastroIndividual extends Model
{
protected $table = 'atencao_basica_cadastro_individual';
protected $casts = [
'responsavel' => 'boolean',
'ativo' => 'boolean',
'deficiente' => 'boolean',
'frequenta_escola_creche' => 'boolean',
'frequenta_cuidador_tradicional' => 'boolean',
'participa_grupo_comunitario' => 'boolean',
'plano_saude' => 'boolean',
'comunidade_tradicional' => 'boolean',
'orientacao_sexual' => 'boolean',
'identidade_genero' => 'boolean',
'recusa_cadastro' => 'boolean',
'gestante' => 'boolean',
'fumante' => 'boolean',
'usa_alcool' => 'boolean',
'outras_drogas' => 'boolean',
'hipertensao' => 'boolean',
'diabetes' => 'boolean',
'avc_derrame' => 'boolean',
'infarto' => 'boolean',
'hanseniase' => 'boolean',
'tuberculose' => 'boolean',
'cancer' => 'boolean',
'hanseniase' => 'boolean',
'fibromialgia' => 'boolean',
'transtorno_espectro_autista' => 'boolean',
'internacao' => 'boolean',
'doenca_cardiaca' => 'boolean',
'problemas_rins' => 'boolean',
'doenca_respiratoria' => 'boolean',
'tratamento_psiquiatrico' => 'boolean',
'acamado' => 'boolean',
'domiciliado' => 'boolean',
'plantas_medicinais' => 'boolean',
'praticas_integrativas' => 'boolean',
'outra_instituicao' => 'boolean',
'recebe_beneficio' => 'boolean',
'referencia_familiar' => 'boolean',
'visita_familiar' => 'boolean',
'higiene_pessoal' => 'boolean',
'tratamento_saude_mental' => 'boolean',
'alimentos_acabaram' => 'boolean',
'comeu_alguns_alimentos' => 'boolean',
'data_atualizacao_tria' => 'date',
];
protected $fillable = [
'id',
'usuario_exportacao_id',
'data_hora_exportacao',
'paciente_id',
'usuario_id',
'equipe_id',
'usuario_ocupacao_id',
'data_usuario_responsavel',
'responsavel',
'ativo',
'responsavel_cidadao_id',
'profissao',
'renda_mensal',
'parentesco_responsavel_id',
'ocupacao_id',
'curso_id',
'frequenta_escola_creche',
'situacao_mercado_trabalho_id',
'frequenta_cuidador_tradicional',
'participa_grupo_comunitario',
'plano_saude',
'comunidade_tradicional',
'comunidade_tradicional_id',
'orientacao_sexual',
'orientacao_sexual_id',
'identidade_genero',
'deficiente',
'saida_cidadao_id',
'motivo_saida_data',
'recusa_cadastro',
'gestante',
'maternidade_referencia',
'peso_id',
'fumante',
'usa_alcool',
'outras_drogas',
'hipertensao',
'diabetes',
'avc_derrame',
'infarto',
'hanseniase',
'tuberculose',
'cancer',
'fibromialgia',
'transtorno_espectro_autista',
'internacao',
'internacao_motivo',
'doenca_cardiaca',
'problemas_rins',
'doenca_respiratoria',
'tratamento_saude_mental',
'acamado',
'domiciliado',
'plantas_medicinais',
'plantas_medicinais_quais',
'praticas_integrativas',
'outras_condicoes_primaria',
'outras_condicoes_secundaria',
'outras_condicoes_terciaria',
'situacao_rua_id',
'outra_instituicao',
'outra_instituicao_quais',
'recebe_beneficio',
'referencia_familiar',
'visita_familiar',
'parentesco',
'alimentacao_diaria_id',
'higiene_pessoal',
'alimentos_acabaram',
'comeu_alguns_alimentos',
'data_atualizacao_tria',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
'deleted_at',
'deleted_lotacao_id',
'deleted_centro_custo_id',
];
public function usuario()
{
return $this->belongsTo(Usuario::class);
}
public function usuarioExportacao()
{
return $this->belongsTo(Usuario::class);
}
public function paciente()
{
return $this->belongsTo(Paciente::class);
}
public function equipe()
{
return $this->belongsTo(Equipe::class);
}
public function ocupacao()
{
return $this->belongsTo(Ocupacao::class);
}
public function usuarioOcupacao()
{
return $this->belongsTo(Ocupacao::class);
}
public function parentescoResponsavel()
{
return $this->belongsTo(Parentesco::class);
}
public function peso()
{
return $this->belongsTo(Peso::class);
}
public function situacaoRua()
{
return $this->belongsTo(SituacaoRua::class);
}
public function alimentacaoDiaria()
{
return $this->belongsTo(AlimentacaoDiaria::class);
}
public function curso()
{
return $this->belongsTo(Curso::class);
}
public function saidaCidadao()
{
return $this->belongsTo(SaidaCidadao::class);
}
public function responsavelCidadao()
{
return $this->belongsTo(Cidadao::class);
}
public function orientacaoSexual()
{
return $this->belongsTo(OrientacaoSexual::class);
}
public function situacaoMercadoTrabalho()
{
return $this->belongsTo(SituacaoMercadoTrabalho::class);
}
public function comunidadeTradicionalQual()
{
return $this->belongsTo(ComunidadeTradicional::class, 'comunidade_tradicional_id');
}
public function acompanhamentoInfantil()
{
return $this->belongsToMany(AcompanhamentoInfantil::class, 'atencao_basica_cadastro_individual_acompanhamento_infantil')
->using(CadastroIndividualAcompanhamentoInfantil::class)
->as('CadastroIndividualAcompanhamentoInfantil')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'acompanhamento_infantil_id',
)
->select('atencao_basica_cadastro_acompanhamento_infantil.id')
->withTimestamps();
}
public function deficiencia()
{
return $this->belongsToMany(DeficienciaBase::class, 'atencao_basica_cadastro_individual_deficiencia_base')
->using(CadastroIndividualDeficiente::class)
->as('CadastroIndividualDeficiente')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'deficiencia_base_id',
)
->select('cadastro_deficiencia_base.id')
->withTimestamps();
}
public function doencaCardiaca()
{
return $this->belongsToMany(DoencaCardiaca::class, 'atencao_basica_cadastro_individual_doenca_cardiaca')
->using(CadastroIndividualDoencaCardiaca::class)
->as('CadastroIndividualDoencaCardiaca')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'doenca_cardiaca_id',
)
->select(
'atencao_basica_cadastro_doenca_cardiaca.id',
'atencao_basica_cadastro_doenca_cardiaca.descricao'
)
->withTimestamps();
}
public function doencaRespiratoria()
{
return $this->belongsToMany(DoencaRespiratoria::class, 'atencao_basica_cadastro_individual_doenca_respiratoria')
->using(CadastroIndividualDoencaRespiratoria::class)
->as('CadastroIndividualDoencaRespiratoria')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'doenca_respiratoria_id',
)
->select(
'atencao_basica_cadastro_doenca_respiratoria.id',
'atencao_basica_cadastro_doenca_respiratoria.descricao'
)
->withTimestamps();
}
public function problemasRins()
{
return $this->belongsToMany(ProblemasRins::class, 'atencao_basica_cadastro_individual_problemas_rins')
->using(CadastroIndividualProblemasRins::class)
->as('CadastroIndividualProblemasRins')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'problemas_rins_id',
)
->select(
'atencao_basica_cadastro_problemas_rins.id',
'atencao_basica_cadastro_problemas_rins.descricao'
)
->withTimestamps();
}
public function origemAlimentacao()
{
return $this->belongsToMany(OrigemAlimentacao::class, 'atencao_basica_cadastro_individual_origem_alimentacao')
->using(CadastroIndividualOrigemAlimentacao::class)
->as('CadastroIndividualOrigemAlimentacao')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'origem_alimentacao_id',
)
->select('atencao_basica_cadastro_origem_alimentacao.id')
->withTimestamps();
}
public function higienePessoal()
{
return $this->belongsToMany(HigienePessoal::class, 'atencao_basica_cadastro_individual_higiene_pessoal')
->using(CadastroIndividualHigienePessoal::class)
->as('CadastroIndividualHigienePessoal')
->withPivot(
'created_lotacao_id',
'created_centro_custo_id',
'cadastro_individual_id',
'higiene_pessoal_id',
)
->select('atencao_basica_cadastro_higiene_pessoal.id')
->withTimestamps();
}
public function scopeValidaEsus($query)
{
return $query
->where('ativo', true)
->where(function ($query) {
$query->where(function ($query){
$query->where('internacao', true)
->whereNotNull('internacao_motivo');
})
->orWhere('internacao', false)
->orWhereNull('internacao');
})
->where(function ($query) {
$query->where(function ($query) {
$query->where('doenca_cardiaca', true)
->whereHas('doencaCardiaca');
})
->orWhere('doenca_cardiaca', false)
->orWhereNull('doenca_cardiaca');
})
->where(function ($query) {
$query->where(function ($query) {
$query->where('doenca_respiratoria', true)
->whereHas('doencaRespiratoria');
})
->orWhere('doenca_respiratoria', false)
->orWhereNull('doenca_respiratoria');
})
->where(function ($query) {
$query->where(function ($query) {
$query->where('problemas_rins', true)
->whereHas('problemasRins');
})
->orWhere('problemas_rins', false)
->orWhereNull('problemas_rins');
})
->where(function ($query) {
$query->where(function ($q) {
$q->whereNotNull('situacao_rua_id')
->where(function ($qq) {
$qq->where('visita_familiar', true)
->whereNotNull('parentesco');
});
})
->orWhere(function ($q) {
$q->where('situacao_rua_id', null)
->orWhere('visita_familiar', false);
});
})
->where(function ($query) {
$query->where(function ($query) {
$query->where('deficiente', true)
->whereHas('deficiencia');
})
->orWhere('deficiente', false)
->orWhereNull('deficiente');
})
->where(function ($query) {
$query->where(function ($query) {
$query->where(function ($query) {
$query->where("{$this->table}.recusa_cadastro", false)
->orWhereNull("{$this->table}.recusa_cadastro");
})->whereHas('paciente.cidadao', function ($query) {
$query->dadosSemRecusaCadastro();
});
})->orWhere("{$this->table}.recusa_cadastro", true);
});
}
}