1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn môn cơ sở dữ liệu Đề tài hồ sơ bệnh Án Điện tử

47 0 0
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

Tiêu đề Hồ Sơ Bệnh Án Điện Tử
Tác giả Lê Thùy Ánh, Lê Thành Đạt, Nguyễn Thị Hương Giang, Trần Việt Hoàng, Trương Nam Khánh, Hoàng Văn Khuyến, Lê Trà My, Đậu Ngọc Nghĩa, Đỗ Thị Kim Oanh, Lữ Thị Kiều Trang
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Cơ sở dữ liệu
Thể loại Báo cáo
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 47
Dung lượng 1,79 MB

Cấu trúc

  • I. Mô tả “kịch bản thế giới thực” (3)
  • II. Phân tích hệ thống (4)
    • 1. Yêu cầu về dữ liệu cần được lưu trữ (4)
    • 2. Các thao tác trên cơ sở dữ liệu (6)
  • III. Lược đồ E-R (7)
    • 1. Các ràng buộc và yêu cầu dữ liệu (7)
    • 2. Mô tả lược đồ E-R (8)
    • 3. Lược đồ E-R (9)
  • IV. Thiết kế logic và chuẩn hóa (10)
    • 1. Ánh xạ từ lược đồ E-R sang tập các lược đồ quan hệ (10)
    • 2. Xác định phụ thuộc hàm (13)
    • 3. Xác định khóa và chuẩn hóa lược đồ (14)
    • 4. Kết Luận (17)
  • V. Cài đặt hệ thống (17)
    • 1. Tạo bảng trên SQL Server (17)
    • 2. Diagram (21)
    • 3. Dữ liệu cho từng bảng (21)
    • 4. Các câu truy vấn (31)

Nội dung

Phân tích hệ thống 1.Yêu cầu về dữ liệu cần được lưu trữ:  Dữ liệu về bảng Người: Căn cước công dân, Họ và tên, Ngày sinh, Giới tính Nam/Nữ, Số điện thoại, Địa chỉ, Email  CCCD VARCHAR

Mô tả “kịch bản thế giới thực”

Hệ cơ sở dữ liệu này được áp dụng để quản lý hồ sơ bệnh án tại bệnh viện, giúp lưu trữ và tổ chức thông tin bệnh nhân cùng lịch sử khám chữa bệnh Nó tạo điều kiện thuận lợi cho việc theo dõi và chăm sóc sức khỏe, đồng thời cho phép bác sĩ và nhân viên y tế truy cập nhanh chóng vào thông tin cần thiết Nhờ đó, hệ thống cải thiện chất lượng dịch vụ y tế, giảm thời gian chờ đợi và nâng cao mức độ hài lòng của bệnh nhân.

Các thông tin cần được lưu trữ trong cơ sở dữ liệu bao gồm:

1 Bệnh nhân: Mã bệnh nhân (ID), Căn cước công dân, Họ và tên, Ngày sinh, Giới tính (Nam/Nữ), Địa chỉ, Số điện thoại, Email

2 Người giám hộ: Căn cước công dân, Họ và tên, Ngày sinh,

Giới tính (Nam/Nữ), Địa chỉ, Số điện thoại, Email

3 Bác sĩ: Mã bác sĩ (ID), Căn cước công dân, Họ và tên, Ngày sinh, Giới tính (Nam/Nữ), Địa chỉ, Số điện thoại, Email, Chuyên khoa

4 Hồ sơ bệnh án: Mã hồ sơ bệnh án, Ngày nhập viện, Ngày xuất viện, Chẩn đoán, Phương án điều trị, Kết quả

5 Lịch sử khám bệnh: Ngày giờ khám

6 Dịch vụ y tế: Mã dịch vụ, Tên dịch vụ, Chi phí

7 Loại thuốc: Mã thuốc, Tên loại, Nhà sản xuất

8 Đơn thuốc: Mã đơn, Ngày kê đơn, Liều lượng chỉ định

Phân tích hệ thống

Yêu cầu về dữ liệu cần được lưu trữ

 Dữ liệu về bảng Người: Căn cước công dân, Họ và tên, Ngày sinh, Giới tính (Nam/Nữ), Số điện thoại, Địa chỉ, Email

 SDT CHAR(10) UNIQUE NOT NULL,

 Email VARCHAR(100) UNIQUE NOT NULL

 Dữ liệu về bảng Người giám hộ: Căn cước công dân

 FOREIGN KEY (CCCD) REFERENCES Nguoi(CCCD)

 Dữ liệu về bảng Bệnh nhân: Mã bệnh nhân, Căn cước công dân, Căn cước công dân của người giám hộ, Tiền sử bệnh án

 FOREIGN KEY (CCCD) REFERENCES Nguoi(CCCD),

 FOREIGN KEY (NGH_CCCD) REFERENCES

 Dữ liệu về bảng Bác sĩ: Mã bác sĩ, Căn cước công dân, Chuyên khoa

 FOREIGN KEY (CCCD) REFERENCES Nguoi(CCCD)

 Dữ liệu về bảng Khám: Mã bệnh nhân, Mã bác sĩ

 FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi)

 Dữ liệu về bảng Hồ sơ bệnh án

 Dữ liệu về bảng Dịch vụ y tế:

 Dữ liệu về bảng Theo dõi

 FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi),

 Dữ liệu về bảng Đơn thuốc

 FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi)

 Dữ liệu về bảng Loại thuốc

 FOREIGN KEY (MaDon) REFERENCES DonThuoc(MaDon)

 Dữ liệu về bảng Lịch sử khám:

 FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi),

 FOREIGN KEY (MaDon) REFERENCES DonThuoc(MaDon)

