Usuário com melhor resposta
Colocar tabela de histórico de pacientes

Pergunta
-
Boa tarde a todos, estou criando um programa para um cliente, me deparei com um problema que não sei resolver porém acho que deve ser de fácil solução para os amigos do fórum. Meu cliente é médico e o programa deve conter um campo onde ele coloque o diagnóstico e plano de tratamento para um paciente na data de cada consulta, todos os dados desse paciente vão ficar armazenados em um servidor sql online. Meu problema é criar um histórico que apresente os diagnósticos e planos de tratamento das datas anteriores. Por exemplo um quadro de histórico seria mais ou menos assim:
Dia Diagnóstico Plano de Tratamento
09/08 Gripe 2 comprimidos Benegrip
17/10 Dor de cabeça Dipirona sódica
Hoje: Nova entrada Nova Entrada
Como faço para armazenar um quadro desses em uma tabela sql? Já que esse quado é uma tabela seria como armazenar uma tabela dentro de outra tabela? E como meu cliente pode adicionar novas entradas a cada consulta, lembrando que são muitos pacientes então não tem como criar uma nova tabela no banco de dados a cada novo paciente.
Desde já agradeço a todas as respostas.
Respostas
-
Roberto,
Na pergunta você mencionou que gostaria de salvar o histórico, então sugeri armazenar os logs, tem outras forma de fazer.
Uma coisa que você pode fazer é criar um procedimento para limpar os registros mais antigos.
Uma outra ideia seria você criar mais tabela para o Cadastro de clientes e uma tabela Consultas, na tabela consulta toda vez que o cliente agendar uma consulta e passar por ele você inseri um novo registro, sempre inseri sem excluir os registros, assim você terá uma histórico de consulta.
Se quiser colocar os campos que você precisa, seria bom!
- Editado Carlos_rodrigues terça-feira, 1 de setembro de 2015 03:51 correção
- Sugerido como Resposta Wsti terça-feira, 1 de setembro de 2015 04:58
- Marcado como Resposta robertgomez2 terça-feira, 1 de setembro de 2015 10:28
-
Segue um exemplo com os campos que você colocou
Script para criar a tabela
CREATE TABLE [dbo].[TABELA_CONSULTA]( [ID_CONSULTA] [int] NOT NULL, [DIA] [smalldatetime] NULL, [DIAGNOSTICO] [nvarchar](50) NULL, [PLANO] [nvarchar](50) NULL, CONSTRAINT [PK_TABELA_CONSULTA] PRIMARY KEY CLUSTERED ( [ID_CONSULTA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Criando tabela de log
CREATE TABLE [dbo].[TABELA_CONSULTA_lOG]( [ID_CONSULTA] [int] NOT NULL, [DIA] [smalldatetime] NULL, [DIAGNOSTICO] [nvarchar](50) NULL, [PLANO] [nvarchar](50) NULL, CONSTRAINT [PK_TABELA_CONSULTA_LOG] PRIMARY KEY CLUSTERED ( [ID_CONSULTA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Criando a trigger
CREATE TRIGGER [dbo].[TR_CONSULTA] ON [dbo].[TABELA_CONSULTA] AFTER INSERT,UPDATE AS BEGIN INSERT INTO TABELA_CONSULTA_LOG(DIA, DIAGNOSTICO, PLANO) SELECT DIA, DIAGNOSTICO, PLANO FROM INSERTED END
Toda vez que a tabela TABELA_CONSULTA receber insert ou update, os registros serão inclusos no tabela TABELA_CONSULTA_LOG, assim você terá os logs das consultas
Espero que tenha te ajudado
- Editado Carlos_rodrigues segunda-feira, 31 de agosto de 2015 20:57 Correção
- Marcado como Resposta robertgomez2 segunda-feira, 31 de agosto de 2015 21:19
- Não Marcado como Resposta robertgomez2 segunda-feira, 31 de agosto de 2015 23:52
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 1 de setembro de 2015 17:56
- Marcado como Resposta robertgomez2 sexta-feira, 11 de setembro de 2015 00:06
Todas as Respostas
-
-
-
-
-
Segue um exemplo com os campos que você colocou
Script para criar a tabela
CREATE TABLE [dbo].[TABELA_CONSULTA]( [ID_CONSULTA] [int] NOT NULL, [DIA] [smalldatetime] NULL, [DIAGNOSTICO] [nvarchar](50) NULL, [PLANO] [nvarchar](50) NULL, CONSTRAINT [PK_TABELA_CONSULTA] PRIMARY KEY CLUSTERED ( [ID_CONSULTA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Criando tabela de log
CREATE TABLE [dbo].[TABELA_CONSULTA_lOG]( [ID_CONSULTA] [int] NOT NULL, [DIA] [smalldatetime] NULL, [DIAGNOSTICO] [nvarchar](50) NULL, [PLANO] [nvarchar](50) NULL, CONSTRAINT [PK_TABELA_CONSULTA_LOG] PRIMARY KEY CLUSTERED ( [ID_CONSULTA] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO
Criando a trigger
CREATE TRIGGER [dbo].[TR_CONSULTA] ON [dbo].[TABELA_CONSULTA] AFTER INSERT,UPDATE AS BEGIN INSERT INTO TABELA_CONSULTA_LOG(DIA, DIAGNOSTICO, PLANO) SELECT DIA, DIAGNOSTICO, PLANO FROM INSERTED END
Toda vez que a tabela TABELA_CONSULTA receber insert ou update, os registros serão inclusos no tabela TABELA_CONSULTA_LOG, assim você terá os logs das consultas
Espero que tenha te ajudado
- Editado Carlos_rodrigues segunda-feira, 31 de agosto de 2015 20:57 Correção
- Marcado como Resposta robertgomez2 segunda-feira, 31 de agosto de 2015 21:19
- Não Marcado como Resposta robertgomez2 segunda-feira, 31 de agosto de 2015 23:52
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 1 de setembro de 2015 17:56
- Marcado como Resposta robertgomez2 sexta-feira, 11 de setembro de 2015 00:06
-
-
Mas Carlos veja se minha linha de raciocínio está correta: essa tabela de LOG das consultas se encherá de LOGS de consultas de todos os pacientes e ficará muito extensa ao longo do tempo, fazendo o select e exibição dos logs individuais de um paciente ficar muito lento. Por exemplo, o paciente 01 faz uma consulta, os dados vão pra tabela log, o paciente 023 faz consulta em seguida, os dados também vão para a tabela LOG, e assim sucessivamente até 100 pacientes diferentes terem 50 consultas cada. Isso não iria gerar uma tabela LOG com 5000 registros? E se essa quantidade de registros aumentar ainda mais? O select não ficaria lento ao procurar o ID de determinado paciente para checar quantos desses 5000 registros pertencem a ele?
-
Roberto,
Na pergunta você mencionou que gostaria de salvar o histórico, então sugeri armazenar os logs, tem outras forma de fazer.
Uma coisa que você pode fazer é criar um procedimento para limpar os registros mais antigos.
Uma outra ideia seria você criar mais tabela para o Cadastro de clientes e uma tabela Consultas, na tabela consulta toda vez que o cliente agendar uma consulta e passar por ele você inseri um novo registro, sempre inseri sem excluir os registros, assim você terá uma histórico de consulta.
Se quiser colocar os campos que você precisa, seria bom!
- Editado Carlos_rodrigues terça-feira, 1 de setembro de 2015 03:51 correção
- Sugerido como Resposta Wsti terça-feira, 1 de setembro de 2015 04:58
- Marcado como Resposta robertgomez2 terça-feira, 1 de setembro de 2015 10:28
-