MySQL医疗信息管理系统数据库(源码)

  • 友情连接
  • 1、学生成绩管理系统数据库设计--MySQL
  • 2、邮件管理数据库设计--MySQL
  • 3、SQL Server医疗信息管理系统数据库【英文版-源码】--(Medical Management System Database)
  • 4、SQL Server电影院数据库管理系统【英文版-源码】--(Movie Theatre Management System Database)
  • 医疗信息管理系统数据库--MySQL
  • 1. 创建数据库及表、插入数据
  • 2. 查询数据
  • 3. 创建视图、自定义函数、存储过程、触发器

设计一个数据库,描述数据库的功能(100字左右)。数据库至少包含三张数据表,每张表不少于5个字段,每张表至少添加5条测试记录。要求为每张数据表设置主键,表与表之间的数据关联设置外键,字段选择合适的数据类型。

医疗信息管理系统:鉴于现在疫情严重,设计该数据库是为了方便诊所更好的实现医疗就诊信息管理,从而实现病人预约—接待员统计—医生看病—护士护理整个就诊流程所产生信息存储、查询、修改等,该数据库共包含6张表,分别为:诊所职工信息表、病人基本信息表、药品信息表、就诊预约表、病人病历记录表、处方表。

1. 创建数据库及表、插入数据

DROP DATABASE IF EXISTS MedicalManagementSystem;

-- 创建数据库

CREATE DATABASE MedicalManagementSystem CHARSET=utf8;

-- 使用数据库

USE MedicalManagementSystem;

DROP TABLE IF EXISTS users_info;

-- table 1: 诊所职员用户信息表

CREATE TABLE users_info
(
	id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
	name VARCHAR(50) NOT NULL,
	login_name VARCHAR(20) NOT NULL,
	password VARCHAR(20) NOT NULL,
	permit VARCHAR(20) NOT NULL,
	user_type VARCHAR(20) NOT NULL,
	gender VARCHAR(10) NOT NULL,
	age TINYINT NOT NULL,
	tel VARCHAR(20) NOT NULL,
	salary INT NOT NULL,
	hire_date DATE NOT NULL
);


DROP TABLE IF EXISTS patients_info;

-- table 2: 病人信息表

CREATE TABLE patients_info
(
	pt_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
	name VARCHAR(50) NOT NULL,
	gender VARCHAR(10) NOT NULL,
	age TINYINT NOT NULL,
	tel VARCHAR(20) NOT NULL,
	address VARCHAR(70) NOT NULL,
	creation_date DATE NOT NULL,
	doctor_id INT UNSIGNED NOT NULL,
	FOREIGN KEY(doctor_id) REFERENCES users_info(id)
);


DROP TABLE IF EXISTS drugs_info;

-- table 3: 药品信息表

CREATE TABLE drugs_info
(
-- 需要完整代码请添加文章底部微信,付费咨询
);



DROP TABLE IF EXISTS appointment;

-- table 4: 诊所预约表

CREATE TABLE appointment
(
-- 需要完整代码请添加文章底部微信,付费咨询
);


DROP TABLE IF EXISTS case_history;

-- table 5: 病人病历表

CREATE TABLE case_history
(
-- 需要完整代码请添加文章底部微信,付费咨询
);



DROP TABLE IF EXISTS prescriptions;

-- table 6: 用药处方表

CREATE TABLE prescriptions
(
-- 需要完整代码请添加文章底部微信,付费咨询
);


INSERT INTO users_info
VALUES	-- 需要完整代码请添加文章底部微信,付费咨询


INSERT INTO patients_info
VALUES -- 需要完整代码请添加文章底部微信,付费咨询


INSERT INTO drugs_info
VALUES	-- 需要完整代码请添加文章底部微信,付费咨询


INSERT INTO appointment
VALUES	-- 需要完整代码请添加文章底部微信,付费咨询

INSERT INTO case_history
VALUES	-- 需要完整代码请添加文章底部微信,付费咨询


INSERT INTO prescriptions
VALUES	-- 需要完整代码请添加文章底部微信,付费咨询

2. 查询数据

USE MedicalManagementSystem;


-- Query 1:查询入职在2019年6月入职的医生中,每个医生治疗的病人,
-- 要求显示:医生姓名、治疗病人的数量,按治疗病人的数量从大到小排序;

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;