Các thao tác trên cơ sở dữ liệu

Hệ thống cơ sở dữ liệu sẽ hỗ trợ các thao tác như sau:

 Thêm mới hồ sơ bệnh nhân và hồ sơ bệnh án.

 Cập nhật thông tin bệnh nhân (như địa chỉ, số điện thoại).

 Cập nhật thông tin khám bệnh, chẩn đoán mới và điều trị tiếp theo.

 Tìm kiếm thông tin bệnh nhân theo tên, mã bệnh nhân hoặc số điện thoại.

 Tra cứu lịch sử khám chữa bệnh của bệnh nhân cụ thể.

 Tìm kiếm thông tin bác sĩ theo chuyên khoa hoặc tên.

 Xem danh sách bệnh nhân đang nhập viện và các thông tin liên quan.

 Xem danh sách các bệnh nhân đã được điều trị, thống kê theo tháng/quý/năm.

 Xem thông tin và lịch sử bệnh án của bệnh nhân.

 Tạo các báo cáo thống kê số lượng bệnh nhân theo từng chuyên khoa.

 Báo cáo về tình trạng sức khỏe của bệnh nhân (như số lượng bệnh nhân xuất viện thành công, tỷ lệ bệnh nhân tái khám, v.v.)

 Xuất báo cáo tài chính liên quan đến dịch vụ y tế đã cung cấp.

Lược đồ E-R

Các ràng buộc và yêu cầu dữ liệu

Các ràng buộc dữ liệu:

 Mã bệnh nhân duy nhất:

 Ghi chú: Mỗi bệnh nhân trong hệ thống cần có một mã bệnh nhân duy nhất để đảm bảo không có sự nhầm lẫn trong hồ sơ

Ràng buộc này đảm bảo rằng mỗi bệnh nhân có một mã duy nhất, ngăn chặn việc trùng lặp mã giữa các bệnh nhân Điều này có thể được thực hiện thông qua việc sử dụng một chỉ mục duy nhất trong cơ sở dữ liệu.

 Ngày nhập viện không được sau ngày xuất viện:

 Ghi chú: Ngày nhập viện của bệnh nhân phải luôn nhỏ hơn hoặc bằng ngày xuất viện

Ràng buộc này đảm bảo tính hợp lệ của thông tin lịch sử điều trị của bệnh nhân Việc sử dụng trigger trong cơ sở dữ liệu có thể giúp kiểm tra và ngăn chặn việc nhập liệu không hợp lệ, từ đó nâng cao chất lượng dữ liệu y tế.

 Ràng buộc về độ tuổi:

 Ghi chú: Độ tuổi của bệnh nhân phải là một giá trị không âm và hợp lý (ví dụ: từ 0 đến 120).

Ràng buộc này đảm bảo tính hợp lệ của thông tin cá nhân bệnh nhân và cho phép kiểm soát thông tin thông qua các ràng buộc dữ liệu trong cơ sở dữ liệu.

 Tình trạng sức khỏe không thể rỗng:

 Ghi chú: Trường mô tả tình trạng sức khỏe của bệnh nhân không được để trống.

 Diễn giải: Ràng buộc này đảm bảo rằng mọi hồ sơ bệnh án đều có thông tin đầy đủ về tình trạng sức khỏe của bệnh nhân.

Yêu cầu về bảo mật và toàn vẹn dữ liệu:

Chỉ những nhân viên y tế có thẩm quyền mới được phép truy cập và chỉnh sửa hồ sơ bệnh án, do đó cần thiết lập phân quyền rõ ràng cho các vai trò như bác sĩ, y tá và nhân viên hành chính.

 Mã hóa dữ liệu nhạy cảm:

Để bảo vệ thông tin nhạy cảm như thông tin cá nhân và lịch sử bệnh án khỏi các truy cập trái phép, việc mã hóa dữ liệu trong cơ sở dữ liệu là rất cần thiết.

 Ghi lại nhật ký truy cập:

Hệ thống phải ghi lại tất cả các hành động truy cập và thay đổi dữ liệu để phát hiện các hoạt động đáng ngờ, từ đó bảo vệ tính toàn vẹn của dữ liệu.

Để bảo vệ dữ liệu khỏi mất mát, việc sao lưu định kỳ là rất quan trọng Hãy thường xuyên thực hiện sao lưu và kiểm tra khả năng phục hồi dữ liệu để đảm bảo thông tin luôn được an toàn.

 Kiểm tra tính hợp lệ của dữ liệu:

Cần kiểm tra tính hợp lệ của dữ liệu nhập vào để đảm bảo rằng thông tin được đưa vào hệ thống luôn chính xác và nhất quán.

Mô tả lược đồ E-R

