Você está na página 1de 21

PORTFOLIO PRACTICA BASE DE DATOS

Portfolio de la implementacin de una BBDD para la gestin de un Hospital

BBDD Curso2010-2011

PORTFOLIO PRACTICA BASE DE DATOS 2011

Introduccio n al proyecto
Breve descripcin del proyecto
En este proyecto trataremos de crear una base de datos para la gestin de pacientes de un Hospital, para tal efecto se creara una base de datos principal y nica donde se recopilar la informacin que requieran los diferentes usuarios del sistema.

Objetivos
Los objetivos de nuestro proyecto son bsicamente estos 3 descritos a continuacin: Gestionar la actividad asistencial en el Hospital Gestionar la informacin de los pacientes a nivel asistencial (Historia clnica) Gestionar la medicacin de los pacientes

Usuarios
Se definen 4 grandes grupos de usuarios que utilizaran este sistema que se relatan a continuacin: Administradores del sistema Personal de administrativo: o Admisiones Personal asistencial: o Medico o Enfermera o Farmacia Paciente

Descripcin de la informacin que contendr la base de datos


La BBDD como hemos dicho es nica y centralizada. A continuacin adjuntamos una lista con las tablas (en negrita) y los campos (con sangra) que en un principio se implementaran en nuestra estructura: Usuarios del sistema o Identificador nico o Nombre
1

PORTFOLIO PRACTICA BASE DE DATOS 2011

o o o o o o o o o o -

Apellidos Fecha nacimiento Direccin Cdigo Postal Poblacin Telfono Contrasea Grupo de usuario Fecha Alta Fecha Baja

Grupos de usuarios o Identificacin nica o Descripcin o Permisos Permisos de grupos o Identificador de grupo o Identificador Permiso opciones Seguridad/Acceso o Identificador de grupo o Usuario o Contrasea Pacientes del sistema o Identificador nico (CIP) o Nombre o Apellidos o Fecha nacimiento o Direccin o Cdigo Postal o Poblacin o Telfono o Exitus Actividad/Visitas o Identificador nico o Fecha o Hora o Identificador paciente o Identificador professional Ingresos pacientes o Id. Ubicacin nica o Id. Paciente o Fecha entrada o Fecha salida
2

PORTFOLIO PRACTICA BASE DE DATOS 2011

Historia Clnica o Id. Paciente o Id Informe Informes mdicos o Id Paciente o Id mdico o Fecha o Hora o Descripcin patologa Orden mdica (farmacia) o Id. nico o Id. Paciente o Id. mdico o Fecha Alta o Fin tratamiento Medicamentos orden mdica o Id. Orden mdica o Id. Medicamento o Posologa Medicamentos o Id Medicamento (nica) o Descripcin o Fecha alta o Fecha Baja Ubicaciones o Id. nica o Planta o Habitacin o Estado o Descripcin

Funcionalidades
Relatamos una lista de las funcionalidades que tendr la base de datos para cada uno de los usuarios del sistema. En cada una podemos observar las funcionalidades que debe satisfacer y a continuacin encontramos los procesos que las resuelven. ADMINISTRADORES Tengo que dar de alta a un nuevo usuario? Baja a un usuario? - Alta y baja de usuarios del sistema
3

PORTFOLIO PRACTICA BASE DE DATOS 2011

Modificacin usuario? Un usuario tiene acceso a la BBDD? - Asignar roles a los usuarios La aplicacin tiene un correcto dimensionado? - Administracin de la BBDD ADMISIONES Nuevo paciente? Baja paciente? Cambio domicilio paciente? - Alta/baja y modificacin de los datos administrativos de los pacientes Est ingresado el paciente? Dnde? Cundo ingresa un paciente? Hay camas disponibles? Qu pacientes ingresarn prximamente? - Gestin de los ingresos MEDICOS Qu informes tiene el paciente? Qu medicamentos se le ha subministrado al paciente? Cuntos pacientes visitar hoy? - Alta de nuevos informes en la historia clnica - Consultar informes mdicos de los pacientes - Alta/Consulta datos medicacin - Lista de trabajo por da ENFERMERIA A cuntos pacientes tengo que dar medicacin? A un paciente ya se le ha dado medicacin? - Actualizacin de la medicacin del paciente - Consulta datos medicacin de pacientes FARMACIA Cundo me llega un nuevo medicamento? Baja de medicamentos? Qu medicamentos se prescriben ms? - Altas/Bajas/Modificacin de los medicamentos PACIENTE Cundo tengo que ingresar? Cundo viene a verme el mdico? - Modificacin de algunos datos personales - Consulta actividad prevista

