none
Colocar tabela de histórico de pacientes RRS feed

  • 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.

    segunda-feira, 31 de agosto de 2015 19:29

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
    terça-feira, 1 de setembro de 2015 00:43
  • 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
    segunda-feira, 31 de agosto de 2015 20:08

Todas as Respostas

  • Roberto,

    Você vai precisar criar uma tabela de log e usar um trigger.

    A trigger vai servir de gatilho assim toda vez que for inserido, atualizado ou excluído algum registro, a trigger vai atualizar a tabela de log com as alterações. 

    segunda-feira, 31 de agosto de 2015 19:34
  • Boa tarde Carlos como faço isso?
    segunda-feira, 31 de agosto de 2015 19:39
  • Vou fazer um exemplo para você
    segunda-feira, 31 de agosto de 2015 19:40
  • Obrigado :-)
    segunda-feira, 31 de agosto de 2015 20:00
  • 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
    segunda-feira, 31 de agosto de 2015 20:08
  • Vou tentar aqui e te falo, muito obrigado mesmo meu amigo!
    segunda-feira, 31 de agosto de 2015 21:19
  • 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?

    terça-feira, 1 de setembro de 2015 00:01
  • 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
    terça-feira, 1 de setembro de 2015 00:43
  • Sua solução seria a mais lógica, pois manteria um histórico do paciente.
    terça-feira, 1 de setembro de 2015 04:57