Lược đồ E-R bao gồm 8 tập thực thể, trong đó có 5 tập thực thể mạnh như bệnh nhân, bác sĩ, dịch vụ y tế, loại thuốc và đơn thuốc Ngoài ra, còn có 3 tập thực thể yếu là hồ sơ bệnh án, người giám hộ và lịch sử khám Đặc biệt, lược đồ này cũng bao gồm 1 liên kết ba ngôi.

 Bệnh viện có nhiều bệnh nhân, bác sĩ và hồ sơ bệnh án.

 Mỗi bệnh nhân chỉ có 1 hồ sơ bệnh án Một hồ sơ bệnh án chỉ có 1 bệnh nhân.

 Mối liên kết 1:1 từ bệnh nhân đến hồ sơ bệnh án

 Một hồ sơ bệnh án có thể được phụ trách bởi 1 hoặc nhiều bác sĩ Mỗi bác sĩ cũng có thể phụ trách 1 hoặc nhiều hồ sơ bệnh án.

 Mối liên kết M:N từ bác sĩ đến hồ sơ bệnh án

Hồ sơ bệnh án có thể chứa một hoặc nhiều dịch vụ y tế, chẳng hạn như xét nghiệm hoặc siêu âm Mỗi dịch vụ y tế có thể xuất hiện trong một hoặc nhiều hồ sơ bệnh án khác nhau.

 Một bệnh nhân có thể có sử dụng 1 hoặc nhiều dịch vụ và được lưu trong 1 hồ sơ bệnh án.

 Mối liên kết 1:N từ bệnh nhân đến dịch vụ y tế và hồ sơ bệnh án

 Mỗi bệnh nhân có thể có 1 hoặc nhiều lịch sử khám Một bác sĩ có thể có 1 hoặc nhiều lịch sử khám.

 Mối liên kết 1:N từ bệnh nhân đến lịch sử khám

 Mối liên kết 1:N từ bác sĩ đến lịch sử khám

Mỗi bệnh nhân có thể trải qua nhiều lần khám với các bác sĩ khác nhau, trong đó mỗi lần khám được thực hiện bởi một bác sĩ và ghi lại thông tin chi tiết về tình trạng sức khỏe vào hồ sơ bệnh án Lịch sử khám bệnh chỉ bao gồm một bệnh nhân, một bác sĩ và được lưu giữ trong một hồ sơ bệnh án duy nhất.

 Mối liên kết 1:1:N từ 1 bệnh nhân và 1 bác sĩ đến lịch sử khám

 Một hồ sơ bệnh án chứa 1 hoặc nhiều lịch sử khám

 Mối liên kết 1:N từ hồ sơ bệnh án đến lịch sử khám

 Người giám hộ có thể chịu trách nhiệm cho 1 hoặc nhiều bệnh nhân Nhưng 1 bệnh nhân chỉ có 1 người giám hộ.

 Liên kết 1:N từ người giám hộ đến bệnh nhân

 Mỗi lần khám sẽ cấp 1 đơn thuốc.

 Liên kết 1:1 từ lịch sử khám bệnh đến đơn thuốc

 Một bệnh nhân sử dụng 1 hoặc nhiều đơn thuốc, mỗi đơn thuốc cũng được cấp cho nhiều bệnh nhân

 Liên kết N:M từ bệnh nhân đến đơn thuốc

 Một đơn thuốc chứa nhiều loại thuốc, mỗi loại thuốc được sử dụng cho nhiều đơn thuốc khác nhau.

 Liên kết 1:M từ đơn thuốc đến loại thuốc

Lược đồ E-R

Lược đồ E-R là một loại biểu đồ cấu trúc được sử dụng trong thiết kế cơ sở dữ liệu Các thành phần cơ bản của lược đồ E-R:

Thực thể là một đối tượng cụ thể trong thế giới thực, trong khi một tập thực thể là tập hợp các thực thể tương đồng.

 Thuộc tính: Mỗi tập thực thể có một tập các tính chất đặc trưng, mỗi tính chất đặc trưng này gọi là thuộc tính của tập thực thể.

 Mối quan hệ giữa các tập thực thể: các đường liên kết giữa hai hay nhiều tập thực thể

Mỗi tập thực thể cần có ít nhất một thuộc tính khóa, và một khóa có thể bao gồm một hoặc nhiều thuộc tính Trong một tập thực thể, có thể tồn tại nhiều khóa, nhưng chúng ta sẽ lựa chọn một khóa chính để đại diện cho tập thực thể đó.

Hình 3.1: Lược đồ E-R mô tả hệ thống quản lý hồ sơ bệnh án điện tử

Thiết kế logic và chuẩn hóa

Ánh xạ từ lược đồ E-R sang tập các lược đồ quan hệ

1.1 Lược đồ quan hệ Quản lý hồ sơ bệnh án điện tử a Lược đồ quan hệ:

Lược đồ quan hệ là một mô hình toán học dùng để mô tả cấu trúc của một cơ sở dữ liệu quan hệ Nó bao gồm:

 Tên quan hệ: Tên của bảng dữ liệu.

 Các thuộc tính: Các trường thông tin trong bảng.

 Khóa chính: Một hoặc nhiều thuộc tính xác định duy nhất một hàng trong bảng.

 Khóa ngoại: Một hoặc nhiều thuộc tính trong bảng này liên kết với khóa chính của bảng khác, thể hiện mối quan hệ giữa các bảng.

