0% encontró este documento útil (0 votos)
111 vistas27 páginas

BASE DE DATOS DE UN HOSPITAL Consultas

El documento presenta un estudio sobre la gestión de bases de datos en un hospital, destacando la importancia de las consultas SQL avanzadas como JOIN, DISTINCT y GROUP BY para optimizar la atención médica y la administración de recursos. Se describen diversas consultas y procedimientos almacenados que facilitan la manipulación y análisis de datos, así como la implementación de triggers para evitar duplicados en la base de datos. Finalmente, se enfatiza la relevancia de una gestión de datos precisa y accesible para mejorar la calidad de atención en el ámbito hospitalario.

Cargado por

dezayde20
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
111 vistas27 páginas

BASE DE DATOS DE UN HOSPITAL Consultas

El documento presenta un estudio sobre la gestión de bases de datos en un hospital, destacando la importancia de las consultas SQL avanzadas como JOIN, DISTINCT y GROUP BY para optimizar la atención médica y la administración de recursos. Se describen diversas consultas y procedimientos almacenados que facilitan la manipulación y análisis de datos, así como la implementación de triggers para evitar duplicados en la base de datos. Finalmente, se enfatiza la relevancia de una gestión de datos precisa y accesible para mejorar la calidad de atención en el ámbito hospitalario.

Cargado por

dezayde20
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL DEL ALTIPLANO PUNO

FACULTAD DE INGENIERIA ESTADISTICA E


INFORMATICA
ESCUELA PROFESIONAL DE INGENIERIA ESTADISTICA E
INFORMATICA

BASE DE DATOS DE UN
HOSPITAL
ING. CAUNA HUANCA GERARDINO JUVENAL

INTEGRANTES:
- Aquino Nolasco Georgina Sharon 228412
- Humiri Ramos Maria Roxana 227458
- Quea Deza Ruth Jimena 229532
- Calcina Mango Yulissa Nataly del Carmen 22

Puno – Perú

2024
Contenido

Introducción............................................................................................2

Base de Datos de un Hospital.................................................................2

Consultas de JOIN:..................................................................................3

INNER JOIN:........................................................................................3

LEFT JOIN:...........................................................................................3

RIGHT JOIN:.........................................................................................4

Consultas de DISTINCT:.........................................................................5

Consulta 1:...........................................................................................5

Consulta 2:...........................................................................................5

Consultas de GROUP BY:........................................................................5

consulta 1:............................................................................................6

consulta 2:............................................................................................6

Procedimientos Almacenados:................................................................7

1° consulta:...........................................................................................7

2° Consulta:..........................................................................................8

3° consulta:...........................................................................................9

Funciones Personalizadas:....................................................................10

1° consulta..........................................................................................10

PÁGINA 1
2° consulta..........................................................................................11

3° consulta..........................................................................................12

Consultas de TRIGGERS:......................................................................12

1° consulta:.........................................................................................12

2° consulta:.........................................................................................13

3° consulta:.........................................................................................14

Conclusión:............................................................................................15

PÁGINA 2
Introducción

La gestión de datos en el ámbito hospitalario es esencial para

garantizar un funcionamiento eficiente, mejorar la calidad de la

atención médica y asegurar que los recursos se utilicen de manera

óptima. En un entorno tan dinámico como el de un hospital, la

información debe ser gestionada de forma precisa y accesible para

todos los actores involucrados, desde médicos hasta personal

administrativo. Las bases de datos permiten centralizar y organizar

toda la información crítica, incluyendo los datos de los pacientes, sus

citas, médicos asignados, historiales médicos y especialidades, entre

otros.

El uso de consultas SQL avanzadas, como JOIN, DISTINCT y GROUP

BY, permite no solo almacenar la información de manera estructurada,

sino también extraer y analizar datos valiosos para la toma de

decisiones. Este enfoque optimiza la gestión de recursos, mejora el

seguimiento de pacientes y facilita la obtención de estadísticas

relevantes que apoyan la mejora continua de los servicios de salud.

Base de Datos de un Hospital

Se crearon 7 tablas de las cuales realizaremos las diversas consultas

