1. Trang chủ
  2. » Công Nghệ Thông Tin

Hệ quản trị cơ sở dữ liệu Quản lý phòng khám đa khoa

14 5,2K 22
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 92,01 KB

Nội dung

- Bài toán giúp các bác sĩ có thể quản lý được thông tin bệnh nhân đến khám bệnh, những dịch vụ, đơn thuốc và các khoản tài chính mà bệnh nhân cần thanh toán.. - Còn về phía bệnh nhân th

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

ĐỀ CƯƠNG BÀI TẬP LỚN

MÔN :HỆ QUẢN TRỊ CƠ SƠ DƯ LIỆU

ĐỀ TÀI : QUẢN LÝ PHONGG KHÁM ĐA KHOA

Giáo viên hướng dẫn: Sinh viên thưc hiện:

Lê Hữu Dũng Đinh Trọng Tuyên

Bùi Văn Tuân Ngô Đăng Nam

Hà Nội Tháng năm 2014

Trang 2

1. Mô tả bài toán

- Bài toán “Quản lý khám bệnh tại phòng khám đa khoa”

- Phạm vi dành cho các bác sĩ và bệnh nhân trong quá trình khám bệnh tại phòng khám

- khi bệnh nhân tới phòng khám, bệnh nhân sẽ được khám bởi các bác sĩ theo yêu cầu khám

- Sau khi khám bệnh xong, bệnh nhân được yêu cầu dịch vụ, bệnh nhân sử dụng dịch vụ để chuẩn đoán bệnh

- Khi bác sĩ đã biết được bệnh của bệnh nhân, bác sĩ sẽ viết đơn thuốc cho bệnh nhân, bệnh nhân lấy thuốc

- Sau đó sẽ nhận được hóa đơn để bệnh nhân thanh toán các khoản tài chính với phòng khám

- Bài toán giúp các bác sĩ có thể quản lý được thông tin bệnh nhân đến khám bệnh, những dịch vụ, đơn thuốc và các khoản tài chính mà bệnh nhân cần thanh toán

- Còn về phía bệnh nhân thì qua các hóa đơn có thể biết ai là người điều trị, điều trị những gì, cần mua những loại thuốc nào và đặc biệt biết được số tiền mình phải trả là bao nhiêu

2. Thiết kế CSDL

2.1 Phân tích các thực thể dữ liệu & thuộc tính

BENHNHAN ( MBN, TenBN, TuoiBN, GT, Diachi, Baohiem )

BACSI ( MBS, TenBS, ChuyenNganh )

THUOC ( MT, TenThuoc, HSD, GiaThuoc)

DONTHUOC (MDT, TenBS, TenBN, MT, TienThuoc, LieuDung )

DONDV (MDDV, MBS, MBN, MDV, TienDV)

HOADON ( MHD, MDT, MDDV, MBN, Tongtien )

2.2 Vẽ sơ đồ thực thể-liên kết & giải thích các mối liên kết

Trang 3

1 N

Giải thích: Một bệnh nhân phải thanh toán 1 hoặc nhiều hóa đơn.

Giải thích: Một bệnh nhân nhận được nhiều đơn thuốc.

Giải thích:Một hóa đơn bao gồm nhiều đơn thuốc.

Giải thích: Một bác sĩ viết nhiều đơn thuốc.

Giải thích: Một bác sĩ viết nhiều đơn dịch vụ.

Giải thích: Một đơn thuốc bao gồm nhiều loại thuốc

Giải thích: Một đơn dịch vụ bao gồm nhiều dịch vụ

Thanh toán

HOADON BENHNHAN

BENHNHAN

Gồm

DONTHUOC HOADON

Viết

DONTHUOC BACSI

Viết

DONDV BACSI

Gồm

THUOC DONTHUOC

Gồm

DICHVU DONDV

Trang 4

3 Nêu các lược đồ quan hệ (LĐQH) & xác định các phụ thuộc hàm (PTH).

4. Xác định các ràng buộc:

• Giới tính chỉ nhận giá trị “nam”, “nữ”, “khác”

• Bảo hiểm nhận giá trị “có” hoặc “không”

• Chuyên ngành của bác sĩ chỉ gồm “khám răng hàm mặt”, “khám tai mũi họng”,

“khám mắt”

• Tiền thuốc = tổng giá thuốc của các mã thuốc có trong đơn thuốc

