This commit is contained in:
190
api/app/Models/Ambulatorio/Atendimento.php
Normal file
190
api/app/Models/Ambulatorio/Atendimento.php
Normal file
@@ -0,0 +1,190 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Ambulatorio;
|
||||
|
||||
use App\Enums\Ambulatorio\DemandaTipo;
|
||||
use App\Models\AtencaoBasica\AtendimentoIndividual\TipoAtendimento;
|
||||
use App\Models\Cadastro\Especialidade;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Usuario;
|
||||
use App\Models\Model;
|
||||
use App\Models\PainelSenha\Fila;
|
||||
use App\Models\Sigtap\Ocupacao;
|
||||
|
||||
class Atendimento extends Model
|
||||
{
|
||||
protected $table = 'ambulatorio_atendimento';
|
||||
|
||||
protected $casts = [
|
||||
'finalizado_em' => 'datetime:d/m/Y H:i:s',
|
||||
'pos_consulta' => 'boolean',
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'atendimento_tipo_id',
|
||||
'fila_id',
|
||||
'paciente_id',
|
||||
'agendamento_id',
|
||||
'demanda_espontanea_id',
|
||||
'responsavel_atual_usuario_id',
|
||||
'responsavel_atual_ocupacao_id',
|
||||
'responsavel_atual_especialidade_id',
|
||||
'responsavel_encaminhamento_atual_lotacao_id',
|
||||
'finalizado_em',
|
||||
'finalizado_lotacao_id',
|
||||
'pos_consulta',
|
||||
'tempo_atendimento'
|
||||
];
|
||||
|
||||
protected $hidden = [
|
||||
'created_at',
|
||||
'created_lotacao_id',
|
||||
'created_centro_custo_id',
|
||||
'updated_at',
|
||||
'updated_lotacao_id',
|
||||
'updated_centro_custo_id',
|
||||
];
|
||||
|
||||
public function fila()
|
||||
{
|
||||
return $this->belongsTo(Fila::class);
|
||||
}
|
||||
|
||||
public function agendamento()
|
||||
{
|
||||
return $this->belongsTo(Agendamento::class);
|
||||
}
|
||||
|
||||
public function demandaEspontanea()
|
||||
{
|
||||
return $this->belongsTo(DemandaEspontanea::class);
|
||||
}
|
||||
|
||||
public function responsavelAtualUsuario()
|
||||
{
|
||||
return $this->belongsTo(Usuario::class);
|
||||
}
|
||||
|
||||
public function responsavelAtualOcupacao()
|
||||
{
|
||||
return $this->belongsTo(Ocupacao::class);
|
||||
}
|
||||
|
||||
public function responsavelAtualEspecialidade()
|
||||
{
|
||||
return $this->belongsTo(Especialidade::class);
|
||||
}
|
||||
|
||||
public function responsavelEncaminhamentoAtualLotacao()
|
||||
{
|
||||
return $this->belongsTo(Lotacao::class);
|
||||
}
|
||||
|
||||
public function finalizadoLotacao()
|
||||
{
|
||||
return $this->belongsTo(Lotacao::class);
|
||||
}
|
||||
|
||||
public function servicos()
|
||||
{
|
||||
return $this->belongsToMany(Servico::class, 'ambulatorio_atendimento_servico')
|
||||
->using(AtendimentoServico::class)
|
||||
->as('atendimentoServico')
|
||||
->withTimestamps();
|
||||
}
|
||||
|
||||
public function preAtendimento()
|
||||
{
|
||||
return $this->hasOne(AtendimentoPreAtendimento::class);
|
||||
}
|
||||
|
||||
public function raas()
|
||||
{
|
||||
return $this->hasOne(AtendimentoRaas::class);
|
||||
}
|
||||
|
||||
public function soaps()
|
||||
{
|
||||
return $this->hasMany(AtendimentoSoap::class);
|
||||
}
|
||||
|
||||
public function posConsultas()
|
||||
{
|
||||
return $this->hasMany(AtendimentoPosConsulta::class);
|
||||
}
|
||||
|
||||
public function antropometrias()
|
||||
{
|
||||
return $this->hasMany(AtendimentoAntropometria::class);
|
||||
}
|
||||
|
||||
public function sinaisVitais()
|
||||
{
|
||||
return $this->hasMany(AtendimentoSinalVital::class);
|
||||
}
|
||||
|
||||
public function glicemiasCapilares()
|
||||
{
|
||||
return $this->hasMany(AtendimentoGlicemiaCapilar::class);
|
||||
}
|
||||
|
||||
public function procedimentos()
|
||||
{
|
||||
return $this->hasMany(AtendimentoProcedimento::class);
|
||||
}
|
||||
|
||||
public function declaracoesComparecimento()
|
||||
{
|
||||
return $this->hasMany(AtendimentoDeclaracaoComparecimento::class);
|
||||
}
|
||||
|
||||
public function getFinalizadoAttribute()
|
||||
{
|
||||
return !is_null($this->finalizado_em);
|
||||
}
|
||||
|
||||
public function getDemandaTipoAttribute()
|
||||
{
|
||||
return is_null($this->agendamento_id) ? DemandaTipo::ESPONTANEA : DemandaTipo::AGENDADA;
|
||||
}
|
||||
|
||||
public function getIsDemandaEspontaneaAttribute()
|
||||
{
|
||||
return $this->demanda_tipo === DemandaTipo::ESPONTANEA;
|
||||
}
|
||||
|
||||
public function getPacienteAttribute()
|
||||
{
|
||||
return ($this->agendamento ?? $this->demandaEspontanea)->paciente;
|
||||
}
|
||||
|
||||
public function getOcupacaoAttribute()
|
||||
{
|
||||
return $this->responsavelAtualOcupacao ?? ($this->agendamento->jornada->lotacao ?? $this->demandaEspontanea)->ocupacao;
|
||||
}
|
||||
|
||||
public function getEspecialidadeAttribute()
|
||||
{
|
||||
return $this->responsavelAtualEspecialidade ?? ($this->agendamento->jornada ?? $this->demandaEspontanea)->especialidade;
|
||||
}
|
||||
|
||||
public function getUsuarioAttribute()
|
||||
{
|
||||
return $this->responsavelAtualUsuario ?? ($this->agendamento->jornada->lotacao ?? $this->demandaEspontanea)->usuario;
|
||||
}
|
||||
|
||||
public function getJornadaAttribute()
|
||||
{
|
||||
return $this->demandaEspontanea->jornada;
|
||||
}
|
||||
|
||||
public function getInfraestruturaAttribute()
|
||||
{
|
||||
return ($this->agendamento->jornada->lotacao ?? $this->demandaEspontanea->createdLotacao)->infraestrutura;
|
||||
}
|
||||
|
||||
public function atendimentoTipo()
|
||||
{
|
||||
return $this->belongsTo(TipoAtendimento::class);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user