Mối quan hệ giữa các bảng trong cơ sở dữ liệu được xác định thông qua khóa chính và khóa ngoại, cho phép các bảng liên kết với nhau một cách hiệu quả Các mối liên kết này đóng vai trò quan trọng trong việc tổ chức và quản lý dữ liệu, đảm bảo tính toàn vẹn và khả năng truy xuất thông tin nhanh chóng.

Hình 4.1: Lược đồ quan hệ mô tả hệ thống quản lý hồ sơ bệnh án điện tử b Các thực thể chính được thể hiện trong lược đồ:

 Người: Đại diện cho thông tin cơ bản của một người, bao gồm cả bệnh nhân, người giám hộ và bác sĩ.

 Bệnh nhân: Thể hiện thông tin chi tiết của bệnh nhân, bao gồm tiền sử bệnh án.

 Khám: Ghi lại thông tin về mỗi lần khám bệnh của bệnh nhân.

 Bác sĩ: Lưu trữ thông tin về các bác sĩ trong cơ sở y tế.

 Dịch vụ y tế: Liệt kê các dịch vụ mà cơ sở y tế cung cấp.

 Đơn thuốc: Ghi lại thông tin về các đơn thuốc được kê cho bệnh nhân.

 Loại thuốc: Lưu trữ thông tin về các loại thuốc.

 Hồ sơ bệnh án: Tổng hợp toàn bộ thông tin về quá trình điều trị của một bệnh nhân.

 Lịch sử khám: Ghi lại lịch sử khám bệnh của bệnh nhân.

 Theo dõi: Ghi lại quá trình theo dõi bệnh nhân sau khi điều trị. c Các mối quan hệ giữa các thực thể:

 Một người có thể là một bệnh nhân và cũng có thể là người giám hộ cho một bệnh nhân khác.

 Một bệnh nhân có thể thực hiện nhiều lần khám.

 Mỗi lần khám được thực hiện bởi một bác sĩ và liên quan đến một hoặc nhiều dịch vụ y tế.

 Một bác sĩ có thể khám cho nhiều bệnh nhân và kê nhiều đơn thuốc.

 Một đơn thuốc có thể bao gồm nhiều loại thuốc.

 Mỗi lần khám sẽ được ghi lại vào lịch sử khám của bệnh nhân và được lưu trữ trong hồ sơ bệnh án.

 Quá trình theo dõi bệnh nhân được liên kết với bác sĩ và hồ sơ bệnh án. d Các thuộc tính của các thực thể:

 Người: CCCD, họ tên, ngày sinh, giới tính, số điện thoại, địa chỉ, email.

 Người giám hộ: NGH-CCCD

 Bệnh nhân: BN-CCCD, Mã bệnh nhân, NGH-CCCD, tiền sử bệnh án.

 Khám: Mã bệnh nhân, mã bác sĩ

 Bác sĩ: BS-CCCD, mã bác sĩ , chuyên khoa

 Dịch vụ y tế: Mã dịch vụ, mã bệnh nhân, chi phí, tên dịch vụ

 Đơn thuốc: Mã đơn, mã bác sĩ,liều dùng, ngày kê đơn.

 Loại thuốc: Mã thuốc, mã đơn, tên loại, nhà sản xuất

 Hồ sơ bệnh án: Mã hồ sơ, mã bệnh nhân, ngày nhập viện , ngày xuất viện , chuẩn đoán , phương án điều trị , kết quả

 Lịch sử khám: Mã hồ sơ, mã bệnh nhân, mã bác sĩ, mã đơn, ngày giờ khám

 Theo dõi: mã bác sĩ, mã hồ sơ

1.2 Mục đích của lược đồ

Lược đồ này cung cấp cái nhìn rõ ràng về cấu trúc của cơ sở dữ liệu quản lý hồ sơ bệnh án điện tử, từ đó giúp chúng ta thiết kế các bảng và viết các câu lệnh SQL để truy xuất, cập nhật và quản lý dữ liệu một cách hiệu quả.

Xác định phụ thuộc hàm

Phụ thuộc hàm là mối quan hệ giữa các thuộc tính trong một quan hệ, mô tả cách mà giá trị của một tập hợp thuộc tính xác định duy nhất giá trị của một tập hợp thuộc tính khác.

