Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- NOTEPAD MASTER RACE
- Nao tenho a certeza de nada.
- Há varias formas de fazer o mesmo.
- */
- /*P1
- a)*/
- UPDATE b_Prescrições
- SET Nmedicamento = (SELECT NM FROM b_Medicamentos WHERE principio_ativo LIKE 'xpto'), Dosagem = Dosagem*2
- WHERE periodicidade > 6 AND
- NP IN (SELECT NP FROM b_Internamentos I JOIN b_Precrições P ON I.NI = P.Ninternamento JOIN b_Medicamentos M ON P.Nmedicamento = M.NM WHERE adm_inicio < DATEADD(DAY,-7,getdate()) AND M.Designação LIKE 'xyz')
- /*b)*/
- SELECT COUNT(*), AVG(DATEDIFF(DAY, adm_inicio,adm_fim)), Designação, Nenfermaria, DATEPART(YEAR,adm_inicio)
- FROM b_Prescriçoes P JOIN b_Internamentos I
- ON I.NI = P.Ninternamento JOIN b_Especialidade E
- ON I.Nespecialidade = E.NE
- WHERE DATEPART(YEAR,adm_inicio) > 2000 AND
- DATEPART(YEAR,adm_inicio) < 2014 AND
- I.NI IN (SELECT NI FROM b_Internamentos JOIN b_Prescrições P ON I.NI = P.Ninternamento GROUP BY NI HAVING COUNT(*) > 1)
- GROUP BY Designação, Nenfermaria, DATEPART(YEAR,adm_inicio)
- /*c)*/
- SELECT Nome, Designação
- FROM b_Doentes D JOIN b_Internamentos I
- ON D.ND = I.Ndoente JOIN b_Especialidades E
- ON I.Nespecialiadde = E.NE
- WHERE DATEDIFF(DAY, adm_inicio,getdate()) < 3 AND
- D.ND IN (SELECT ND FROM b_Doentes JOIN b_Internamentos ON ND = Ndoente WHERE DATEDIFF(DAY, adm_inicio,adm_fim) > 7)
- /*
- P2
- a)
- */
- CREATE TRIGGER ltrig
- ON b_Prescrições
- INSTEAD OF INSERT
- AS
- BEGIN
- IF (SELECT COUNT(*) FROM INSERTED) == 1
- BEGIN
- DECLARE @NP INT,
- @dias INT,
- @dose INT,
- @adm DATE,
- @idk INT,
- @amr DATE,
- @estado CHAR(1),
- @Nmed INT,
- @Nint INT,
- @NOmed INT,
- @perid INT
- SELECT @NP = NP,
- @dias = Dias_prescrição,
- @dose = Dosagem,
- @adm = Adm_inicio,
- @idk = idk,
- @amr = adm+recente,
- @estado = estado,
- @Nmed = Nmedicamento,
- @Nint = Ninternamento,
- @NOmed = NOMedico,
- @perid = periodicidade
- FROM INSERTED
- IF @Nmed IN (SELECT Nmedicamento FROM b_Prescrições WHERE Ninternamento = @Nint AND Estado = 'A') OR
- (SELECT Data_saida FROM b_Internamentos WHERE NI = @Nint) NOT NULL
- RAISERROR('Inserção Inválida.',11,1)
- ELSE
- INSERT INTO b_Prescrições VALUES(@NP,@dias,@dose,@adm,@idk,@amr,@estado,@Nmed,@Nint,@NOmed,@perid)
- END
- ELSE
- RAISERROR('Apenas um movimento por favor.',11,1)
- END
- /*b*/
- CREATE PROCEDURE saida
- @ND INT,
- @nome VARCHAR(150)
- AS
- BEGIN
- DECLARE @aux INT
- SELECT @aux = NI FROM b_Internamentos I JOIN b_Doentes D ON I.Ndoente = D.ND WHERE ND = @ND AND Nomed LIKE @nome
- IF @aux IS NOT NULL
- PRINT 'Doente internado.'
- ELSE
- RAISERROR('Doente não internado.',11,1)
- UPDATE b_Internamentos SET Data_saida = getdate() WHERE NI = @aux
- UPDATE b_Prescrições SET estado = 'T' WHERE Ninternamento = @aux
- DELETE FROM b_Macação_Exames WHERE ND = @ND AND Data_hora > getdate()
- END
- EXEC saida 1, 'José'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement