1
VIỆN ĐẠI HỌC MỞ HÀ NỘI
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
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
DONTHUOC
BENHNHAN
Gồm
DONTHUOC
HOADON
Viết
DONTHUOC
BACSI
Viết
DONDV
BACSI
Gồm
THUOC
DONTHUOC
Gồm
DICHVU
DONDV
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
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),
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,
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);
7
ALTER TABLE DONDV add constraint KF_dichvudv Foreign Key(MDV)
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 CK
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
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
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)
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
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
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
13
ON BACSI
TO QL
GRANT Select
ON BACSI
TO NV
BẢng Benh Nhan
GRANT Select, Insert, Update, Delete
ON BENHNHAN
TO QL
GRANT Select
)
14
AS
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