1.3 Phân tích từng lược đồ quan hệ và các phụ thuộc hàm a Người

 CCCD(Khoá chính) → Họ tên, Ngày sinh, Giới tính, SDT, Địa chỉ, Email

 SDT→ Họ tên, Ngày sinh, Giới tính, CCCD, Địa chỉ, Email

 Email → Họ tên, Ngày sinh, Giới tính, SDT, Địa chỉ, CCCD b Bệnh nhân

 BN-CCCD → Mã bệnh nhân, Tiền sử bệnh án, NGH-CCCD

 Mã bệnh nhân(Khóa chính) → BN-CCCD, Tiền sử bệnh án, NGH-CCCD c Người giám hộ

 Người giám hộ chỉ có thông tin là CCCD và cũng đóng vai trò là Người Nên phụ thuộc hàm cũng tương tự như Người d Bác sĩ

 Mã bác sĩ (Khoá chính)→ BS-CCCD, Chuyên khoa

 BS-CCCD → Mã bác sĩ, Chuyên khoa e Hồ sơ bệnh án

 Mã hồ sơ (Khóa chính) → Mã bệnh nhân, Ngày nhập viện, Ngày xuất hiện, Chẩn đoán, Phương án điều trị, Kết quả

 Mã bệnh nhân → Mã hồ sơ, Ngày nhập viện, Ngày xuất viện, Chẩn đoán, Phương án điều trị, Kết quả f Lịch sử khám bệnh

 Mã hồ sơ → Mã bệnh nhân, Mã bác sĩ, Ngày giờ khám, Mã đơn

 Mã bệnh nhân → Mã hồ sơ, Ngày giờ khám, Mã đơn, Mã bác sĩ

 Mã đơn → Mã hồ sơ, Ngày giờ khám, Mã bác sĩ, Mã bệnh nhân

 Mã bác sĩ, ngày giờ khám → Mã hồ sơ, Mã đơn, Mã bệnh nhân g Dịch vụ y tế

 Mã dịch vụ (Khóa chính) → Tên dịch vụ, chi phí h Loại thuốc

 Mã thuốc(Khóa chính) → Tên, Nhà sản xuất, Hạn sử dụng

 Tên, nhà sản xuất → Mã thuốc, Hạn sử dụng i Đơn thuốc

 Mã đơn(Mã đơn) → Mã bác sĩ, Ngày kê đơn, Liều dùng

 Ngày kê đơn, Mã bác sĩ → Mã đơn, Liều dùng

1.4 Ghi chú về cách các thuộc tính phụ thuộc vào khóa chính

Trong lược đồ quan hệ, khóa chính (như CCCD, Mã bệnh nhân,

Mã bác sĩ, Mã dịch vụ, Mã hồ sơ, Mã đơn, Mã thuốc) đều xác định duy nhất các thuộc tính còn lại.

Xác định khóa và chuẩn hóa lược đồ

Khóa: Khóa là một tập hợp các thuộc tính xác định duy nhất một hàng trong một quan hệ.

 Khóa chính: Khóa được chọn để xác định duy nhất một hàng.

 Khóa ngoại: Khóa tham chiếu đến khóa chính của một quan hệ khác, dùng để tạo mối liên kết giữa các bảng.

 Siêu khóa: Siêu khóa là một tập hợp của một hoặc nhiều khóa là duy nhất nhằm xác định các hàng trong bảng

Chuẩn hóa là quá trình phân tách một quan hệ lớn thành các quan hệ nhỏ hơn dựa vào các phụ thuộc hàm Các dạng chuẩn hóa phổ biến bao gồm 1NF, 2NF, 3NF và BCNF, giúp tối ưu hóa cấu trúc dữ liệu và giảm thiểu sự trùng lặp thông tin.

Dạng chuẩn 1NF (First Normal Form) yêu cầu rằng một bảng (quan hệ) chỉ được coi là đạt chuẩn khi tất cả các miền giá trị của các cột trong bảng chỉ chứa các giá trị nguyên tử Điều này có nghĩa là không được phép có các giá trị phức tạp hay tập hợp trong bất kỳ cột nào của bảng.

 Dạng chuẩn 2NF: Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó:

 Các thuộc tính không khoá phải phụ thuộc hàm đầy đủ vào khoá chính

 Dạng chuẩn 3NF: Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó:

 Các thuộc tính không khoá phải phụ thuộc trực tiếp vào khoá chính

 Dạng chuẩn BCNF: Một quan hệ ở dạng chuẩn BCNF nếu quan hệ đó:

 Không có thuộc tính khoá mà phụ thuộc hàm vào thuộc tính không khoá.

1.5 Xác định khóa chính và khóa ngoại cho từng lược đồ quan hệ a Người

 Khóa chính: CCCD b Bệnh nhân

 Khóa chính: Mã bệnh nhân

 Khóa ngoại: BN-CCCD, NGH-CCCD c Người giám hộ

 Khoá chính: NGH-CCCD d Bác sĩ

 Khóa chính: Mã bác sĩ

 Khóa ngoại: BS-CCCD e Hồ sơ bệnh án

 Khóa chính: Mã hồ sơ

 Khóa ngoại: Mã bệnh nhân f Lịch sử khám bệnh

 Khóa ngoại: Mã hồ sơ, Mã bác sĩ, Mã bệnh nhân, Mã đơn g Dịch vụ y tế

 Khóa chính: Mã dịch vụ

 Khóa ngoại: Mã bệnh nhân h Đơn thuốc

 Khóa ngoại: Mã bác sĩ i Loại thuốc

1.6 Thực hiện chuẩn hóa từng lược đồ về dạng chuẩn 3NF a Người

 R1 = (CCCD, Họ tên, Ngày sinh, Giới tính, SDT, Địa chỉ, Email)

 F1 = {CCCD → Họ tên, Ngày sinh, Giới tính, SDT, Địa chỉ, Email}

