428 lines
14 KiB
PHP
428 lines
14 KiB
PHP
<?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);
|
|
});
|
|
}
|
|
}
|