-- Query 2:查询用药种类大于1的病人,要求显示:病人id, 姓名,病历信息,用药数量,按病人id排序

SELECT 		pa.pt_id,
			pa.name,
			c.description,
			c.diagnosis,
			c.therapy,
			pr.number
-- 需要完整代码请添加文章底部微信,付费咨询

-- Query 3: 查询用药相同的病人
-- 要求显示:药品名、用药使用量,病人姓名、性别、年龄、病情描述、诊断结果、治疗方案,
-- 先按药品名升序排,后按药品使用量降序排	

SELECT 		dr.name AS drug_name,
			pr.quantity AS dosage,
			pa.name,
			pa.gender,
			pa.age,
			ca.description,
			ca.diagnosis,
			ca.therapy
-- 需要完整代码请添加文章底部微信,付费咨询

3. 创建视图、自定义函数、存储过程、触发器

USE MedicalManagementSystem;

-- 病人视图 
-- 创建一个病人视图,要求显示病人基本信息和病历信息

DROP VIEW IF EXISTS v_patients;

CREATE VIEW v_patients AS
SELECT 		pa.pt_id,
			pa.name,
			pa.gender,
			pa.age,
			ca.description,
			ca.diagnosis,
			ca.therapy
-- 需要完整代码请添加文章底部微信,付费咨询



-- 自定义函数

-- 自定义函数 1:根据医生id获取医生姓名和治疗病人的数量

DROP FUNCTION IF EXISTS get_user_type_by_id;

DELIMITER //
CREATE DEFINER = CURRENT_USER FUNCTION get_user_type_by_id(id INT)
RETURNS VARCHAR(300)
DETERMINISTIC
BEGIN
RETURN (
-- 需要完整代码请添加文章底部微信,付费咨询
END//
DELIMITER ;

SELECT get_user_type_by_id(9);


-- 自定义函数 2:要求函数体中包含其中一种流程控制语句
-- 创建函数:输入用户id, 查看用户薪资水平,薪资小于5000显示“一般”,大于等于5000小于10000显示“中等”,大于等于10000显示“高薪”

DROP FUNCTION IF EXISTS check_salary_level;

DELIMITER //
CREATE DEFINER = CURRENT_USER FUNCTION check_salary_level(id INT) 
RETURNS VARCHAR(20)
DETERMINISTIC
-- 需要完整代码请添加文章底部微信,付费咨询
END//
DELIMITER ;




-- 存储过程

-- 1.自定义带输入参数的存储过程,完成调用。
-- 创建存储过程:每增加一个病人,对应诊的断医生薪资自动增加99

DROP PROCEDURE IF EXISTS add_patient;

DELIMITER //
CREATE DEFINER = CURRENT_USER PROCEDURE add_patient(
	-- 需要完整代码请添加文章底部微信,付费咨询
COMMIT;
END//
DELIMITER ;

-- 调用存储过程
-- CALL add_patient('mike', 'male', 97, '09882873211', 'Chinatown xian road 857', '2020-06-15', 12);


-- 2.自定义带输入、输出参数的存储过程,完成调用。
-- 创建存储过程:每创建一个处方,需要从药品信息表的药品库存里扣除处方所包含的相应药品数量,并输出扣除后的该药品的库存数量

DROP PROCEDURE IF EXISTS add_prescription;

DELIMITER //
CREATE DEFINER = CURRENT_USER PROCEDURE add_prescription(
	-- 需要完整代码请添加文章底部微信,付费咨询
COMMIT;
END//
DELIMITER ;

-- 调用存储过程
-- CALL add_prescription(3, 5, 'dr000008', 'official', @d_stock_number);
-- SELECT @d_stock_number;




-- 触发器

-- 实现数据的修改 。并对比触发器执行前后的对比。
-- 创建触发器: 实时更新药品库存量


DROP TRIGGER IF EXISTS update_info;

DELIMITER //
-- 需要完整代码请添加文章底部微信,付费咨询
END//
DELIMITER ;

-- 测试插入语句
-- INSERT INTO prescriptions
-- VALUES	(0, 5, 6, 'dr000001', 'physician'),
-- 		(0, 10, 7, 'dr000002', 'physician'),
-- 		(0, 15, 9, 'dr000003', 'physician'),
-- 		(0, 20, 10, 'dr000004', 'physician');