Vì CCCD là 1 siêu khóa

=> Đã ở dạng chuẩn 3NF b Bệnh nhân

 R2 = (BN-CCCD, Mã bệnh nhân, Tiền sử bệnh án, NGH- CCCD)

 F2 = {Mã bệnh nhân → BN-CCCD, Tiền sử bệnh án, NGH- CCCD;

BN-CCCD → Mã bệnh nhân, Tiền sử bệnh án, NGH-CCCD}

 Khóa K2 = {Mã bệnh nhân, BN-CCCD}

Vì Mã bệnh nhân và BN-CCCD đều là siêu khóa

=> Đã ở dạng chuẩn 3NF c Người giám hộ

 Người giám hộ cũng đóng vai trò là Người Nên phụ thuộc hàm cũng tương tự như Người d Bác sĩ

 R3 = (Mã bác sĩ, BS-CCCD, Chuyên khoa)

 F3 = { Mã bác sĩ → BS-CCCD, Chuyên khoa;

BS-CCCD → Mã bác sĩ, Chuyên khoa}

 Khóa K3 = {Mã bác sĩ, BS-CCCD}

Vì Mã bác sĩ và BS-CCCD là siêu khóa

=> Đã ở dạng chuẩn 3NF e Hồ sơ bệnh án

 R4 = (Mã hồ sơ, Mã bệnh nhân, Mã bác sĩ, Ngày nhập viện, Ngày xuất viện, Chẩn đoán, Phương án điều trị, Kết quả)

 F4 = {Mã hồ sơ → Mã bệnh nhân, Ngày nhập viện, Ngày xuất viện,

Chẩn đoán, Phương án điều trị, Kết quả;

Mã bệnh nhân → Mã Hồ sơ, Ngày nhập viện, Ngày xuất viện, Chẩn đoán, Phương án điều trị, Kết quả}

 Khóa K4 = {Mã hồ sơ, Mã bệnh nhân}

Vì Mã hồ sơ và Mã bệnh nhân là siêu khóa

=> Đã ở dạng chuẩn 3NF f Lịch sử khám bệnh

 R5 = (Mã hồ sơ, Mã bệnh nhân, Mã bác sĩ, Ngày giờ khám,

 F5 = {Mã đơn → Mã hồ sơ, Ngày giờ khám, Mã bác sĩ, Mã bệnh nhân}

Vì Mã đơn là siêu khóa

=> R5 ở dạng chuẩn 3NF g Dịch vụ y tế

 R6 = (Mã dịch vụ, Tên dịch vụ, Chi phí)

 F6 = {Mã dịch vụ → Tên dịch vụ, Chi phí}

Mã dịch vụ là siêu khóa

=> Đã ở dạng chuẩn 3NF h Đơn thuốc

 R7 = (Mã đơn, Mã bác sĩ, Ngày kê đơn, Liều dùng)

 F7 = {Mã đơn → Mã bác sĩ, Ngày kê đơn, Liều dùng}

Ta thấy Mã đơn là siêu khóa

=> Đã ở dạng chuẩn 3NF i Loại thuốc

 R8 = (Mã thuốc, Tên, Nhà sản xuất, Hạn sử dụng)

 F8 = {Mã thuốc → Tên, Nhà sản xuất, Hạn sử dụng}

Ta thấy Mã thuốc là siêu khóa

Kết Luận

Hiểu biết về lược đồ quan hệ, phụ thuộc hàm, khóa và kết quả chuẩn hóa là rất quan trọng trong thiết kế cơ sở dữ liệu quan hệ Quá trình chuẩn hóa không chỉ giúp đảm bảo tính nhất quán mà còn giảm thiểu trùng lặp dữ liệu và nâng cao hiệu suất truy vấn.

Cài đặt hệ thống

Tạo bảng trên SQL Server

SDT CHAR(10) UNIQUE NOT NULL,

Email VARCHAR(100) UNIQUE NOT NULL

FOREIGN KEY (CCCD) REFERENCES Nguoi(CCCD) );

FOREIGN KEY (CCCD) REFERENCES Nguoi(CCCD),

FOREIGN KEY (NGH_CCCD) REFERENCES

FOREIGN KEY (CCCD) REFERENCES Nguoi(CCCD) );

FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi) );

FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi),

FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi) );

FOREIGN KEY (MaDon) REFERENCES DonThuoc(MaDon) );

FOREIGN KEY (MaBacSi) REFERENCES BacSi(MaBacSi), FOREIGN KEY (MaDon) REFERENCES DonThuoc(MaDon));

Dữ liệu cho từng bảng

Trong hệ thống quản lý y tế, các bảng dữ liệu quan trọng bao gồm: Bảng Người, Bảng Người giám hộ, Bảng Bệnh nhân, Bảng Bác sĩ, Bảng Khám, Bảng Hồ sơ bệnh án, Bảng Dịch vụ y tế, Bảng Theo dõi, Bảng Đơn thuốc, Bảng Loại thuốc và Bảng Lịch sử khám Những bảng này giúp tổ chức và quản lý thông tin y tế một cách hiệu quả, đảm bảo sự liên kết giữa các bên liên quan trong quá trình chăm sóc sức khỏe.

Các câu truy vấn

Truy vấn 1 Tìm kiếm tất cả các đơn thuốc được kê trong tháng

SELECT * FROM DonThuoc WHERE MONTH(NgayKeDon) = 10;

Truy vấn 2 Đếm số lượng đơn thuốc trong tháng 10

Truy vấn 3 Tìm kiếm đơn thuốc từ ngày 01/10/2023 đến

Truy vấn 4 Đếm tổng số bệnh nhân

SELECT COUNT(*) AS TongSoBenhNhan FROM BenhNhan;

Truy vấn 5 Tìm top 5 bệnh nhân khám nhiều nhất trong năm

SELECT TOP 5 bn.MaBenhNhan, COUNT(*) AS SoLanKham FROM LichSuKham lk

INNER JOIN BenhNhan bn ON lk.MaBenhNhan bn.MaBenhNhan

Truy vấn 6 Tìm 5 bệnh nhân nhập viện trong khoảng thời gian từ tháng 10/2024 đến tháng 12 có tiền viện phí trung bình cao nhất

SELECT TOP 5 bn.MaBenhNhan, AVG(dv.ChiPhi) as chiphitb

FROM DichVuYTe dv, BenhNhan bn, LichSuKham ls, DonThuoc dt

WHERE YEAR(dt.NgayKeDon) = 2024 and

MONTH(dt.NgayKeDon) between 10 and 12

Truy vấn 7 Tìm 3 bệnh nhân trả tiền nhiều nhất

Truy vấn 8 Sửa lại nhà sản xuất của 1 mã thuốc

Truy vấn 9 Liệt kê các dịch vụ xét nghiệm

WHERE TenDichVu LIKE '%Xet nghiem%';

Truy vấn 10 Thêm cột cách dùng vào bảng loại thuốc

Truy vấn 11 Xóa cột cách dùng

Truy vấn 12 Hiển thị loại thuốc được kê nhiều nhất

SELECT TOP 1 lt.MaThuoc, lt.TenLoai,

COUNT(DISTINCT lt.MaDon) AS 'Số đơn đã kê'

FROM LoaiThuoc lt JOIN DonThuoc dt ON lt.MaDon = dt.MaDon GROUP BY lt.MaThuoc, lt.TenLoai

ORDER BY COUNT (DISTINCT lt.MaDon) DESC

Truy vấn 13 Tính tổng chi phí của các dịch vụ xét nghiệm

SELECT SUM(ChiPhi) AS tongchiphi

WHERE TenDichVu LIKE '%Xet nghiem%';

Truy vấn 14 Liệt kê các bệnh nhân đã nhập viện trong tháng 7 năm 2024

SELECT bn.MaBenhNhan, n.HoTen AS TenBenhNhan, hs.NgayNhapVien AS NgayNhapVien

JOIN BenhNhan AS bn ON hs.MaBenhNhan = bn.MaBenhNhan JOIN Nguoi AS n ON bn.CCCD = n.CCCD

Truy vấn 15 Lấy thông tin tất cả bệnh nhân cùng với thông tin người giám hộ

SELECT bn.MaBenhNhan, bn.CCCD, n.HoTen AS TenBenhNhan, ngh.HoTen AS TenNguoiGiamHo

JOIN Nguoi n ON bn.CCCD = n.CCCD

LEFT JOIN Nguoi ngh ON bn.NGH_CCCD = ngh.CCCD;

Truy vấn 16 Liệt kê tất cả các bệnh nhân đã được bác sĩ thăm khám, bao gồm tên bác sĩ và chuyên khoa của họ

SELECT bn.MaBenhNhan, bn.CCCD, n.HoTen AS TenBenhNhan, k.MaBacSi, nbs.HoTen AS TenBacSi, bs.ChuyenKhoa

JOIN BenhNhan bn ON k.MaBenhNhan = bn.MaBenhNhan

JOIN Nguoi n ON bn.CCCD = n.CCCD

JOIN BacSi bs ON k.MaBacSi = bs.MaBacSi

JOIN Nguoi nbs ON bs.CCCD = nbs.CCCD

Truy vấn 17 Liệt kê các bệnh nhân chưa có người giám hộ

SELECT bn.MaBenhNhan, bn.CCCD, n.HoTen AS TenBenhNhan FROM BenhNhan bn

JOIN Nguoi n ON bn.CCCD = n.CCCD

WHERE bn.NGH_CCCD IS NULL

Truy vấn 18 Liệt kê bênh nhân có tiền sử bệnh án là tiểu đường

WHERE CONVERT(VARCHAR, TienSuBenhAn) = 'Tieu duong'

Truy vấn 19 Liệt kê bệnh nhân chưa có ngày xuất viện

SELECT bn.MaBenhNhan, bn.CCCD, n.HoTen AS TenBenhNhan, hs.NgayNhapVien

JOIN Nguoi n ON bn.CCCD = n.CCCD

JOIN HoSoBenhAn hs ON bn.MaBenhNhan = hs.MaBenhNhan WHERE hs.NgayXuatVien IS NULL

Truy vấn 20 Liệt kê số lần khám của các bác sĩ

SELECT bs.MaBacSi, bs.CCCD, n.HoTen, bs.ChuyenKhoa,