SQL, a lo largo del aprendizaje en esta unidad. La tabla principal seria

PÁGINA 3
Citas ya que en ahí es donde se tiene la información de todo lo

necesario. Fig.1.

Figura 1. TABLAS

En estas consultas usaremos diferentes consultas como unir tablas,

eliminar e incluso consultas de triggers para así tener procedimiento y

funciones. (fig.2)

Figura 2. Base de Datos

Consultas de JOIN:

Las consultas JOIN en SQL se utilizan para combinar datos de dos o

más tablas basadas en una condición relacionada. Permiten que los

PÁGINA 4
datos se unan de acuerdo con un campo común que existe en las tablas

que se están combinando.

Ayudan a realizar análisis complejos, generar informes detallados y

mantener la integridad de los datos en bases de datos relacionales.

INNER JOIN:

Es ideal para obtener solo las filas donde existen coincidencias entre

las tablas, proporcionando una vista filtrada de los datos combinados.

La consulta nos permite unir las tablas paciente y citas mediante la

clave foránea pacientes_id en la tabla citas y el campo id en la tabla

pacientes. Esta consulta en este caso que es de un hospital permite al

personal médico o como puede ser también un administrativo

consultar información clave sobre quien tiene citas agendadas y para

que [Link].3.

SELECT [Link], [Link], [Link],

[Link], [Link]

FROM pacientes

INNER JOIN citas ON [Link] = citas.paciente_id;

PÁGINA 5
Figura 3. Resultado de INNER JOIN

LEFT JOIN:

Permite incluir todas las filas de la tabla principal, lo que es útil para

informes que deben mostrar todos los elementos de una tabla

principal, aunque no tengan información relacionada.

Esta consulta asegura que se incluya todos los registros de la table

médicos, aunque no tengan coincidencia en la tabla citas. Si algún

medico no tuviera citas, las columnas de fecha y hora aparecerán con

los valores NULL, en este caso nuestros médicos registrados tienen

citas agendadas. Este tipo de consultas es útil para generar reportes

para programar citas futuras o asignar nuevas tareas a médicos sin

citas agendadas.

La consulta devuelve una lista de todos los médicos, mostrando su

nombre y apellido, y, si existen, la fecha y hora de las citas

[Link].4.

SELECT [Link], [Link], [Link],

PÁGINA 6
[Link]

FROM medicos

LEFT JOIN citas ON [Link] = citas.medico_id;

Figura 4. Consulta LEFT JOIN

RIGHT JOIN:

Se usa cuando se necesita obtener todos los registros de la tabla

secundaria con o sin coincidencias en la primaria.

La consulta relaciona las tablas habitaciones, ingresos y pacientes para

mostrar información sobre las habitaciones ocupadas y los pacientes

asignados. Utiliza un RIGHT JOIN para garantizar que todos los

registros de la tabla ingresos aparezcan, incluso si no hay una

habitación asignada, dejando sus columnas como NULL. También

emplea un LEFT JOIN para incluir los datos de pacientes asociados a

los ingresos, asignando NULL en caso de que no exista relación.

Selecciona específicamente el número y tipo de habitación, junto con

los nombres y apellidos de los pacientes, permitiendo identificar

PÁGINA 7
ocupaciones o ingresos incompletos. La consulta es útil para gestionar

habitaciones y verificar la asignación de pacientes en el [Link].5.

SELECT [Link], [Link],

[Link], [Link]

FROM habitaciones

RIGHT JOIN ingresos ON [Link] =

ingresos.habitacion_id

Figura 5. Consulta RIGHT JOIN.

Consultas de DISTINCT:

La cláusula DISTINCT se utiliza para eliminar duplicados y devolver

solo valores únicos en el resultado de una consulta.

CONSULTA 1:

La primera consulta con DISTINCT, elimina duplicados del campo

nombre en la tabla especialidades, solo nos mostrara una vez cada

especialidad, aunque haya varios médicos con la misma especialidad.

Fig.6.

PÁGINA 8
SELECT DISTINCT nombre

FROM especialidades;

