· 8 years ago · Jan 13, 2018, 07:16 AM
1ALTER PROCEDURE dbo.AI_Consultas (
2 @Datos as dbo.tmp_consultas readonly
3 )
4AS
5BEGIN
6 --SET NOCOUNT ON;
7
8
9CREATE TABLE #Paciente (ID_Ext_Paciente INT, ID_Int_Paciente INT, ID_Ext_Consulta INT)
10CREATE TABLE #Unidad (UnidadID INT, ID_Ext_Unidad INT)
11CREATE TABLE #CMedica (ID_Int_Unidad INT, ID_Ext_Consulta INT )
12
13INSERT INTO #Paciente
14SELECT C.ID_Ext_Paciente,C.ID_Int_Paciente, ID_Ext_Consulta from dbo.Paciente PAC
15WHERE EXISTS (SELECT top 1 * from @Datos DAT WHERE DAT.ID_Ext_Paciente = PAC.ID_Ext_Paciente order by PAC.ID_Int_Paciente desc )
16
17INSERT INTO #Unidad
18SELECT D.UnidadID, D.ID_Ext_Unidad FROM dbo.unidad D
19WHERE EXISTS (SELECT * from @Datos DAT WHERE DAT.ID_Ext_Unidad = D.ID_Ext_Unidad)
20
21IF EXISTS (SELECT ID_Ext_Consulta FROM @Datos DAT WHERE EXISTS (SELECT ID_Ext_Consulta FROM dbo.Consulta CON WHERE DAT.ID_Ext_Consulta = CON.ID_Ext_Consulta ))
22BEGIN
23
24 UPDATE PAC
25 SET [Nombre] = DAT.Nombre,
26 [Direccion] = DAT.Direccion,
27 [Telefono]=DAT.Telefono
28 FROM dbo.paciente as PAC
29 INNER JOIN @Datos DAT ON PAC.ID_Ext_Paciente = DAT.ID_Ext_Paciente
30
31 MERGE dbo.Consulta AS CON
32 USING @Datos AS DAT
33 ON DAT.ID_Ext_Consulta = CON.ID_Ext_Consulta
34 WHEN MATCHED AND CON.FechaConsulta != DAT.FechaConsulta
35 THEN UPDATE SET CON.FechaConsulta = DAT.FechaConsulta;
36
37 INSERT INTO dbo.Historia([ID_Int_Unidad],[ID_Ext_Consulta], [FechaConsulta],[Actualizacion])
38 SELECT DISTINCT A.ID_Int_Unidad,DAT.ID_Ext_Consulta, DAT.FechaConsulta, DAT.FechaConsulta, getdate()
39 FROM @Datos DAT
40 INNER JOIN #Paciente PAC ON PAC.ID_Ext_Paciente = DAT.ID_Ext_Paciente
41 INNER JOIN #Unidad UNI ON UNI.ID_Ext_Unidad = DAT.ID_Ext_Unidad
42 INNER JOIN #VehicleIdentityTable VIT ON VIT.ID_Ext_Consulta = DAT.ID_Ext_Consulta
43 INNER JOIN dbo.Consulta A on A.ID_Ext_Consulta =DAT.ID_Ext_Consulta
44END
45ELSE
46BEGIN
47 INSERT INTO dbo.Paciente([Nombre],[Direccion],[Telefono],[ID_Ext_Paciente],[ID_Ext_Consulta])
48 OUTPUT Inserted.ID_Ext_Paciente,Inserted.ID_Int_Paciente,Inserted.ID_Ext_Consulta INTO #Paciente(ID_Ext_Paciente, ID_Int_Paciente, ID_Ext_Consulta)
49 SELECT distinct Nombre, Direccion, Telefono, ID_Ext_Paciente, ID_Ext_Consulta FROM @Datos DAT
50 WHERE NOT EXISTS (SELECT ID_Ext_Consulta FROM dbo.consultas CON WHERE DAT.ID_Ext_Consulta = CON.ID_Ext_Consulta AND DAT.ID_Ext_Consulta = CON.ID_Ext_Consulta)
51
52 INSERT INTO dbo.unidad([ID_Ext_Unidad],[Nombre],[ID_Int_Unidad],[Nombre],[Direccion])
53 OUTPUT Inserted.UnidadID,Inserted.ID_Ext_Unidad INTO #Unidad(UnidadID, ID_Ext_Unidad)
54 SELECT distinct ID_Ext_Unidad, Nombre,Direccion FROM @Datos T
55 WHERE NOT EXISTS (SELECT D.ID_Ext_Unidad FROM dbo.unidad D where T.ID_Ext_Unidad = D.ID_Ext_Unidad )
56
57 INSERT INTO dbo.Consulta(ID_Ext_Consulta,FechaConsulta,ID_Int_Paciente)
58 OUTPUT Inserted.ID_Int_Unidad,Inserted.ID_Ext_Consulta INTO #CMedica(ID_Int_Unidad, ID_Ext_Consulta)
59 SELECT DAT.ID_Ext_Consulta, DAT.FechaConsulta, DAT.FechaConsulta,
60 PAC.ID_Int_Paciente, UNI.UnidadID
61 FROM @Datos DAT
62 INNER JOIN #Paciente PAC ON PAC.ID_Ext_Paciente = DAT.ID_Ext_Paciente
63 INNER JOIN #Unidad UNI ON UNI.ID_Ext_Unidad = DAT.ID_Ext_Unidad
64 WHERE NOT EXISTS (SELECT ID_Ext_Consulta FROM dbo.consultas A WHERE DAT.ID_Ext_Consulta = A.ID_Ext_Consulta)
65 AND PAC.ID_Ext_Consulta = DAT.ID_Ext_Consulta
66
67 IF EXISTS (SELECT ID_Ext_Consulta FROM @Datos T WHERE EXISTS (SELECT ID_Ext_Consulta FROM dbo.Consulta A WHERE T.ID_Ext_Consulta = A.ID_Ext_Consulta ))
68 BEGIN
69 INSERT INTO dbo.Historia([ID_Int_Unidad],[ID_Ext_Consulta], [FechaConsulta],[Actualizacion])
70 SELECT DISTINCT A.ID_Int_Unidad,DAT.ID_Ext_Consulta, DAT.FechaConsulta, DAT.FechaConsulta, null
71 FROM @Datos DAT
72 INNER JOIN #Paciente PAC ON PAC.ID_Ext_Paciente = DAT.ID_Ext_Paciente
73 INNER JOIN #Unidad UNI ON UNI.ID_Ext_Unidad = DAT.ID_Ext_Unidad
74 INNER JOIN #VehicleIdentityTable VIT ON VIT.ID_Ext_Consulta = DAT.ID_Ext_Consulta
75 INNER JOIN dbo.Consulta A on A.ID_Ext_Consulta =DAT.ID_Ext_Consulta
76 END
77END