COALESCE(COUNT(lsk.MaBacSi), 0) AS SoLanKham

JOIN Nguoi n ON bs.CCCD = n.CCCD

LEFT JOIN LichSuKham lsk ON bs.MaBacSi = lsk.MaBacSi

GROUP BY bs.MaBacSi, bs.CCCD, n.HoTen, bs.ChuyenKhoa;

Truy vấn 21 Tìm bệnh nhân có chi phí dịch vụ y tế cao nhất

SELECT TOP 1 MaBenhNhan, SUM(ChiPhi) AS TongChiPhi FROM DichVuYTe

Truy vấn 22 Liệt kể bệnh nhân có kết quả khỏi hoàn toàn

SELECT bn.MaBenhNhan, bn.CCCD, n.HoTen, hs.KetQuaFrom BenhNhan bn

JOIN Nguoi n ON bn.CCCD = n.CCCD

JOIN HoSoBenhAn hs ON hs.MaBenhNhan = bn.MaBenhNhan WHERE CONVERT(VARCHAR, hs.KetQua) = 'Khoi hoan toan'

Truy vấn 23 Liệt kê các bệnh nhân đang xuất viện trong tháng

6 sắp xếp theo ngày nhập viện

SELECT hs.MaHoSo, hs.MaBenhNhan, ng.HoTen, ng.NgaySinh, hs.NgayNhapVien, hs.NgayXuatVien, hs.ChanDoan, hs.PhuongAnDieuTri, hs.KetQua

FROM dbo.HoSoBenhAn AS hs

JOIN dbo.BenhNhan AS bn ON hs.MaBenhNhan bn.MaBenhNhan

JOIN Nguoi AS ng ON ng.CCCD = bn.CCCD

ORDER BY hs.NgayNhapVien ASC;

Truy vấn 24 In ra bệnh nhân đã khỏi chuẩn bị xuất viện và cập nhật ngày xuất viện cho những bệnh nhân đó

MaHoSo,MaBenhNhan,NgayNhapVien,ChanDoan,KetQua

WHERE KetQua LIKE 'Khoi%' AND NgayXuatVien IS NULL

WHERE KetQua LIKE 'Khoi%' AND NgayXuatVien IS NULL

MaHoSo,MaBenhNhan,NgayNhapVien,NgayXuatVien,ChanDoan, KetQua

Truy vấn 25 Truy vấn tất cả lịch khám diễn ra từ tháng 5 đến hết tháng 7 trong năm 2024 và in ra thông tin của buổi khám

FORMAT(ls.NgayGioKham, 'yyyy-MM-dd hh:mm') AS

NgayGioKham, bs.MaBacSi, ng1.HoTen AS HoTenBacSi, bn.MaBenhNhan, ng2.HoTen AS HoTenBenhNhan

JOIN BacSi bs ON ls.MaBacSi=bs.MaBacSi

JOIN BenhNhan bn ON ls.MaBenhNhan = bn.MaBenhNhan

LEFT JOIN Nguoi ng2 ON ng2.CCCD = bn.CCCD

LEFT JOIN Nguoi ng1 ON ng1.CCCD = bs.CCCD

WHERE ls.NgayGioKham BETWEEN '2024-05-01' AND '2024-07-31'

Truy vấn 26 Truy vấn thông tin từng đơn thuốc

SELECT dt.MaDon, dt.MaBacSi, dt.LieuDung,

STRING_AGG(lt.TenLoai,', ') AS DanhSachThuoc FROM DonThuoc dt

JOIN LoaiThuoc lt ON dt.MaDon = lt.MaDon

GROUP BY dt.MaDon, dt.MaBacSi, dt.LieuDung

Truy vấn 27 Truy vấn thông tin và số bệnh nhân trong khoa tiêu hóa

SELECT ls.MaHoSo, ls.MaBenhNhan, ng.HoTen, ng.NgaySinh, ng.SDT, bn.TienSuBenhAn, hs.NgayNhapVien, hs.NgayXuatVien, hs.ChanDoan, hs.PhuongAnDieuTri, hs.KetQua

LEFT JOIN BenhNhan bn ON ls.MaBenhNhan=bn.MaBenhNhan LEFT JOIN Nguoi ng ON bn.CCCD=ng.CCCD

LEFT JOIN BacSi bs ON bs.MaBacSi = ls.MaBacSi

LEFT JOIN HoSoBenhAn hs ON ls.MaHoSo = hs.MaHoSo

WHERE bs.ChuyenKhoa LIKE 'Tieu Hoa';

Truy vấn 28 Tra cứu các bệnh nhân có địa chỉ ở hà nội

SELECT bn.MaBenhNhan, ng.HoTen AS HoTenBenhNhan, ng.GioiTinh, ng.NgaySinh, ng.SDT, ng.DiaChi, ng.Email

LEFT JOIN Nguoi ng ON bn.CCCD=ng.CCCD

WHERE ng.DiaChi LIKE '%Ha Noi%';

Truy vấn 29 Hiển thị thông tin bác sĩ theo chuyên khoa hô hấp

SELECT bs.MaBacSi, ng.HoTen,

Ngày đăng: 18/02/2025, 15:50

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w