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:

Para lo cual deben tener en cuenta lo siguiente:
a) Cada médico será responsable en general de varios pacientes.

b) Un paciente puede ingresar varias veces en el hospital y tener asignado en cada ocasión diferentes médicos

REALIZAR LO SIGUIENTE:
1. Darle un nombre a la base de datos.
2. Listado de tablas que llevara la BD. (cuales son referenciales y cuales son de movimiento)
3. Diseñar la estructura de cada tabla o diccionario de datos teniendo en cuenta el siguiente formato

Diccionario de Datos.xlsx (11182)
4. Montar o diseñar el modelo entidad relaciòn.
5. Dibujar el Diagrama relacional.
6. Crear la BD y las tablas respectivas en mysql

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

© 2018 Jhon Alejandro Guevara Giraldo, Ingeniero de Sistemas, Medellín-Colombia.
Creado con Webnode
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar