Advertisement
Lautaroleguizamon

Untitled

Jun 2nd, 2024
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.57 KB | None | 0 0
  1. /*use bdclinica
  2. go
  3. create schema core
  4. go
  5.  
  6. CREATE TABLE core.Domicilio (
  7. id_domicilio INT PRIMARY KEY,
  8. calle VARCHAR(50),
  9. numero VARCHAR(10),
  10. piso VARCHAR(3),
  11. departamento VARCHAR(3),
  12. cp VARCHAR(10),
  13. pais VARCHAR(50),
  14. provincia VARCHAR(50),
  15. localidad VARCHAR(50)
  16. )
  17. GO
  18.  
  19. CREATE TABLE core.Prestador(
  20. id_prestador INT PRIMARY KEY,
  21. nombre_prestador VARCHAR(40),
  22. plan_prestador VARCHAR(40)
  23. )
  24. GO
  25.  
  26. CREATE TABLE core.Cobertura(
  27. id_cobertura INT PRIMARY KEY,
  28. imagen_credencial VARCHAR(50),
  29. nro_socio INT NOT NULL,
  30. fecha_registro DATE,
  31. id_prestador INT NOT NULL,
  32. CONSTRAINT fk_cobertura_prestador FOREIGN KEY (id_prestador) REFERENCES core.Prestador(id_prestador)
  33. )
  34. GO
  35.  
  36. CREATE TABLE core.Paciente(
  37. ID INT IDENTITY (1,1) PRIMARY KEY,
  38. nombre VARCHAR(50) NOT NULL,
  39. apellido VARCHAR(50) NOT NULL,
  40. apellido_materno VARCHAR(50),
  41. fecha_de_nacimiento DATE NOT NULL,
  42. tipo_doc VARCHAR(50) NOT NULL,
  43. nro_doc INT UNIQUE NOT NULL,
  44. sexo_biologico VARCHAR(1) NOT NULL,
  45. genero VARCHAR(50) NOT NULL,
  46. nacionalidad VARCHAR(50) NOT NULL,
  47. foto_de_perfil VARCHAR(50),
  48. mail VARCHAR(100) NOT NULL,
  49. telefono_fijo VARCHAR(50) NOT NULL,
  50. telefono_alternativo VARCHAR(50),
  51. telefono_laboral VARCHAR(50),
  52. fecha_registro DATE DEFAULT GETDATE() NOT NULL,
  53. fecha_actualizacion smalldatetime DEFAULT GETDATE() NOT NULL,
  54. usuario_actualizacion VARCHAR(50) NOT NULL,
  55. id_domicilio INT NOT NULL,
  56. id_cobertura INT NOT NULL,
  57.  
  58. CONSTRAINT chk_tipo_doc CHECK(tipo_doc IN ('DNI', 'Libreta civica', 'libreta de enrolamiento', 'pasaporte')),
  59. CONSTRAINT chk_sexo CHECK(sexo_biologico IN ('masculino', 'femenino')),
  60. CONSTRAINT fk_paciente_domicilio FOREIGN KEY (id_domicilio) REFERENCES core.Domicilio(id_domicilio), --decidimos poner la foreign key de este lado por si hay pacientes con el mismo domicilio
  61. CONSTRAINT fk_paciente_cobertura FOREIGN KEY (id_cobertura) REFERENCES core.Cobertura(id_cobertura)
  62. )
  63. GO
  64.  
  65. CREATE TABLE core.Usuario(
  66. id_usuario INT PRIMARY KEY,
  67. contrasena VARCHAR(30),
  68. fecha_creacion DATE DEFAULT getdate(),
  69. CONSTRAINT fk_usuario_paciente FOREIGN KEY (id_usuario) REFERENCES core.Paciente(nro_doc)
  70. )
  71. GO
  72.  
  73. CREATE TABLE core.Estudio(
  74. id_estudio INT PRIMARY KEY,
  75. id_paciente INT,
  76. fecha smalldatetime NOT NULL,
  77. nombre_estudio VARCHAR(100) NOT NULL,
  78. autorizado CHAR(2) CHECK (autorizado IN ('si', 'no')),
  79. documento_resultado VARCHAR(50),
  80. imagen_resultado VARCHAR(50),
  81. CONSTRAINT fk_estudio_paciente FOREIGN KEY (id_paciente) REFERENCES core.Paciente(ID)
  82. )
  83. GO
  84.  
  85.  
  86. -------------------------------------------------------------------------------------------------------------------------------
  87.  
  88. CREATE TABLE core.EstadoTurno(
  89. id_estado INT PRIMARY KEY,
  90. nombre_estado VARCHAR(10) CHECK (nombre_estado IN ('Atendido', 'Ausente', 'Cancelado'))
  91. )
  92. GO
  93.  
  94. CREATE TABLE core.TipoTurno(
  95. id_tipo_turno INT PRIMARY KEY,
  96. nombre_tipo_turno VARCHAR(11) CHECK (nombre_tipo_turno IN ('Presencial', 'Virtual'))
  97. )
  98. GO
  99.  
  100. CREATE TABLE core.Sede_Atencion(
  101. id_sede INT PRIMARY KEY,
  102. nombre_sede VARCHAR(50),
  103. direccion VARCHAR(50) UNIQUE
  104. )
  105. GO
  106.  
  107. CREATE TABLE core.Especialidad(
  108. id_especialidad INT PRIMARY KEY,
  109. nombre_especialidad VARCHAR(25)
  110. )
  111. GO
  112.  
  113. CREATE TABLE core.Medico(
  114. id_medico INT PRIMARY KEY,
  115. nombre VARCHAR(25),
  116. apellido VARCHAR(25),
  117. numero_matricula INT,
  118. id_especialidad int,
  119. CONSTRAINT fk_medico_especialidad FOREIGN KEY(id_especialidad) REFERENCES core.Especialidad(id_especialidad)
  120. )
  121. GO
  122.  
  123.  
  124. CREATE TABLE core.DiasXSede(
  125. id_sede INT,
  126. id_medico INT,
  127. dia DATE,
  128. hora_inicio TIME,
  129. CONSTRAINT pk_dias_sede PRIMARY KEY (id_sede, id_medico),
  130. CONSTRAINT fk_dias_sede_sede FOREIGN KEY (id_sede) REFERENCES core.Sede_Atencion(id_sede),
  131. CONSTRAINT fk_dias_sede_medico FOREIGN KEY (id_medico) REFERENCES core.Medico(id_medico)
  132. )
  133. GO
  134.  
  135.  
  136. CREATE TABLE core.ReservaTurnoMedico(
  137. id_turno INT IDENTITY(1,1) PRIMARY KEY,
  138. fecha DATE,
  139. hora TIME,
  140. id_medico INT,
  141. id_especialidad INT,
  142. id_direccion_atencion INT,
  143. id_estado_turno INT,
  144. id_tipo_turno INT,
  145. CONSTRAINT fk_reserva_medico FOREIGN KEY (id_medico) REFERENCES core.Medico(id_medico),
  146. CONSTRAINT fk_reserva_especialidad FOREIGN KEY (id_especialidad) REFERENCES core.Especialidad(id_especialidad),
  147. CONSTRAINT fk_reserva_direccion FOREIGN KEY (id_direccion_atencion) REFERENCES core.Sede_Atencion(id_sede),
  148. CONSTRAINT fk_reserva_estado_turno FOREIGN KEY (id_estado_turno) REFERENCES core.EstadoTurno(id_estado),
  149. CONSTRAINT fk_reserva_tipo_turno FOREIGN KEY (id_tipo_turno) REFERENCES core.TipoTurno(id_tipo_turno)
  150. )
  151. GO
  152. */
  153. -----------------------------------------------------------------------------------------------------------------------------------
  154.  
  155. CREATE OR ALTER PROCEDURE core.InsertarDomicilio
  156. (
  157. @id INT,
  158. @calle VARCHAR(50),
  159. @numero varchar(10),
  160. @piso VARCHAR(3),
  161. @depto VARCHAR(3),
  162. @cp VARCHAR(10),
  163. @pais VARCHAR(50),
  164. @provincia VARCHAR(50),
  165. @localidad VARCHAR(50)
  166. )
  167. AS
  168. BEGIN
  169. IF(@id > 0 AND @provincia IN ('Buenos Aires', 'Catamarca', 'Chaco', 'Chubut', 'Córdoba', 'Corrientes', 'Entre Ríos', 'Formosa', 'Jujuy', 'La Pampa', 'La Rioja', 'Mendoza', 'Misiones', 'Neuquén', 'Río Negro', 'Salta', 'San Juan', 'San Luis', 'Santa Cruz', 'Santa Fe', 'Santiago del Estero', 'Tierra del Fuego', 'Tucumán'))
  170. BEGIN
  171. INSERT INTO core.Domicilio (id_domicilio, calle, numero, piso, departamento, cp, pais, provincia, localidad)
  172. VALUES (@id, @calle, @numero, @piso, @depto, @cp, @pais, @provincia, @localidad)
  173. END
  174. ELSE
  175. BEGIN
  176. SELECT 'ID INVALIDO' AS Mensaje;
  177. END
  178. END
  179.  
  180. --exec core.InsertarDomicilio 1, 'badia', '123', '2', 'A', '1234', 'Argentina', 'Buenos Aires', 'Morón'
  181. --exec core.InsertarDomicilio 2, 'avenida siempre viva', '123', '2', 'A', '1234', 'Argentina', 'Chubut', 'Chubut'
  182. -------------------------------------------------------------------------------------------------------------
  183.  
  184. CREATE OR ALTER PROCEDURE core.ModificarDomicilio
  185. (
  186. @id INT,
  187. @calle VARCHAR(50),
  188. @numero VARCHAR(10),
  189. @piso VARCHAR(3),
  190. @depto VARCHAR(3),
  191. @cp VARCHAR(10),
  192. @pais VARCHAR(50),
  193. @provincia VARCHAR(50),
  194. @localidad VARCHAR(50)
  195. )
  196. AS
  197. BEGIN
  198. UPDATE core.Domicilio
  199. SET calle = @calle,
  200. numero = @numero,
  201. piso = @piso,
  202. departamento = @depto,
  203. cp = @cp,
  204. pais = @pais,
  205. provincia = @provincia,
  206. localidad = @localidad;
  207. WHERE id_domicilio = @id;
  208. END;
  209.  
  210. --select * from core.Domicilio
  211.  
  212. --exec core.ModificarDomicilio 1, 'Avenida siempre viva', '123', '2', 'A', '1234', 'Argentina', 'Bs As', 'Morón'
  213.  
  214. ----------------------------------------------------------------------------------------------------------------
  215. CREATE OR ALTER PROCEDURE core.BorrarDomicilio(@id int)
  216. AS
  217. BEGIN
  218. DELETE FROM core.Domicilio WHERE id_domicilio=@id
  219. SELECT 'DOMICILIO ' + CAST(@id AS NVARCHAR(10)) + ' ELIMINADO CON ÉXITO' as MENSAJE
  220. END
  221.  
  222. --exec core.borrardomicilio 1
  223.  
  224. ----------------------------------------------------------------------------------------------------------------
  225. CREATE OR ALTER PROCEDURE core.InsertarPrestador(
  226. @id int,
  227. @nombre varchar(40),
  228. @plan varchar(40)
  229. )
  230. AS
  231. BEGIN
  232. IF(@id>0)
  233. BEGIN
  234. INSERT INTO core.Prestador(id_prestador, nombre_prestador, plan_prestador)
  235. VALUES (@id, @nombre, @plan)
  236. END
  237. ELSE
  238. BEGIN
  239. SELECT 'ID DEL PRESTADOR INVÁLIDA O EN USO' as MENSAJE
  240. END
  241. END
  242.  
  243. --exec core.InsertarPrestador 2, 'Galeno', 'Platinum'
  244. --select * from core.Prestador
  245. ---------------------------------------------------------------------------------------------------------------
  246. CREATE OR ALTER PROCEDURE core.ModificarPrestador(
  247. @id int,
  248. @nombre varchar(40),
  249. @plan varchar(40)
  250. )
  251. AS
  252. BEGIN
  253. UPDATE core.Prestador
  254. SET nombre_prestador = @nombre,
  255. plan_prestador = @plan
  256. WHERE id_Prestador = @id
  257. END
  258.  
  259. --exec core.ModificarPrestador 2, 'Swiss Medical', 'Star'
  260. ---------------------------------------------------------------------------------------------------------------
  261. CREATE OR ALTER PROCEDURE core.BorrarPrestador(@id int)
  262. AS
  263. BEGIN
  264. DELETE FROM core.Prestador WHERE id_Prestador = @id
  265. SELECT 'DOMICILIO ' + CAST(@id AS NVARCHAR(10)) + ' ELIMINADO CON ÉXITO' as MENSAJE
  266. END
  267.  
  268. --exec core.BorrarPrestador 2
  269. ---------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement