Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Autor:
Francisco Serrano Peris
Ingeniera en Informtica
Consultor:
Juan Martnez Bolaos
12 de Junio de 2013
A mi mujer Lidn,
por su apoyo en todo momento.
Resumen
Resumen
El proyecto final de carrera es una sntesis de los conocimientos adquiridos a lo largo de la carrera, para
aplicarlos en un proyecto del mundo real. ste se enmarca en el rea de Bases de datos.
El ejercicio que se nos plantea es desarrollar una base de datos para la gestin integral del sistema
sanitario. Adems, tambin tendremos que crear un almacn de datos para facilitar el anlisis de la
situacin del sistema. Para la consecucin del proyecto deberemos planificar el trabajo, analizar los
requisitos y realizar la implementacin.
El Ministerio de Sanidad nos plantea un escenario en el que cada centro hospitalario y cada farmacia
funcionan de forma autnoma y sin estar en contacto con el resto de centros. La base de datos a
desarrollar deber soportar la gestin de los pacientes, los mdicos; las consultas externas y de
urgencias; el consumo de medicamentos, las pruebas mdicas, las enfermedades contradas, las bajas
laborales, etc.; de una forma centralizada.
Esta base de datos no podr ser accedida directamente por ningn sistema externo, el intercambio de
informacin se realizar siempre a travs de procedimientos almacenados.
En el desarrollo del proyecto utilizaremos el sistema de gestin de bases de datos Oracle 11g Express
Edition y la herramienta OLAP Pentaho para explotar el almacn de datos.
ndice de contenido
ndice de contenido
Resumen ....................................................................................................................................................... 3
ndice de figuras ........................................................................................................................................... 6
1. Introduccin ............................................................................................................................................. 7
1.1. Justificacin del PFC y contexto en el que se desarrolla ................................................................... 7
1.2. Objetivos del PFC .............................................................................................................................. 7
1.3. Enfoque y mtodo seguido ............................................................................................................... 8
1.4. Planificacin del trabajo .................................................................................................................... 8
1.4.1. Hitos significativos ..................................................................................................................... 9
1.4.2. Estructuracin del proyecto y distribucin del trabajo. ............................................................ 9
1.5. Productos obtenidos ....................................................................................................................... 12
1.6. Descripcin breve de los otros captulos de la memoria ................................................................ 12
2. Anlisis de requisitos .............................................................................................................................. 13
2.1. Lista detallada de requisitos ........................................................................................................... 13
2.2. Casos de uso .................................................................................................................................... 14
3. Diseo de la base de datos ..................................................................................................................... 19
3.1. Modelo conceptual ......................................................................................................................... 19
3.2. Diseo lgico ................................................................................................................................... 21
3.2.1. Reglas de negocio .................................................................................................................... 23
3.2.2. Descripcin de las relaciones ................................................................................................... 24
3.3. Diseo fsico .................................................................................................................................... 28
3.3.1. Errores en la ejecucin de los procedimientos ........................................................................ 28
3.3.2. Creacin de las tablas .............................................................................................................. 29
3.3.3. Procedimientos de alta ............................................................................................................ 29
3.3.4. Procedimientos de baja ........................................................................................................... 40
3.3.5. Procedimientos de modificacin ............................................................................................. 50
3.3.6. Procedimientos de seleccin ................................................................................................... 58
3.3.7. Gestin de las bajas laborales y las revisiones de las bajas ..................................................... 62
4. Almacn de datos ................................................................................................................................... 64
4.1. Modelo conceptual ......................................................................................................................... 64
4.1.1 Anlisis de requisitos ................................................................................................................ 64
4.1.2. Elementos de anlisis............................................................................................................... 64
4.1.3. Diagrama del Modelo Conceptual ........................................................................................... 68
4.2. Modelo Lgico ................................................................................................................................. 69
4
ndice de contenido
ndice de figuras
ndice de figuras
Figura 1. Diagrama de Gantt....................................................................................................................... 11
Figura 2. Diagrama de casos de uso. .......................................................................................................... 15
Figura 3. Modelo Conceptual. .................................................................................................................... 19
Figura 4. Diseo lgico. .............................................................................................................................. 22
Figura 5. Modelo conceptual del almacn de datos................................................................................... 68
Figura 6. Diseo lgico del almacn de datos. ........................................................................................... 71
Figura 7. Esquema OLAP creado con Pentaho Schema Workbench. ......................................................... 80
Figura 8. Dimensin Fecha. ........................................................................................................................ 80
Figura 9. Nivel de la jerarqua FechaDia. .................................................................................................... 81
Figura 10. Anlisis de las urgencias por mes. ............................................................................................. 81
Figura 11. Grfico de las urgencias por mes. .............................................................................................. 82
Figura 12. Urgencias por da de la semana. ................................................................................................ 82
Figura 13. Consumo de medicamentos por edad del paciente. ................................................................. 82
Figura 14. Grfico del consumo de medicamentos por edad. .................................................................... 83
Figura 15. Anlisis de bajas laborales por edad. ......................................................................................... 83
Figura 16. Grfico de las bajas laborales por edad. .................................................................................... 84
Figura 17. Esquema entorno virtualizado................................................................................................... 88
1. Introduccin
1. Introduccin
En este primer apartado de la memoria del Proyecto Final de Carrera (PFC) describiremos el proyecto
que hemos realizado. Indicaremos tanto los objetivos que se persiguen con la realizacin del proyecto,
como el alcance del mismo. Tambin expondremos el mtodo de trabajo y la planificacin que hemos
seguido para su consecucin. Por ltimo, mostraremos los entregables del proyecto; y un breve
comentario de cada uno de los apartados que forman este documento.
1. Introduccin
Un factor crtico del proyecto es disear una BD lo ms estndar posible para que pueda ser accedida
por distintos sistemas externos, y que sea escalable ante nuevos requisitos en un futuro. Estos sistemas
externos habrn sido desarrollados por distintas empresas e implementados en diferentes plataformas.
1. Introduccin
28 de Febrero de 2013
17 de Marzo de 2013
21 de Abril de 2013
19 de Mayo de 2013
12 de Junio de 2013
1. Introduccin
10
1. Introduccin
En la figura 1 podemos ver el diagrama de Gantt con la planificacin de todas las tareas:
11
1. Introduccin
12
2. Anlisis de requisitos
2. Anlisis de requisitos
En este apartado analizaremos detalladamente los requisitos establecidos por nuestro cliente. La BD
debe disearse para poder soportar la siguiente funcionalidad:
-Deber registrar todas las consultas externas que se realicen en todos los hospitales, ya sean consultas
normales o con carcter de urgencia, almacenando tanto los datos del paciente como del mdico, as
como las pruebas mdicas y los medicamentos que son recetados.
-La gestin de los pacientes, adems de las consultas externas que reciban en cualquier hospital,
registrar las enfermedades que han padecido a lo largo de su historial mdico, los mdicos que les han
atendido, las pruebas diagnsticas que les han realizado y las medicinas que les han sido recetadas, as
como el mdico que tienen asignado actualmente. Tambin recoger una relacin de todas las bajas
laborales, con su duracin, la enfermedad que las provoc y el mdico que concedi la baja.
-La gestin de los mdicos registrar los hospitales en los que han sido destinados, los pacientes que
han atendido, y los que tienen actualmente asignados.
-Sobre las farmacias, se registrarn todos los medicamentos con receta expedidos a los distintos
pacientes.
Tambin se debe desarrollar un data warehouse (DWH) para extraer estadsticas de una forma rpida, y
as poder analizar la situacin de la gestin sanitaria de forma global.
La BD deber ser lo ms escalable posible para permitir nuevos requisitos que pudieran surgir
posteriormente a la finalizacin del proyecto.
Por ltimo, la BD deber disponer de un sistema de generacin de logs, registrando todas las acciones
que se realicen sobre ella. De esta forma se podr realizar un mejor mantenimiento de la misma y
facilitar la integracin con el resto de sistemas externos.
El proyecto nicamente contempla el diseo e implementacin de la BD, incluyendo todos los
procedimientos almacenados necesarios para permitir un acceso a los datos a travs de ellos y el
registro de toda la actividad realizada sobre ella. No se permitir ningn acceso a la informacin que no
sea a travs de dichos procedimientos.
No est incluido en el alcance del proyecto ningn desarrollo adicional para crear una interfaz de
usuario mediante la cual consultar o mantener la informacin.
2. Anlisis de requisitos
6. Soportar la gestin de las farmacias que estn de guardia en cada poblacin, as como los
medicamentos que dispense cada una a los pacientes. Tambin se almacenar informacin sobre los
farmacuticos que poseen las farmacias.
7. De cada mdico, se mantiene la informacin de los hospitales a los que ha sido destinado, las
consultas realizadas y los pacientes que tiene actualmente asignados. Tambin se registran las consultas
que haya solicitado para que un paciente visite otro mdico especialista, las recetas que expidan y las
revisiones de bajas que hagan.
8. De los hospitales, se gestionar las consultas que se realicen, ya sean consultas externas o urgencias;
los tipos de pruebas diagnsticas que pueden realizar y las que realmente realicen.
9. De cada paciente tendremos una relacin de las enfermedades contradas, con los medicamentos
recetados, las consultas mdicas, las pruebas diagnsticas realizadas y el estado de las posibles bajas
que le sean prescritas para cada una de dichas enfermedades.
14
2. Anlisis de requisitos
Debido al gran nmero de casos de uso, no hemos entrado al detalle de los mismos. Por ejemplo, en
lugar de especificar los distintos casos de uso necesarios en la gestin de las especialidades y la
asignacin de estas a los mdicos, nicamente definimos el caso de uso Gestionar especialidades.
En la figura 2 podemos ver el diagrama de casos de uso.
El caso de uso Asignar pruebas a hospitales puede ser iniciado directamente por el Gestor de Sanidad,
aunque tambin puede contemplarse como una extensin de Gestionar hospitales. De la misma
forma, tambin extiende el caso de uso Gestionar destinos el de Gestionar mdicos; o el caso de uso
Gestionar asignaciones de mdicos a pacientes extiende el de Gestionar pacientes.
Por otra parte, el caso de uso Consultar datos paciente est incluido dentro de Gestionar pacientes.
Los actores Enfermera, Mdico y Gestor Sanidad iniciarn directamente el segundo, pero los pacientes
slo podrn iniciar el primero. Pasa lo mismo para los casos Consultar recetas, Consultar resultados
pruebas y Solicitar consulta.
A continuacin especificaremos cada uno de los casos de uso.
15
2. Anlisis de requisitos
16
2. Anlisis de requisitos
Flujo principal: podr ejecutarse directamente o que se ejecute desde el caso de uso Gestionar
hospitales al dar de alta un hospital.
11. Gestionar tipos de pruebas diagnsticas.
Funcionalidad: permitir dar de alta las distintas pruebas diagnsticas conocidas, indicando un nombre,
una descripcin y las posibles contraindicaciones que pudiera tener
12. Gestionar mdicos.
Funcionalidad: permitir dar de alta y modificar la informacin de cada mdico, as como indicar qu
especialidades ha adquirido cada uno de ellos.
13. Gestionar destinos.
Funcionalidad: permitir crear y modificar cada uno de los destinos que tenga cada mdico.
Flujo principal: Podr ejecutarse directamente o desde el caso de uso Gestionar mdicos. Para crear
un destino, deber existir tanto el mdico como el hospital.
14. Gestionar asignaciones de mdicos a pacientes.
Funcionalidad: permitir asignar a cada paciente su mdico.
Flujo principal: podr ejecutarse directamente o desde el caso de uso Gestionar pacientes. Para crear
la asignacin, previamente debe existir el mdico y el paciente.
15. Gestionar especialidades.
Funcionalidad: permite dar de alta las distintas especialidades que existen en la medicina.
16. Gestionar pacientes.
Funcionalidad: permite dar de alta y modificar la informacin sobre un paciente. Incluye el caso de uso
Consultar datos paciente.
17. Consultar datos paciente.
Funcionalidad: permitir ver los datos de cualquier paciente de la base de datos.
18. Dispensar receta.
Funcionalidad: permite dar como dispensada una receta.
Flujo principal: el usuario podr consultar las recetas que tiene dadas de alta un paciente (este caso de
uso extiende el de Consultar recetas), y dispensar una de ellas. De esta forma un paciente no podr
adquirir de nuevo el mismo medicamento sin tener otra receta.
19. Consultar recetas.
Funcionalidad: permite consultar todas las recetas que tiene pendientes el paciente por parte de
cualquier mdico.
20. Gestionar resultados pruebas.
Funcionalidad: permitir adjuntar los resultados a las pruebas mdicas por parte del personal del
laboratorio.
21. Solicitar consulta.
Funcionalidad: permite solicitar una consulta para un mdico.
Flujo principal: a la hora de solicitar una consulta, le aparecern al usuario aquellas franjas horarias que
el mdico, con que se quiere concertar la consulta, tiene libres. Podr elegir una franja horaria y
17
2. Anlisis de requisitos
confirmar la cita previa. En caso del actor ser el paciente, nicamente le aparecer el mdico que tenga
asignado. En caso de ser otro mdico o una enfermera el que solicite la consulta, podr buscar de entre
todos los mdicos de la base de datos que estn activos.
22. Gestionar enfermedades diagnosticadas.
Funcionalidad: permite al mdico diagnosticar una enfermedad y modificar la informacin de una
enfermedad ya diagnosticada.
Flujo principal: el usuario buscar el paciente al que le est haciendo la consulta. Despus realizar una
bsqueda de entre las enfermedades conocidas y crear el diagnstico.
23. Consultar enfermedad diagnosticada.
Funcionalidad: permite buscar las enfermedades diagnosticadas de un paciente.
24. Consultar datos consulta mdica.
Funcionalidad: permite buscar las consultas que tiene cada paciente, ya sean planificadas o histricas.
25. Solicitar pruebas diagnsticas.
Funcionalidad: permite solicitar una prueba diagnstica para un paciente.
Flujo principal: el usuario seleccionar la consulta que est realizando al paciente. A continuacin
buscar una de las pruebas diagnsticas conocidas y crear la solicitud de la prueba. A continuacin ver
los hospitales en los que se puede realizar la prueba, e indicar uno de ellos.
26. Gestionar bajas laborales.
Funcionalidad: crear una revisin para una baja laboral de un paciente.
Flujo principal: el mdico seleccionar una enfermedad de las diagnosticadas al paciente. Crear un tipo
de revisin que podr ser de alta, prrroga o finalizacin. Dependiendo del tipo de revisin, el estado de
la baja cambiar. Podr aadir comentarios a los motivos de la revisin.
27. Gestionar recetas.
Funcionalidad: el usuario podr recetar medicamentos a un paciente.
Flujo principal: el usuario seleccionar una de las enfermedades diagnosticadas a un paciente. Crear
una receta indicando el producto y la posologa.
28. Consultar resultados pruebas.
Funcionalidad: permite al usuario ver los resultados de las pruebas realizadas a un paciente.
29. Gestionar consultas.
Funcionalidad: dar de alta consultas, modificar la planificacin y borrar una consulta planificada.
Flujo principal: el usuario podr buscar un paciente y ver las consultas que se le han realizado y las que
tiene planificadas. Podr cambiar la planificacin de la consulta seleccionada.
18
19
A continuacin, detallaremos las entidades destacadas en el diseo conceptual y las relaciones entre
ellas:
CONSULTA
Reflejamos las consultas externas y las urgencias como una especializacin de la entidad consulta. Es
una generalizacin completa y disjunta.
La consulta est relacionada con el mdico dos veces. Por una parte es quin la realiza y por otra puede
ser que la consulta la haya solicitado otro mdico. Una consulta la puede solicitar un paciente o bien que
sea el mdico de cabecera el que la solicita para un especialista.
Esta entidad tambin est relacionada con el paciente que solicita y recibe la consulta.
La consulta tambin est relacionada con la entidad PRUEBA DIAGNOSTICA, ya que slo a travs de una
consulta se podrn solicitar dichas pruebas.
Tambin est relacionada con la entidad ENFERMEDAD DIAGNOSTICADA. Tras una consulta se puede
diagnosticar una enfermedad, varias o ninguna, de ah la multiplicidad 0..*. Una consulta antigua se
podr asignar posteriormente a una enfermedad que se diagnostique despus.
PACIENTE
La entidad PACIENTE recoge los datos de los pacientes. Est relacionada con las consultas que ha
solicitado y recibido, las enfermedades que le han diagnosticado, y con las pruebas mdicas que le han
hecho.
Tambin est relacionado con el mdico que tiene asignado.
Los medicamentos que le han sido recetados y las bajas que le han prescrito se relacionan a travs de
las enfermedades diagnosticadas.
MEDICO
La entidad MEDICO est relacionada con el hospital al que ha sido destinado, con las consultas externas
que ha realizado y con los pacientes que tiene asignados. Tambin se relaciona con los medicamentos
que ha recetado, las pruebas diagnsticas que ha solicitado y con las bajas que ha prescrito o revisado.
ENFERMEDAD DIAGNOSTICADA
Esta entidad est relacionada con el paciente que la padece y con las consultas externas que ha tenido
en relacin a ella. Tambin est relacionada con la entidad ENFERMEDAD, que mantiene una relacin de
las enfermedades conocidas.
Mantiene, adems, relacin con la entidad BAJA LABORAL, ya que sin una enfermedad diagnosticada un
mdico no puede prescribir una baja. Asimismo, est relacionada tambin con la entidad RECETA ya
que, tal y como pasa con las bajas laborales, un mdico no puede recetar sin diagnosticar antes una
enfermedad.
HOSPITAL
Esta entidad mantiene la informacin de los distintos hospitales que se gestionan desde el Ministerio de
Sanidad. Est relacionada con las consultas que se realizan en ellos; tambin con el tipo de pruebas que
se pueden realizar; y con las consultas que se planifican y realizan. Tambin se relaciona con los mdicos
destinados.
20
FARMACIA
Entidad que registra la informacin de las farmacias. Est relacionada con la entidad RECETA, que
corresponde a las recetas creadas por los mdicos; y con la entidad GUARDIA, que mantiene la relacin
de guardias que corresponden a cada farmacia.
FARMACEUTICO
Entidad referente a los farmacuticos que estn encargados de las distintas farmacias. Una farmacia
puede pertenecer a un nico farmacutico y un farmacutico puede no tener ninguna o tener varias
farmacias.
ENFERMEDAD
Entidad que almacena todas las enfermedades conocidas. Est relacionada con la entidad ENFERMEDAD
DIAGNOSTICADA y con la entidad MEDICAMENTO, que son los que la combaten.
MEDICAMENTO
Entidad que registra los medicamentos disponibles actualmente. Es una generalizacin completa y
disjunta; de los medicamentos genricos y de los comerciales. Est relacionada con la entidad RECETA.
RECETA
Entidad que corresponde a las recetas prescritas por los mdicos para combatir las enfermedades
contradas por los pacientes. Est relacionada con la entidad ENFERMEDAD DIAGNOSTICADA, ya que
como decimos sin sta no se puede recetar. Tambin lo est con el mdico que la ha creado, as como
con el medicamento que incluye. Cada receta corresponde a un nico medicamento.
PRUEBA DIAGNSTICA
Relacin que mantiene las pruebas diagnsticas que se ha hecho el paciente. Se relaciona con el mdico
que la pide y el paciente que se la hace. Tambin se relaciona con la consulta en la que se solicita dicha
prueba y con el hospital dnde se realiza. Como ya hemos comentado anteriormente, no es necesario
diagnosticar una enfermedad para solicitar una prueba.
BAJA LABORAL
La entidad baja laboral est relacionada con el mdico que la concede con una relacin de muchos a
muchos; ya que es posible que no sea el mismo mdico el que la conceda, el que la revise y el que la
finalice. Tambin est relacionada con la enfermedad que la provoca.
21
22
23
24
25
distintas
especialidades
mdicas
en
HOSPITAL
La relacin HOSPITAL mantiene la interrelacin con CONSULTA tal y como la tenamos en el modelo
conceptual.
Como ya hemos comentado, en el modelo tenamos una relacin de muchos a muchos con la entidad
PRUEBA_DIAGNOSTICA. Ahora la interrelacin es con las nuevas relaciones PRUEBA_SOLICITADA Y
PRUEBA_DIAGNOSTICA. La primera indica las pruebas que se van a realizar o se han realizado en cada
hospital y se interrelaciona directamente con la relacin HOSPITAL. La segunda indica qu pruebas se
pueden hacer en cada hospital que, al ser una relacin de muchos a muchos, se resuelve a travs de la
relacin REALIZAN.
FARMACIA
La relacin FARMACIA mantiene la interrelacin con la relacin FARMACEUTICO.
26
En el caso de la interrelacin con la relacin RECETA, para poder modelar que una receta puede no estar
dispensada por ninguna farmacia (cuando el paciente an ha ido a la farmacia a comprar los
medicamentos, o directamente nunca los compra), hemos creado la relacin DISPENSACIN. Esta
relacin mantendr la informacin de en qu farmacia es dispensado el medicamento de cada receta.
En el modelo lgico tenamos una relacin de muchos a muchos con la entidad GUARDIA. Es posible que
queramos planificar distintas guardias con distintas fechas para una misma farmacia, o que una farmacia
no tenga ninguna guardia planificada.
PAIS, POBLACION, AGRUPACION, AGRUPACION_POBLACION Y TIPO_AGRUPACION_POBLACION
Aunque en el modelo conceptual no aparecan, hemos creado cuatro relaciones para mantener la
informacin de los cdigos postales.
Por parte tenemos la relacin PAIS con informacin de todos los pases. Aunque vamos a trabajar
nicamente con el sistema sanitario espaol, es preferible contemplar destinos fuera de nuestro pas; ya
que debemos tener en cuenta que habr pacientes, mdicos y farmacuticos que no sean espaoles.
La siguiente relacin es POBLACION. Una poblacin est identificada por el cdigo postal y el pas en el
que se encuentra. Hay poblaciones que comparten cdigo postal, de ah que hayamos incluido un
campo en la clave primaria llamado repeticionPostal. Con el cdigo postal, el pas y la repeticin postal
identificamos unvocamente una poblacin. Por eso en las relaciones en las que debemos registrar
informacin de una localizacin (HOSPITAL, PACIENTE, FARMACIA y GUARDIA) tenemos claves ajenas a
la clave primaria de la relacin POBLACION.
Por otra parte tenemos la relacin AGRUPACIN. Esta relacin mantiene las agrupaciones que podemos
tener. Por ejemplo, podemos tener todas las provincias de Espaa. En este caso cada uno de estos
registros sera del tipo Provincia. El tipo de la agrupacin lo recogemos en la relacin
TIPO_AGRUPACION_POBLACION.
En la relacin AGRUPACION_POBLACION mantenemos qu poblaciones estn relacionadas con qu
agrupaciones. Es decir, aqu registraramos qu poblaciones pertenecen a la misma provincia.
Esto ser til a la hora de mostrar una direccin, indicando la provincia a la que pertenece la poblacin;
o bien para sacar estadsticas agrupando por provincia. Lo hemos modelado as ya que, a travs de las
relaciones AGRUPACIN y AGRUPACION_POBLACION, en un futuro se podran crear otro tipo de
agrupaciones de poblaciones por zonas que no se correspondieran a divisiones geogrficas como las
provincias. Creando un nuevo tipo de agrupacin e insertando los registros correspondientes a las zonas
tendremos todas las clasificaciones que necesitemos.
27
28
-30003 No se puede dar de alta una revisin de tipo ALTA, para hacerlo debe utilizar el
procedimiento ALTA_BAJA_LABORAL.
-30004 No se puede realizar la prueba diagnstica en el hospital indicado.
-30005 No existe la tabla indicada.
-30006 No existe el campo en la tabla indicada.
-30007Error al cargar las dimensiones del DWH. Este cdigo error se utiliza en los
procedimientos creados para la carga del almacn de datos.
3.3.2. Creacin de las tablas
En la creacin de las tablas hemos reflejado las relaciones definidas en el modelo lgico, utilizando las
restricciones de integridad de las que dispone Oracle. De esta forma en la creacin de la tabla
especificamos las claves primarias, las claves alternativas y las claves ajenas. Tambin se indican qu
campos no pueden contener nulos. Adems, hemos desarrollado el cdigo necesario para la creacin de
las secuencias y los disparadores que se encargarn de mantener los identificadores de las tablas.
No incluimos en la memoria todo el cdigo desarrollado para su implementacin, se puede consultar en
el fichero SENTENCIAS CREACIN TABLAS.SQL suministrado en la entrega del Proyecto, ubicado en la
carpeta Producto\1. Diseo fisico Base de datos. Las sentencias de creacin de todas las tablas se
encuentran en este fichero.
3.3.3. Procedimientos de alta
Como hemos explicado en el apartado 3.3 "Diseo Fsico" hemos creado un procedimiento de alta para
insertar informacin en cada una de las tablas de nuestra base de datos. Queda como una opcin de
mejora el crear procedimientos que den de alta informacin en ms una tabla a la vez, cosa facilitara el
desarrollo necesario en los sistemas externos para la gestin de la base de datos. Esto slo lo hemos
hecho para el caso de las revisiones de las bajas, debido a su complejidad.
Cada procedimiento se ha implementado en un fichero distinto. No incluimos el cdigo en la memoria,
stos se pueden ver en la carpeta Producto\1. Diseo fisico Base de datos\Procedimientos
almacenados\ALTA\
Como tambin hemos comentado en el apartado 3.3, en la mayora de los procedimientos de alta
nicamente controlaremos que no sean nulos los parmetros obligatorios. El resto de restricciones las
mantendremos a partir de las claves primarias, alternativas y ajenas establecidas en las tablas de la BD.
Si en algn procedimiento hemos incluido alguna comprobacin adicional, la especificamos en la
definicin del mismo.
En cada procedimiento se realiza la insercin de un la tabla de LOG para poder realizar un
mantenimiento de la base de datos y controlar los errores que pudieran surgir. La insercin se realiza
tanto si la ejecucin ha terminado correctamente como si ha fallado.
A continuacin incluimos la definicin de cada uno de los procedimientos de alta, indicando para cada
uno de ellos: una descripcin, los parmetros de entrada y salida, y las comprobaciones que se realizan.
ALTA
Descripcin
Parmetros de entrada
SP_ALTA_PAIS
Procedimiento que da de alta un pas en la tabla PAIS.
p_nombre, nombre del pas.
p_nemotecnico, nemotcnico del pas.
29
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
30
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
31
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
32
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
p_idFarmacia,
p_codigoPostal,
p_repeticionPostal,
p_idPais,
p_fechaInicio,
p_fechaFin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que los parmetros p_idFarmacia, p_codigoPostal, p_repeticionPostal,
p_idPais y p_fechaInicio no sean nulos.
SP_ALTA_FARMACIA
Procedimiento que da de alta una farmacia en la tabla FARMACIA.
p_nombre, nombre de la farmacia.
p_idFarmaceutico, farmacutico titular de la farmacia.
p_direccion, p_codigoPostal, p_repeticionPostal, p_idPais, ubicacin de la
farmacia.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que los parmetros p_nombre, p_idFarmaceutico, p_codigoPostal,
p_repeticionPostal y p_idPais, no sean nulos.
SP_ALTA_DESTINO
Procedimiento que da de alta un destino en la tabla DESTINO. Es necesario
pasar como parmetro el identificador del hospital, el del mdico el tipo y
estado del destino, y la fecha de inicio. La fecha de finalizacin es opcional.
p_idHospital,
p_idMedico,
p_idEstadoDestino,
p_idTipoDestino,
p_fechaInicio,
p_fechaFin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que los
parmetros de entrada
p_idHospital, p_idMedico,
p_idEstadoDestino, p_idTipoDestino y p_fechaInicio no sean nulos.
SP_ALTA_FARMACEUTICO
Procedimiento que da de alta un farmacutico en la tabla FARMACEUTICO.
33
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
p_NIF,
p_nombre,
p_apellido1,
p_apellido2,
p_numColegiado,
p_idPaisNacimiento.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que los parmetros de entrada
p_NIF, p_nombre, p_apellido1,
p_numColegiado, y p_idPaisNacimiento, no sean nulos.
SP_ALTA_MEDICAMENTO
Procedimiento que da de alta un medicamento en la tabla MEDICAMENTO.
p_nombre,
p_composicion,
p_observaciones.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que el parmetro de entrada p_nombre no sea nulo.
SP_ALTA_TIPO_PRODUCTO
Procedimiento que da de alta un tipo de producto en la tabla
TIPO_PRODUCTO.
p_descripcion, descripcin del tipo de producto.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que el parmetro de entrada no sea nulo.
SP_ALTA_PRODUCTO
Procedimiento que da de alta un producto en la tabla PRODUCTO.
p_idMedicamento, medicamento al que corresponde el producto.
p_nombre, nombre del producto
p_fabricante,
p_idTipoProducto.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que los parmetros de entrada p_idMedicamento, p_nombre y
p_idTipoProducto no sean nulos.
34
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
SP_ALTA_ENFERMEDAD
Procedimiento que da de alta una enfermedad conocida en la tabla
ENFERMEDAD.
p_nombre,
p_descripcion,
p_sintomas.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que el parmetro de entrada p_nombre no sea nulo.
SP_ALTA_PRESCRIPCION
Procedimiento que da de alta una prescripcin en la tabla PRESCRIPCION.
Para una enfermedad conocida se pueden prescribir varios medicamentos.
Para cada prescripcin se puede indicar un medicamento, una posologa y
unas observaciones.
p_idEnfermedad,
p_idMedicamento,
p_posologa,
p_observaciones.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que los parmetros de entrada p_idEnfermedad y p_idMedicamento no
sean nulos.
SP_ALTA_ENF_DIAG
Procedimiento que da de alta una enfermedad diagnosticada en la tabla
ENFERMEDAD_DIAGNOSTICADA. Cuando un mdico diagnostica una
enfermedad, se crea un registro en esta tabla, para ello hay que pasar como
parmetro el identificador del paciente, el del mdico, el de la enfermedad y
la fecha de diagnstico.
p_idPaciente,
p_idMedico,
p_idEnfermedad,
p_fechaDiagnostico.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que ningn parmetro de entrada no sea nulo.
SP_ALTA_RECETA
Procedimiento que da de alta una receta en la tabla RECETA. En cada receta
se incluye un nico medicamento. Cada receta se realiza para combatir una
enfermedad.
35
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
SP_ALTA_CONSULTA
Procedimiento que da de alta una consulta mdica en la tabla CONSULTA.
p_idHospital, hospital donde se hace la consulta.
p_idPaciente,
p_idMedico,
p_idTipoConsulta,
p_idEstadoConsulta,
p_fechaAlta, creacin de la consulta.
p_fechaPrevista, fecha que la consulta est planificada.
p_fechaRealizada, fecha en la que finalmente se realiza la consulta.
Normalmente ser nulo.
p_observaciones.
Parmetros de salida
Comprobaciones
ALTA
36
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
SP_ALTA_ESPECIALIDAD
Procedimiento que da de alta una especialidad en la tabla ESPECIALIDAD.
p_descripcion, nombre de la especialidad.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que el parmetro de entrada no sea nulo.
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
SP_ALTA_ESP_ADQ
Procedimiento que da de alta una especialidad adquirida en la tabla
ESPECIALIDAD_ADQUIRIDA. De esta forma se registrarn cada una de las
especialidades adquiridas por cada mdico.
p_idMedico,
p_idEspecialidad.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que ninguno de los parmetros de entrada sea nulo.
SP_ALTA_TIPO_REVISION_BAJA
Procedimiento que da de alta un tipo de revisin de baja en la tabla
TIPO_REVISION_BAJA. Inicialmente tendremos tres tipos: Alta, Prorroga y
Finalizacin.
p_descripcion, descripcin del tipo de revisin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que el parmetro de entrada no sea nulo.
Comprobaciones
SP_ALTA_ESTADO_BAJA
Procedimiento que da de alta un estado de baja en la tabla ESTADO_BAJA.
Inicialmente tendremos dos estados: Activa y Finalizada.
p_descripcion, descripcin del estado de la baja.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que el parmetro de entrada no sea nulo.
ALTA
SP_ALTA_BAJA_LABORAL
Parmetros de entrada
Parmetros de salida
38
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
39
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
ALTA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SP_ALTA_PRUEBA_SOLICITADA
Procedimiento que da de alta una prueba diagnstica solicitada en la tabla
PRUEBA_SOLICITADA. Se ejecutar cuando un mdico solicite una prueba
para un paciente.
p_idConsulta, consulta en la que se solicita la prueba.
p_idPrueba, el tipo de prueba que se solicita.
p_fechaSolicitud, fecha en la que se solicita la prueba.
p_fechaPrevista, fecha prevista de realizacin de una prueba diagnstica.
p_idHospital, hospital en el que se realizar la prueba
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error. En caso de no poderse realizar la
prueba, el cdigo de error es el 30004.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada p_idConsulta, p_idPrueba, p_fechaSolicitud
y p_idHospital no sean nulos.
-Se comprueba que en el hospital se pueda hacer realmente la prueba.
SP_ALTA_DOCUMENTACION_PRUEBA
Procedimiento que da de alta un registro en la tabla
DOCUMENTACION_PRUEBA, para enlazar un documento a una prueba
realizada.
p_idPruebaSolicitada, identificador de la prueba realizada a la que
corresponde el documento.
p_documento, ruta del documento.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que ninguno de los parmetros de entrada sean nulos.
SP_ALTA_REALIZAN
Procedimiento que da de alta un registro en la tabla REALIZAN. Se utiliza
para indicar en qu hospitales se pueden realizar las pruebas mdicas.
p_idPrueba, tipo de prueba diagnstica.
p_idHospital, identificador del hospital.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que ninguno de los parmetros de entrada sea nulo.
bajas laborales la explicamos en el apartado 3.3.7Gestin de las bajas laborales y las revisiones de las
bajas.
Todos los procedimientos de baja se han creado siguiendo el mismo esquema. Primero comprobamos si
el parmetro de entrada es nulo y despus si existe un registro con el identificador pasado como
parmetro. En caso de no ser as, provocamos la excepcin correspondiente.
Si la eliminacin de un registro entra en contradiccin con una restriccin de la base de datos, se genera
la excepcin y mostramos directamente el error que nos pasa el SGBD.
A continuacin veremos la definicin de cada uno de los procedimientos de baja.
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
SP_BAJA_PAIS
Procedimiento que da de baja un pas en la tabla PAIS.
p_idPais, identificador del pas.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los campos p_idPais no sea nulo.
-Que el pas indicado exista.
SP_BAJA_POBLACION
Procedimiento que da de baja una poblacin en la tabla POBLACION.
p_codigoPostal, cdigo postal de la poblacin
p_repeticionPostal, la repeticin postal.
p_idPais, identificador del pas.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada no sean nulos.
-Que exista una poblacin con los parmetros indicados.
SP_BAJA_TIP_AGR_POB
Procedimiento que elimina un tipo de agrupacin en la tabla
TIPO_AGRUPACION_POBLACION.
p_idTipoAgrupacion, identificador del tipo de agrupacin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada no sea nulo.
-Que el tipo de agrupacin indicado exista.
SP_BAJA_AGRUPACION
Procedimiento que elimina una agrupacin en la tabla AGRUPACION.
p_idAgrupacion, identificador de la agrupacin que se desea eliminar.
41
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
42
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
43
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
44
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
45
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
47
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
SP_BAJA_SOLICITUD
Procedimiento que elimina una solicitud en la tabla SOLICITUD. Se utilizar
cuando se solicite una consulta por error. nicamente se necesita identificar
la consulta.
p_idConsulta, identificador de la consulta que se desea eliminar.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada no sea nulo.
-Que la solicitud de la consulta exista.
SP_BAJA_ESPECIALIDAD
Procedimiento que elimina una especialidad en la tabla ESPECIALIDAD. No
se podr eliminar una especialidad que est asignada a un mdico.
p_idEspecialidad, identificador de la especialidad.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada no sea nulo.
-Que la especialidad exista.
SP_BAJA_ESP_ADQ
Procedimiento que elimina una especialidad adquirida en la tabla
ESPECIALIDAD_ADQUIRIDA. De esta forma se eliminarn cada una de las
especialidades adquiridas por cada mdico. Hay que identificar tanto el
mdico como la especialidad que queremos eliminarle.
p_idMedico,
p_idEspecialidad.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que ninguno de los parmetros de entrada sea nulo.
-Que la especialidad est asignada al mdico.
SP_BAJA_TIPO_REVISION_BAJA
Procedimiento que elimina un tipo de revisin de baja en la tabla
TIPO_REVISION_BAJA. Inicialmente tendremos tres tipos: Alta, Prorroga y
Finalizacin.
p_idTipoRevisionBaja, identificador del tipo de revisin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
48
Comprobaciones
BAJA
Descripcin
SP_BAJA_ESTADO_BAJA
Procedimiento que elimina un estado de baja en la tabla ESTADO_BAJA.
Inicialmente tendremos dos estados: Activa y Finalizada.
p_idEstadoBaja, identificador del estado de la baja.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada no sea nulo.
-Que el estado de revisin de baja exista.
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
SP_BAJA_REVISION_BAJA
Procedimiento que elimina una revisin en la tabla REVISION_BAJA.
Adems:
-Si la revisin es de tipo ALTA, se elimina tambin la baja.
-Si la revisin es de tipo FINALIZACION, se cambia el estado de la baja a
ACTIVA y se borra la fecha de finalizacin.
-Si la revisin es de tipo PRORROGA, no se cambia nada en la tabla
BAJA_LABORAL.
p_idRevisionBaja, identificador de la revisin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada no sea nulo.
-Que la revisin de baja exista.
SP_BAJA_PRUEBA_DIAGNOSTICA
Procedimiento que elimina una prueba diagnstica en la tabla
PRUEBA_DIAGNOSTICA. No se podr eliminar una prueba que haya sido
solicitada para algn paciente, o que se haya indicado que se puede realizar
en algn hospital.
p_idPrueba, identificador de la prueba diagnstica a eliminar.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada no sea nulo.
-Que la prueba diagnstica exista.
SP_BAJA_PRUEBA_SOLICITADA
Procedimiento que elimina una prueba diagnstica solicitada en la tabla
PRUEBA_SOLICITADA. Se ejecutar cuando un mdico haya solicitado una
prueba por error. No se podr eliminar si tiene algn documento asociado.
p_idPruebaSolicitada, identificador de la prueba solicitada.
49
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
BAJA
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SP_MODIF_PAIS
Procedimiento que modifica un pas en la tabla PAIS. Se puede modificar el
nombre y el nemotcnico.
p_idPais, identificador del pas que se desea modificar.
p_nombre, nombre a actualizar.
p_nemotecnico, nemotcnico a actualizar.
50
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
52
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
53
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
p_idGuardia,
p_idFarmacia,
p_codigoPostal,
p_repeticionPostal,
p_idPais,
p_fechaInicio,
p_fechaFin
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada, a excepcin de p_fechaFin, no sean nulos.
-Que la guardia exista.
SP_MODIF_FARMACIA
Procedimiento que modifica una farmacia en la tabla FARMACIA. Se pueden
modificar todos los campos, a excepcin del identificador (idFarmacia). ste
se utiliza para buscar la farmacia a modificar.
p_idFarmacia, identificador de la farmacia.
p_nombre, nombre de la farmacia.
p_idFarmaceutico, farmacutico titular de la farmacia.
p_direccion, p_codigoPostal, p_repeticionPostal, p_idPais, ubicacin de la
farmacia.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada, a excepcin de la direccin, no sean nulos.
-Que la farmacia exista.
SP_MODIF_DESTINO
Procedimiento que modifica un destino en la tabla DESTINO. Con este
procedimiento se modificar uno de los destinos que tenga establecidos un
mdico. Se pueden modificar todos los campos, a excepcin del
identificador (idDestino). ste se utiliza para buscar el destino a modificar.
p_idDestino, identificador del destino que se desea eliminar.
p_idHospital,
p_idMedico,
p_idEstadoDestino,
p_idTipoDestino,
p_fechaInicio,
p_fechaFin.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada, a excepcin de p_fechaFin, no sean nulos.
-Que el destino exista.
54
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
SP_MODIF_FARMACEUTICO
Procedimiento que modifica un farmacutico en la tabla FARMACEUTICO. Se
pueden modificar todos los campos, a excepcin del identificador
(idFarmaceutico). ste se utiliza para buscar el farmacutico a modificar.
p_idFarmaceutico, identificador del farmacutico a eliminar.
p_NIF,
p_nombre,
p_apellido1,
p_apellido2,
p_numColegiado,
p_idPaisNacimiento
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada, a excepcin de p_apellido_2, no sean
nulos.
-Que el farmacutico exista.
SP_MODIF_MEDICAMENTO
Procedimiento que modifica un medicamento en la tabla MEDICAMENTO.
Se pueden modificar todos los campos, a excepcin del identificador
(idMedicamento). ste se utiliza para buscar el medicamento a modificar.
p_idMedicamento, identificador del medicamento a eliminar.
p_nombre,
p_composicion,
p_observaciones
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada p_idMedicamento y p_nombre, no sean
nulos.
-Que el medicamento exista.
SP_MODIF_PRODUCTO
Procedimiento que modifica un producto en la tabla PRODUCTO. Se pueden
modificar todos los campos, a excepcin del identificador (idProducto). ste
se utiliza para buscar el producto a modificar.
p_idProducto, identificador del producto.
p_idMedicamento, medicamento al que corresponde el producto.
p_nombre, nombre del producto
p_fabricante,
p_idTipoProducto
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
55
Comprobaciones
MODIFICACIN
Descripcin
SP_MODIF_ENFERMEDAD
Procedimiento que modifica una enfermedad conocida en la tabla
ENFERMEDAD. Se pueden modificar todos los campos, a excepcin del
nombre y del identificador (idEnfermedad). ste se utiliza para buscar la
enfermedad a modificar.
p_idEnfermedad, identificador de la enfermedad a eliminar.
p_descripcion,
p_sintomas.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada p_idEnfermedad no sea nulo.
-Que la enfermedad exista.
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
SP_MODIF_PRESCRIPCION
Procedimiento que modifica una prescripcin en la tabla PRESCRIPCION.
Para modificarla hay que indicar tanto la enfermedad como el
medicamento. Slo se pueden modificar la posologa y las observaciones.
p_idEnfermedad, p_idMedicamento, ambos campos forman la clave
primaria de la tabla.
p_posologa,
p_observaciones.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada p_idEnfermedad y p_idMedicamento no
sean nulos.
-Que la prescripcin exista.
SP_MODIF_RECETA
Procedimiento que modifica una receta en la tabla RECETA. Slo se puede
modificar la posologa de una receta. Ante cualquier otro cambio, hay que
eliminar la receta.
p_idReceta, identificador de la receta que se desea modificar.
p_posologia, la posologa a actualizar.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada p_idReceta no sea nulo.
-Que la receta exista.
SP_MODIF_CONSULTA
56
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
57
Comprobaciones
MODIFICACIN
Descripcin
SP_MODIF_PRUEBA_DIAGNOSTICA
Procedimiento que modifica una prueba diagnstica en la tabla
PRUEBA_DIAGNOSTICA. Slo se podr modificar la descripcin y las
contraindicaciones. El resto de campos no se podrn modificar. En caso de
ser necesario, se deber borrar la prueba.
p_idPrueba, identificador de la prueba diagnstica a eliminar.
p_descripcion,
p_contraindicaciones.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada p_idPrueba no sea nulo.
-Que la prueba diagnstica exista.
Parmetros de entrada
Parmetros de salida
Comprobaciones
MODIFICACIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SP_MODIF_PRUEBA_SOLICITADA
Procedimiento que modifica una prueba solicitada en la tabla
PRUEBA_SOLICITADA. Slo se podr modificar la fecha prevista y la de
realizacin.
p_idPruebaSolicitada, identificador de la prueba solicitada,
p_fechaPrevista,
p_fechaRealizada.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error. En caso de no poderse realizar la
prueba, el cdigo de error es el 30004.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que el parmetro de entrada p_idPruebaSolicitada no sea nulo.
-Que la prueba solicitada exista.
1. Teniendo en cuenta que ya disponemos de los procedimientos de seleccin para cada una de las
tablas, la primera forma sera realizar distintas consultas a travs de estos procedimientos a las tablas
PACIENTE, BAJA_LABORAL y ENFERMEDAD_DIAGNOSTICADA, para as sacar la informacin.
2. Una segunda opcin, que facilitara la integracin entre el sistema externo y la base de datos, sera el
disponer de un procedimiento de seleccin que, a partir del nombre o identificador de un paciente,
devolviera toda la informacin requerida.
Como podemos deducir, el nmero de procedimientos de seleccin necesarios para permitir consultar
toda la informacin de la base de datos es muy grande. A diferencia de lo que hemos hecho para los
procedimientos de Alta, Baja y Modificacin; en este caso slo implementamos un reducido nmero de
muestra, el resto de procedimientos sern similares a stos.
Para implementar los procedimientos de seleccin, hemos creado unos tipos de datos con la estructura
de los registros que devolvern los procedimientos; as como unos tipos de que datos que sern de tipo
tabla de los tipos anteriores. Los procedimientos de seleccin tendrn un parmetro de salida que ser
de uno de estos tipos tabla que hemos creado.
Todos los procedimientos de seleccin estn diseados de una forma similar:
1. Primero comprobamos que existen datos que cumplan con los criterios de los parmetros de entrada.
2. Si es cierto, se ejecuta la consulta para obtener los datos y se inserta el resultado en el parmetro de
salida.
3. En caso de no existir datos para los parmetros de entrada, generamos la excepcin correspondiente.
A continuacin veremos la definicin de los procedimientos que hemos creado a modo de ejemplo.
Como en el resto de procedimientos, no incluimos el cdigo en la memoria, se puede consultar en la
carpeta " Producto\1. Diseo fisico Base de datos\Procedimientos almacenados\SELECCION"
SELECCIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SP_ULTIMO_REGISTRO
Este procedimiento nos ayudar en la mayora de trabajos de insercin de
datos en la BD. Se trata de un procedimiento para obtener el ltimo ID
insertado en una tabla. En los procedimientos de alta no devolvemos el ID
del registro creado, pero con este procedimiento lo podremos obtener. De
esta forma, al dar de alta un registro en una tabla, sabremos su indicador a
travs de este procedimiento.
Como parmetros de entrada tiene el nombre de la tabla y el del campo del
que queremos obtener el mximo.
p_nombreTabla,
p_nombreCampo.
p_ultimoID OUT VARCHAR2, parmetro en el que se devuelve el valor del
mximo identificador. En caso de error devuelve el valor -1.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
Si no existe la tabla, el cdigo es -30005.
Si no existe el campo, el cdigo es -30006.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que los parmetros de entrada no sean nulos.
-Que la tabla exista.
-Que el campo exista en la tabla indicada.
59
SELECCIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SELECCIN
Descripcin
Parmetros de entrada
SP_SEL_PACIENTE
Procedimiento que devuelve todos los registros de la tabla PACIENTE que
cumplen los criterios que se han pasado como parmetros de entrada.
Todos los parmetros de entrada aceptan nulos, el procedimiento se podr
invocar indicando uno, varios o ningn parmetro de entrada. Si se indica
ms de un parmetro, el parmetro de salida contendr los registros que
cumplan con todos los criterios indicados.
Como parmetros de salida, tenemos los dos campos que estamos
utilizando en todos los procedimientos para controlar la correcta finalizacin
de la ejecucin, ms uno de tipo tabla que contendr los registros
solicitados.
p_idPaciente,
p_SIP,
p_NIF,
p_nombre,
p_apellido1,
p_apellido2.
p_tPaciente t_objPaciente, parmetro de tipo tabla en el que se devuelven
los registros solicitados. Cada registro contiene todos los campos de la tabla
PACIENTE.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error. En caso de no existir datos con
parmetros de entrada, el cdigo de error es el 30002.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
-Que existan registros en la tabla que cumplan con los parmetros
indicados.
SP_SEL_MEDICO
Procedimiento que devuelve todos los registros de la tabla MEDICO que
cumplen los criterios que se han pasado como parmetros de entrada.
Todos los parmetros de entrada aceptan nulos, el procedimiento se podr
invocar indicando uno, varios o ningn parmetro de entrada. Si se indica
ms de un parmetro, el parmetro de salida contendr los registros que
cumplan con todos los criterios indicados.
Como parmetros de salida, tenemos los dos campos que estamos
utilizando en todos los procedimientos para controlar la correcta finalizacin
de la ejecucin, ms uno de tipo tabla que contendr los registros
solicitados.
p_idMedico,
p_NIF,
p_nombre,
p_apellido1,
p_apellido2,
p_numColegiado.
60
Parmetros de salida
Comprobaciones
SELECCIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
61
SELECCIN
Descripcin
SP_SEL_HISTORIAL_PACIENTE
Procedimiento que devuelve el historial del paciente que se pasa como
parmetro. El historial incluye las enfermedades diagnosticadas; el mdico
que las diagnostic y la fecha del diagnstico; si la enfermedad provoc que
el paciente estuviera de baja; la fecha de inicio y de finalizacin de la baja, y
los das de duracin.
El parmetro de salida es de tipo tabla, y cada registro contiene los
siguientes campos:
idPaciente: identificador del paciente.
idEnfermedadDiag: identificador de la enfermedad diagnosticada.
idEnfermedad: identificador de la enfermedad.
nombreEnfermedad.
idMedico.
nombreMedico.
fechaDiagnostico.
provocaBaja: parmetro que si es igual a 0 indica la enfermedad provoc
una baja.
fechaInicio: inicio de la baja, si la hubiera.
fechaFin: fin de la baja si la hubiera y adems si el cliente ya tuviera el alta.
diasBaja: das de duracin de la baja.
Parmetros de entrada
Parmetros de salida
Comprobaciones
3. Impedimos que se pueda cambiar el estado de una revisin o de una baja laboral. El estado cambia al
dar de alta o de baja las distintas revisiones. De esta forma al dar de alta una revisin de tipo
finalizacin, el estado de la baja pasa a ser FINALIZADA, y se cumplimenta la fecha de finalizacin de la
baja.
4. Una baja ya finalizada no podr volver a revisarse. En caso de que sea necesario, antes se deber
borrar la revisin que finaliz dicha baja.
A continuacin, veremos los procedimientos almacenados que se encargan de la gestin de las bajas, y
lo que se realiza en cada uno de ellos.
SP_ALTA_BAJA_LABORAL.
1. Se comprueba que no exista otra baja activa para el mismo paciente, en ese caso se genera una
excepcin y se devuelve un mensaje de error.
2. Se crea la baja laboral indicando la fecha de inicio de la misma y dejando la baja en situacin ACTIVA.
3. Se crea una revisin de tipo ALTA.
SP_ALTA_REVISION_BAJA
1. No se permite dar de alta una revisin de tipo ALTA. Se genera una excepcin en tal caso.
2. Se comprueba que la baja no est finalizada, en ese caso no se puede volver a revisar.
3. Despus de insertar la revisin, si sta es de FINALIZACIN, modifico el estado de la baja e indico la
fecha de finalizacin.
SP_MODIF_BAJA_LABORAL
1. No se permite modificar directamente ni la fecha de inicio, ni la de fin, ni el estado de la baja.
2. Tampoco permitimos cambiar la enfermedad diagnosticada. nicamente se pueden cambiar las
observaciones.
SP_MODIF_REVISION_BAJA
1. No permitimos cambiar el tipo de revisin, ni el mdico que la ha hecho, ni la baja relacionada. Es
decir, no permitimos cambiar ninguna clave ajena. Si algn campo de estos no es correcto, tendremos
que dar de baja la revisin y volverla a crear.
2. Slo permitimos cambiar las observaciones y la fecha. Si la revisin es de tipo ALTA, modificaremos
tambin la fecha de inicio de la baja. Por otra parte, si la revisin es de tipo FINALIZACIN, tambin
modificamos la fecha de finalizacin de la baja.
SP_BAJA_REVISION_BAJA
1. No permitimos dar de baja una baja laboral directamente. Para ello primero hay que dar de baja
todas las revisiones.
2. Cuando se da de baja la revisin de tipo ALTA, entonces se borra la baja de la tabla.
3. Cuando se borra una revisin de tipo FINALIZADA, se modifica el estado de la baja a activa, y se borra
la fecha de finalizacin.
4. Cuando se borra una revisin de tipo PRRROGA, la baja no se modifica.
63
4. Almacn de datos
4. Almacn de datos
Una vez que ya hemos completado la implementacin de la base de datos, vamos ahora a definir el
almacn de datos que nos solicita el cliente. El almacn de datos se desarrolla por la necesidad del
Ministerio de Sanidad, de disponer de estadsticas para poder analizar la situacin global de Sistema
Sanitario. De esta forma se facilitar a los responsables de analizar los datos, una herramienta para que
puedan realizar ellos mismos las consultas que necesiten ms fcilmente y en menor tiempo.
La fuente de informacin de nuestro almacn de datos va a ser la base de datos operacional que hemos
diseado en este mismo proyecto. Esto facilita la extraccin de los datos, ya que sta tendr el mismo
gestor de base de datos que el DWH. Esto no quiere decir que el almacn tenga que estar en el mismo
servidor, podremos tener dos SGBD en dos mquinas diferentes; esto depender de la carga del sistema
y de las caractersticas del servidor utilizado. En la implementacin de los procesos de carga de los datos
del DWH hemos supuesto que ambos sistemas se encuentran en la misma mquina.
4. Almacn de datos
4. Almacn de datos
4. Almacn de datos
Es el mdico que concede la baja. Tampoco definimos atributos adicionales, tal y como pasaba con las
consultas y los medicamentos.
Enfermedad
La ltima dimensin por la que podremos analizar las bajas es por la enfermedad que provoca la baja.
De esta forma sabremos qu enfermedades estn provocando ms bajas.
Indicadores
Aqu contabilizaremos tanto el nmero de bajas como la duracin en das de las mismas.
Celdas
La celda definida ser la baja junto con la duracin de la misma, ya que como un paciente no puede
tener activas dos bajas de forma simultnea, no se pueden finalizar dos bajas el mismo da.
67
4. Almacn de datos
68
4. Almacn de datos
4. Almacn de datos
70
4. Almacn de datos
71
4. Almacn de datos
Comprobaciones
SP_DWH_COMPRUEBA_ENFERMEDAD
Procedimiento encargado de cargar los datos en la tabla de dimensin
ENFERMEDAD.
Para ello comprueba si existe ya un registro con los datos pasados como
parmetro.
Si existe devuelve el valor de la clave primaria de dicho registro, si no existe
lo crea y devuelve el identificador.
p_idEnfermedad, identificador de la enfermedad.
p_nombre, nombre de la enfermedad.
p_ID INTEGER, devuelve el valor del identificador del registro en la tabla.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que ninguno de los parmetros de entrada, sea nulo.
CARGA DIMENSIONES
SP_DWH_COMPRUEBA_FECHA
Parmetros de entrada
Parmetros de salida
72
4. Almacn de datos
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
CARGA DIMENSIONES
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
CARGA DIMENSIONES
Descripcin
Parmetros de entrada
73
4. Almacn de datos
Parmetros de salida
Comprobaciones
CARGA DIMENSIONES
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
CARGA DIMENSIONES
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
CARGA DIMENSIONES
Descripcin
4. Almacn de datos
Parmetros de entrada
Parmetros de salida
Comprobaciones
CARGA HECHO
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
CARGA HECHO
Descripcin
Parmetros de entrada
75
4. Almacn de datos
Parmetros de salida
Comprobaciones
CARGA HECHO
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
PROCESO ETL
Descripcin
Comprobaciones
SP_ETL_CARGA_DWHCONSULTA
Procedimiento encargado de realizar el proceso de carga de los datos de las
consultas. Para ello recoge los datos de las tablas de la base de datos
operacional, y registro a registro invoca a los procedimientos anteriores para
alimentar las tablas de las dimensiones y las de hechos.
Como parmetros de entrada tenemos dos fechas. La carga se realizar para
aquellas consultas creadas en ese rango de fechas.
Antes de realizar la carga de los datos, se borran los registros de la tabla
DWHCONSULTA para que un mismo hecho no se registre dos veces.
p_fechaIni, fecha inicial de los datos a cargar.
p_fechaFin, fecha final.
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Que ninguno de los parmetros de entrada, sea nulo.
PROCESO ETL
SP_ETL_CARGA_DWHMEDICAMENTO
Parmetros de entrada
Parmetros de salida
76
4. Almacn de datos
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
PROCESO ETL
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SELECCIN
Descripcin
Comprobaciones
SP_SEL_URGENCIAS_MES
Procedimiento que ejecuta una sentencia de seleccin para obtener el
nmero de urgencias que se han producido por mes.
No acepta parmetros de entrada, la consulta es para todos los registros. Es
un ejemplo de cmo se pueden obtener datos de las tablas del DWH. De
hecho, tiene todas las tablas de las dimensiones vinculadas, cuando no sera
necesario para realizar dicha consulta.
No tiene
p_rstCodigo INTEGER, devuelve 0 en caso de que haya finalizado
correctamente. En caso de que el procedimiento no haya podido completar
su ejecucin, devuelve el cdigo del error.
p_rstMensaje VARCHAR2, devuelve OK si la ejecucin finaliza
correctamente. En caso de error, devuelve un mensaje con el error que haya
sucedido.
Ninguna
SELECCIN
SP_SEL_EDAD_MAS_MEDICAMENTOS
Parmetros de entrada
Parmetros de salida
77
4. Almacn de datos
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
SELECCIN
Descripcin
Parmetros de entrada
Parmetros de salida
Comprobaciones
78
4. Almacn de datos
79
4. Almacn de datos
De cada cubo vemos la tabla donde estn los datos, las distintas dimensiones y las medidas. En el cubo
de las bajas laborales tenemos dos medidas, una de ellas ser la suma de las bajas laborales y la otra la
media de la duracin de las mismas:
En la figura 8 podemos ver un detalle de la dimensin Fecha, con las tres jerarquas y los distintos
niveles distintos niveles de cada una de ellas.
En los niveles LFechaDia y LFechaMes es donde indicamos que el orden de los elementos debe hacerse
por un campo distinto al que se muestra. Lo podemos ver en la figura 9 en el atributo "ordinalColumn".
80
4. Almacn de datos
Tambin podemos utilizar un grfico para analizar la evolucin a lo largo del ao, lo vemos en la figura
11.
81
4. Almacn de datos
Cambiando el cubo podemos analizar el consumo de medicamentos por edad del paciente (figura 13) o
bien verlo en forma de grfico (figura 14).
82
4. Almacn de datos
Para el anlisis de las bajas laborales, podemos utilizar una de las dos medidas o las dos
simultneamente. En la figura 15 vemos a qu edad se suceden ms bajas y la media de la duracin para
cada edad. En la figura 16 vemos un grfico de barras de los resultados.
83
4. Almacn de datos
84
85
JORNADAS PERFIL
1 Jefe de Proyecto
1 Tcnico
0 Tcnico
2 Jefe de Proyecto
1 Jefe de Proyecto
2 Jefe de Proyecto
0 Jefe de Proyecto
2 PAC2
35
1 Jefe de Proyecto
2 Consultor
86
2.3 Diseo de la BD
2 Consultor
2 Consultor
2.4 Creacin de la BD
11
8 Tcnico
2 Tcnico
1 Tcnico
3 Tcnico
1 Tcnico
12
11 Tcnico
1 Tcnico
3 PAC3
27
0 Jefe de Proyecto
8 Consultor
3 Tcnico
2 Tcnico
7 Tcnico
5 Tcnico
2 Tcnico
Consultor y
4 tcnico
Consultor y
2 tcnico
4 Entrega final
25
Consultor y
5 tcnico
10 Jefe de Proyecto
4 Jefe de Proyecto
5 Jefe de Proyecto
0 Jefe de Proyecto
Resumiendo, este es el total de horas y de coste para cada perfil. Aunque las tareas las realiza una nica
persona, hemos contemplado las horas que realizan dos perfiles distintos.
PERFIL
JORNADAS
COSTE
Jefe de proyecto
26
7280
Consultor
25
5250
Tcnico
58
8410
Total
20.940
87
En cada servidor instalaremos el sistema ESX de VMware, para ello necesitaremos una licencia. Optamos
por una licencia VSphere que incluye tres servidores ESX y el entorno de gestin VCenter. De esta forma
podremos configurar los servicios vMotion y FaultTolerance. Estos servicios permiten que una mquina
virtual que se est ejecutando en servidor, pase a ejecutarse en otro ante un fallo de hardware sin que
los usuarios noten un corte en el servicio. El software de administracin VCenter se podr instalar en
cualquier equipo de la red o en una mquina virtual, por lo que no ser necesario adquirir otro equipo.
Crearemos una mquina virtual en la que instalaremos Oracle. Para crear la mquina virtual podemos
optar por un sistema operativo de Microsoft o Unix. En este caso nos decantamos por un Windows
Server 2008.
88
Por ltimo, necesitamos una licencia de Oracle. Elegimos una licencia Oracle Database 11g Enterprise
Edition, teniendo en cuenta el tamao que alcanzar la base de datos y el nmero de sesiones
concurrentes que podemos llegar a tener.
Sobre la suite Pentaho, empezaremos a trabajar con una licencia gratuita, que es con la que hemos
creado los anlisis; y en caso de necesitar en un futuro mayor funcionalidad, podremos adquirir una de
pago. En cualquier caso el servidor Pentaho se puede instalar en una mquina virtual con una
distribucin Linux de Ubuntu, por lo que no tendra coste.
En este entorno no incluimos un sistema de copia de seguridad en cinta, optamos por hacer las copias
en disco y copiarlas a travs de la red a una ubicacin remota de forma peridica.
Resumiendo, este es el total de coste de la infraestructura que necesitamos:
CONCEPTO
2 Servidores
COSTE
10.000
6.800
Cabina de discos
9.000
Licencia Vsphere
3.300
3.500
57.000
2.000
91.600
7.280
Anlisis
5.250
Desarrollo de la solucin
Infraestructura
8.410
91.600
89
7. Conclusiones
7. Conclusiones
La ejecucin de este proyecto me ha supuesto un gran esfuerzo, no tanto por la complejidad del
proyecto en s, sino por la necesidad de dedicarle una gran cantidad de tiempo. El hecho de compaginar
mis estudios con un trabajo en el que a menudo parece que no hay horarios, ha sido lo ms complicado.
He intentado hacer un proyecto lo ms profesional posible, sin llegar a un detalle imposible de acometer
por una sola persona, en las horas que le he dedicado durante estos meses. En la memoria tambin he
querido reflejar ese trabajo y aunque, si bien he razonado todas las decisiones tomadas, es posible que
me haya faltado el citar la teora en la que me basaba para realizar dichas afirmaciones. Quizs el hecho
de trabajar diariamente con bases de datos y almacenes de datos, haya hecho que d muchas cosas por
sentado. Un reflejo de esto es la falta de bibliografa que he indicado en el apartado correspondiente, ya
que para realizar el proyecto me ha bastado refrescar la teora de las asignaturas Sistemas de Gestin de
Bases de Datos y Modelos Multidimensionales de Datos; y realizar pequeas consultas a la
documentacin de Oracle sobre el uso de algunas funciones.
El hecho de poder elegir el rea de Bases de Datos para realizar el proyecto, ha sido toda una ayuda para
m. Es un rea de la informtica que realmente me apasiona.
Por ltimo, comentar de nuevo que no ha entrado en el alcance de este proyecto la instalacin y
configuracin del SGBD Oracle, ni de la herramienta ROLAP Pentaho.
90
8. Glosario
8. Glosario
Almacn de datos. Coleccin de datos orientados al tema, integrados, no voltiles e histricos,
organizados para dar soporte a procesos de ayuda a la toma de decisiones.
Base de datos operacional. Base de datos destinada a gestionar el da a da de una organizacin,
almacena la informacin referente a la operativa diaria.
Celda. Punto unitario de datos que aparece en la interseccin definida cuando se selecciona un valor
para cada una de las dimensiones en un vector multidimensional.
Data Warehouse (DWH). Ver almacn de datos.
Dimensin. Punto de vista utilizado para el anlisis de un hecho.
ETL (Extract Transform and Load).Proceso que permite extraer los datos de una base de datos
operacional, transformarlos y cargarlos en un almacn de datos.
Hecho. Objeto de anlisis del negocio de una organizacin.
Jerarqua. Conjunto de relaciones entre las instancias de una dimensin que indica cmo se agrupan los
datos.
Medida. Dato numrico asociado a un hecho que queremos analizar.
OLAP (on-line analytical processing).Herramientas de anlisis de datos multidimensionales.
ROLAP (relational OLAP).Es una de las implementaciones que existen en el mercado de herramientas
OLAP. Se distingue por trabajar sobre un SGBD relacional.
SGBD (Sistemas de gestin de bases de datos). Software que gestiona y controla las bases de datos. Sus
funciones principales son las de facilitar el uso simultneo, independizar el usuario del mundo fsico y
mantener la integridad de los datos.
91
9. Bibliografa
9. Bibliografa
1. ngels Rius Gavdia, Montse Serra Vizern, Josep Curto Daz. Introducci a lemmagatzematge de
dades. Barcelona: UOC.
2. Alberto Abell Gamazo, Jos Samos Jimnez, Josep Curto Daz. La factoria dinformaci corporativa.
Barcelona: UOC.
3. Jos Samos Jimnez, Josep Curto Daz. Construcci de la factoria dinformaci corporativa. Barcelona:
UOC.
4. Alberto Abell Gamazo. Disseny Multidimensional. Barcelona: UOC.
5. M. Elena Rodrguez Gonzlez, Jaume Sistac i Planas. Diseo conceptual y lgico de bases de datos.
Barcelona: UOC.
6. Alberto Abell Gamazo, Jaume Sistac i Planas. Reconsideracin de los modelos conceptual y lgico.
Barcelona: UOC.
7. Blai Cabr i Segarra. Diseo fsico de bases de datos. Barcelona: UOC.
8. Documentacin de Oracle. <http://www.oracle.com/technetwork/es/documentation/index.html>
92