CREATE OR ALTER trigger ttbprontuario_prescricao_b02i for tbprontuario_prescricao
active before insert position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE DATA_ATENDIMENTO DATE;
DECLARE VARIABLE MEDICO INTEGER;
BEGIN

   HISTORICO = '';

   SELECT FIRST 1 T.DATA_ATENDIMENTO FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = NEW.ATENDIMENTO_ID INTO DATA_ATENDIMENTO;
   SELECT FIRST 1 T.MEDICO_ID FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = NEW.ATENDIMENTO_ID INTO MEDICO;

   HISTORICO = HISTORICO||'ATENDIMENTO ALTERADO: '||FORMATDATE(DATA_ATENDIMENTO)||', MÉDICO: '||MEDICO||', PRESCRIÇÃO INCLUIDA:  MEDICAMENTO: '||NEW.MEDICAMENTO;

   IF (HISTORICO <> '') THEN
       BEGIN
           INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPRONTUARIO', (SELECT FIRST 1 T.PRONTUARIO_ID FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = NEW.ATENDIMENTO_ID),
      (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       :HISTORICO);
       END
END;


CREATE OR ALTER trigger ttbprontuario_prescricao_b01d for tbprontuario_prescricao
active before delete position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE DATA_ATENDIMENTO DATE;
DECLARE VARIABLE MEDICO INTEGER;

BEGIN

   HISTORICO = '';

   SELECT FIRST 1 T.DATA_ATENDIMENTO FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = OLD.ATENDIMENTO_ID INTO DATA_ATENDIMENTO;
   SELECT FIRST 1 T.MEDICO_ID        FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = OLD.ATENDIMENTO_ID INTO MEDICO;

   HISTORICO = HISTORICO||'ATENDIMENTO ALTERADO: '||FORMATDATE(DATA_ATENDIMENTO)||', MÉDICO: '||MEDICO||', PRESCRIÇÃO EXCLUÍDA:  MEDICAMENTO: '||OLD.MEDICAMENTO;

   IF (HISTORICO <> '') THEN
       BEGIN
           INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPRONTUARIO', (SELECT FIRST 1 T.PRONTUARIO_ID FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = OLD.ATENDIMENTO_ID),
      (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       :HISTORICO);
       END
END;


CREATE OR ALTER trigger ttbprontuario_prescricao_b01u for tbprontuario_prescricao
active before update position 0
AS
DECLARE VARIABLE HISTORICO VARCHAR(500);
DECLARE VARIABLE DATA_ATENDIMENTO DATE;
DECLARE VARIABLE MEDICO INTEGER;
BEGIN

   HISTORICO = '';
   SELECT FIRST 1 T.DATA_ATENDIMENTO FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = NEW.ATENDIMENTO_ID INTO DATA_ATENDIMENTO;
   SELECT FIRST 1 T.MEDICO_ID FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = NEW.ATENDIMENTO_ID INTO MEDICO;

   IF (OLD.MEDICAMENTO <> NEW.MEDICAMENTO) THEN
       BEGIN
       HISTORICO = HISTORICO||' MEDICAMENTO: '||OLD.MEDICAMENTO||'->'||NEW.MEDICAMENTO;
       END

    IF (OLD.USO <> NEW.USO) THEN
       BEGIN
       HISTORICO = HISTORICO||' USO:'||OLD.USO||'->'||NEW.USO;
       END

    IF (OLD.POSOLOGIA <> NEW.POSOLOGIA) THEN
       BEGIN
       HISTORICO = HISTORICO||' POSOLOGIA:'||OLD.POSOLOGIA||'->'||NEW.POSOLOGIA;
       END

    IF (OLD.OBSERVACAO <> NEW.OBSERVACAO) THEN
       BEGIN
       HISTORICO = HISTORICO||' OBS:'||OLD.OBSERVACAO||'->'||NEW.OBSERVACAO;
       END

   IF (HISTORICO <> '') THEN
       BEGIN

       HISTORICO = ' PRESCRIÇÃO ALTERADA: ATENDIMENTO: '||FORMATDATE(DATA_ATENDIMENTO)||', MEDICO: '||MEDICO||', '||HISTORICO;

       INSERT INTO TBHISTORICO (
       TABELA, TABELA_ID, USUARIO, IP, HISTORICO) VALUES (
      'TBPRONTUARIO', (SELECT FIRST 1 T.PRONTUARIO_ID FROM TBPRONTUARIO_ATENDIMENTO T WHERE T.ID = OLD.ATENDIMENTO_ID),
      (SELECT FIRST 1 MON$USER FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
      (SELECT FIRST 1 MON$REMOTE_ADDRESS FROM MON$ATTACHMENTS WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION),
       :HISTORICO);
       END
END;