PORTFOLIO PRACTICA BASE DE DATOS 2011

DIAGRAMA ENTIDAD-RELACION
En la siguiente imagen se puede observar el diagrama completo de la base de datos, se observa las entidades representadas por lneas rectangulares y los distintos atributos de cada entidad representados en el interior de un crculo. En las figuras rmbicas representa las relaciones establecidas con las entidades mediante lneas.

En este primer diseo se observa que la lectura del diagrama es de una dificultad

PORTFOLIO PRACTICA BASE DE DATOS 2011

DIAGRAMA ENTIDAD-RELACION (VERSION 2)


Despus de haber implementado el diseo de la base de datos apreciamos que nuestro diagrama entidad-relacin requera ser revisado. En un principio diseamos la base de datos conformando todas las relaciones como tablas. Despus de un anlisis detallado observamos que la mayora de ellas se podan implementar como llaves externas y por tanto se modific el diseo y se dej de la siguiente manera:

De esta manera obtenemos un diagrama de la base de datos mucho ms limpio y ms entendible a simple vista.

PORTFOLIO PRACTICA BASE DE DATOS 2011

TABLAS DE DATOS
Describiremos a continuacin con meticulosidad las tablas(en negrita) y los atributos que componen la estructura completa de la BBDD.

Tabla Usuario
Tabla en la que se almacenan todos los datos de los pacientes del sistema. Campos: IDUsuario: Identificador nico de usuario en formato numrico (ndice primario autoincremental). Nombre: Campo de texto en el que se almacena el nombre del usuario (lmite 25 caracteres). Apellidos: Campo de texto en el que se almacena el/los apellidos del usuario (lmite 50 caracteres). DTNacimiento: Campo de texto en el que se almacena la fecha de nacimiento del usuario (deber ser una fecha vlida). Direccin: Campo de texto en el que se almacena la direccin del usuario (lmite 50 caracteres). CodPostal: Campo de texto en el que se almacena el cdigo postal del usuario (lmite 5 carcteres). Poblacion: Campo de texto en el que se almacena la poblacin del usuario (lmite 40 carcteres). Telefono: Campo numrico en el que se almacena el telfono del usuario (deben ser 9 dgitos). Password: Campo alfanumrico en el que se almacena la contrasea del usuario (20 dgitos alfanumricos - MD5) FechaAlta: Campo de texto en el que se almacena la fecha en que se da de alta el usuario en el sistema (deber ser una fecha vlida). FechaBaja: Campo de texto en el que se almacena la fecha en que se da de baja el usuario en el sistema (deber ser una fecha vlida mayor que la fecha de baja).

PORTFOLIO PRACTICA BASE DE DATOS 2011

Definicin SQL de la tabla Usuarios: CREATE TABLE Usuario (IDUsuario INTEGER PRIMARY KEY AUTOINCREMENT, Nombre TEXT(25), Apellidos TEXT(50), DTNacimiento DATE, Direccion TEXT(50), CodPostal TEXT(5), Poblacion TEXT(40), Telefono INTEGER, Password TEXT(20), FechaAlta DATE, FechaBaja DATE, CHECK(Telefono >= 100000000 AND Telefono <= 999999999 AND FechaBaja < FechaAlta));

Tabla Paciente
Tabla en la que se almacenan todos los datos de la ficha de cada paciente. Campos: IDPaciente: Identificador nico de paciente en formato numrico (ndice primario autoincremental). Nombre: Campo de texto en el que se almacena el nombre del paciente (lmite 25 caracteres). Apellidos: Campo de texto en el que se almacena el/los apellidos del paciente (lmite 50 caracteres). DTNacimiento: Campo de texto en el que se almacena la fecha de nacimiento del paciente (deber ser una fecha vlida). Direccin: Campo de texto en el que se almacena la direccin del paciente (lmite 50 caracteres). CodPostal: Campo de texto en el que se almacena el cdigo postal del paciente (lmite 5 carcteres). Poblacion: Campo de texto en el que se almacena la poblacin del paciente (lmite 40 carcteres). Telefono: Campo numrico en el que se almacena el telfono del paciente (deben ser 9 dgitos). DTExitus: Campo de texto en el que se almacena la fecha de defuncin del paciente (deber ser una fecha vlida si el paciente ha fallecido o NULL en caso contrario).