• Tiền dịch vụ = tổng giá dịch vụ của các mã dịch vụ có trong đơn dịch vụ

• Tổng tiền = tiền thuốc + tiền dịch vụ

• Nếu bệnh nhân có bảo hiểm thì sẽ được miễn 100% tiền dịch vụ, tiền thuốc

Mô tả chức năng

-Tao các bảng database

-Tạo các khóa chính,khóa phụ

-Viết các câu lệnh Index

-Tạo view,thu tục

-Tạo store procede

-Truy vấn các câu lệnh select,truy vấn,trigger

Trang 5

Code chương trình

create database phongkhamdakhoa;

use phongkhamdakhoa;

Tạo các Database

-Tạo Các Bảng -Tạo Bảng Bệnh

Nhân -create table BENHNHAN(

MBN varchar(5) not null,

TenBN nvarchar(30) not null,

TuoiBN int,

GT bit,

DiaChi nvarchar(30),

BaoHiem bit,

);

-Tạo Bảng Bác

Sĩ -create table BACSI(

MBS varchar(5) not null,

TenBS nvarchar (30) not null,

ChuyenNganh nvarchar (30),

);

Tạo bảng Dịch vụ

-create table DICHVU(

MDV varchar(5) not null,

TenDV nvarchar(30),

GiaDV numeric(10),

);

-Tạo Bảng

Thuốc -create table THUOC(

MT varchar(5)not null,

TenThuoc nvarchar(30),

HSD datetime,

GiaThuoc numeric(10),

);

-Tạo Bảng Đơn

