This commit is contained in:
211
api/app/Models/Cadastro/Especialidade.php
Normal file
211
api/app/Models/Cadastro/Especialidade.php
Normal file
@@ -0,0 +1,211 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Cadastro;
|
||||
|
||||
use App\Models\Ambulatorio\Jornada;
|
||||
use App\Models\Ambulatorio\ParametrizacaoInfraestruturaEspecialidade;
|
||||
use App\Models\Ambulatorio\ParametrizacaoInfraestruturaSms;
|
||||
use App\Models\Ambulatorio\ParametrizacaoInfraestruturaSmsEspecialidade;
|
||||
use App\Models\Ambulatorio\ProblemaCondicaoSituacao;
|
||||
use App\Models\Ambulatorio\SaudeBucalVigilancia;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\CondicaoAvaliada;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\Conduta;
|
||||
use App\Models\AtencaoBasica\AtendimentoOdontologico\TipoConsulta;
|
||||
use App\Models\Geral\Ciap;
|
||||
use App\Models\Model;
|
||||
use App\Models\Raas\MotivoSaidaPermanencia;
|
||||
use App\Models\Regulacao\ParametrizacaoDataDesejadaEspecialidade;
|
||||
use App\Models\Sigtap\Cid;
|
||||
use App\Models\Sigtap\Ocupacao;
|
||||
use App\Models\Sigtap\Procedimento;
|
||||
|
||||
class Especialidade extends Model
|
||||
{
|
||||
protected $table = 'cadastro_especialidade';
|
||||
|
||||
protected $casts = [
|
||||
'ativo' => 'boolean',
|
||||
'encaminhamento' => 'boolean',
|
||||
'is_regulado' => 'boolean',
|
||||
'permite_agendamento_gestante' => 'boolean',
|
||||
'permite_agendamento_mesmo_dia' => 'boolean',
|
||||
'permite_agendamento_nao_municipe' => 'boolean',
|
||||
'permite_fechamento_sem_procedimento' => 'boolean',
|
||||
'precisa_informar_conclusao_tratamento' => 'boolean',
|
||||
'exigir_peso_altura_circunferencia' => 'boolean',
|
||||
'permite_integracao_conectasus_cidadao' => 'boolean',
|
||||
'permite_integracao_aplicativo_feridas' => 'boolean',
|
||||
'tratamento' => 'boolean',
|
||||
'is_ppi' => 'boolean',
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'ativo',
|
||||
'encaminhamento',
|
||||
'idade_maxima',
|
||||
'idade_minima',
|
||||
'is_regulado',
|
||||
'limite_consulta',
|
||||
'limite_consulta_mes',
|
||||
'mensagem_protocolo_agendamento',
|
||||
'nome',
|
||||
'ocupacao_id',
|
||||
'permite_agendamento_gestante',
|
||||
'permite_agendamento_mesmo_dia',
|
||||
'permite_agendamento_nao_municipe',
|
||||
'permite_fechamento_sem_procedimento',
|
||||
'precisa_informar_conclusao_tratamento',
|
||||
'exigir_peso_altura_circunferencia',
|
||||
'permite_integracao_conectasus_cidadao',
|
||||
'permite_integracao_aplicativo_feridas',
|
||||
'procedimento_grupo_codigo',
|
||||
'regulacao_tipo_id',
|
||||
'sexo_id',
|
||||
'tratamento',
|
||||
'atencao_basica_procedimento_padrao_codigo',
|
||||
'atencao_basica_motivo_saida_permanencia_id',
|
||||
'atencao_basica_classificacao_codigo',
|
||||
'atencao_basica_numero_autorizacao',
|
||||
'atencao_basica_problema_condicao_situacao_id',
|
||||
'atencao_basica_problema_condicao_ciap_id',
|
||||
'atencao_basica_problema_condicao_cid_id',
|
||||
'atencao_basica_odontologico_consulta_tipo_id',
|
||||
'atencao_basica_odontologico_vigilancia_id',
|
||||
'atencao_basica_odontologico_conduta_id',
|
||||
'is_ppi',
|
||||
'valor_ppi',
|
||||
'limite_ocorrencias_paciente',
|
||||
'periodo_monitoramento',
|
||||
'tempo_liberacao',
|
||||
'tempo_medio_previsto_atendimento_dias',
|
||||
];
|
||||
|
||||
protected $hidden = [
|
||||
'created_at',
|
||||
'created_lotacao_id',
|
||||
'created_centro_custo_id',
|
||||
'updated_at',
|
||||
'updated_lotacao_id',
|
||||
'updated_centro_custo_id',
|
||||
];
|
||||
|
||||
public function ocupacao()
|
||||
{
|
||||
return $this->belongsTo(Ocupacao::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaMotivoSaidaPermanencia()
|
||||
{
|
||||
return $this->belongsTo(MotivoSaidaPermanencia::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaProblemaCondicaoSituacao()
|
||||
{
|
||||
return $this->belongsTo(ProblemaCondicaoSituacao::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaProblemaCondicaoCiap()
|
||||
{
|
||||
return $this->belongsTo(Ciap::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaProblemaCondicaoCid()
|
||||
{
|
||||
return $this->belongsTo(Cid::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaOdontologicoConsultaTipo()
|
||||
{
|
||||
return $this->belongsTo(TipoConsulta::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaOdontologicoVigilancia()
|
||||
{
|
||||
return $this->belongsTo(SaudeBucalVigilancia::class);
|
||||
}
|
||||
|
||||
public function atencaoBasicaOdontologicoConduta()
|
||||
{
|
||||
return $this->belongsTo(Conduta::class);
|
||||
}
|
||||
|
||||
public function condutas()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
Conduta::class,
|
||||
'cadastro_especialidade_conduta',
|
||||
'especialidade_id',
|
||||
'conduta_id'
|
||||
)
|
||||
->using(EspecialidadeConduta::class)
|
||||
->as('especialidadeConduta')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function condicoesAvaliadas()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
CondicaoAvaliada::class,
|
||||
'cadastro_especialidade_condicao_avaliada',
|
||||
'especialidade_id',
|
||||
'condicao_avaliada_id'
|
||||
)
|
||||
->using(EspecialidadeCondicaoAvaliada::class)
|
||||
->as('especialidadeCondicaoAvaliada')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function dataDesejadaEspecialidades()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
Especialidade::class,
|
||||
'regulacao_parametrizacao_data_desejada_especialidade',
|
||||
'parametrizacao_id',
|
||||
'especialidade_id'
|
||||
)
|
||||
->using(ParametrizacaoDataDesejadaEspecialidade::class)
|
||||
->as('dataDesejadaEspecialidade')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function ambulatorioParametrizacoesSms()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
ParametrizacaoInfraestruturaSms::class,
|
||||
'ambulatorio_parametrizacao_infraestrutura_sms_especialidade',
|
||||
'especialidade_id',
|
||||
'parametrizacao_infraestrutura_sms_id'
|
||||
)
|
||||
->using(ParametrizacaoInfraestruturaSmsEspecialidade::class)
|
||||
->as('parametrizacaoInfraestruturaSmsEspecialidade')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function ambulatorioParametrizacoesInfraestruturaEspecialidade()
|
||||
{
|
||||
return $this->hasMany(ParametrizacaoInfraestruturaEspecialidade::class);
|
||||
}
|
||||
|
||||
public function ambulatorioJornadas()
|
||||
{
|
||||
return $this->hasMany(Jornada::class);
|
||||
}
|
||||
|
||||
public function getProcedimentoGrupoAttribute()
|
||||
{
|
||||
return is_null($this->procedimento_grupo_codigo)
|
||||
? null
|
||||
: Procedimento::where('codigo', $this->procedimento_grupo_codigo)
|
||||
->orderByDesc('competencia_id')
|
||||
->first();
|
||||
}
|
||||
|
||||
public function getAtencaoBasicaProcedimentoPadraoAttribute()
|
||||
{
|
||||
return is_null($this->atencao_basica_procedimento_padrao_codigo)
|
||||
? null
|
||||
: Procedimento::where('codigo', $this->atencao_basica_procedimento_padrao_codigo)
|
||||
->orderByDesc('competencia_id')
|
||||
->first();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user