'boolean', 'outro_municipio' => 'boolean', 'provisorio' => 'boolean', 'sigilo' => 'boolean', 'senha_supervisor' => 'boolean', 'mapa_agrupado' => 'boolean', 'valor_sigtap' => 'boolean', 'exige_procedimento' => 'boolean', 'is_ppi' => 'boolean', 'permite_repeticao' => 'boolean', 'exigir_peso_altura_circunferencia' => 'boolean', ]; protected $fillable = [ 'tipo_id', 'grupo_tipo_id', 'codigo', 'nome', 'ativo', 'observacao', 'sigla_exame', 'prazo_entrega', 'validade', 'valor', 'quantidade_maxima', 'outro_municipio', 'provisorio', 'sigilo', 'senha_supervisor', 'ultimo_resultado', 'resultado', 'mapa_agrupado', 'posicao_mapa', 'valor_sigtap', 'exige_procedimento', 'sexo_id', 'quantidade_reagente', 'regulacao_tipo_id', 'is_ppi', 'valor_ppi', 'permite_repeticao', 'exigir_peso_altura_circunferencia', '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', 'deleted_at', 'deleted_lotacao_id', 'deleted_centro_custo_id', ]; protected $with = [ 'tipo', ]; protected $appends = [ 'procedimento', 'is_regulado', ]; public function tipo() { return $this->belongsTo(ExameTipo::class); } public function grupo() { return $this->belongsTo(Grupo::class, 'grupo_tipo_id'); } public function grupoTipo() { return $this->belongsTo(GrupoTipo::class); } public function regulacaoTipo() { return $this->belongsTo(RegulacaoTipo::class); } public function exameLaboratorialCotasAnual() { return $this->hasMany(CotaExamePeriodo::class); } public function exameComposicao() { return $this->hasMany(ExameComposicao::class); } public function exameImagemFechamentoFaturamento() { return $this->hasMany(Faturamento::class); } public function atendimentoSoapResultadoExame() { return $this->hasMany(AtendimentoSoapResultadoExame::class); } public function pedidoExameItem() { return $this->hasMany(PedidoExameItem::class); } public function agendamentoExameBloqueado() { return $this->hasMany(AgendamentoExameBloqueado::class); } public function atendimentoIndividualOutroExame() { return $this->hasMany(AtendimentoIndividualOutroExame::class); } public function atendimentoSoapSolicitacaoExameItem() { return $this->hasMany(AtendimentoSoapSolicitacaoExameItem::class); } public function kitExameItem() { return $this->hasMany(KitExameItem::class); } public function cotaExame() { return $this->hasMany(CotaExame::class); } public function exameTextoPronto() { return $this->hasMany(ExameTextoPronto::class); } public function agendamentoExameLaboratorial() { return $this->hasMany(AgendamentoExameLaboratorial::class); } public function agendamentoExameImagem() { return $this->hasMany(AgendamentoExameImagem::class); } public function AgendamentoHistoricoExclusao() { return $this->hasMany(AgendamentoHistoricoExclusao::class); } public function regulacaoParametrizacoesPrestadoresExternos() { return $this->belongsToMany( ParametrizacaoPrestadorExterno::class, 'regulacao_parametrizacao_prestador_externo_exame', 'exame_id', 'prestador_externo_id' ) ->using(ParametrizacaoPrestadorExternoExame::class) ->as('pivotPrestadorExame') ->withPivot(['observacoes', 'ativo']) ->withTimestamps(); } public function regulacaoParametrizacoesPrestadoresInternos() { return $this->belongsToMany( ParametrizacaoPrestadorInterno::class, 'regulacao_parametrizacao_prestador_interno_exame', 'exame_id', 'prestador_interno_id' ) ->using(ParametrizacaoPrestadorInternoExame::class) ->as('pivotPrestadorExame') ->withPivot(['observacoes', 'ativo']) ->withTimestamps(); } public function regulacaoParametrizacoesReguladoresExames() { return $this->belongsToMany( ParametrizacaoRegulador::class, 'regulacao_parametrizacao_regulador_exame', 'exame_id', 'regulador_id' ) ->using(ParametrizacaoReguladorExame::class) ->as('pivotReguladorExame') ->withPivot(['ativo']) ->withTimestamps(); } public function regulacaoParametrizacoesSolicitantesReguladores() { return $this->belongsToMany( ParametrizacaoSolicitanteRegulador::class, 'regulacao_parametrizacao_solicitante_regulador_exame', 'exame_id', 'solicitante_regulador_id' ) ->using(ParametrizacaoSolicitanteReguladorExame::class) ->as('pivotSolicitanteReguladorExame') ->withTimestamps(); } public function getProcedimentoAttribute() { if (!$this->codigo) { return null; } return Procedimento::where('codigo', $this->codigo) ->orderByDesc('competencia_id') ->first(); } public function getIsReguladoAttribute() { return !is_null($this->regulacao_tipo_id); } public function getIsAllowedToDeleteAttribute() { return $this->hasNoOne([ 'exameLaboratorialCotasAnual', 'exameComposicao', 'exameImagemFechamentoFaturamento', 'atendimentoSoapResultadoExame', 'pedidoExameItem', 'agendamentoExameBloqueado', 'atendimentoIndividualOutroExame', 'atendimentoSoapSolicitacaoExameItem', 'kitExameItem', 'cotaExame', 'exameTextoPronto', 'agendamentoExameLaboratorial', 'agendamentoExameImagem', 'regulacaoParametrizacoesPrestadoresExternos', 'regulacaoParametrizacoesPrestadoresInternos', 'regulacaoParametrizacoesReguladoresExames', 'regulacaoParametrizacoesSolicitantesReguladores', ]); } public function procedimento() { return $this->belongsTo(Procedimento::class, 'codigo', 'codigo')->whereNotNull('codigo'); } public function webServiceLaboratorioClienteExame() { return $this->hasMany(WebServiceLaboratorioClienteExame::class, 'conectasus_exame_id'); } }