Thuốc -create table DONTHUOC(

MDT varchar(5) not null,

MBS varchar(5) not null,

MBN varchar(5) not null,

MT varchar(5) not null,

Tienthuoc numeric(10),

LieuDung Nvarchar(20),

Trang 6

-Tạo Bảng Đơn Dịch

Vụ -create table DONDV(

MDDV varchar(5) not null,

MBS varchar(5) not null,

MBN varchar(5) not null,

MDV varchar(5) not null,

TienDV numeric(10),

);

-Tạo Bảng Hóa

Đơn -create table HOADON(

MHD varchar(5) not null,

MDT varchar(5)not null,

MDDV varchar (5) not null,

MBN varchar(5) not null,

TongTien numeric(10),

);

-Tạo các ràng buộc

-bảng bệnh nhân

ALTER TABLE BENHNHAN add constraint PK_benhnhan Primary

key(MBN);

-bảng bác sĩ

ALTER TABLE BACSI add constraint PK_bacsi Primary key(MBS); -bảng dịch vụ

ALTER TABLE DICHVU add constraint PK_dichvu Primary key(MDV); -thuốc

ALTER TABLE THUOC add constraint PK_thuoc Primary key (MT); -đơn thuốc

ALTER TABLE DONTHUOC add constraint PK_donthuoc Primary

Key(MDT); da chinh sua

-đơn dịch vụ

ALTER TABLE DONDV add constraint PK_dondv Primary Key(MDDV);

da chinh sua

-hóa đơn

ALTER TABLE HOADON add constraint PK_hoadon Primary Key(MHD);

da chinh sua -Tạo các ràng buộc

-bảng đơn thuốc

ALTER TABLE DONTHUOC add constraint KF_bacsithuoc Foreign Key(MBS) references BACSI(MBS);

ALTER TABLE DONTHUOC add constraint KF_thuocthuoc Foreign Key(MT) references THUOC(MT);

ALTER TABLE DONTHUOC add constraint KF_bnhanthuoc Foreign Key(MBN) references BENHNHAN(MBN);

-bảng đơn dịch vụ

ALTER TABLE DONDV add constraint KF_bacsidv Foreign Key(MBS) references BACSI(MBS);

Trang 7

references DICHVU(MDV);

ALTER TABLE DONDV add constraint KF_bnhandv Foreign Key(MBN) references BENHNHAN(MBN);

-bảng hóa đơn

ALTER TABLE HOADON add constraint FK_bnhan Foreign Key(MBN) references BENHNHAN(MBN);

ALTER TABLE HOADON add constraint FK_dondv Foreign Key(MDDV) references DICHVU(MDDV);

ALTER TABLE HOADON add constraint FK_hdthuoc Foreign Key(MDT) references THUOC(MDT);

-Tạo các ràng buộc

-bảng bệnh nhân

ALTER TABLE BENHNHAN add constraint CK_GT CHECK (GT IN

(N'Nam',N'Nữ'));

ALTER TABLE BENHNHAN add constraint CK_baohiem CHECK (BaoHiem

IN (N'có',N'không'));

-bảng dịch vụ

ALTER TABLE DICHVU add constraint CK_GiaDV CHECK

(GiaDV>100000);

-bảng thuốc

ALTER TABLE THUOC add constraint CK_Giathuoc CHECK

(GiaThuoc>1000);

-bảng đơn thuốc

ALTER TABLE DONTHUOC ALTER COLUMN Tienthuoc NUMERIC(30) NULL; ALTER TABLE DONTHUOC add constraint CK_tienthuoc CHECK

(TienThuoc>10000);

-bảng đơn dịch vụ

ALTER TABLE DONDV ALTER COLUMN TienDV NUMERIC(30) NULL;

ALTER TABLE DONDV add constraint CK_tienDV CHECK

(TienDV>10000);

-bảng đơn Hóa đơn

ALTER TABLE HOADON ALTER COLUMN TongTien NUMERIC(30) NULL; ALTER TABLE HOADON add constraint CK_TongTien CHECK

(TongTien>100000);

- Tao ca INDEX

CREATE INDEX ID_Benhnhan ON BENHNHAN (MBN);

CREATE INDEX ID_Bacsi ON BACSI(MBS);

CREATE INDEX ID_Dichvu ON DICHVU(MDV);

CREATE INDEX ID_Thuoc ON THUOC(MT);

CREATE INDEX ID_Hoadon ON HOADON(MDV);

CREATE INDEX ID_Donthuoc ON DONTHUOC(MT);

Nhập dư liệu cho các bảng

Trang 8

- TẠO DU LIEU CHO CAC BANG

- Tạo 5 ban ghi vao bang BENHNHAN

INSERT INTO Benhnhan

VALUES ( 'A01',N'Bùi Văn Hiệp',10,N'Nam',N'Hà Nội', N'có');

INSERT INTO Benhnhan

VALUES ( 'A02',N'Đinh Trọng Tuyên',12,N'Nữ',N'Hải Phòng',

N'không');

INSERT INTO Benhnhan

VALUES ( 'A03',N'Nguyễn Ngọc Sáng',14,N'Nam',N'Hà Nội',N'có'); INSERT INTO Benhnhan

VALUES ( 'A04',N'Lã Duy Tùng',15,N'Nữ',N'Hải Dương',N'không'); INSERT INTO Benhnhan

VALUES ( 'A05',N'Hoàng Văn Ngân',17,N'Nam',N'Quảng Ninh',N'có'); Tạo 5 bản ghi vao bảng BACSI

INSERT INTO Bacsi VALUES ('B01',N'Ngô Đăng Nam',N'Da liễu'); INSERT INTO Bacsi VALUES ('B02',N'Bùi Văn Tuân',N'Thần kinh'); INSERT INTO Bacsi VALUES ('B03',N'Phạm Quang Huy',N'Răng hàm mặt');

INSERT INTO Bacsi VALUES ('B04',N'Nguyễn Văn Quân',N'Bướu cổ');

INSERT INTO Bacsi VALUES ('B05',N'Bùi Chí Cường',N'Mắt');

- Tạo 5 bản ghi vào bảng DICHVU

INSERT INTO Dichvu VALUES ('DV01',N'Siêu âm dưới da',10000); INSERT INTO Dichvu VALUES ('DV02',N'Điện não đồ',20000);

INSERT INTO Dichvu VALUES ('DV03',N'Siêu âm vòm

miệng',30000);

INSERT INTO Dichvu VALUES ('DV04',N'Siêu âm tuyến

giáp',40000);

INSERT INTO Dichvu VALUES ('DV05',N'Đo mắt',50000);

- Tạo 5 bản ghi vào bảng THUOC

INSERT INTO Thuoc VALUES ('T01',N'Kem trị

rám','05/24/2014',11000);

INSERT INTO Thuoc VALUES ('T02',N'Thuốc đau

đầu','09/23/2015',12000);

INSERT INTO Thuoc VALUES ('T03',N'Thuốc sâu

răng','10/30/2015',13000);

INSERT INTO Thuoc VALUES ('T04',N'Thuốc viêm

họng','11/29/2014',14000);

Trang 9

- Tạo 5 bản ghi vào bảng DONTHUOC

INSERT INTO Donthuoc VALUES

('DT01','B01','A01','T01',100000,N'Một lần');

INSERT INTO Donthuoc VALUES

('DT02','B02','A02','T02',200000,N'Một lần');

INSERT INTO Donthuoc VALUES

('DT03','B03','A03','T03',300000,N'Một lần');

INSERT INTO Donthuoc VALUES

('DT04','B04','A04','T04',400000,N'Một lần');

INSERT INTO Donthuoc VALUES

('DT05','B05','A05','T05',500000,N'Một lần');

- Tạo 5 ban ghi vào bảng DONDV

INSERT INTO Dichvu VALUES

('DD01','B01','A01','DV01',110000);

INSERT INTO Dichvu VALUES ('DD02','B02','A02','DV02',120000); INSERT INTO Dichvu VALUES ('DD03','B03','A03','DV03',130000); INSERT INTO Dichvu VALUES ('DD04','B04','A04','DV04',140000); INSERT INTO Dichvu VALUES ('DD05','B05','A05','DV05',150000);

Tạo 5 bản ghi vào bảng HOADON

INSERT INTO Dichvu VALUES

('HD01','DT01','DD01','A01',null);

INSERT INTO Dichvu VALUES ('HD02','DT02',,'DD02','A02',null); INSERT INTO Dichvu VALUES ('HD03','DT03','DD03','A03',null); INSERT INTO Dichvu VALUES ('HD04','DT04','DD04','A04',null); INSERT INTO Dichvu VALUES ('HD05','DT05','DD05','A05',null);

Viết các câu lênh truy vấn

- VIET CAC STORE PROCEDURE LAY DU LIEU MOI BANG THEO PK VA PARAMETER TRUYEN

VAO -benh nhan

create procedure spBN_select_ck

@MBN nvarchar(10)

as

begin

select * from BENHNHAN where @MBN=MBN

end

-bac si

create procedure spBS_select_ck

@MBS nvarchar(10)

Trang 10

as

begin

select * from BACSI where @MBS=MBS

end

thuoc

create procedure spT_select_ck

@MT nvarchar(10)

as

begin

select * from THUOC where @MT=MT

end

-VIET CAC CAU LENH

SELECT -Dua ra ds don thuoc co tien thuoc >200000

select DONTHUOC.MDT as [ma thuoc],

COUNT (MBN) as [so don thuoc]

From DONTHUOC INNER JOIN BENHNHAN

ON

DONTHUOC.MBN = BENHNHAN.MBN

GROUP BY DONTHUOC.MT, BENHNHAN.TenBN

HAVING COUNT (Tienthuoc) > 200000

lay ra thong tin benh nhan co ten dat dau = 'nguyen'

select distinct MBN, TenBN

from BENHNHAN where TenBN like N'Nguyễn%'

Đua ra DSBN va tong so hoa đơn ma ho co

SELECT BENHNHAN.TenBN as [Họ tên BN],

COUNT (MHD) AS [Số Hoá Đơn]

FROM BENHNHAN INNER JOIN HOADON

ON BENHNHAN.MBN =HOADON.MBN

GROUP BY BENHNHAN.MBN, HOADON.MHD

-TAO THU

TUC - benh nhan

Create Proc thembenhnhan

@MBN VARCHAR(5) ,@TenBN NVARCHAR(50),@TuoiBN INT,@GT

BIT,@diachi_BN NVARCHAR(50),@BaoHiem BIT

as

insert into BENHNHAN(MBN,TenBN ,TuoiBN ,GT ,DiaChi,BaoHiem )

Trang 11

exec thembenhnhan @mMBN='BN06' ,@TenBN=N'Cong Ton

Son',@TuoiBN=20,@GT=N'Nam',@diachi_BN=N'Hà Nội',@BaoHiem='co' select *from BENHNHAN

- bác sĩ

Create Proc thembacsi @MBS NVARCHAR(5),@TenBS

NVARCHAR(10),@ChuyenNganh NVARCHAR(10)

as

insert into BACSI (MBS,TenBS,ChuyenNganh)

values ( @MBS,@TenBS,@ChuyenNganh)

-thucthi

exec thembacsi @MBS='BS06',@TenBS=N'Duong Tuan

Tu',@ChuyenNganh=N'Da Lieu'

select *from BACSI

-TAO

VIEW -dua ra bac si co chuyen nganh la da lieu

create view dsbs

as

select TenBS,ChuyenNganh

from BACSI,DONTHUOC

where BACSI.MBS=DONTHUOC.MBS and ChuyenNganh=N'Da Lieu'

SELECT* FROM BACSI

dua ra danh sach thuoc co gia tu cao den thap 10000 den 1000000

create view sapxep

as

select MT

from THUOC

where GiaThuoc BETWEEN 100000 and 10000000

SELECT* FROM THUOC

-TAO

Triggger - Ma benh nhan trong bang Don thuoc phai đưoc luu tru trong bang benh nhan

create trigger chitietBN

on BENHNHAN

for insert, update

as

begin

Trang 12

declare @MBN nvarchar(10) select @MBN=MBN

from inserted

if not exists( select * from BENHNHAN Where (MBN=@MBN))

begin

RAISERROR( N'Ma BN khong ton tai',16,1) rollback tran

end end

Kiểm tra:

Insert Into BENHNHAN

VALUES ( 'A11',N'Le Duy Trung',10,N'Nam',N'Nam Dinh', N'có');

Insert Into BENHNHAN

VALUES ( 'A12',N'Nguyen Van Hieu',12,N'Nam',N'Hà Nội', N'khong'); Xoá

DROP trigger chitietBN

/*Tạo trigger hien thị du liệu moi khi có dữ lieu mới đưoc thêm vao bang don thuoc

create trigger dl_DT

on DONTHUOC

after insert

as

select *

from inserted

Kiểm tra

INSERT INTO Donthuoc (MDT,MBS,MBN,MT,Tienthuoc,LieuDung)

VALUES ('DT06','B06','A06','T06',200000,N'Một lần')

INSERT INTO Donthuoc (MDT,MBS,MBN,MT,Tienthuoc,LieuDung)

VALUES ('DT07','B07','A07','T07',300000,N'Một lần')

-PHAN

QUYEN -Tạo Login bằng T-SQL:

sp_addLogin @loginame='BacSi',@passwd = 'trongtuyen'

sp_addLogin @loginame='QuanLy',@passwd = 'trongtuyen'

Tạo các user để cấp quyền

create user NV from login BacSi

create user QL from login QuanLy

Cấp quyen thực thi tren cơ so du liệu

BẢng Bac Si

GRANT Select, Insert, Update, Delete

Trang 13

TO QL

-GRANT Select

ON BACSI

TO NV

- BẢng Benh Nhan

GRANT Select, Insert, Update, Delete

ON BENHNHAN

TO QL

-GRANT Select

ON BENHNHAN

TO NV

Hủy quyền đã cấp :

REVOKE Select, Insert, Update, Delete

ON BACSI FROM QL

-REVOKE Select

ON BACSI FROM BS

-• Backup:

BACKUP DATABASE phongkhamdakhoa

TO DISK = 'C:\Program Files\Microsoft SQL

Server\MSSQL10_50.SQLEXPRESS\MSSQL\Backup\phongkhamdakhoa.bak'

• Restore:

RESTORE DATABASE phongkhamdakhoa

FROM DISK = 'C:\Program Files\Microsoft SQL

Server\MSSQL10_50.SQLEXPRESS\MSSQL\Backup\phongkhamdakhoa.bak'

- chưa đc

-Lien

ket -CREATE PROCEDURE sp_ThemBN

(

@MBN varchar(5),

@TenBN nvarchar(30)

@TuoiBN int,

@GT bit,

@DiaChi nvarchar(30),

@BaoHiem bit, )

Trang 14

BEGIN declare @c bit

set @c =@bGT

begin

if @c=1

begin

insert into BENHNHAN(TenBN,MBN,TuoiBN,GT,Diachi,BaoHiem)

values (@TenBN,@MBN,@TuoiBN,@GT,@DiaChi,@BaoHiem)

print N'Server 1 cập nhật dữ liệu thành công'

end else

begin

if @c=0 begin insert LKHQTCSDL.phongkhamdakhoa.BENHNHAN(TenBN,MBN,TuoiBN,GT,Diachi,Bao Hiem)

values (@TenBN,@MBN,@TuoiBN,@GT,@DiaChi,@BaoHiem)

print N'Server 2 cập nhật dữ liệu thành công'

end end end

end

Ngày đăng: 08/08/2014, 10:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w