Definicin SQL de la tabla Pacientes: CREATE TABLE Paciente (IDPaciente INTEGER PRIMARY KEY AUTOINCREMENT, Nombre TEXT(25), Apellidos TEXT(50), DTNacimiento DATE, Direccion TEXT(50), CodPostal TEXT(5),

PORTFOLIO PRACTICA BASE DE DATOS 2011

Poblacion TEXT(40), Telefono INTEGER, DTExitus DATE, CHECK(Telefono >= 100000000 AND Telefono <= 999999999));

Tabla Profesional
Tabla en la que se almacenan los datos de los profesionales. Campos: IDProfesional: Identificador nico de profesional en formato numrico (ndice primario autoincremental). NumColegiado: Campo numrico en el que se almacena el nmero de colegiado del profesional (nmero vlido y nico). Especialidad: Campo de texto en el que se la especialidad del mdico (lmite 25 caracteres).

Definicin SQL de la tabla Profesional: CREATE TABLE Profesional (IDProfesional INTEGER PRIMARY KEY AUTOINCREMENT, NumColegiado INTEGER, Especialidad TEXT(15), CHECK(NumColegiado >= 1 AND NumColegiado <= 9999));

Tabla Visitas
Tabla en la que se almacenan las visitas programadas que tiene un paciente. Campos: IDVisita: Identificador nico de la visita en formato numrico (ndice primario autoincremental). Fecha: Campo de texto en el que se almacena la fecha de la visita (deber ser una fecha vlida). Hora: Campo de texto en el que se almacena la hora de la visita (deber ser una hora vlida). Tipo: Enumeracin en el que se almacena el tipo de la visita (deber ser un valor de la enumeracin).

PORTFOLIO PRACTICA BASE DE DATOS 2011


IDPaciente: Identificador del paciente que tiene la visita, en formato numrico (clave externa vlida). IDProfesional: Identificador del profesional que atiende la visita, en formato numrico (clave externa vlida).

Tabla Ingresos
Tabla en la que se almacenan los ingresos que tiene un paciente. Campos: IDIngreso: Identificador nico del ingreso en formato numrico (ndice primario autoincremental). FechaEntrada: Campo de texto en el que se almacena la fecha en que empieza el ingreso (deber ser una fecha vlida). FechaSalida: Campo de texto en el que se almacena la fecha en que acaba el ingreso (deber ser una fecha vlida mayor que la fecha de entrada). IDPaciente: Identificador del paciente que tiene el ingreso, en formato numrico (clave externa vlida).

