MySQL医疗信息管理系统数据库(源码)
友情连接
1、学生成绩管理系统数据库设计–MySQL
2、邮件管理数据库设计–MySQL
3、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database)
SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database)
4、SQL Server电影院数据库管理系统【英文版-源码】–(Movie Theatre Management System Database)
SQL Server电影院数据库管理系统【英文版-源码】–(Movie Theatre Management System Database)
医疗信息管理系统数据库–MySQL
设计一个数据库,描述数据库的功能(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');