'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); } }