Tabla Ubicaciones
Tabla en la que se almacenan las diferentes ubicaciones del hospital (se corresponden con las habitaciones). Campos: IDUbicacion: Identificador nico de la ubicacin en formato numrico (ndice primario autoincremental). Planta: Campo numrico que en el que se almacena el nmero de planta de la ubicacin (deber ser un entero que se corresponda con una planta existente en el hospital). Habitacion: Campo numrico que en el que se almacena el nmero de la habitacin (deber ser un entero que se corresponda con una habitacin existente en el hospital. Estado: Enumeracin en el que se almacena el estado de la habitacin (deber ser un valor de la enumeracin).
10

PORTFOLIO PRACTICA BASE DE DATOS 2011


Descripcion: Campo de texto en el que se almacena la descripcin de la ubicacin (lmite 50 carcteres). IDIngreso: Identificador del ingreso que ocupa la ubicacin, en formato numrico (clave externa vlida).

Tabla Informes
Tabla en la que se almacenan los informes de los pacientes Campos: IDInforme: Identificador nico de informe en formato numrico (ndice primario autoincremental). Fecha: Campo de texto en el que se almacena la fecha en que se ha escrito el informe (deber ser una fecha vlida). Hora: Campo de texto en el que se almacena la hora en que se ha escrito el informe (deber ser una hora vlida). Descripcion: Campo de texto en el que se almacena la descripcin patolgica (lmite 250 carcteres). IDPaciente: Identificador del paciente del cual trata el informe, en formato numrico (clave externa vlida). IDProfesional: Identificador del profesional que redacta el informe, en formato numrico (clave externa vlida).

Tabla Prescripciones
Tabla en la que se almacenan los las prescripciones mdicas. Campos: IDPrescripcion: Identificador nico de la prescripcin en formato numrico (ndice primario autoincremental). FechaAlta: Campo de texto en el que se almacena la fecha en que se empieza el tratamiento (deber ser una fecha vlida). FinTratamiento: Campo de texto en el que se almacena la fecha en que se termina el tratamiento (deber ser una fecha vlida mayor que FechaAlta).

11

PORTFOLIO PRACTICA BASE DE DATOS 2011


IDPaciente: Identificador del paciente al que se le ha hecho la prescripcin, en formato numrico (clave externa vlida). IDProfesional: Identificador del profesional que ha hecho la prescripcin, en formato numrico (clave externa vlida).

Tabla Medicamentos
Tabla en la que se almacenan los posibles medicamentos que se pueden prescribir. Campos: IDMedicamento: Identificador nico del medicamento en formato numrico (ndice primario autoincremental). Descripcion: Campo de texto en el que se almacena una breve descripcin del medicamento (lmite 50 carcteres). FechaAlta: Campo de texto en el que se almacena la fecha en que se da de alta el medicamento en el sistema (deber ser una fecha vlida). FechaBaja: Campo de texto en el que se almacena la fecha en que se da de baja el medicamento en el sistema (deber ser una fecha vlida mayor que la fecha de baja).

Tabla Posologa
Tabla en la que se almacenan los medicamentos que han recetado en una prescripcin. Campos: Dosis: Campo numrico que en el que se almacena la dosis que se tiene que tomar un paciente de un medicamento (un entero positivo vlido). IDMedicamento: Identificador del medicamento que se ha prescrito, en formato numrico (clave externa vlida). IDPrescripcion: Identificador de la prescripcin, en formato numrico (clave externa vlida).

12

PORTFOLIO PRACTICA BASE DE DATOS 2011

Implementacio n fsica de la Base de datos


Una vez finalizado el diseo del diagrama entidades-relaciones tenemos que implementar ese diseo lgico en un diseo fsico. En la primera versin se apost por utilizar el programa SQLITE utilizado durante las clases de problemas, pero se observo que para la complejidad del proyecto actual se antojaba demasiado amplio para utilizar el citado programa. Por ello se procedi a cambiar el motor de la base de datos por MySQL utilizando el interface XAMPLITE, adjuntamos captura de pantalla del mdulo de control:

Podemos observar tambin que dicho mdulo implementa un motor del servidor web apache que nos servir para implementar nuestro interface con el usuario con el desarrollo de pginas PHP i HTML.
13

PORTFOLIO PRACTICA BASE DE DATOS 2011

Disen o fsico de la BBDD mediante MySQL


En el siguiente esquema observamos la implementacin final de las tablas i de las relaciones en nuestra Base de datos del Hospital. Se aprecia que la realizacin final de la BBDD se asemeja mucho al diseo del diagrama Entidad-Relacion.

14

PORTFOLIO PRACTICA BASE DE DATOS 2011

Implementacio n de la interface con el usuario


Una vez creada fsicamente la base de datos, procedemos a implementar el interface para que los diferentes usuarios puedan interactuar con la informacin de la misma. Para ello se programarn en HTML i PHP formularios e informes que hagan posibles esa interaccin.

Formularios
A continuacin se detalla el desarrollo completo de 3 formularios:

Alta Paciente
En este formulario se abrir la ficha del paciente en la base de datos para que pueda utilizar el sistema en el resto de las funciones.

La captura de pantalla nos permite observar los campos que se requieren para abrir esa ficha de paciente, una vez rellenados se ejecuta una consulta de seleccin para ver si ese registro ya existe en la BBDD y evitar duplicados:
15

PORTFOLIO PRACTICA BASE DE DATOS 2011

SELECT * FROM Paciente WHERE Nombre = '$nombre' AND Apellidos = '$apellidos' AND DTNacimiento = '$dtnacimiento' Una vez comprobamos que no existe ejecutamos la consulta de insercin para introducirla en la base de datos: INSERT INTO paciente (Nombre, Apellidos, DTNacimiento, Direccion, CodPostal, Poblacion, Telefono) VALUES ('$nombre','$apellidos','$dtnacimiento','$direccion','$codpostal','$poblacion','$telefono')

Programar visita
El siguiente formulario te permite introducir una visita para el paciente. Para ello se dibujan 3 comboboxs con el paciente, el mdico, el da y la hora en que se producir esa visita y un cuadro de texto para introducir el motivo de la visita. Adjuntamos el formulario para observar dicha disposicin de los campos:

Para rellenar las combos ejecutamos las siguientes consultas: SELECT * FROM profesionales ORDER BY Nombre SELECT * FROM paciente ORDER BY Apellidos
16

PORTFOLIO PRACTICA BASE DE DATOS 2011

Primero miramos si el medico ya tiene la cita ocupada con otro paciente: SELECT * FROM VISITAS WHERE IDProfesional = '$id_prof' AND DTVisita = '$fecha' I para la consulta que nos permite insertar la informacin en la tabla Visita es la siguiente: INSERT INTO visitas (IDPaciente, IDProfesional, DTVisita, Patologia) VALUES ('$id_pac','$id_prof','$fecha','$patologia')

Crear ingreso
El formulario de los ingresos sigue un diseo muy similar al de las visitas pero en este caso se pide que nos introduzca la ubicacin donde residir el paciente.

Para rellenar los combos utilizamos las siguientes consultas: SELECT * FROM paciente ORDER BY Apellidos SELECT * FROM ubicaciones WHERE Ocupado = 0 Hay que observar que la segunda consulta es restrictiva ya que solo nos muestra las ubicaciones libres del hospital. El update al ingreso se hace con: INSERT INTO ingresos (IDpaciente, IDUbicacion, DTEntrada) VALUES ('$id_pac','$id_ubic','$fecha') A la vez se hace que la ubicacin se actualice a ocupada con un UPDATE: UPDATE ubicaciones SET Ocupado = '1' WHERE IDUbicacion = '$id_ubic'
17

PORTFOLIO PRACTICA BASE DE DATOS 2011

CONSULTAS/INFORMES
Vemos ahora los diferentes informes que se han realizado para esta base de datos:

Consultar Visitas Profesional/Fecha


Nos permite listar la agenda que tienes un profesional en la fecha indicada, se consulta la tabla de visitas exclusivamente.

Sentencia SQL: SELECT * FROM visitas WHERE DTVisita > '$fecha1' AND DTVisita < '$fecha2' AND IDProfesional = '$id' ORDER BY DTVisita NOTA: Hay que tener en cuenta que el PHP ya controla que las fechas son correctas.

Consultar Visitas/Ingresos Paciente


En este caso lo que se nos permite es sacar un historial de la historia clnica del paciente, simplemente hemos de seleccionar el paciente y nos mostrar un listado de todos sus actividades hechas en el hospital.

18

PORTFOLIO PRACTICA BASE DE DATOS 2011

Sentencia SQL: Para elegir el paciente: SELECT * FROM paciente ORDER BY Apellidos Para mostrar el listado: SELECT 'v' as Tipo, IDProfesional, NULL as IDUbicacion, DTVisita, Patologia, NULL as DtSalida, 0 as estaIngresado FROM `visitas` WHERE IDPaciente = '$id') UNION (SELECT 'i', NULL, IDUbicacion, DtEntrada, '', DtSalida, IF (DtSalida is NULL, DtEntrada <= NOW(), 0) FROM `ingresos` WHERE IDPaciente = '$id') ORDER BY DTVisita Observamos que se hace un UNION para obtener los datos de las dos tablas (Visitas e ingresos) y se unifican los campos para que este sea posible.

