Duvida---estou com dificuldade em verificar dados de um atributo da tabela
18/11/2011
0
estou a fazer uma aplicacao para um marcacao de consultas para um hospital onde tenho as tabelas médicos(id,nome,apelido), pacientes(id,nome,apelido,datanascimento,sexo) e consultas(id,medico_id,paciente_id).
Eu consigo inserir pacientes, médicos e marcar consultas para pacientes com os médicos.
O problema é que eu queria que antes que um médico efectua-se uma consulta ele pudesse verificar todas consultas feitas para um determinado paciente. E não tenho ideia de como fazer isso os controllers e models da classe consulta que é a principal estão abaixo:
class ConsultasController < ApplicationController
before_filter :authorize
layout suphc
#END:layout
# GET /consultas
# GET /consultas.xml
def index
@user = User.find(session[:user_id])
if @user.medico
@consultas = Consulta.find_all_by_medico_id(@user.medico.id)
end
if @consultas == nil and @user.paciente
@consultas = Consulta.find_all_by_paciente_id(@user.paciente.id)
end
if @consultas == nil and @user.auxadmin
@consultas = Consulta.all
end
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @consultas }
end
end
def historico
end
# GET /consultas/1
# GET /consultas/1.xml
def show
@consulta = Consulta.find(params[:id])
@user = User.find_by_id(session[:user_id])
@consulta.user = @user
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @consulta }
end
end
# GET /consultas/new
# GET /consultas/new.xml
def new
@consulta = Consulta.new
@user = User.find(session[:user_id])
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @consulta }
end
end
# GET /consultas/1/edit
def edit
@consulta = Consulta.find(params[:id])
@user = User.find_by_id(session[:user_id])
@consulta.user = @user
end
# POST /consultas
# POST /consultas.xml
def create
@consulta = Consulta.new(params[:consulta])
@user = User.find_by_id(session[:user_id])
@consulta.user = @user
# se o utilizador for paciente, ñ é preciso seleccionar
if @user.paciente
@consulta.paciente = @user.paciente
end
respond_to do |format|
if @consulta.save
format.html { redirect_to(@consulta, :notice => Consulta foi criada com sucesso.) }
format.xml { render :xml => @consulta, :status => :created, :location => @consulta }
else
format.html { render :action => new }
format.xml { render :xml => @consulta.errors, :status => :unprocessable_entity }
end
end
end
# PUT /consultas/1
# PUT /consultas/1.xml
def update
@consulta = Consulta.find(params[:id])
@user = User.find_by_id(session[:user_id])
@consulta.user = @user
# se o utilizador for paciente, ñ é preciso seleccionar
if @user.paciente
@consulta.paciente = @user.paciente
end
respond_to do |format|
if @consulta.update_attributes(params[:consulta])
format.html { redirect_to(@consulta, :notice => Consulta foi actualizada com sucesso.) }
format.xml { head :ok }
else
format.html { render :action => edit }
format.xml { render :xml => @consulta.errors, :status => :unprocessable_entity }
end
end
end
# DELETE /consultas/1
# DELETE /consultas/1.xml
def destroy
if access_to(admin) == 0
return 0
end
@consulta = Consulta.find(params[:id])
@consulta.destroy
respond_to do |format|
format.html { redirect_to(consultas_url) }
format.xml { head :ok }
end
end
end
Model
class Consulta < ActiveRecord::Base
# validates_presence_of :estado ,:message => -O Campo estado deve ser preenchido
validates_numericality_of :preco,:message => -O campo deve ser um númerico
belongs_to :medico, :foreign_key => medico_id
belongs_to :paciente, :foreign_key => paciente_id
belongs_to :user, :foreign_key => user_id
belongs_to :receita, :foreign_key => receita_id
def self.return_disponibilidades
find(:all )
end
def self.return_consultas
find(:all,:conditions => estado = Marcada)
end
def self.medicos_dados(medico)
consulta = self.new
consulta.medico = medico
return consulta
end
def privacy_enabled=(val)
self.privacy_disabled = val == 0
end
def privacy_enabled
!privacy_disabled
end
def self.return_consultas
find(:all,:conditions => estado = f)
end
end
Telmajackson
Curtir tópico
+ 0
Responder
Posts
20/08/2012
Rodrigo Jardim
é só fazer uma tela de para o medico pesquisar pelo consulta.paciente, provavelmente criando um controller novo
Responder
Clique aqui para fazer login e interagir na Comunidade :)