Figura 6. Consulta Distinct.

CONSULTA 2:

La consulta elimina los duplicados. Primeramente, accede a la columna

género y luego, con la palabra clave DISTINCT, muestra solo los

valores diferentes. El resultado es una lista sin repeticiones de los

géneros registrados, útil para análisis demográficos o estadísticos.

SELECT DISTINCT genero

FROM pacientes;

Figura 7. Genero de Pacientes

PÁGINA 9
Consultas de GROUP BY:

Se utiliza para agrupar filas que tienen los mismos valores en una o

más columnas. Se combina a menudo con funciones de agregación

(SUM, COUNT, AVG, etc.) para realizar operaciones en grupos de

datos y se usa para obtener resultados únicos..

CONSULTA 1:

En esta consulta cuenta cuántos médicos hay en cada especialidad y

muestra el nombre de la especialidad junto con el número de médicos.

El GROUP BY se aplica a la columna [Link],

agrupando todos los médicos de la misma especialidad.

SELECT [Link], COUNT([Link]) AS

numero_medicos

FROM medicos

JOIN especialidades ON medicos.especialidad_id =

[Link]

GROUP BY [Link];

PÁGINA 10
Figura 8. Consulta de Especialidades y Médicos.

CONSULTA 2:

En esta consulta se va a seleccionar los nombres y apellidos de los

médicos y cuenta cuántas citas ha tenido cada uno. Para hacerlo,

realiza un LEFT JOIN entre las tablas médicos y citas, uniendo la

información de los médicos con las citas que han sido asignadas a

ellos. Luego, agrupa los resultados por el ID, nombre y apellido de

cada médico, asegurando que cada médico sea un grupo único.

Finalmente, utiliza la función COUNT ([Link]) para contar el número

de citas asociadas a cada médico dentro de su respectivo grupo. Fig.9.

SELECT [Link], [Link], COUNT([Link])

AS total_citas

FROM medicos

LEFT JOIN citas ON [Link] = citas.medico_id

GROUP BY [Link], [Link], [Link];

PÁGINA 11
Figura 9. Total, de citas.

Procedimientos Almacenados:

Es un procedimiento almacenado es un conjunto de instrucciones SQL

predefinidas y almacenadas en la base de datos. Estos procedimientos

pueden ser ejecutados de manera repetida, y sirven para realizar

tareas específicas o complejas, como consultas, actualizaciones,

eliminaciones de datos o transacciones.

1° CONSULTA:

La consulta define un procedimiento almacenado con varios

parámetros de entrada como apellidos, nombres, DNI, etc. Estos

corresponden a los campos de la tabla pacientes. En el procedimiento,

se utiliza una instrucción INSERT INTO para agregar un nuevo

registro a la tabla pacientes utilizando los valores pasados como

parámetros, cuando se ejecute el procedimiento, se insertarán los

PÁGINA 12
datos proporcionados en la tabla, simplificando el proceso de inserción

de nuevos pacientes. Fig.10.

DELIMITER //