Consultar Visitas por Fecha


En este caso lo que se nos permite obtener un listado de las visitas que se han dado en el hospital entre dos fechas concretas.

Sentencia SQL: SELECT * FROM visitas WHERE DTVisita > '$fecha1' AND DTVisita < '$fecha2' ORDER BY DTVisita Tambin observamos en este caso que se nos da el nmero total de visitas para esta consulta.

19

PORTFOLIO PRACTICA BASE DE DATOS 2011

CONCLUSIONES
Despus de desarrollar este porfolio podemos llegar a extraer nuestras propias conclusiones.

Material pendiente
Listado de los materiales pendientes a realizar: Evidentemente el desarrollo completo de los formularios Desarrollo completo de los ingresos Implementar un interface ms atractivo al usuario Mejorar las comprobaciones de seguridad y restriccin en los distintos formularios

Qu haras en una segunda versin


Despus de esta primera aproximacin a la base de datos del Hospital: Trabajar con consultas anidadas (o modular las consultas realizadas con restricciones) que nos permitan reducir el nmero de formularios/informes para que la aplicacin sea ms fcil de usar. Implementar un sistema de seguridad para la gestin de los usuarios

Conclusiones
Podemos pues decir que el desarrollo de esta prctica nos ha permitido: Conocer de una manera bastante provechosa el lenguaje SQL Trabajar en muchas de sus virtudes con Bases de datos relacionales Abarcar un proyecto desde su fase ms embrionaria hasta su materializacin Saber cmo entender las necesidades de los cliente se traducirn a la base de datos

20

Você também pode gostar