Base de datos del sistema de gestión de información médica--MySQL

Amistad

1. Diseño de la base de datos del sistema de gestión de logros estudiantiles – MySQL

Diseño de la base de datos del sistema de gestión de calificaciones de los estudiantes: MySQL

2. Diseño de base de datos de gestión de correo – MySQL

Diseño de base de datos de gestión de correo electrónico – MySQL

3. Diseño de la base de datos del sistema de pedidos – SQL Server

Diseño de base de datos del sistema de pedidos – SQL Server

4. Diseño de la base de datos del sistema de gestión de productos básicos: SQL Server

Diseño de la base de datos del sistema de gestión de productos básicos: SQL Server

5. Base de datos del sistema de gestión de información médica de SQL Server [Versión en inglés - Código fuente] – (Base de datos del sistema de gestión médica)

Base de datos del sistema de gestión de información médica de SQL Server [Versión en inglés - Código fuente] – (Base de datos del sistema de gestión médica)

6. Sistema de gestión de base de datos de cine de SQL Server [Versión en inglés - Código fuente] – (Base de datos del sistema de gestión de cine)

SQL Server Cinema Database Management System [Versión en inglés - Código fuente] – (Base de datos del sistema de gestión de salas de cine)

En primer lugar, la creación de la base de datos.

Diseñe una base de datos y describa la función de la base de datos (alrededor de 100 palabras). La base de datos contiene al menos tres tablas de datos, cada tabla tiene no menos de 5 campos y se agregan al menos 5 registros de prueba a cada tabla. Es necesario establecer la clave principal para cada tabla de datos, establecer la clave externa para la asociación de datos entre las tablas y seleccionar el tipo de datos adecuado para el campo.

Sistema de gestión de información médica: en vista de la grave situación epidémica actual, esta base de datos está diseñada para facilitar que la clínica gestione mejor la información del tratamiento médico, para realizar el almacenamiento de información, consulta, etc. Modificación, etc., la base de datos contiene un total de 6 tablas, a saber: tabla de información del personal de la clínica, tabla de información básica del paciente, tabla de información de medicamentos, tabla de citas, tabla de registro médico del paciente, tabla de recetas.

Haga clic para obtener el código fuente:

Base de datos del sistema de gestión de información médica MySQL (código fuente)

crear base de datos
inserte la descripción de la imagen aquí

Todas las tablas y vistas
inserte la descripción de la imagen aquí

Formulario de información del personal de la clínica
inserte la descripción de la imagen aquí

Formulario de información del paciente Formulario
inserte la descripción de la imagen aquí
de información del medicamento Formulario de
inserte la descripción de la imagen aquí
cita
inserte la descripción de la imagen aquí
del paciente Formulario de información del registro médico del paciente Formulario de
inserte la descripción de la imagen aquí
prescripción
inserte la descripción de la imagen aquí

2. Con base en la base de datos, se debe completar lo siguiente

2.1 Consulta de datos

① Consulta de unión de varias tablas unión en
la entrada de consulta En los médicos que se unieron en junio de 2019, los pacientes tratados por cada médico deben mostrar: el nombre del médico, la cantidad de pacientes tratados, ordenados por la cantidad de pacientes tratados de grande a pequeño; la
declaración de consulta:

SELECT  	u.name, p.number
FROM 	 	users_info AS u INNER JOIN
 				(SELECT doctor_id, COUNT(*) AS number FROM patients_info 
				GROUP BY doctor_id) AS p ON u.id = p.doctor_id
	WHERE  	MONTH(u.hire_date) = 6
	ORDER BY 	p.number DESC;

resultado de búsqueda:
inserte la descripción de la imagen aquí

② Función agregada de selección de consulta avanzada desde donde agrupar teniendo
que consultar pacientes con más de 1 tipo de medicamento, lo que requiere mostrar: identificación del paciente, nombre, descripción de la condición, resultado del diagnóstico, plan de tratamiento, número de medicamentos, ordenados por identificación del paciente
Declaración de consulta:

SELECT 		pa.pt_id,
				pa.name,
				c.description,
				c.diagnosis,
				c.therapy,
				pr.number
FROM 		patients_info AS pa, case_history AS c,
				(SELECT c_id, COUNT(c_id) AS number FROM prescriptions 
				GROUP BY c_id HAVING COUNT(c_id) > 1) AS pr
WHERE 		pa.pt_id = c.pt_id AND
				c.c_id = pr.c_id
		ORDER BY 	pa.pt_id;

resultado de búsqueda:
inserte la descripción de la imagen aquí

③ Subconsulta >= > <= = en >=todos <todos =cualquiera (elija 2) para
consultar pacientes con el mismo medicamento, lo que requiere mostrar: nombre del medicamento, uso del medicamento, nombre del paciente, sexo, edad, descripción de la condición, diagnóstico Resultados y los planes de tratamiento se ordenan primero en orden ascendente por nombre de medicamento y luego en orden descendente por uso de medicamento
.

SELECT 		dr.name AS drug_name,
				pr.quantity AS dosage,
				pa.name,
				pa.gender,
				pa.age,
				ca.description,
				ca.diagnosis,
				ca.therapy
FROM 		patients_info AS pa INNER JOIN
				 case_history AS ca ON pa.pt_id = ca.pt_id INNER JOIN
					prescriptions AS pr ON pr.c_id = ca.c_id INNER JOIN
						drugs_info AS dr ON dr.d_id = pr.d_id