CREATE PROCEDURE agregar_paciente(

IN apellidos VARCHAR(255),

IN nombres VARCHAR(255),

IN dni VARCHAR(20),

IN fecha_nacimiento DATE,

IN genero VARCHAR(10),

IN telefono VARCHAR(20),

IN correo VARCHAR(255),

IN direccion TEXT

BEGIN

INSERT INTO pacientes (apellidos, nombres, dni,

fecha_nacimiento, genero, telefono, correo, direccion)

VALUES (apellidos, nombres, dni, fecha_nacimiento, genero,

telefono, correo, direccion);

PÁGINA 13
END //

DELIMITER ;

Figura 10. Insertar de Manera Automatizado

2° CONSULTA:

La consulta acepta un parámetro de entrada especialidad_nombre que

se utiliza para filtrar las citas por especialidad. La consulta hace un

JOIN entre las tablas citas, medicos, especialidades y pacientes, y

luego filtra los resultados mediante WHERE para mostrar solo aquellas

citas que coinciden con la especialidad proporcionada. Esto permite

obtener la información de las citas de pacientes para una especialidad

médica en particular.

El propósito de esta consulta es crear un procedimiento almacenado

llamado citas_por_especialidad, que permite consultar las citas

PÁGINA 14
programadas para una especialidad médica específica, mostrando la

fecha, hora y los datos del paciente asociado a cada cita. Fig.11.

DELIMITER //

CREATE PROCEDURE citas_por_especialidad(IN

especialidad_nombre VARCHAR(255))

BEGIN

SELECT [Link], [Link], [Link],

[Link]

FROM citas

JOIN medicos ON citas.medico_id = [Link]

JOIN especialidades ON medicos.especialidad_id =

[Link]

JOIN pacientes ON citas.paciente_id = [Link]

WHERE [Link] = especialidad_nombre;

END //

DELIMITER ;

PÁGINA 15
Figura 11. Citas por Especialidades

3° CONSULTA:

La consulta acepta dos parámetros: ingreso_id (el ID del ingreso) y

fecha_alta (la fecha de alta del paciente). Utiliza una instrucción

UPDATE para modificar el campo fecha_alta en la tabla ingresos donde

el id de ingreso coincide con el valor de ingreso_id. Esto permite

registrar la fecha de alta de un paciente en el sistema. Fig.12.

DELIMITER //

CREATE PROCEDURE dar_alta_paciente(IN ingreso_id INT, IN

fecha_alta DATE)

BEGIN

UPDATE ingresos

SET fecha_alta = fecha_alta

WHERE id = ingreso_id;

END //

PÁGINA 16
DELIMITER ;

Figura 12. Dar de Alta al Paciente

Funciones Personalizadas:

1° CONSULTA

La consulta acepta un parámetro de entrada fecha_nacimiento (de tipo

DATE) y calcula la edad de la persona utilizando la función

TIMESTAMPDIFF. Esta función calcula la diferencia en años entre la

fecha de nacimiento y la fecha actual (CURDATE()). El valor resultante

se guarda en la variable edad y se devuelve como el resultado de la

función. Esto permite obtener la edad exacta de una persona en

función de su fecha de nacimiento. Fig.13.

DELIMITER //

CREATE FUNCTION obtener_edad(fecha_nacimiento DATE)

PÁGINA 17
RETURNS INT

BEGIN

DECLARE edad INT;

SET edad = TIMESTAMPDIFF(YEAR, fecha_nacimiento,

CURDATE());

RETURN edad;

END //

DELIMITER ;

Figura 13. Obtener edad.

2° CONSULTA

La consulta recibe un parámetro habitacion_id (el ID de la habitación)

y utiliza una subconsulta con EXISTS para comprobar si hay registros

en la tabla ingresos donde la habitacion_id coincida con el

proporcionado y la fecha_alta sea NULL (lo que indica que el paciente

aún no ha sido dado de alta). Si existen tales registros, la función

establece la variable ocupada como TRUE, de lo contrario, la establece

PÁGINA 18
como FALSE. Finalmente, se devuelve el valor de ocupado, que indica

si la habitación está ocupada o libre. Fig.14.

DELIMITER //

CREATE FUNCTION habitacion_ocupada(habitacion_id INT)

RETURNS BOOLEAN

BEGIN

DECLARE ocupado BOOLEAN;

SET ocupado = EXISTS (

SELECT 1 FROM ingresos

WHERE habitacion_id = habitacion_id AND fecha_alta IS

NULL

);

RETURN ocupado;

END //

DELIMITER ;

PÁGINA 19
Figura 14. Habitación Ocupada.

3° CONSULTA

La consulta recibe un parámetro paciente_id (el ID del paciente) y

utiliza una consulta SELECT para obtener el nombre y apellido del

paciente correspondiente en la tabla pacientes. La función CONCAT se

usa para combinar el nombre y los apellidos en una sola cadena, y el

resultado se guarda en la variable nombre_completo. Finalmente, la

función devuelve el valor de nombre_completo, que es el nombre

completo del paciente. Fig.15.

DELIMITER //

CREATE FUNCTION nombre_completo_paciente(paciente_id

INT) RETURNS VARCHAR(255)

BEGIN

DECLARE nombre_completo VARCHAR(255);

SELECT CONCAT(nombres, ' ', apellidos) INTO

nombre_completo

PÁGINA 20
FROM pacientes WHERE id = paciente_id;

RETURN nombre_completo;

END //

DELIMITER ;

Figura 15. Nombre Completo Paciente

Consultas de TRIGGERS:

Un trigger o disparador es un tipo especial de consulta que se asocia a

una tabla o vista y se ejecuta automáticamente en respuesta a ciertos

eventos (como inserciones, actualizaciones o eliminaciones) que

ocurren en esa tabla o vista. Los triggers permiten ejecutar acciones

de forma automática sin necesidad de intervención directa de los

usuarios o aplicaciones.

1° CONSULTA:

Este trigger se activa antes de que se inserte un nuevo registro en la

tabla pacientes. La acción que realiza es verificar si el DNI del

PÁGINA 21
paciente que se intenta insertar ya existe en la base de datos. Si el DNI

ya está registrado, el trigger genera un error y evita la inserción del

nuevo paciente, enviando el mensaje 'El DNI ya existe.'. Este tipo de

trigger asegura que no haya registros duplicados de pacientes debido

a un error al ingresar datos. Fig.16.

DELIMITER //

CREATE TRIGGER antes_de_insertar_paciente

BEFORE INSERT ON pacientes

FOR EACH ROW

BEGIN

IF EXISTS (SELECT 1 FROM pacientes WHERE dni =

[Link]) THEN

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'El

DNI ya existe.';

END IF;

END //

DELIMITER ;

PÁGINA 22
Figura 16. DNI existe o no existe.

2° CONSULTA:

Este trigger se activa después de la inserción de un nuevo registro en

la tabla ingresos. La acción que realiza es actualizar el estado de la

habitación en la tabla habitaciones para marcarla como "Ocupada" una

vez que un paciente ha sido ingresado en el hospital. El trigger usa

NEW.habitacion_id para hacer referencia al id de la habitación

asociada al ingreso. Fig.17.

DELIMITER //

CREATE TRIGGER actualizar_habitacion_al_ingresar

AFTER INSERT ON ingresos

FOR EACH ROW

BEGIN

UPDATE habitaciones

SET estado = 'Ocupada'

WHERE id = NEW.habitacion_id;

PÁGINA 23
END //

DELIMITER ;

Figura 17. Ocupada

3° CONSULTA:

Este trigger se activa después de que se actualiza un registro en la

tabla ingresos. En este caso, verifica si la fecha de alta

(NEW.fecha_alta) del paciente ha sido asignada. Si es así, significa que

el paciente ha sido dado de alta, y el trigger actualiza el estado de la

habitación correspondiente en la tabla habitaciones a "Disponible", lo

que indica que la habitación ya está libre para ser ocupada por otro

paciente. Fig.18.

DELIMITER //

CREATE TRIGGER liberar_habitacion_al_dar_alta

PÁGINA 24
AFTER UPDATE ON ingresos

FOR EACH ROW

BEGIN

IF NEW.fecha_alta IS NOT NULL THEN

UPDATE habitaciones

SET estado = 'Disponible'

WHERE id = NEW.habitacion_id;

END IF;

END //

DELIMITER ;

Figura 18. Disponible

PÁGINA 25
Conclusión:

En conclusión, el uso adecuado de consultas SQL en una base de datos

hospitalaria permite gestionar y analizar de manera eficiente la

información relacionada con médicos, pacientes, citas, especialidades

y más. Estas consultas facilitan la integración de datos de múltiples

tablas, garantizando la coherencia y precisión en la gestión de

información, como el seguimiento de citas médicas y el historial de

pacientes. Además, permiten extraer información clave para la toma

de decisiones y la mejora continua de la administración hospitalaria.

El diseño de relaciones entre las tablas, utilizando claves primarias y

foráneas, asegura la integridad de los datos, lo que es crucial para

mantener un sistema confiable y libre de inconsistencias.

PÁGINA 26

También podría gustarte