where('visita_domiciliar_id', $value->id) ->whereNotIn('motivo_visita_id', [ MotivoVisita::CADASTRAMENTO_ATUALIZACAO, MotivoVisita::ACAO_EDUCATIVA, MotivoVisita::IMOVEL_COM_FOCO, MotivoVisita::ACAO_MECANICA, MotivoVisita::TRATAMENTO_FOCAL, MotivoVisita::CONVITE_PARA_ATIVIDADES_COLETIVAS_CAMPANHA_DE_SAUDE, MotivoVisita::ORIENTACAO_PREVENCAO, MotivoVisita::OUTROS, ]) ->get(); if ($motivoVisita->isNotEmpty()) { return self::getTipoImovelValido($value->imovel_tipo_codigo_esus) ? true : false; } $motivoVisita = DB::table('atencao_basica_visita_domiciliar_motivo_visita') ->where('visita_domiciliar_id', $value->id) ->whereIn('motivo_visita_id', [ MotivoVisita::GESTANTE, MotivoVisita::PUERPERA, ]) ->get(); if ($motivoVisita->isNotEmpty()) { return $value->paciente_sexo_id === Sexo::FEMININO ? true : false; } return true; } public function message() { return 'Motivo inválido.'; } private static function getTipoImovelValido($tipoImovelId) { return $tipoImovelId == ImovelTipo::DOMICILIO || $tipoImovelId == ImovelTipo::ABRIGO || $tipoImovelId == ImovelTipo::INSTITUICAO_LONGA_PERMANENCIA_IDOSOS || $tipoImovelId == ImovelTipo::UNIDADE_PRISIONAL || $tipoImovelId == ImovelTipo::UNIDADE_MEDIDA_SOCIO_EDUCATIVA || $tipoImovelId == ImovelTipo::DELEGACIA || $tipoImovelId == ImovelTipo::OUTROS; } }