WHERE 		dr.d_id IN (SELECT p.d_id FROM prescriptions AS p, 
				case_history AS c WHERE p.c_id = c.c_id GROUP BY p.d_id 
				HAVING COUNT(c.pt_id) > 1)
		ORDER BY 	drug_name ASC, dosage DESC;

resultado de búsqueda:
inserte la descripción de la imagen aquí

2.2 Funciones

① Para personalizar una función, debe llamar a la función según la tabla de datos.
Crear función: obtenga el tipo de empleado en función de la identificación del empleado de la clínica.
Crear declaración:

DELIMITER //
CREATE FUNCTION get_user_type_by_id(id INT)
RETURNS VARCHAR(300)
BEGIN
RETURN (
SELECT 		CONCAT('name: ', u.name, '   ', 'user_type: ', u.user_type)
FROM 		users_info AS u 
WHERE 		u.id = id);
END//
	 DELIMITER ;

Captura de pantalla de la función de llamada:
inserte la descripción de la imagen aquí

② Personalizar una función, requiriendo una de las declaraciones de control de flujo en el cuerpo de la función
inserte la descripción de la imagen aquí

Crear función: ingrese la identificación del usuario, verifique el nivel de salario del usuario, si el salario es menor a 5000, se mostrará "normal", si es mayor o igual a 5000 y menor a 10000, se mostrará "medio", y si es mayor o igual a 10000, mostrará "salario alto"
.

DELIMITER //
CREATE FUNCTION check_salary_level(id INT) 
RETURNS VARCHAR(8)
BEGIN
	DECLARE u_salary INT;
	SELECT salary into u_salary FROM users_info AS u WHERE u.id = id;
	IF u_salary < 5000 THEN
		RETURN '一般';
	ELSEIF u_salary >= 10000 THEN
		RETURN '高薪';
	ELSE
		RETURN '中等';
END IF;
END//
DELIMITER ;

Captura de pantalla de la función de llamada:
inserte la descripción de la imagen aquí

2.3 Vistas

(1) Cree una vista de examen y visualice la vista
Crear una vista de paciente: se requiere para mostrar la información básica del paciente y la información del registro médico.
Crear declaración:

	CREATE VIEW v_patients AS
	SELECT 		pa.pt_id,
					pa.name,
					pa.gender,
					pa.age,
					ca.description,
					ca.diagnosis,
					ca.therapy
	FROM 		patients_info AS pa INNER JOIN
						ase_history AS ca ON pa.pt_id = ca.pt_id;

Ver vista:
inserte la descripción de la imagen aquí

2.4 Procedimientos almacenados

(1) Personalice el procedimiento almacenado con parámetros de entrada para completar la llamada.
Cree un procedimiento almacenado: por cada paciente adicional, el salario del médico de diagnóstico correspondiente se incrementa automáticamente en 99.
Cree una declaración:

DELIMITER //
	CREATE DEFINER = CURRENT_USER PROCEDURE add_patient(
	IN pname VARCHAR(50) charset 'utf8',
	IN pgender VARCHAR(10),
	IN page TINYINT,
	IN ptel VARCHAR(20),
	IN paddress VARCHAR(100) charset 'utf8',
	IN pcreation_date DATE,
	IN pdoctor_id INT
	)
	DETERMINISTIC
	BEGIN
	INSERT INTO patients_info (name, gender, age, tel, address, creation_date, doctor_id)
	VALUES (pname, pgender, page, ptel, paddress, pcreation_date, pdoctor_id);
	UPDATE users_info
	SET salary = salary + 99
	WHERE id = pdoctor_id;
	COMMIT;
	END//
			DELIMITER ;

Captura de pantalla de la llamada:
inserte la descripción de la imagen aquí

(2) Personalice el procedimiento almacenado con parámetros de entrada y salida para completar la llamada. Cree
un procedimiento almacenado: cada vez que se crea una receta, la cantidad correspondiente de medicamentos contenidos en la receta debe deducirse del inventario de medicamentos en la tabla de información de medicamentos, y se genera la cantidad deducida del medicamento en existencia.

	DELIMITER //
	CREATE DEFINER = CURRENT_USER PROCEDURE add_prescription(
	IN d_quantity INT,
	IN case_id INT,
	IN drug_id VARCHAR(30),
	IN p_type VARCHAR(20),
	OUT d_stock_number INT -- 库存数量
)
	DETERMINISTIC
	BEGIN
	INSERT INTO prescriptions (quantity, c_id, d_id, type)
	VALUES (d_quantity, case_id, drug_id, p_type);
	UPDATE drugs_info
	SET stock_number = stock_number - d_quantity
	WHERE d_id = drug_id;
	SELECT stock_number INTO d_stock_number FROM drugs_info WHERE d_id = drug_id;
COMMIT;
END//
	DELIMITER ;

Captura de pantalla de la llamada:
inserte la descripción de la imagen aquí

2.5 Activadores

① Crear disparadores para modificar datos. Y compare la comparación antes y después de ejecutar el disparador.
Función de activación: actualización en tiempo real del inventario de medicamentos
Crear declaración:

DELIMITER //
CREATE TRIGGER update_info 
AFTER INSERT ON prescriptions FOR EACH ROW  
BEGIN
      UPDATE drugs_info SET stock_number = stock_number - new.quantity
      WHERE new.d_id = d_id;
END//
DELIMITER ;

Comparación de capturas de pantalla antes y después de la ejecución del disparador:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Artificial_idiots/article/details/122094857
Recomendado
Clasificación