Actividad 1
Realizar el diseño e implementación de una base de datos que guarde información de los pacientes que ingresan en un hospital. En este hospital, los pacientes que llegan al servicio de urgencias del hospital son examinados y, dependiendo de su estado de salud, son ingresados en la planta correspondiente (traumatología, cuidados intensivos, ...) bajo la supervisión de un médico responsable:
b) Un paciente puede ingresar varias veces en el hospital y tener asignado en cada ocasión diferentes médicos
Insertarle 10 registros a cada Tabla Maestra Crear los siguientes procedimientos Almacenados que permitan manejar la inforamción de cada una de las tablas maestras
Procedimiento para insertar
Procedimiento para listar
Procedimiento para consultar
Procedimiento para eliminar
Procedimiento para modificar
Guia para crear la Base de datos...
https://sistemasremington.webnode.com/base-de-datos/comandos-mysql-para-bd/
Solución
Modelo entidad relación
Diagrama relacional
Diccionario de datos
Creación tablas:
Create table Paciente(PacienteId varchar(12) NOT NULL PRIMARY KEY, Cedula Varchar(20) NOT NULL, Nombre Varchar(50) NOT NULL, Apellidos Varchar(100) NOT NULL, Sexo boolean NOT NULL, Direccion varchar(200) NOT NULL, Telefono varchar(15) NOT NULL);
Create table Medico(MedicoId varchar(12) NOT NULL PRIMARY KEY, Cedula Varchar(20) NOT NULL, Nombre Varchar(50) NOT NULL, Apellidos Varchar(100) NOT NULL, Sexo boolean NOT NULL, Direccion varchar(200) NOT NULL, Telefono varchar(15) NOT NULL);
Create table EstadoUrgencia(EstadoId varchar(3) NOT NULL PRIMARY KEY, Nombre Varchar(50) NOT NULL);
Create table Urgencia(FechaIngreso datetime NOT NULL, PacienteId varchar(12) NOT NULL, EstadoId Varchar(3) NOT NULL, MedicoId Varchar(12) NULL, FechaSalida datetime NULL, Diagnostico varchar(8000) NULL, FOREIGN KEY (PacienteId) REFERENCES Paciente (PacienteId) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (EstadoId) REFERENCES EstadoUrgencia (EstadoId) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (MedicoId) REFERENCES Medico (MedicoId) ON DELETE CASCADE ON UPDATE CASCADE);
Insertar datos a las tablas:
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P1', '1', 'Juan', 'Rodrigez Zuluaga', 1, 'Direccion 1', '1234567');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P2', '2', 'Sandra', 'Betancuar', 0, 'Direccion 2', '2345678');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P3', '3', 'Katerin', 'Gonzalez', 0, 'Direccion 3', '3105464');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P4', '4', 'Cristian', 'Gonzalez', 1, 'Direccion 4', '4445561');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P5', '5', 'Carlos', 'Zapata', 1, 'Direccion 5', '554465');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P6', '6', 'Diego', 'Castañeda', 1, 'Direccion 6', '677256');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P7', '7', 'Maria', 'Ochoa', 0, 'Direccion 7', '8255070');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P8', '8', 'Patricia', 'Ruiz', 0, 'Direccion 8', '8884605');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P9', '9', 'Adriana', 'Sanchez Zuluaga', 0, 'Direccion 9', '950405');
INSERT INTO Paciente(PacienteId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('P10', '10', 'Juan', 'Benjumea', 1, 'Direccion 10', '825070');
INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M1', '51', 'Santiago', 'Dominguez', 1, 'Direccion 51', '3105467');
INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M2', '52', 'Ana Isabel', 'Olaya Ruiz', 0, 'Direccion 52', '528500');
INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M3', '53', 'Jose Hernan', 'Gonzalez Olaya', 1, 'Direccion 53', '538540');
INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M4', '54', 'Marcela', 'Rua', 0, 'Direccion 54', '540085');
MariaDB [urgencias2019]> INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M5', '55', 'Edilma', 'Mazo', 0, 'Direccion 55', '55895');
MariaDB [urgencias2019]> INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M6', '56', 'Ester', 'Salamanta', 0, 'Direccion 56', '569650');
MariaDB [urgencias2019]> INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M7', '57', 'Rodrigo', 'Marquez', 1, 'Direccion 57', '578500');
INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M8', '58', 'Ivan', 'Duque', 1, 'Direccion 58', '580507');
INSERT INTO Medico(MedicoId, Cedula, Nombre, Apellidos, Sexo, Direccion, Telefono) VALUES ('M10', '60', 'Luis Andres', 'Alba', 1, 'Direccion 60', '650700');
INSERT INTO EstadoUrgencia(EstadoId, Nombre) VALUES ('TRA', 'Traumatologia');
INSERT INTO EstadoUrgencia(EstadoId, Nombre) VALUES ('CIN', 'Cuidados intensivos');
INSERT INTO EstadoUrgencia(EstadoId, Nombre) VALUES ('CGE', 'Consulta general');
INSERT INTO EstadoUrgencia(EstadoId, Nombre) VALUES ('CES', 'Consulta especialista');
INSERT INTO EstadoUrgencia(EstadoId, Nombre) VALUES ('ODO', 'Odontologia');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-01', 'P1', 'TRA', 'M1', '2018-07-03', 'Trauma hospitalizar');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-01', 'P10', 'CGE', 'M2', '2018-07-01', 'Gripa');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-01', 'P9', 'TRA', 'M3', '2018-07-03', 'Brazo roto');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-02', 'P8', 'CIN', 'M4', '2018-07-03', 'Atencion especial');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-02', 'P7', 'CIN', 'M5', '2018-07-03', 'Problema respiratorio');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-02', 'P6', 'CGE', 'M6', '2018-07-02', 'Consulta general');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-03', 'P5', 'CES', 'M7', '2018-07-03', 'Otorrino');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-03', 'P4', 'TRA', 'M8', '2018-07-03', 'Trauma pierna izquierda');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-03', 'P3', 'CES', 'M9', '2018-07-03', 'Ginecologo');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-03', 'P2', 'ODO', 'M10', '2018-07-03', 'Odontologia');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-04', 'P1', 'CGE', 'M1', '2018-07-03', 'Consulta generalal');
Query OK, 1 row affected (0.12 sec)
MariaDB [urgencias2019]> INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-04', 'P2', 'TRA', 'M2', '2018-07-05', 'Trauma');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-04', 'P3', 'CIN', 'M3', '2018-07-05', 'Hospitalizacion');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-05', 'P4', 'TRA', 'M4', '2018-07-06', 'Trauma hospitalizar');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-05', 'P5', 'CES', 'M5', '2018-07-05', 'Consulta especialista');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-06', 'P6', 'ODO', 'M10', '2018-07-06', 'Odontologia');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-06', 'P7', 'TRA', 'M7', '2018-07-08', 'Trauma hospitalizar');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-06', 'P8', 'ODO', 'M10', '2018-07-07', 'Odontologia');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-07', 'P9', 'CES', 'M9', '2018-07-07', 'Consulta especialista');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-07', 'P10', 'TRA', 'M1', '2018-07-07', 'Trauma hospitalizar');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-12', 'P5', 'ODO', 'M10', '2018-07-12', 'Odontologia');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-19', 'P5', 'ODO', 'M10', '2018-07-19', 'Odontologia');
INSERT INTO Urgencia(FechaIngreso, PacienteId, EstadoId, MedicoId, FechaSalida, Diagnostico) VALUES ('2018-07-12', 'P2', 'CGE', 'M6', '2018-07-12', 'Consulta general');
Procedimientos almacenados para operaciones
A. SP insertar
Paciente
Delimiter //
Create procedure insertar_Paciente(in _PacienteId varchar(12), in _Cedula Varchar(20), in _Nombre Varchar(50), in _Apellidos Varchar(100), in _Sexo boolean, in _Direccion varchar(200), in _Telefono varchar(15))
Begin
INSERT INTO Paciente(PacienteId,Cedula,Nombre,Apellidos,Sexo,Direccion,Telefono)
VALUES (_PacienteId,_Cedula,_Nombre,_Apellidos,_Sexo,_Direccion,_Telefono);
End
//
Delimiter ;
Medico
Delimiter //
Create procedure insertar_Medico(in _MedicoId varchar(12), in _Cedula Varchar(20), in _Nombre Varchar(50), in _Apellidos Varchar(100), in _Sexo boolean, in _Direccion varchar(200), in _Telefono varchar(15))
Begin
INSERT INTO Medico(MedicoId,Cedula,Nombre,Apellidos,Sexo,Direccion,Telefono)
VALUES (_MedicoId,_Cedula,_Nombre,_Apellidos,_Sexo,_Direccion,_Telefono);
End
//
Delimiter ;
Urgencia
Delimiter //
Create procedure insertar_Urgencia(in _FechaIngreso datetime, in _PacienteId varchar(12), in _EstadoId Varchar(3), in _MedicoId Varchar(12), in _FechaSalida datetime, in _Diagnostico varchar(8000))
Begin
INSERT INTO Urgencia(FechaIngreso,PacienteId,EstadoId,MedicoId,FechaSalida,Diagnostico)
VALUES (_FechaIngreso,_PacienteId,_EstadoId,_MedicoId,_FechaSalida,_Diagnostico);
End
//
Delimiter ;
método Insertar
Call insertar_Paciente ('P11', '11', 'Camilo', 'Cifuentes', 1, 'Direccion 11', '1110100');
Call insertar_Paciente ('P12', '12', 'Claudia', 'Tamayo', 0, 'Direccion 12', '1210100');
select * from Paciente;
Call insertar_Medico ('M11', '11000000', 'Jorge', 'Posada', 1, 'Car 11 No. 20 - 40', '31463953');
Call insertar_Medico ('M12', '12000000', 'Olga Maria', 'Martinez Tabera', 0, 'Cll 20 No. 45 -12', '3215647');
select * from Medico;
Call insertar_Urgencia ('2018-07-15', 'P11', 'CGE', 'M6', '2018-07-15', 'Consulta general');
Call insertar_Urgencia ('2018-07-15', 'P11', 'ODO', 'M10', '2018-07-15', 'Odontologia');
select * from Urgencia;
modificar procesos
Paciente
Delimiter //
Create procedure modificar_Paciente(in _PacienteId varchar(12), in _Cedula Varchar(20), in _Nombre Varchar(50), in _Apellidos Varchar(100), in _Sexo boolean, in _Direccion varchar(200), in _Telefono varchar(15))
Begin
Update Paciente set
Cedula=_Cedula
,Nombre=_Nombre
,Apellidos=_Apellidos
,Sexo=_Sexo
,Direccion=_Direccion
,Telefono=_Telefono
where PacienteId=_PacienteId;
End
//
Delimiter ;
Medico
Delimiter //
Create procedure modificar_Medico(in _MedicoId varchar(12), in _Cedula Varchar(20), in _Nombre Varchar(50), in _Apellidos Varchar(100), in _Sexo boolean, in _Direccion varchar(200), in _Telefono varchar(15))
Begin
Update Medico set
Cedula=_Cedula
,Nombre=_Nombre
,Apellidos=_Apellidos
,Sexo=_Sexo
,Direccion=_Direccion
,Telefono=_Telefono
where MedicoId=_MedicoId;
End
//
Delimiter ;
Urgencia
Delimiter //
Create procedure modificar_Urgencia(in _FechaIngreso datetime, in _PacienteId varchar(12), in _EstadoId Varchar(3), in _MedicoId Varchar(12), in _FechaSalida datetime, in _Diagnostico varchar(8000))
Begin
Update Urgencia set
EstadoId=_EstadoId
,MedicoId=_MedicoId
,FechaSalida=_FechaSalida
,Diagnostico=_Diagnostico
where FechaIngreso=_FechaIngreso AND PacienteId=_PacienteId;
End
//
Delimiter ;
Show procedure status;
Modificar
call modificar_Paciente ('P11', '11', 'Camila', 'Cifuentes Granados', 0, 'Direccion 11', '1155555');
select * from Medico;
call modificar_Medico ('M11', '11000000', 'Jorge', 'Posada Ruis', 1, 'Car 11 No. 20 - 40 (401)', '3215755');
select * from Urgencia;
call modificar_Urgencia ('2018-07-15', 'P11', 'CES', 'M7', '2018-07-15', 'Oftalmologo');
Eliminar procesos
Paciente
Delimiter //
Create procedure eliminar_Paciente(in _PacienteId varchar(12))
Begin
Delete from Paciente where PacienteId=_PacienteId;
End
//
Delimiter ;
Medico
Delimiter //
Create procedure eliminar_Medico(in _MedicoId varchar(12))
Begin
Delete from Medico where MedicoId=_MedicoId;
End
//
Delimiter ;
Urgencia
Delimiter //
Create procedure eliminar_Urgencia(in _FechaIngreso datetime, in _PacienteId varchar(12))
Begin
Delete from Urgencia where FechaIngreso=_FechaIngreso AND PacienteId=_PacienteId;
End
//
Delimiter ;
show procedure status;
Eliminar
paciente
call eliminar_Paciente ('P12');
medico
call eliminar_Medico ('M12');
urgencias
call eliminar_Urgencia ('2018-07-15', 'P11');
consultar
Paciente
Delimiter //
Create procedure cons_Paciente(in _PacienteId varchar(12))
Begin
Select PacienteId,Cedula,Nombre,Apellidos,Sexo,Direccion,Telefono
from Paciente
where PacienteId=_PacienteId;
End
//
Delimiter ;
call cons_Paciente('P1');
Medico
Delimiter //
Create procedure cons_Medico_Cedula(in _Cedula Varchar(20))
Begin
Select MedicoId,Cedula,Nombre,Apellidos,Sexo,Direccion,Telefono
from Medico
where Cedula=_Cedula;
End
//
Delimiter ;
call cons_Medico_Cedula('51');
Urgencias
Delimiter //
Create procedure cons_Urgencia_Cedula(in _Cedula Varchar(20))
Begin
Select U.FechaIngreso,U.PacienteId,P.Nombre As NombrePaciente,P.Apellidos As ApellidosPaciente,U.EstadoId,E.Nombre As Estado,U.MedicoId,M.Nombre As NombreMedico,M.Apellidos As ApellidosMedico,U.FechaSalida,U.Diagnostico
from Urgencia U
inner join Paciente P ON P.PacienteId = U.PacienteId
inner join Medico M ON M.MedicoId = U.MedicoId
inner join EstadoUrgencia E ON E.EstadoId= U.EstadoId
where P.Cedula=_Cedula;
End
//
Delimiter ;
call cons_Urgencia_Cedula('1');
Consulta adicional
Medicos que atendieron pacientes el 2018-07-01
Select M.MedicoId,M.Nombre As NombreMedico,M.Apellidos As ApellidosMedico
from Medico M
left join Urgencia U ON M.MedicoId = U.MedicoId
where U.FechaIngreso = '2018-07-01';
Adicionar PK a la tabla de urgencias
ALTER TABLE Urgencia ADD PRIMARY KEY PK_Urgencia (FechaIngreso,PacienteId);
describe table Urgencia;
Tee urgencias2019