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

BÁO cáo cơ sở dữ LIỆU QUẢN lý dữ LIỆU BỆNH VIỆN

81 122 0

Đ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 đề Báo Cáo Cơ Sở Dữ Liệu Quản Lý Dữ Liệu Bệnh Viện
Tác giả Đỗ Văn Quyền, Lê Duy Dũng, Mạnh Tuấn Đạt, Trần Thị Vân Anh, Nguyễn Viết Thông
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Định dạng
Số trang 81
Dung lượng 3,54 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU CHƯƠNG TRÌNH

    • 1.1. Giới thiệu

      • 1.1.1. Mục đích đề tài

      • 1.1.2. Yêu cầu

  • Chương trình phải đảm bảo được các chức năng sau:

  • Quản lý nhân viên gắn với chức vụ ở phòng khám

  • Quản lý các bệnh nhi đang thăm khám, điều trị tại phòng khám

  • Quản lý lịch khám, thiết bị ở phòng khám

  • Quản lý viện phí, chi trả lương của phòng khám

    • 1.1.3. Phân công công việc nhóm

    • 1.2. Mô tả hệ thống

      • 1.2.1. Quy trình nghiệp vụ

      • 1.2.2. Quy tắc nghiệp vụ

  • Nhân viên lễ tân:

  • Đón tiếp tất cả bệnh nhân và khách viếng thăm, trực tiếp hoặc qua điện thoại, ân cần và chuyên nghiệp.

  • Cung cấp chính xác cho bệnh nhân về giờ làm việc, dịch vụ, địa điểm, chi phí, thông tin bác sĩ và gửi email tới bệnh nhân nếu có yêu cầu…

  • Nhập thông tin của bệnh nhân vào hệ thống. Chuẩn bị hồ sơ bệnh nhân với các biểu mẫu thích hợp. Thu phí và chuẩn bị biên lai.

  • Lắng nghe và phân tích các phản hồi của bệnh nhân, báo cáo Trưởng bộ phận và các phòng ban có liên quan để cải tiến quy trình làm việc nhằm mang đến sự hài lòng tuyệt đối cho bệnh nhân.

  • Bảo vệ bí mật thông tin cá nhân, đảm bảo thông tin y tế được bảo mật ở tất cả các lần bệnh nhân sử dụng dịch vụ.

  • Điều phối tất cả các cuộc điện thoại cho Phòng khám; xử lý hệ thống lịch hẹn bệnh nhân, chủ động nhắc nhở bệnh nhân nếu có yêu cầu.

  • Hợp tác và liên lạc với tất cả các phòng ban.

  • Quản lý khu vực tiếp nhận đảm bảo ngăn nắp và thẩm mỹ.

  • Lưu trữ hồ sơ đầy đủ, chính xác, khoa học.

  • Thực hiện các nhiệm vụ khác theo sự phân công của Trưởng bộ phận.

  • Nhân viên thủ kho

  • Có trách nhiệm thực hiện tốt bảo quản thuốc”, đảm bảo an toàn của kho.

  • Kiểm tra, giám sát chặt chẽ việc xuất, nhập thuốc và báo cáo thường xuyên hoặc đột xuất cho Trưởng khoa về công tác kho và cấp phát.

  • Thực hiện một số nhiệm vụ khác khi được phân công.

  • Nhân viên kỹ thuật

  • Căn cứ kế hoạch chung của Phòng khám lập dự trù, kế hoạch mua sắm, thay thế, sửa chữa, thanh lý tài sản, thiết bị y tế trong Phòng khám, trình quản lý duyệt và tổ chức thực hiện việc cung ứng đầy đủ thiết bị y tế, vật tư tiêu hao theo kế hoạch được duyệt.

  • Tổ chức duy tu, bảo dưỡng thiết bị y tế kịp thời

  • Kiểm tra công tác an toàn và vệ sinh lao động; đặc biệt chú ý các loại thiết bị y tế trực tiếp điều trị người bệnh.

  • Lập hồ sơ, lý lịch cho tất cả các loại máy, xây dựng quy định vận hành, bảo quản và kỹ thuật an toàn sử dụng máy.

  • Định kì đánh giá, báo cáo tình hình quản lý và sử dụng vật tư - thiết bị y tế trong Phòng khám, trình quản lý

  • Nhân viên kế toán

  • Căn cú vào chế độ, chính sách hiện hành và kế hoạch công tác của Phòng khám, lập dự toán ngân sách, kế hoạch thu chi của bệnh viện và tổ chức thực hiện khi kế hoạch được phê duyệt.

  • Theo định hướng hạch toán kinh tế trong công tác khám bệnh, chữa bệnh, tổ chức và quản lý chặt chẽ việc thu viện phí theo quy định

  • Tổ chức công tác kế toán trong Phòng khám. Thực hiện các nghiệp vụ kế toán lao động tiền lương, chế độ chính sách, vật tư tài sản, hành chính sự nghiệp chính xác, kịp thời. Tổ chức hướng dẫn, kiểm tra, giám sát công tác kế toán, chế độ thu chi của Phòng khám.

  • Định kỳ thực hiện báo cáo quyết toán, tổng kết tài sản, kiểm kê tài sản.

  • Tổ chức bảo quản lưu trữ các chứng từ, sổ sách kế toán đúng theo quy định

  • Bác sĩ chuyên khoa

  • Tổ chức tuyên truyền giáo dục sức khoẻ cho mọi người đến khám bệnh tại khoa. Không gây phiền hà cho bệnh nhân

  • Theo dõi đôn đốc điều hoà công việc để người bệnh không phải chờ đợi lâu. Nghiêm chỉnh thực hiện Quy chế bệnh viện, đặc biệt về quy định y đức theo lời 55 dạy của Bác Hồ “Lương y phải như Từ Mẫu”. Tiếp nhận người bệnh và thực hiện chẩn đoán bệnh, kê đơn, xử lí cấp cứu với tinh thần trách nhiệm cao, lập hồ sơ điều trị ngoại trú, nội trú hoặc giới thiệu người bệnh lên tuyến trên điều trị theo quy định

  • Kê đơn cho người bệnh phải thực hiện đúng quy chế chẩn đoán bệnh, làm hồ sơ bệnh án và kê đơn điều trị.

  • Theo dõi sát sao diễn biến bệnh lí của người bệnh nằm lưu tại khoa để xử lí kịp thời.

  • Y tá

  • Chăm sóc người bệnh toàn diện theo quy định.

  • Thực hiện đúng các kỹ thuật bệnh viện và Quy chế Bệnh viện

  • Lập kế hoạch mua sắm dụng cụ, vật tư cho công tác chăm sóc và phục vụ người bệnh; kiểm tra việc sử dụng và bảo quản theo quy định.

  • Kiểm tra công tác vệ sinh, chống nhiễm khuẩn tại các buồng bệnh và các khoa.

  • Định kì sơ kết, tổng kết công tác chăm sóc người bệnh toàn diện, báo cáo người quản lý.

  • Quản lý

  • Trực tiếp quản lý việc sử dụng ngân sách của Phòng khám có hiệu quả, kiểm soát việc thu, chi, thường xuyên kiểm tra công tác kế toán để chống thất thu, tham ô, lãng phí.

  • Căn cứ kế hoạch của ngành và nhiệm vụ của Phòng khám, xây dựng kế hoạch dài hạn về phát triển Phòng khám

  • Hỗ trợ kỹ thuật chuyên môn cho tuyến dưới.

  • Thực hiện tốt các quy định của pháp luật về lao động và công tác bảo hộ lao động.

  • Mỏ rộng hợp tác trong và ngoài nước nhằm phát triển mọi nguồn lực của Phòng khám.

    • 1.3. Đặc tả chức năng cần xây dựng

  • Lưu được lịch sử khám bệnh và thông tin khách hàng

  • Lưu lịch hẹn khám của bệnh nhân

  • Đưa ra chẩn đoán, lựa chọn xét nghiệm, kê đơn cho bệnh nhân

  • Tiến hành xét nghiệm cho bệnh nhân

  • Lấy dữ liệu từ CSDL bệnh nhân tự động điền vào hóa đơn

  • Tự động cập nhật hóa đơn sau khi thêm các dịch vụ và thuốc bệnh nhân sử dụng

  • Liên kết với pdf để in ra hóa đơn cho khách hàng

  • Admin có thể xem lại hoạt động của bệnh xá trong một khoảng thời gian xác định: xem lại các hóa đơn khám bệnh, các thông tin nhân viên, khách hàng, thuốc hiện có, tình trạng thiết bị y tế

  • Admin có thể Reset lại tài khoản cho Nhân viên

  • 2. CHƯƠNG 2: CÁC MÔ HÌNH QUAN HỆ

    • 2.1. Mô tả hệ thống dưới dạng mối quan hệ dữ liệu

    • 2.2. Xây dựng mô hình liên kết thực thể

    • 2.3. Chuyển đổi mô hình liên kết thực thể sang mô hình quan hệ

    • 2.4. Chuẩn hóa cơ sở dữ liệu

    • 2.5. Đặc tả các bảng

  • 3. CHƯƠNG 3: KHAI THÁC CƠ SỞ DỮ LIỆU

    • 3.1. Khai thác đại số quan hệ

    • 3.2. Khai thác bằng ngôn ngữ SQL

    • 3.3. Khai thác bằng ngôn ngữ T-SQL

  • CHƯƠNG 4: CÀI ĐẶT CHƯƠNG TRÌNH ỨNG DỤNG

    • 1. FORM đăng nhập

    • 2. FORM danh mục

  • 2.1 From Hiển Thị Dữ Liệu Nhân Viên

  • 2.2 Thao Tác Tìm Kiếm Nhân Viên

  • 2.3 Form Hiển Thị Dữ Liệu Thuốc

  • 2.4 Thao Tác Tìm Kiếm Thuốc

  • 2.5 Form Hiển Thị Danh Mục Xét Nghiệm

  • 2.6 Thao Tác Tìm Kiếm Xét Nghiệm

    • 3. FORM nghiệp vụ

  • 3.1 FORM nghiệp vụ tiếp nhận

  • 3.2 Thao Tác Thêm Mới Bệnh Nhân

  • 3.3 Dữ Liệu Bệnh Nhân Trong 1 ngày

  • 3.4 FORM nghiệp vụ khám chữa bệnh

  • Chọn Xét Nghiệm

  • Chọn Thuốc

  • In Đơn Thuốc

  • 3.3 FORM nghiệp vụ xét nghiệm

  • Kết Quả Xét Nghiệm

  • In Kết Quả Xét Nghiệm Ra File Excel

  • 3.4. FORM nghiệp vụ thanh toán

    • 4. FORM thống kê

  • Thông kê tổng doanh thu phòng khám

  • Thống Kê Doanh Thu Xét Nghiệm

  • Thống Kê Doanh Thu Bán Thuốc

  • Thống Kê Bệnh Nhân Theo Ngày

  • Thống Kê Bệnh Nhân Theo Kì

    • 5.FORM Hệ thống

  • Đổi Mật Khẩu

  • Sao Lưu Phục Hồi Dữ Liệu

    • 6. FORM trợ giúp

Nội dung

GIỚI THIỆU CHƯƠNG TRÌNH

Giới thiệu

Hiện nay, đời sống người dân ngày càng được cải thiện, dẫn đến sự quan tâm đến sức khỏe trẻ em ngày càng tăng Nhu cầu khám sức khỏe cho trẻ nhỏ ngày càng cao, thúc đẩy sự phát triển của các phòng khám nhi Đồng thời, sự phát triển của công nghệ thông tin cũng làm tăng nhu cầu quản lý các trung tâm khám chữa bệnh trên hệ thống máy tính.

Quản lý dữ liệu trung tâm qua hệ thống công nghệ thông tin mang lại sự thuận tiện cho bệnh nhân, nhân viên và quản lý trong việc theo dõi và giải quyết các vấn đề sức khỏe của trẻ em.

Chương trình phải đảm bảo được các chức năng sau:

- Quản lý nhân viên gắn với chức vụ ở phòng khám

- Quản lý các bệnh nhi đang thăm khám, điều trị tại phòng khám

- Quản lý lịch khám, thiết bị ở phòng khám

- Quản lý viện phí, chi trả lương của phòng khám

1.1.3 Phân công công việc nhóm

TÊN THÀNH VIÊN CÔNG VIỆC Đỗ Văn Quyền – CNTT1 Làm phần danh mục

Lê Duy Dũng - ANHTTT Làm phần Nghiệp vụ

Mạnh Tuấn Đạt – ANHTTT - Tạo form đăng nhập

- Đổi và reset mật khẩu Trần Thị Vân Anh – CNTT1 - Thống kê bao gồm:

- Sao lưu dữ liệu Nguyễn Viết Thông – CNTT2 - Thống kê thuốc

Mô tả hệ thống

 Quy trình xử lý tại phòng khám:

- Đăng ký thông tin bệnh nhân tại quầy lễ tân

- Bệnh nhân được chẩn đoán và tư vấn về vấn đề mắc phải bởi Bác sĩ Khám Chữa bệnh

- Bác sĩ khám bệnh đưa ra chẩn đoán và lựa chọn xét nghiệm

Bệnh nhân được khám và thực hiện các xét nghiệm bởi Bác sĩ xét nghiệm Kết quả xét nghiệm sẽ được chuyển cho Bác sĩ Khám bệnh, người sẽ đưa ra kết luận và kê đơn thuốc phù hợp cho bệnh nhân.

- Bệnh nhân thanh toán hóa đơn khám bệnh

 Tổng tiền cần thanh toán trong hóa đơn:

Số tiền cần phải thanh toán = Tổng giá các loại dịch vụ bệnh nhân sử dụng + Tổng giá các loại thuốc bệnh nhân mua

- Đón tiếp tất cả bệnh nhân và khách viếng thăm, trực tiếp hoặc qua điện thoại, ân cần và chuyên nghiệp.

Chúng tôi cam kết cung cấp thông tin chính xác cho bệnh nhân về giờ làm việc, dịch vụ, địa điểm, chi phí và thông tin bác sĩ Ngoài ra, chúng tôi cũng sẵn sàng gửi email cho bệnh nhân khi có yêu cầu.

- Nhập thông tin của bệnh nhân vào hệ thống Chuẩn bị hồ sơ bệnh nhân với các biểu mẫu thích hợp Thu phí và chuẩn bị biên lai.

Lắng nghe và phân tích phản hồi từ bệnh nhân là rất quan trọng, vì điều này giúp báo cáo cho Trưởng bộ phận và các phòng ban liên quan Qua đó, chúng ta có thể cải tiến quy trình làm việc, nhằm đảm bảo mang lại sự hài lòng tuyệt đối cho bệnh nhân.

- Bảo vệ bí mật thông tin cá nhân, đảm bảo thông tin y tế được bảo mật ở tất cả các lần bệnh nhân sử dụng dịch vụ.

- Điều phối tất cả các cuộc điện thoại cho Phòng khám; xử lý hệ thống lịch hẹn bệnh nhân, chủ động nhắc nhở bệnh nhân nếu có yêu cầu.

- Hợp tác và liên lạc với tất cả các phòng ban.

- Quản lý khu vực tiếp nhận đảm bảo ngăn nắp và thẩm mỹ.

- Lưu trữ hồ sơ đầy đủ, chính xác, khoa học.

- Thực hiện các nhiệm vụ khác theo sự phân công của Trưởng bộ phận.

- Có trách nhiệm thực hiện tốt bảo quản thuốc”, đảm bảo an toàn của kho.

- Kiểm tra, giám sát chặt chẽ việc xuất, nhập thuốc và báo cáo thường xuyên hoặc đột xuất cho Trưởng khoa về công tác kho và cấp phát.

- Thực hiện một số nhiệm vụ khác khi được phân công.

Dựa trên kế hoạch chung của Phòng khám, việc lập dự trù và kế hoạch mua sắm, thay thế, sửa chữa, thanh lý tài sản và thiết bị y tế sẽ được trình quản lý phê duyệt Sau khi được duyệt, Phòng khám sẽ tổ chức thực hiện cung ứng đầy đủ thiết bị y tế và vật tư tiêu hao theo kế hoạch đã đề ra.

- Tổ chức duy tu, bảo dưỡng thiết bị y tế kịp thời

- Kiểm tra công tác an toàn và vệ sinh lao động; đặc biệt chú ý các loại thiết bị y tế trực tiếp điều trị người bệnh.

- Lập hồ sơ, lý lịch cho tất cả các loại máy, xây dựng quy định vận hành, bảo

- Định kì đánh giá, báo cáo tình hình quản lý và sử dụng vật tư - thiết bị y tế trong Phòng khám, trình quản lý

Dựa vào chế độ, chính sách hiện hành và kế hoạch công tác của Phòng khám, cần lập dự toán ngân sách cũng như kế hoạch thu chi của bệnh viện, sau đó tổ chức thực hiện khi kế hoạch đã được phê duyệt.

- Theo định hướng hạch toán kinh tế trong công tác khám bệnh, chữa bệnh, tổ chức và quản lý chặt chẽ việc thu viện phí theo quy định

Tổ chức công tác kế toán tại Phòng khám bao gồm việc thực hiện chính xác và kịp thời các nghiệp vụ kế toán liên quan đến lao động, tiền lương, chế độ chính sách, vật tư tài sản và hành chính sự nghiệp Đồng thời, cần tổ chức hướng dẫn, kiểm tra và giám sát công tác kế toán cũng như chế độ thu chi của Phòng khám để đảm bảo tính minh bạch và hiệu quả trong quản lý tài chính.

- Định kỳ thực hiện báo cáo quyết toán, tổng kết tài sản, kiểm kê tài sản.

- Tổ chức bảo quản lưu trữ các chứng từ, sổ sách kế toán đúng theo quy định

- Tổ chức tuyên truyền giáo dục sức khoẻ cho mọi người đến khám bệnh tại khoa Không gây phiền hà cho bệnh nhân

Theo dõi và đôn đốc công việc để giảm thời gian chờ đợi của người bệnh là rất quan trọng Cần nghiêm túc thực hiện Quy chế bệnh viện, đặc biệt là quy định về y đức theo lời dạy của Bác Hồ: “Lương y phải như Từ Mẫu” Việc tiếp nhận người bệnh, chẩn đoán, kê đơn, và xử lý cấp cứu cần được thực hiện với tinh thần trách nhiệm cao Đồng thời, lập hồ sơ điều trị ngoại trú, nội trú hoặc giới thiệu người bệnh lên tuyến trên theo quy định là điều cần thiết.

- Kê đơn cho người bệnh phải thực hiện đúng quy chế chẩn đoán bệnh, làm hồ sơ bệnh án và kê đơn điều trị.

- Theo dõi sát sao diễn biến bệnh lí của người bệnh nằm lưu tại khoa để xử lí kịp thời.

- Chăm sóc người bệnh toàn diện theo quy định.

- Thực hiện đúng các kỹ thuật bệnh viện và Quy chế Bệnh viện

Lập kế hoạch mua sắm dụng cụ và vật tư cần thiết cho công tác chăm sóc và phục vụ người bệnh, đồng thời kiểm tra việc sử dụng và bảo quản các trang thiết bị này theo đúng quy định.

- Kiểm tra công tác vệ sinh, chống nhiễm khuẩn tại các buồng bệnh và các khoa.

- Định kì sơ kết, tổng kết công tác chăm sóc người bệnh toàn diện, báo cáo người quản lý.

Quản lý ngân sách của Phòng khám một cách hiệu quả, kiểm soát chặt chẽ việc thu chi, và thường xuyên kiểm tra công tác kế toán là những biện pháp quan trọng nhằm ngăn chặn thất thu, tham ô và lãng phí.

- Căn cứ kế hoạch của ngành và nhiệm vụ của Phòng khám, xây dựng kế hoạch dài hạn về phát triển Phòng khám

- Hỗ trợ kỹ thuật chuyên môn cho tuyến dưới.

- Thực hiện tốt các quy định của pháp luật về lao động và công tác bảo hộ lao động.

- Mỏ rộng hợp tác trong và ngoài nước nhằm phát triển mọi nguồn lực của Phòng khám.

Đặc tả chức năng cần xây dựng

1.3.1 Chức năng quản lý bệnh nhân

- Lưu được lịch sử khám bệnh và thông tin khách hàng

- Lưu lịch hẹn khám của bệnh nhân

1.3.2 Chức năng của Bác sĩ

- Đưa ra chẩn đoán, lựa chọn xét nghiệm, kê đơn cho bệnh nhân

- Tiến hành xét nghiệm cho bệnh nhân

1.3.3 Chức năng tạo và tự hoàn thành hóa đơn cho bệnh nhân

- Lấy dữ liệu từ CSDL bệnh nhân tự động điền vào hóa đơn

- Tự động cập nhật hóa đơn sau khi thêm các dịch vụ và thuốc bệnh nhân sử dụng

- Liên kết với pdf để in ra hóa đơn cho khách hàng

1.3.4 Chức năng dành cho Admin

Admin có thể theo dõi hoạt động của bệnh xá trong một khoảng thời gian nhất định, bao gồm việc xem lại các hóa đơn khám bệnh, thông tin về nhân viên và khách hàng, tình trạng thuốc hiện có, cũng như tình trạng thiết bị y tế.

- Admin có thể Reset lại tài khoản cho Nhân viên

CÁC MÔ HÌNH QUAN HỆ

Mô tả hệ thống dưới dạng mối quan hệ dữ liệu

 Đối tượng quản lý: Quản lý phòng khám nhi

Phòng khám được tổ chức thành nhiều bộ phận, mỗi bộ phận bao gồm nhiều nhân viên Mỗi nhân viên trong phòng khám đều có một mã nhân viên riêng biệt, giúp quản lý và theo dõi hiệu quả công việc.

Thông tin nhân viên bao gồm họ và tên, ngày sinh, giới tính, địa chỉ, số điện thoại, số CMND, trình độ, chức vụ, ngày vào làm, ảnh nhân viên, tên đăng nhập và mật khẩu đăng nhập.

Bệnh nhân khi đến Phòng khám hoặc đặt lịch khám trực tuyến cần khai báo thông tin cá nhân cho phòng khám Mỗi bệnh nhân sẽ có các thuộc tính bao gồm: Mã Bệnh nhân, Tên Bệnh nhân, Giới tính, Ngày sinh, Tên người thân, Số CMND của người thân, Địa chỉ và Số điện thoại liên hệ.

Nhân viên y tế chịu trách nhiệm tạo Phiếu khám cho Bệnh nhân, trong đó hồ sơ bệnh án bao gồm các thông tin quan trọng như Mã phiếu khám, Mã bệnh nhân, Mã nhân viên, Lí do khám bệnh, Chuẩn đoán và Ngày làm phiếu.

Sau khi bác sĩ tạo phiếu khám và thực hiện kiểm tra sơ bộ, họ sẽ xác định bệnh lý cho bệnh nhân Tiếp theo, bác sĩ sẽ giới thiệu danh sách các xét nghiệm cần thiết để chẩn đoán chính xác tình trạng bệnh Danh mục xét nghiệm này bao gồm các thông tin quan trọng như Mã xét nghiệm, Tên xét nghiệm và Đơn giá.

Khi bác sĩ tư vấn cho bệnh nhân về việc lựa chọn xét nghiệm, họ sẽ tiến hành tạo phiếu xét nghiệm tương ứng Mỗi bệnh nhân sẽ nhận được một phiếu xét nghiệm riêng biệt, phù hợp với dịch vụ mà họ đã sử dụng Phiếu xét nghiệm này bao gồm các thông tin quan trọng như Mã phiếu xét nghiệm, Mã phiếu khám và Kết quả xét nghiệm.

Mỗi bệnh nhân sẽ nhận được một phiếu xét nghiệm duy nhất, kèm theo một hoặc nhiều phiếu sử dụng xét nghiệm tương ứng với số lượng xét nghiệm mà họ đã thực hiện Mỗi phiếu sử dụng xét nghiệm bao gồm các thông tin quan trọng như Mã phiếu xét nghiệm, Mã xét nghiệm, nội dung xét nghiệm, và ảnh kết quả xét nghiệm sau khi bệnh nhân đã hoàn tất quá trình khám.

Sau khi bệnh nhân được điều trị, họ sẽ nhận được tư vấn về phương pháp chữa trị và đơn thuốc Mỗi bệnh nhân có thể được kê nhiều loại thuốc khác nhau, với mỗi loại thuốc đều có các thuộc tính riêng, bao gồm mã thuốc.

Thuốc, Mã loại thuốc, Tên Thuốc, Giá Thuốc, Dạng bào chế, Thành phần, Cách sử dụng, Ảnh Thuốc, Số lượng còn lại trong kho.

Sau khi được kê đơn, mỗi bệnh nhân sẽ nhận một hoặc nhiều phiếu đơn thuốc chi tiết Mỗi phiếu này bao gồm các thuộc tính như mã đơn, mã thuốc, số lượng bán và cách sử dụng Tất cả các phiếu chi tiết sẽ được tổng hợp trong phiếu đơn thuốc, với các thuộc tính như mã đơn và mã phiếu khám.

Hệ thống cho phép nhân viên truy cập vào các chức năng khác nhau dựa trên chức vụ của họ thông qua tài khoản đăng nhập cá nhân.

- Quản lý có thể thông qua hệ thống để biết thống kê doanh thu, tình trạng khám chữa bệnh của Phòng khám, đồng thời tính lương cho Nhân viên.

Chuyển đổi mô hình liên kết thực thể sang mô hình quan hệ

* Các quy tắc chuyển đổi:

- Quy tắc 1: Với kiểu liên kết 1:n

Chuyển khóa chính của LĐQH bên 1 (cha) sang làm khóa ngoại của LĐQH bên nhiều (con).

- Quy tắc 2: Với kiểu liên kết n:n

Chuyển đổi mối liên kết thành một Lớp Đối Tượng Quan Hệ (LĐQH) với các thuộc tính của mối liên kết, đồng thời bổ sung các thuộc tính khóa chính từ các LĐQH liên quan Khóa chính của LĐQH mới sẽ bao gồm các thuộc tính mới được thêm vào.

- Quy tắc 3: Với kiểu liên kết 1:1

+ Cách 1: Chuyển khóa chính của LĐQH này sang làm khóa ngoại của LĐQH kia hoặc ngược lại.

+ Cách 2: Nhập 2 kiểu thực thể và mối liên kết thành 1 LĐQH, chọn khóa chính cho phù hợp.

Chuẩn hóa cơ sở dữ liệu

2.4.1 Vẽ mô hình quan hệ

 NhanVien (MaNV, TenNV, NS, GT, DC, DThoai, CMND, ChucVu, TrinhDo, NgayVaoLam, Anh, TenDangNhap, MatKhau)

Bảng dữ liệu thuộc 1NF vì các thuộc tính chỉ chứa giá trị đơn, không thể phân chia, và mỗi giá trị thuộc tính là một giá trị đơn được lấy từ miền giá trị tương ứng.

+ Thuộc 2NF vì thỏa mãn 1NF, không tồn tại phụ thuộc hàm vào một phần của khóa nên không vi phạm 2NF

+ Thuộc 3NF vì thỏa mãn 2NF, không có phụ thuộc hàm có nguồn là thuộc tính không khóa, đích là thuộc tính không khóa

+ Thuộc BCNF vì thỏa mãn 3NF, không có thuộc tính nào phụ thuộc hàm vào thuộc tính không khóa

Bảng này thuộc dạng 1NF vì mỗi thuộc tính chỉ chứa giá trị đơn, không thể phân chia và giá trị của từng thuộc tính được lấy từ miền giá trị của nó.

+ Thuộc 2NF vì thỏa mãn 1NF, không tồn tại phụ thuộc hàm vào một phần của khóa nên không vi phạm 2NF

+ Thuộc 3NF vì thỏa mãn 2NF, không có phụ thuộc hàm có nguồn là thuộc tính không khóa, đích là thuộc tính không khóa

+ Thuộc BCNF vì thỏa mãn 3NF, không có thuộc tính nào phụ thuộc hàm vào thuộc tính không khóa

 Thuoc (MaThuoc, MaLoaiThuoc, TenThuoc, GiaThuoc, DangBaoChe,

Bảng dữ liệu thuộc 1NF khi các thuộc tính chỉ chứa giá trị đơn, không thể phân chia, và mỗi giá trị của thuộc tính đều được lấy từ miền giá trị của nó.

+ Thuộc 2NF vì thỏa mãn 1NF, không tồn tại phụ thuộc hàm vào một phần của khóa nên không vi phạm 2NF

+ Thuộc 3NF vì thỏa mãn 2NF, không có phụ thuộc hàm có nguồn là thuộc tính không khóa, đích là thuộc tính không khóa

+ Thuộc BCNF vì thỏa mãn 3NF, không có thuộc tính nào phụ thuộc hàm vào thuộc tính không khóa

 BenhNhan (MaBN, TenBN, GT, NS, TenNguoiThan, CMND_nguoithan, DC, SDT)

Bảng dữ liệu thuộc 1NF khi miền giá trị của các thuộc tính chỉ chứa giá trị đơn, không thể phân chia và mỗi thuộc tính mang giá trị đơn từ miền giá trị của nó.

+ Thuộc 2NF vì thỏa mãn 1NF, không tồn tại phụ thuộc hàm vào một phần của khóa nên không vi phạm 2NF

+ Thuộc 3NF vì thỏa mãn 2NF, không có phụ thuộc hàm có nguồn là thuộc tính không khóa, đích là thuộc tính không khóa

+ Thuộc BCNF vì thỏa mãn 3NF, không có thuộc tính nào phụ thuộc hàm vào thuộc tính không khóa

Mô hình quan hệ các bảng:

1 NhanVien( MaNV, TenNV, NS, GT, DC, DThoai, CMND, TenChucVu,

TrinhDo, NgayVaoLam, Anh, TenDangNhap, MatKhau)

3 Thuoc( MaThuoc, MaLoaiThuoc, TenThuoc, GiaThuoc, CachSD,

4 ChiTietDonThuoc( MaDon, MaThuoc, SoLuongBan, CachSuDung)

9 BenhNhan( MaBN, TenBN, GT, NS, TenNguoiThan, CMND_nguoithan, DC, SDT)

10 PhieuKham(MaPhieuKham, MaBenhNhan, MaNhanVien, LyDoKhamBenh,ChuanDoan, NgayLamPhieu)

Đặc tả các bảng

Chúng ta có tổng cộng 10 bảng là: NhanVien, BenhNhan, Thuoc, LoaiThuoc, ChiTietDonThuoc, DonThuoc, PhieuKham, DanhMucXetNghiem,

SuDungXetNghiem, PhieuXetNghiem. Đặc tả các bảng như sau:

Trường Kiểu Index NULL Chú thích

MaNhanVien Char(3) PRIMARY NO Mã Nhân viên

TenNhanVien Nvarchar(30) Tên Nhân viên

TenChucVu Nvarchar(20) Tên Chức vụ

NgayVaoLam Date Ngày vào làm

AnhNhanVien Image Ảnh Nhân Viên

TenDangNhap Varchar(32) Tên Đăng Nhập

MaBenhNhan Char(6) PRIMARY NO Mã Bệnh nhân

TenBenhNhan Nvarchar(30) Tên Bệnh nhân

TenNguoiThan Nvarchar(30) Tên người thân

CMNDNguoiThan Char(10) CMND người thân

Trường Kiểu Index NULL Chú thích

MaXetNghiem Char(2) PRIMARY NO Mã xét nghiệm

TenXetNghiem Nvarchar(30) Tên xét nghiệm

MaPhieuXetNghiem Char(8) FOREIGN NO Mã Phiếu Xét

Nghiệm MaXetNghiem Char(2) FOREIGN NO Mã xét nghiệm

NoiDungXetNghiem nvarchar(300) Nội dung xét nghiệm

MaPhieuXetNghiem Char(8) FOREIGN NO Mã Phiếu Xét

Nghiệm MaPhieuKham Char(8) FOREIGN NO Mã phiếu khám

Trường Kiểu Index NULL Chú thích

MaPhieuKham Char(8) PRIMARY NO Mã Phiếu Khám MaBenhNhan Char(6) FOREIGN NO Mã bệnh nhân MaNhanVien Char(3) FOREIGN NO Mã nhân viên

LyDoKhamBenh Nvarchar(150) Lý do khám bệnh

NgayLamPhieu date Ngày làm phiếu

Trường Kiểu Index NULL Chú thích

MaLoaiThuoc Char(2) PRIMARY NO Mã loại thuốc

TenLoaiThuoc Nvarchar((30) Tên loại thuốc

Trường Kiểu Index NULL Chú thích

MaThuoc Char(4) PRIMARY NO Mã Thuốc

MaLoaiThuoc Char(2) FOREIGN NO Mã loại thuốc

DangBaoChe Nvarchar(10) Dạng bào chế

SoLuongTrongKho Int Số lượng trong kho

CachSuDung Nvarchar(150) Cách sử dụng

Trường Kiểu Index NULL Chú thích

MaDon Char(8) FOREIGN NO Mã đơn

MaThuoc Char(4) FOREIGN NO Mã thuốc

SoLuongBan int Số lượng bán

CachSuDung Nvarchar(200) Cách sử dụng

Trường Kiểu Index NULL Chú thích

MaDon Char(8) PRIMARY NO Mã đơn

MaPhieuKham Char(8) FOREIGN NO Mã phiếu khám

KHAI THÁC CƠ SỞ DỮ LIỆU

Khai thác đại số quan hệ

3.1.1 Trần Thị Vân Anh – CNTT1

1 Lấy ra tên nhân viên và tuổi nhân viên đó từ bảng nhân viên

2 .Lấy tên nhân viên có tuổi lớn hơn 21

3 Đưa ra tên nhân viên có địa chỉ ở Ha Noi

 (  DiaChi like ‘Hà Nội”  NhanVien  )

4 Đưa ra danh sách nhân viên có cùng chức vụ Bác sĩ

5 Đưa ra danh sách nhân viên đã được gom nhóm theo tên chức vụ

6 Đưa ra số lượng nhân viên có cùng loại chức vụ

7 Đưa ra số lượng nhân viên có tuổi trên 21

8 Lấy tên và số điện thoại của nhân viên

9 Tính số lượng các chức vụ của phòng khám

10 Đưa ra danh sách số trình độ và số lượng nhân viên thuộc trình độ đó

11 đưa ra chức vụ có nhiều nhân viên nhất

12 đưa ra chức vụ có ít nhân viên nhất

13 đưa ra trình độ có nhiều nhân viên nhất

14 Đưa ra trình độ có ít nhân viên nhất

15 Đưa ra nhân viên nhỏ tuổi nhất

16 Đưa ra nhân viên có tuổi lớn nhất

17 Sắp xếp các nhân viên có tuổi tăng dần

18 Đưa ra số lượng nhân viên và số tuổi

19 Đưa ra số lượng nhân viên và giới tính

20 Đưa ra tên nhân viên và thời gian làm việc

1 Đưa ra tên các danh mục xét nghiệm enXN ( )

2 Đưa ra giá của mục kiểm tra mắt

TenXN = N’Kiểm tra mắt’ ( DanhMucXN ))

3 Đưa ra thông tin của mục mã xét nghiệm 01

4 Đưa ra thông số lượng các dịch vụ phòng khám enXN ( )

5 Đưa ra dịch vụ xét nghiệm có giá lớn nhất enX ( ( DonGia ( ) ( ))

6 Đưa ra dịch vụ xét nghiệm có giá nhỏ nhất enX ( ( ( ) ( ))

7 Đưa ra trung bình giá xét nghiệm

8 Sắp xếp tên xét nghiệm theo giá tăng dần enX , N DonGia ( )

9 Đưa ra xét nghiệm có giá trên 30.00 enXN ( 30.00 ( ))

10 Toàn bộ thông tin của bảng Danh Mục Xét Nghiệm

11 Toàn bộ thông tin của bảng Sử Dụng Xét Nghiệm

12 Đếm số danh mục xét nghiệm đã sử dụng

13 Đưa ra các phiếu sử dụng mã xét nghiệm 03

14 Thông tin của mã phiếu xét nghiệm 20000806

15 Các phiếu xét nghiệm chưa có ảnh

16 Đưa ra toàn bộ thông tin của bảng Phiếu Xét Nghiệm

17 Đếm số Phiếu Xét Nghiệm đã sử dụng

18 Các phiếu có kết quả gãy tay

KetQua = N‘Gãy Tay’ ( Ph ieuX ) N )

19 Thông tin của mã phiếu xét nghiệm 20094312

20 Thông tin của mã phiếu có mã chứa chữ số 3

1 Đưa ra tên những bệnh nhân là nam mà có tuổi lớn hơn 8 nhỏ hơn 11

 Tuoi >8 and Tuoi 21

3 Đưa ra tên nhân viên có địa chỉ ở Ha Noi

SELECT TenNhanVien FROM dbo.NhanVien WHERE DiaChi like '%Hà Nội%'

4 Đưa ra danh sách nhân viên có cùng chức vụ Bác sĩ

SELECT *FROM dbo.NhanVien WHERE TenChucVu = 'Bác sĩ'

5 Đưa ra danh sách nhân viên đã được gom nhóm theo tên chức vụ

SELECT TenNhanVien FROM dbo.NhanVien GROUP BY TenChucVu

6 Đưa ra số lượng nhân viên có cùng loại chức vụ

SELECT TenChucVu, COUNT(*) FROM dbo.NhanVien GROUP BY TenChucVu

7 Đưa ra số lượng nhân viên có tuổi trên 21

SELECT COUNT(*) FROM dbo.NhanVien WHERE (YEAR(GETDATE()) -

8 Lấy tên và số điện thoại của nhân viên

SELECT TenNhanVien, DienThoai FROM dbo.NhanVien

9 Tính số lượng các chức vụ của phòng khám

SELECT COUNT(DISTINCT TenChucVu ) FROM dbo.NhanVien

10 Đưa ra danh sách số trình độ và số lượng nhân viên thuộc trình độ đó

SELECT TrinhDo,COUNT(*) FROM dbo.NhanVien GROUP BY TrinhDo

11 đưa ra chức vụ có nhiều nhân viên nhất

SELECT SLCV.TenChucVu,SLCV.SL FROM (SELECT TenChucVu,COUNT(*)

AS SL FROM dbo.NhanVien GROUP BY TenChucVu) AS SLCV WHERE

SLCV.SL = (SELECT MAX(CV.SL) FROM (SELECT TenChucVu,COUNT(*) AS

SL FROM dbo.NhanVien GROUP BY TenChucVu) AS CV)

12.đưa ra chức vụ có ít nhân viên nhất

SELECT SLCV.TenChucVu,SLCV.SL FROM (SELECT TenChucVu,COUNT(*)

AS SL FROM dbo.NhanVien GROUP BY TenChucVu) AS SLCV WHERE

SLCV.SL = (SELECT MIN(CV.SL) FROM (SELECT TenChucVu,COUNT(*) AS

SL FROM dbo.NhanVien GROUP BY TenChucVu) AS CV)

13 đưa ra trình độ có nhiều nhân viên nhất

The SQL query retrieves the educational levels (TrinhDo) and their corresponding counts (SL) from the employee table (NhanVien) It groups the data by educational level and filters the results to display only those levels with the highest count of employees This allows for a clear understanding of which educational qualifications are most prevalent among the staff.

14 Đưa ra trình độ có ít nhân viên nhất

The SQL query retrieves the educational qualifications (TrinhDo) and their corresponding counts (SL) from the NhanVien table It groups the results by the educational qualifications and filters to display only those qualifications that have the minimum count of employees This allows for an analysis of the least represented educational levels within the employee dataset.

15 Đưa ra nhân viên nhỏ tuổi nhất

SELECT NV.TenNhanVien ,(YEAR(GETDATE()) - YEAR(NV.NgaySinh)) FROM dbo.NhanVien AS NV WHERE (YEAR(GETDATE()) - YEAR(NV.NgaySinh)) (SELECT MIN( YEAR(GETDATE()) - YEAR(NgaySinh)) FROM dbo.NhanVien)

16 Đưa ra nhân viên có tuổi lớn nhất

SELECT TenNhanVien FROM dbo.NhanVien AS NV WHERE

(YEAR(GETDATE()) - YEAR(NV.NgaySinh)) = (SELECT MAX(

YEAR(GETDATE()) - YEAR(NgaySinh)) FROM dbo.NhanVien)

17 Sắp xếp các nhân viên có tuổi tăng dần

SELECT TenNhanVien ,(YEAR(GETDATE()) - YEAR(NgaySinh)) AS tuoi FROM dbo.NhanVien ORDER BY (YEAR(GETDATE()) - YEAR(NgaySinh))

18 Đưa ra số lượng nhân viên và số tuổi

SELECT (YEAR(GETDATE()) - YEAR(NgaySinh)) AS tuoi , COUNT(*) AS SoLuong FROM dbo.NhanVien GROUP BY (YEAR(GETDATE()) -

19 Đưa ra số lượng nhân viên và giới tính

SELECT GioiTinh, COUNT(*) AS SoLuong FROM dbo.NhanVien GROUP BY GioiTinh

20 Đưa ra tên nhân viên và thời gian làm việc

SELECT TenNhanVien, (YEAR(GETDATE()) - YEAR(NgayVaoLam)) FROM dbo.NhanVien b Truy vấn nâng cao

1 Đưa ra tên bệnh nhân và tên nhân viên thực hiện

SELECT BN.TenBenhNhan, NV.TenNhanVien

FROM dbo.BenhNhan AS BN, dbo.NhanVien AS NV , dbo.PhieuKham AS PK

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND PK.MaNhanVien NV.MaNhanVien

2 Đưa ra số lượng bệnh nhân mà một nhân viên khám

SELECT NV.TenNhanVien , PK.SL AS 'Số lượng bệnh nhân' FROM dbo.NhanVien

AS NV , ( SELECT MaNhanVien,COUNT(*) AS SL FROM dbo.PhieuKham

GROUP BY MaNhanVien) AS PK

WHERE NV.MaNhanVien = PK.MaNhanVien

3 Đưa ra nhân viên có số lượng bệnh nhân đã khám là nhiều nhất

SELECT NV.TenNhanVien , PK.SL FROM dbo.NhanVien AS NV, ( SELECT

MaNhanVien,COUNT(*) AS SL FROM dbo.PhieuKham GROUP BY MaNhanVien)

WHERE NV.MaNhanVien = PK.MaNhanVien AND PK.SL = (SELECT

MAX(PK1.SL) FROM ( SELECT MaNhanVien,COUNT(*) AS SL FROM dbo.PhieuKham GROUP BY MaNhanVien) AS PK1)

4 Đưa ra tên bệnh nhân, tên nhân viên , chuẩn đoán bệnh cho bệnh nhân

SELECT BN.TenBenhNhan, NV.TenNhanVien, PK.ChanDoan FROM dbo.NhanVien AS NV, dbo.BenhNhan AS BN, dbo.PhieuKham AS PK

WHERE NV.MaNhanVien = PK.MaNhanVien AND BN.MaBenhNhan PK.MaBenhNhan

5 Đưa ra tên bệnh nhân, tên nhân viên, tên xét nghiệm bệnh nhân sử dụng

SELECT BN.TenBenhNhan, NV.TenNhanVien,

FROM dbo.NhanVien AS NV, dbo.BenhNhan AS BN, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN, dbo.DanhMucXetNghiem AS DMXN, dbo.SuDungXetNghiem AS SDXN

WHERE NV.MaNhanVien = PK.MaNhanVien AND BN.MaBenhNhan PK.MaPhieuKham AND PK.MaPhieuKham = PXN.MaPhieuKham AND

PXN.MaPhieuXetNghiem = SDXN.MaPhieuXN AND SDXN.MaXetNghiem DMXN.MaXetNgiem

6 Đưa ra tên bệnh nhân, tên nhân viên, nội dung cần xét nghiệm

SELECT BN.TenBenhNhan, NV.TenNhanVien, SDXN.NoiDungXetNghiem

FROM dbo.NhanVien AS NV, dbo.BenhNhan AS BN, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN, dbo.SuDungXetNghiem AS SDXN

WHERE NV.MaNhanVien = PK.MaNhanVien AND BN.MaBenhNhan PK.MaPhieuKham AND PK.MaPhieuKham = PXN.MaPhieuKham AND

7 Đưa ra tên bệnh nhân, tên nhân viên, danh sách thuốc bệnh nhân cần mua

SELECT BN.TenBenhNhan, NV.TenNhanVien, T.TenThuoc, CT.SoLuongBan

FROM dbo.BenhNhan AS BN, dbo.NhanVien AS NV, dbo.PhieuKham AS PK, dbo.DonThuoc AS DT, dbo.ChiTietDonThuoc AS CT, dbo.Thuoc AS T

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND PK.MaNhanVien NV.MaNhanVien

AND PK.MaPhieuKham = DT.MaPhieuKham AND DT.MaDon = CT.MaDon

8 Đưa ra tên bệnh nhân, tên nhân viên khám và kết quả của xét nghiệm

SELECT BN.TenBenhNhan, NV.TenNhanVien, PXN.KetQua

FROM dbo.BenhNhan AS BN, dbo.NhanVien AS NV, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND NV.MaNhanVien PK.MaNhanVien

AND PK.MaPhieuKham = PXN.MaPhieuKham

9 Đưa ra hoá đơn của bệnh nhân cho việc xét nghiệm

SELECT BN.TenBenhNhan , DM.TenXetNghiem, DM.DonGia

FROM dbo.BenhNhan AS BN, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN, dbo.SuDungXetNghiem AS SD, dbo.DanhMucXetNghiem AS DM

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND PK.MaPhieuKham PXN.MaPhieuKham

AND PXN.MaPhieuXetNghiem = SD.MaPhieuXN AND SD.MaXetNghiem DM.MaXetNgiem

10 Đưa ra hoá đơn thuốc của bệnh nhân

SELECT DISTINCT BN.TenBenhNhan, (T.GiaThuoc * CT.SoLuongBan) AS

FROM dbo.BenhNhan AS BN, dbo.PhieuKham AS PK, dbo.DonThuoc AS DT, dbo.ChiTietDonThuoc AS CT, dbo.Thuoc AS T

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND PK.MaPhieuKham DT.MaPhieuKham

AND DT.MaDon = CT.MaDon AND CT.MaThuoc = T.MaThuoc

3.2.2 Đỗ Văn Quyền – CNTT1 a Truy vấn cơ bản

1 Đưa ra tên các danh mục xét nghiệm

SELECT TenXetNghiem FROM dbo.DanhMucXetNghiem

2 Đưa ra giá của mục kiểm tra mắt

SELECT DonGia FROM dbo.DanhMucXetNghiem WHERE TenXetNghiem N'Kiểm Tra Mắt'

3 Đưa ra thông tin của mục mã xét nghiệm 01 Đưa ra thông tin của mục mã xét nghiệm 01

4 Đưa ra thông số lượng các dịch vụ phòng khám

SELECT COUNT(TenXetNghiem) FROM dbo.DanhMucXetNghiem

5 Đưa ra dịch vụ xét nghiệm có giá lớn nhất

SELECT TenXetNghiem FROM dbo.DanhMucXetNghiem WHERE DonGia (SELECT MAX(DonGia) FROM dbo.DanhMucXetNghiem)

6 Đưa ra dịch vụ xét nghiệm có giá nhỏ nhất

SELECT TenXetNghiem FROM dbo.DanhMucXetNghiem WHERE DonGia (SELECT Min(DonGia) FROM dbo.DanhMucXetNghiem)

7 Đưa ra trung bình giá xét nghiệm

SELECT AVG(DonGia) FROM dbo.DanhMucXetNghiem

8 Sắp xếp tên xét nghiệm theo giá tăng dần

SELECT TenXetNghiem FROM dbo.DanhMucXetNghiem ORDER BY DonGia DESC

9 Đưa ra xét nghiệm có giá trên 30.00

SELECT TenXetNghiem FROM dbo.DanhMucXetNghiem WHERE DonGia > 30.00

10 Toàn bộ thông tin của bảng Danh Mục Xét Nghiệm

11 Toàn bộ thông tin của bảng Sử Dụng Xét Nghiệm

12 Đếm số danh mục xét nghiệm đã sử dụng

SELECT COUNT(MaPhieuXN) FROM dbo.SuDungXetNghiem

13 Đưa ra các phiếu sử dụng mã xét nghiệm 03

SELECT MaPhieuXN FROM dbo.SuDungXetNghiem WHERE MaXetNghiem = '03'

14 Thông tin của mã phiếu xét nghiệm 20000806

SELECT * FROM dbo.SuDungXetNghiem WHERE MaPhieuXN = '20000806'

15 Các phiếu xét nghiệm chưa có ảnh

SELECT MaPhieuXN FROM dbo.SuDungXetNghiem WHERE Anh IS NULL

16 Đưa ra toàn bộ thông tin của bảng Phiếu Xét Nghiệm

17 Đếm số Phiếu Xét Nghiệm đã sử dụng

SELECT COUNT(MaPhieuXetNghiem) FROM dbo.PhieuXetNghiem

18 Các phiếu có kết quả gãy tay

SELECT MaPhieuXetNghiem FROM dbo.PhieuXetNghiem WHERE KetQua N'gãy tay'

19 Thông tin của mã phiếu xét nghiệm 20094312

SELECT * FROM dbo.PhieuXetNghiem WHERE MaPhieuXetNghiem = '20094312'

20 Thông tin của mã phiếu có mã chứa chữ số 3

SELECT * FROM dbo.PhieuXetNghiem WHERE MaPhieuXetNghiem LIKE '%3%' b Truy vấn nâng cao

1 Đưa ra tên xét nghiệm và giá của phiếu xét nghiệm 20000806 đã dùng

SELECT DMXN.TenXetNghiem,DMXN.DonGia FROM dbo.DanhMucXetNghiem

WHERE DMXN.MaXetNgiem = (SELECT SDXN.MaXetNghiem FROM dbo.SuDungXetNghiem AS SDXN WHERE SDXN.MaPhieuXN = '20000806')

2 Tổng tiền mà phiếu xét nghiệm 20000806 phải trả

SELECT SUM (Gia.DonGia) AS TongTien

FROM (SELECT DMXN.TenXetNghiem,DMXN.DonGia FROM dbo.DanhMucXetNghiem AS DMXN

WHERE DMXN.MaXetNgiem = (SELECT SDXN.MaXetNghiem FROM dbo.SuDungXetNghiem AS SDXN WHERE SDXN.MaPhieuXN = '20000806')) AS Gia

3 Các Phiếu Xét Nghiệm đã dùng kiểm tra sức khỏe

FROM dbo.PhieuXetNghiem AS PXN JOIN dbo.SuDungXetNghiem AS SDXN on

WHERE SDXN.MaXetNghiem IN (SELECT MaXetNgiem FROM dbo.DanhMucXetNghiem WHERE TenXetNghiem = N'tâm lý' )

4 Các phiếu sử dụng xét nghiệm có giá cao nhất

SELECT MaPhieuXN FROM dbo.SuDungXetNghiem

WHERE MaXetNghiem IN (SELECT MaXetNgiem FROM dbo.DanhMucXetNghiem WHERE DonGia = (SELECT MAX(DonGia) FROM dbo.DanhMucXetNghiem) )

5 Tổng tiền các phiếu xét nghiệm phải trả

SELECT Gia.MaPhieuXetNghiem, SUM(Gia.Gia)

DMXN.TenXetNghiem,DMXN.DonGia AS Gia FROM dbo.DanhMucXetNghiem

AS DMXN,dbo.SuDungXetNghiem AS SDXN,dbo.PhieuXetNghiem AS PXN

WHERE DMXN.MaXetNgiem = SDXN.MaXetNghiem AND

PXN.MaPhieuXetNghiem= SDXN.MaPhieuXN) AS Gia

6 Phiếu xét nghiệm có tổng tiền nhỏ nhất

SELECT MIN (Tim.mi) AS Gia

SELECT SUM(Gia.Gia) AS Mi

FROM (SELECT PXN.MaPhieuXetNghiem AS PXN1,

DMXN.TenXetNghiem,DMXN.DonGia AS Gia FROM dbo.DanhMucXetNghiem

AS DMXN,dbo.SuDungXetNghiem AS SDXN,dbo.PhieuXetNghiem AS PXN

WHERE DMXN.MaXetNgiem = SDXN.MaXetNghiem AND

PXN.MaPhieuXetNghiem= SDXN.MaPhieuXN) AS Gia

GROUP BY Gia.PXN1) AS Tim

7 Tên xét nghiệm và giá các phiếu xét nghiệm đã dùng

SELECT PXN.MaPhieuXetNghiem, DMXN.TenXetNghiem,DMXN.DonGia

FROM dbo.DanhMucXetNghiem AS DMXN,dbo.SuDungXetNghiem AS

SDXN,dbo.PhieuXetNghiem AS PXN

WHERE DMXN.MaXetNgiem = SDXN.MaXetNghiem AND

8 Phiếu xét nghiệm có tổng tiền lớn nhất

SELECT MAX(Tim.mi) AS Gia

SELECT SUM(Gia.Gia) AS Mi

DMXN.TenXetNghiem,DMXN.DonGia AS Gia FROM dbo.DanhMucXetNghiem

AS DMXN,dbo.SuDungXetNghiem AS SDXN,dbo.PhieuXetNghiem AS PXN

WHERE DMXN.MaXetNgiem = SDXN.MaXetNghiem AND

PXN.MaPhieuXetNghiem= SDXN.MaPhieuXN) AS Gia

GROUP BY Gia.MaPhieuXetNghiem) AS Tim

9 Mã Xét nghiệm được sử dụng nhiều nhất

SELECT pk.MaXetNghiem,Pk.SL

FROM (SELECT MaXetNghiem,Count(*) AS SL FROM dbo.SuDungXetNghiem GROUP BY MaXetNghiem) AS PK

WHERE PK.Sl = (SELECT MAX(PK1.SL) FROM ( SELECT

MaXetNghiem,Count(*) AS SL FROM dbo.SuDungXetNghiem GROUP BY

10 Mã Xét nghiệm được sử dụng ít nhất

SELECT pk.MaXetNghiem,Pk.SL

FROM (SELECT MaXetNghiem,Count(*) AS SL FROM dbo.SuDungXetNghiem GROUP BY MaXetNghiem) AS PK

WHERE PK.Sl = (SELECT MIN(PK1.SL) FROM ( SELECT

MaXetNghiem,Count(*) AS SL FROM dbo.SuDungXetNghiem GROUP BY MaXetNghiem) AS PK1)

3.2.3 Nguyễn Viết Thông – CNTT2 a Truy vấn cơ bản

1 Đưa ra tên những bệnh nhân là nam mà có tuổi lớn hơn 8 nhỏ hơn 11

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE (YEAR(GETDATE())- YEAR(NgaySinh)) > 8 AND (YEAR(GETDATE())-YEAR(NgaySinh)) < 11 AND GioiTinh = 1

2 Đưa ra mã bệnh nhân và tên những bệnh nhân có địa chỉ ở Hải Dương

SELECT MaBenhNhan, TenBenhNhan FROM dbo.BenhNhan WHERE DiaChi LIKE '%Hải Dương%'

3 Đưa ra số lượng bệnh nhân có tuổi lớn hơn 10

SELECT COUNT(*) FROM dbo.BenhNhan WHERE (YEAR(GETDATE())-

4 Điều chỉnh giá xét nghiệm máu tăng thêm 20

UPDATE dbo.DanhMucXetNghiem SET DonGia += 20 WHERE TenXetNghiem 'Xét nghiệm máu'

5 Đưa ra số lần xét nghiệm X-quang tim phổi

SELECT COUNT(*) FROM dbo.SuDungXetNghiem WHERE MaXetNghiem (SELECT MaXetNgiem FROM dbo.DanhMucXetNghiem WHERE

6 Đưa ra Nội dung các xét nghiệm có Ảnh

SELECT NoiDungXetNghiem FROM dbo.SuDungXetNghiem WHERE Anh IS NOT NULL

7 Đưa ra danh sách chức vụ và số lượng nhân viên thuộc chức vụ đó

SELECT TenChucVu,COUNT(*) FROM dbo.NhanVien GROUP BY TenChucVu

8 Đưa ra trình độ và số lượng mà nhiều nhân viên ở trình độ đó nhất

SELECT slTD.TrinhDo, slTD.sl FROM

(SELECT TrinhDo,COUNT(*) AS sl FROM dbo.NhanVien GROUP BY TrinhDo) AS slTD

WHERE slTD.sl = (SELECT MAX(TD.sl) FROM (SELECT COUNT(*) AS sl FROM dbo.NhanVien GROUP BY TrinhDo) AS TD)

9 Đưa ra nội dung của mã phiếu xét nghiệm '20000806'

SELECT NoiDungXetNghiem,Anh FROM dbo.SuDungXetNghiem WHERE

10 Đưa ra trình độ có ít người nhất

SELECT soluongTrinhDo.TrinhDo, soluongTrinhDo.soluong FROM

(SELECT TrinhDo,COUNT(*) AS soluong FROM dbo.NhanVien GROUP BY TrinhDo) AS soluongTrinhDo

WHERE soluongTrinhDo.soluong = (SELECT MIN(TD.soluong) FROM (SELECT COUNT(*) AS soluong FROM dbo.NhanVien GROUP BY

11 Đưa ra nhân viên tuổi nghề ít nhất

SELECT TenNhanVien, TenChucVu , (YEAR(GETDATE()) -

YEAR(NgayVaoLam)) AS namLV FROM dbo.NhanVien

WHERE (YEAR(GETDATE()) - YEAR(NgayVaoLam)) = (SELECT

MIN((YEAR(GETDATE()) - YEAR(NgayVaoLam))) FROM dbo.NhanVien)

12 Đưa ra số tuổi trung bình của nhân viên

SELECT AVG(YEAR(GETDATE())-YEAR(NgaySinh)) FROM dbo.NhanVien

13 Đưa ra tuổi nghề trung bình của Nhân viên là nam

SELECT AVG(YEAR(GETDATE())-YEAR(NgaySinh)) FROM dbo.NhanVien WHERE GioiTinh = 1

14 Các phiếu có kết quả gãy tay

SELECT MaPhieuXetNghiem, MaPhieuKham FROM dbo.PhieuXetNghiem WHERE KetQua = N'gãy chân'

15 Đưa ra số lượng các xét nghiệm có sô lượng tăng dần

SELECT MaXetNghiem,COUNT(*) AS sl FROM dbo.SuDungXetNghiem GROUP

BY MaXetNghiem ORDER BY sl ASC

16 Đưa ra các phiếu, nội dung xét nghiệm sử dụng mã xét nghiệm '01'

SELECT MaPhieuXN,NoiDungXetNghiem FROM dbo.SuDungXetNghiem WHERE MaXetNghiem = '01'

17 Đưa ra thuốc còn nhiều trong kho nhất

SELECT TenThuoc FROM dbo.Thuoc WHERE SoLuongThuocTrongKho (SELECT MAX(SoLuongThuocTrongKho) FROM dbo.Thuoc)

18 Đưa ra tên thuốc có chứa 'siro'

SELECT TenThuoc FROM dbo.Thuoc WHERE TenThuoc LIKE '%siro%'

19 Đưa ra tên thuốc, giá thuốc có chưa thành phần nước, đường

SELECT TenThuoc, GiaThuoc FROM dbo.Thuoc WHERE ThanhPhan LIKE '%nước

20 Đưa ra phiếu khám có mã là '00000806'

SELECT MaPhieuKham,MaBenhNhan FROM dbo.PhieuKham WHERE

MaPhieuKham = '00000806' b Truy vấn nâng cao

1 Đưa ra trình độ nhân viên có ít người nhất

SELECT soluongTrinhDo.TrinhDo, soluongTrinhDo.soluong FROM

(SELECT TrinhDo,COUNT(*) AS soluong FROM dbo.NhanVien GROUP BY TrinhDo) AS soluongTrinhDo

WHERE soluongTrinhDo.soluong = (SELECT MIN(trinhdo.soluong) FROM

(SELECT COUNT(*) AS soluong FROM dbo.NhanVien GROUP BY TrinhDo) AS trinhdo)

2 Đưa ra tên Xét nghiệm, đơn giá, số lượng được sử dụng nhiều nhất trong Phiếu sử dụng xét nghiệm

SELECT DM.TenXetNghiem, DM.DonGia, SoLuong.soluong FROM dbo.DanhMucXetNghiem AS DM,

( SELECT pk.MaXetNghiem AS mxn,Pk.SL AS soluong FROM

( SELECT MaXetNghiem,COUNT(*) AS SL FROM dbo.SuDungXetNghiem

GROUP BY MaXetNghiem) AS PK WHERE PK.Sl ( SELECT MAX(PK1.SL) FROM

( SELECT COUNT(*) AS SL FROM dbo.SuDungXetNghiem GROUP BY

MaXetNghiem) AS PK1 ) ) AS SoLuong WHERE DM.MaXetNgiem= SoLuong.mxn

3 Đưa ra Nhân viên bán thuocs nhiều hơn lượng thuốc trung bình bán cho Bệnh nhân

SELECT NV.MaNhanVien,NV.TenNhanVien FROM dbo.NhanVien AS NV

( SELECT PK.MaNhanVien FROM dbo.PhieuKham AS PK WHERE

( SELECT DT.MaPhieuKham FROM dbo.DonThuoc AS DT WHERE DT.MaDon

( SELECT don.madon FROM ( SELECT CTDT.MaDon AS madon,SUM(CTDT.SoLuongBan) AS slban FROM dbo.ChiTietDonThuoc AS

CTDT GROUP BY CTDT.MaDon ) AS don,

( SELECT TongThuoc.Tong/TongDon.Tong AS trungbinh FROM

( SELECT COUNT(CTDT2.MaDon) AS Tong FROM (SELECT DISTINCT

CTDT1.MaDon FROM dbo.ChiTietDonThuoc AS CTDT1) AS CTDT2) AS

( SELECT SUM(CTDT.SoLuongBan) AS Tong FROM dbo.ChiTietDonThuoc AS CTDT) AS TongThuoc ) AS thuoc

WHERE don.slban > thuoc.trungbinh)))

4 Đưa ra nhân viên tuổi nghề dưới 16 năm mà tham gia vào trên 2 phiếu khám

SELECT TenNhanVien, TenChucVu , (YEAR(GETDATE()) -

YEAR(NgayVaoLam)) AS namLV FROM dbo.NhanVien AS NV WHERE

(( SELECT DISTINCT MaNhanVien FROM dbo.PhieuKham AS PK,

( SELECT MaNhanVien AS mnv,COUNT(*) AS soluong FROM dbo.PhieuKham GROUP BY MaNhanVien) AS SOLUONG

WHERE SOLUONG.mnv = PK.MaNhanVien AND SOLUONG.soluong > 2)

(SELECT DISTINCT MaNhanVien FROM dbo.NhanVien WHERE

5 Đưa ra loại thuốc được bán nhiều nhất

SELECT MaLoaiThuoc, TenLoaiThuoc FROM dbo.LoaiThuoc WHERE

( SELECT MaLoaiThuoc FROM dbo.Thuoc WHERE MaThuoc IN

( SELECT MaThuoc AS mt,SUM(SoLuongBan) AS _sum FROM dbo.ChiTietDonThuoc GROUP BY MaThuoc) AS soluong1 WHERE soluong1. [_sum] ( SELECT MAX(soluong.[_sum]) AS _max FROM

( SELECT SUM(SoLuongBan) AS _sum FROM dbo.ChiTietDonThuoc GROUP BY MaThuoc) AS soluong)))

6 Đưa ra những bệnh nhân sử dụng thuốc bán chạy nhất ở trên

SELECT MaBenhNhan, TenBenhNhan,TenNguoiThan FROM dbo.BenhNhan

( SELECT MaBenhNhan FROM dbo.PhieuKham WHERE MaPhieuKham IN

( SELECT MaPhieuKham FROM dbo.DonThuoc WHERE MaDon IN

( SELECT MaDon FROM dbo.ChiTietDonThuoc WHERE MaThuoc IN

( SELECT MaThuoc AS mt,SUM(SoLuongBan) AS _sum FROM dbo.ChiTietDonThuoc GROUP BY MaThuoc) AS soluong1 WHERE soluong1. [_sum] ( SELECT MAX(soluong.[_sum]) AS _max FROM

( SELECT SUM(SoLuongBan) AS _sum FROM dbo.ChiTietDonThuoc GROUP BY MaThuoc) AS soluong)))))

7 Đưa ra tên Bệnh nhân, tên nhân viên, kết quả khám, mã thuốc sử dụng

SELECT BN.TenBenhNhan, NV.TenNhanVien, PXN.KetQua, T.TenThuoc

FROM dbo.BenhNhan AS BN, dbo.NhanVien AS NV, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN, dbo.DonThuoc AS DT, dbo.ChiTietDonThuoc AS CTDT, dbo.Thuoc AS T

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND NV.MaNhanVien PK.MaNhanVien

AND PK.MaPhieuKham = PXN.MaPhieuKham AND PK.MaPhieuKham DT.MaPhieuKham AND DT.MaDon = CTDT.MaDon

8 Đưa ra Bệnh nhân có mã 000007 sử dụng những thuốc gì

SELECT DISTINCT LayRa.ma,LayRa.ten AS 'Tên bệnh nhân',LayRa.thuoc AS 'Sử dụng' FROM

( SELECT BN.MaBenhNhan AS ma, BN.TenBenhNhan AS ten,T.TenThuoc AS thuoc

FROM dbo.BenhNhan AS BN, dbo.NhanVien AS NV, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN, dbo.DonThuoc AS DT, dbo.ChiTietDonThuoc AS CTDT, dbo.Thuoc AS T

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND NV.MaNhanVien PK.MaNhanVien

AND PK.MaPhieuKham = PXN.MaPhieuKham AND PK.MaPhieuKham DT.MaPhieuKham AND DT.MaDon = CTDT.MaDon

AND T.MaThuoc = CTDT.MaThuoc) AS LayRa

9 Đưa ra 2 nhân viên khám cho nhiều bệnh nhân nhất, số lượng

SELECT TOP 2 NV.TenNhanVien AS ten, PK.SL AS 'Số lượng' FROM dbo.NhanVien AS NV ,

( SELECT MaNhanVien,COUNT(*) AS SL FROM dbo.PhieuKham GROUP BY MaNhanVien) AS PK

WHERE NV.MaNhanVien = PK.MaNhanVien ORDER BY PK.SL DESC

10 Đưa ra tên xét nghiệm được sử dụng nhiều nhất

SELECT DM.TenXetNghiem,Pk.SL

FROM dbo.DanhMucXetNghiem AS DM,(SELECT MaXetNghiem,COUNT(*) AS

SL FROM dbo.SuDungXetNghiem GROUP BY MaXetNghiem) AS PK

WHERE PK.Sl = (SELECT MAX(PK1.SL) FROM ( SELECT

MaXetNghiem,COUNT(*) AS SL FROM dbo.SuDungXetNghiem GROUP

BY MaXetNghiem) AS PK1 ) AND DM.MaXetNgiem = pk.MaXetNghiem

3.2.4 Lê Duy Dũng – ANHTTT a Truy vấn cơ bản

SELECT TenBenhNhan, (YEAR(GETDATE()) - YEAR(NgaySinh)) AS tuoi FROM dbo.BenhNhan

2 Đưa ra tên các bệnh nhân theo độ tuổi giảm dần

SELECT TenBenhNhan FROM dbo.BenhNhan ORDER BY (YEAR(GETDATE()) - YEAR(NgaySinh)) DESC

3 Đưa ra thông tin của bệnh nhân có mã 000001

SELECT *FROM dbo.BenhNhan WHERE MaBenhNhan = '000001'

4 Đưa ra bệnh nhân có tuổi nhỏ nhất

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE YEAR(NgaySinh) (SELECT MAX(YEAR(NgaySinh)) FROM dbo.BenhNhan)

5 Đưa ra bệnh nhân có tuổi lớn nhất

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE YEAR(NgaySinh) (SELECT MIN(YEAR(NgaySinh)) FROM dbo.BenhNhan)

6 Đưa ra độ tuổi trung bình của bệnh nhân

SELECT AVG(YEAR(GETDATE()) - YEAR(NgaySinh)) FROM dbo.BenhNhan

7 Đưa ra số lượng bệnh nhân và giới tính

SELECT GioiTinh, COUNT(*) AS SoLuong FROM dbo.BenhNhan GROUP BY GioiTinh

8 Đưa ra số lượng bệnh nhân và tuổi

SELECT (YEAR(GETDATE()) - YEAR(NgaySinh)) AS tuoi , COUNT(*) AS SoLuong FROM dbo.BenhNhan GROUP BY (YEAR(GETDATE()) -

9 Sắp xếp các bệnh nhân có tuổi tăng dần

SELECT TenBenhNhan ,(YEAR(GETDATE()) - YEAR(NgaySinh)) AS tuoi

FROM dbo.BenhNhan ORDER BY (YEAR(GETDATE()) - YEAR(NgaySinh))

10 Đưa ra bệnh nhân có tuổi lớn hơn 8

SELECT COUNT(*) FROM dbo.BenhNhan WHERE (YEAR(GETDATE()) -

11 Đưa ra bệnh nhân có mã bênh nhân chứa số 1

SELECT * FROM dbo.BenhNhan WHERE MaBenhNhan LIKE '%1%'

12 Đưa ra bệnh nhân sinh trong tháng 10

SELECT * FROM dbo.BenhNhan WHERE MONTH(NgaySinh) = 10

13 Đưa ra bệnh nhân được chẩn đoán là gãy tay

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE MaBenhNhan IN (SELECT MaBenhNhan FROM dbo.PhieuKham WHERE ChanDoan LIKE '%gãy tay%')

14 Đưa ra bệnh nhân được chữa trị bởi bác sĩ có mã 303

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE MaBenhNhan IN (SELECT MaBenhNhan FROM dbo.PhieuKham WHERE MaNhanVien LIKE '%303%')

15 Đưa ra bệnh nhân được chữa trị trong năm 2020

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE MaBenhNhan IN (SELECT MaBenhNhan FROM dbo.PhieuKham WHERE YEAR(NgayLamPhieu) = 2020)

16 Đếm số bệnh nhân được chữa trị trong năm 2020

SELECT COUNT(*) FROM dbo.PhieuKham WHERE YEAR(NgayLamPhieu) 2020

17 Đưa ra thông tin bệnh nhân có phiếu khám 03260314

SELECT * FROM dbo.BenhNhan WHERE MaBenhNhan IN (SELECT

MaBenhNhan FROM dbo.PhieuKham WHERE MaPhieuKham LIKE '03260314')

18 Đưa ra danh sách các bệnh nhân nam

SELECT TenBenhNhan FROM dbo.BenhNhan WHERE GioiTinh = 1

19 Đếm số bệnh nhân nữ

SELECT COUNT(*) FROM dbo.BenhNhan WHERE GioiTinh = 0

20 Đếm số bệnh nhân được chữa trị bởi bác sĩ Đỗ Văn Quyền

SELECT COUNT(*) FROM dbo.PhieuKham WHERE MaNhanVien = (SELECT MaNhanVien FROM dbo.NhanVien WHERE TenNhanVien LIKE N'Đỗ Văn

Quyền') b Truy vấn nâng cao

1 đưa ra chi phí khám chữa bệnh của bệnh nhân gồm chi phí xét nghiệm và chi phí

SELECT SD.MaPhieuXN, SUM(DM.DonGia) AS gia FROM dbo.SuDungXetNghiem AS SD , dbo.DanhMucXetNghiem AS DM WHERE

SD.MaXetNghiem = DM.MaXetNgiem GROUP BY SD.MaPhieuXN

2 chi phí làm xét nghiệm

SELECT BN.TenBenhNhan,TongTien.gia

FROM dbo.PhieuXetNghiem AS PXN , dbo.BenhNhan AS BN, dbo.PhieuKham AS

PK, (SELECT SD.MaPhieuXN, SUM(DM.DonGia) AS gia FROM dbo.SuDungXetNghiem AS SD , dbo.DanhMucXetNghiem AS DM WHERE

SD.MaXetNghiem = DM.MaXetNgiem GROUP BY SD.MaPhieuXN) AS TongTien

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

PXN.MaPhieuKham = PK.MaPhieuKham AND PK.MaBenhNhan BN.MaBenhNhan

SELECT BN.TenBenhNhan, TongTienThuoc.giaThuoc

The query retrieves data from the tables dbo.BenhNhan (patients), dbo.DonThuoc (prescriptions), and dbo.PhieuKham (medical records) It includes a subquery that calculates the total medication cost by summing the prices from the dbo.Thuoc (medications) table, grouped by prescription ID from the dbo.ChiTietDonThuoc (prescription details) table.

WHERE TongTienThuoc.MaDon = DT.MaDon AND PK.MaPhieuKham DT.MaPhieuKham AND BN.MaBenhNhan = PK.MaBenhNhan

4 đưa ra chi phí xét nghiệm lớn nhất bệnh nhân phải trả

The SQL query retrieves the maximum total price of laboratory tests by joining the "PhieuXetNghiem" and "PhieuKham" tables, while calculating the sum of individual test prices from the "SuDungXetNghiem" and "DanhMucXetNghiem" tables It does this by grouping the results based on the test request identifier, ensuring that the highest total amount is returned for analysis.

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

5 đưa ra chi phí xét nghiệm nhỏ nhất

The SQL query retrieves the minimum value of the total cost from medical examination records by joining the "PhieuXetNghiem" and "PhieuKham" tables It calculates the total price for each examination by summing the unit prices from the "DanhMucXetNghiem" table, grouped by the examination request ID This allows for an efficient assessment of the lowest examination cost available in the dataset.

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

6 đưa ra bệnh nhân có chi phí khám lớn nhất

The SQL query retrieves the maximum total price from laboratory test invoices by joining the "PhieuXetNghiem" and "PhieuKham" tables with a subquery that calculates the sum of prices for each test invoice from the "SuDungXetNghiem" and "DanhMucXetNghiem" tables The final result is stored in the variable @gia.

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

SELECT BN.TenBenhNhan,TongTien.gia

FROM dbo.PhieuXetNghiem AS PXN , dbo.BenhNhan AS BN, dbo.PhieuKham AS

PK, (SELECT SD.MaPhieuXN, SUM(DM.DonGia) AS gia FROM dbo.SuDungXetNghiem AS SD , dbo.DanhMucXetNghiem AS DM WHERE

SD.MaXetNghiem = DM.MaXetNgiem GROUP BY SD.MaPhieuXN) AS TongTien

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

PXN.MaPhieuKham = PK.MaPhieuKham AND PK.MaBenhNhan BN.MaBenhNhan AND TongTien.gia = @gia

7 đưa ra bệnh nhân có chi phí khám là nhỏ nhất

The SQL query calculates the minimum value of the total cost associated with medical test requests by joining the tables for test requests and examinations It aggregates the prices from the test usage records and the test catalog, ultimately returning the lowest total cost from these calculations.

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

SELECT BN.TenBenhNhan,TongTien.gia

FROM dbo.PhieuXetNghiem AS PXN , dbo.BenhNhan AS BN, dbo.PhieuKham AS

PK, (SELECT SD.MaPhieuXN, SUM(DM.DonGia) AS gia FROM dbo.SuDungXetNghiem AS SD , dbo.DanhMucXetNghiem AS DM WHERE

SD.MaXetNghiem = DM.MaXetNgiem GROUP BY SD.MaPhieuXN) AS TongTien

WHERE PXN.MaPhieuXetNghiem = TongTien.MaPhieuXN AND

PXN.MaPhieuKham = PK.MaPhieuKham AND PK.MaBenhNhan BN.MaBenhNhan AND TongTien.gia = @gia

8 Đưa ra trình độ có ít người nhất

SELECT soluongTrinhDo.TrinhDo, soluongTrinhDo.soluong FROM

(SELECT TrinhDo,COUNT(*) AS soluong FROM dbo.NhanVien GROUP BY TrinhDo) AS soluongTrinhDo

WHERE soluongTrinhDo.soluong = (SELECT MIN(TD.soluong) FROM (SELECT COUNT(*) AS soluong FROM dbo.NhanVien GROUP BY

9 Đưa ra tên bệnh nhân, tên nhân viên khám và kết quả của xét nghiệm

SELECT BN.TenBenhNhan, NV.TenNhanVien, PXN.KetQua

FROM dbo.BenhNhan AS BN, dbo.NhanVien AS NV, dbo.PhieuKham AS PK, dbo.PhieuXetNghiem AS PXN

WHERE BN.MaBenhNhan = PK.MaBenhNhan AND NV.MaNhanVien PK.MaNhanVien

AND PK.MaPhieuKham = PXN.MaPhieuKham

10 Tổng tiền các phiếu xét nghiệm phải trả

SELECT Gia.MaPhieuXetNghiem, SUM(Gia.Gia)

DMXN.TenXetNghiem,DMXN.DonGia AS Gia FROM dbo.DanhMucXetNghiem

AS DMXN,dbo.SuDungXetNghiem AS SDXN,dbo.PhieuXetNghiem AS PXN

WHERE DMXN.MaXetNgiem = SDXN.MaXetNghiem AND

PXN.MaPhieuXetNghiem= SDXN.MaPhieuXN) AS Gia

3.2.5 Mạnh Tuấn Đạt – ANHTTT a Truy vấn cơ bản

1 lấy ra tên thuốc và giá thuốc từ bảng thuốc

SELECT TenThuoc, GiaThuoc FROM dbo.Thuoc

2 lấy ra thuốc có dạng bào chế là dạng siro

SELECT TenThuoc FROM dbo.Thuoc WHERE DangBaoChe LIKE 'siro'

3 đưa ra số lượng thuốc có giá trên 5.00

SELECT COUNT(*) FROM dbo.Thuoc WHERE GiaThuoc > 5

4 thông tin của thuốc có mã chứa chữ số 3

SELECT * FROM dbo.Thuoc WHERE MaThuoc LIKE '%3%'

5 tính số lượng mã loại thuốc

SELECT COUNT(DISTINCT MaLoaiThuoc) FROM dbo.Thuoc

6 sắp sếp thuốc có giá tăng dần

SELECT TenThuoc, GiaThuoc FROM dbo.Thuoc ORDER BY GiaThuoc

7 đưa ra thuốc có giá cao nhất

SELECT TenThuoc FROM dbo.Thuoc WHERE GiaThuoc = (SELECT

MAX(GiaThuoc) FROM dbo.Thuoc)

8 đưa ra thuốc có giá thấp nhất

SELECT TenThuoc FROM dbo.Thuoc WHERE GiaThuoc = (SELECT

MIN(GiaThuoc) FROM dbo.Thuoc)

9 đưa ra thuốc có số lượng trong kho còn nhiều nhất

SELECT SLMLT.MaLoaiThuoc ,SLMLT.SL FROM (SELECT

MaLoaiThuoc,COUNT(*) FROM dbo.Thuoc GROUP BY MaLoaiThuoc) AS

SLMLT WHERE SLMLT.SL = (SELECT MAX (MLT.SL) FROM (SELECT

MaLoaiThuoc, COUNT(*) AS SL FROM dbo.Thuoc GROUP BY MaLoaiThuoc) AS MLT)

10 đưa ra danh sách thuốc đã được gom nhóm theo mã loại thuốc

SELECT TenThuoc FROM dbo.Thuoc GROUP BY DangBaoChe

11 đưa ra thuốc có số lượng trong kho ít nhất

SELECT TenThuoc FROM dbo.Thuoc WHERE SoLuongThuocTrongKho (SELECT MIN(SoLuongThuocTrongKho) FROM dbo.Thuoc)

12 đưa ra số lượng thuốc của các dạng bào chế

SELECT DangBaoChe, COUNT(*) AS SoLuong FROM dbo.Thuoc GROUP BY

13 đưa ra mã loại thuốc và số lượng

SELECT MaLoaiThuoc, COUNT(*) AS SoLuong FROM dbo.Thuoc GROUP BY MaLoaiThuoc

14 đưa ra toàn bộ thông tin thuốc

15 đưa ra giá của thuốc Calcium

SELECT GiaThuoc FROM dbo.Thuoc WHERE TenThuoc = 'Calcium'

16 đưa ra thuốc có số lượng còn nhiều trong kho nhất

SELECT TenThuoc FROM dbo.Thuoc WHERE SoLuongThuocTrongKho (SELECT MAX(SoLuongThuocTrongKho) FROM dbo.Thuoc)

17 sắp sếp số lượng thuốc trong kho

SELECT TenThuoc ,SoLuongThuocTrongKho FROM dbo.Thuoc ORDER BY

18 đưa ra trung bình giá thuốc

SELECT AVG(GiaThuoc) FROM dbo.Thuoc

19 thông tin của thuốc có mã thuốc 0153

SELECT * FROM dbo.Thuoc WHERE MaThuoc = '0153'

20 thông tin của thuốc có thành phần hoạt chất chính là Oseltamivir

SELECT * FROM dbo.Thuoc WHERE ThanhPhan = N'hoạt chất chính là Oseltamivir' b Truy vấn nâng cao

1 đưa ra tên thuốc và giá thuốc của các thuốc có tên loại thuốc là Cúm

SELECT T.TenThuoc , T.GiaThuoc FROM dbo.Thuoc AS T

WHERE T.MaLoaiThuoc = (SELECT LT.MaLoaiThuoc FROM dbo.LoaiThuoc AS

LT WHERE LT.TenLoaiThuoc = 'Cúm')

2 đưa ra tên thuốc và giá thuốc có số lượng bán cao nhất

SELECT T.TenThuoc , T.GiaThuoc FROM dbo.Thuoc AS T WHERE T.MaThuoc

IN (SELECT MaThuoc FROM dbo.ChiTietDonThuoc WHERE SoLuongBan (SELECT MAX(SoLuongBan) FROM dbo.ChiTietDonThuoc ))

3 đưa ra mã thuốc và cách sử dụng của thuốc có số lượng nhiều trong kho nhất

SELECT CTDT.MaThuoc , CTDT.CachSuDung FROM dbo.ChiTietDonThuoc AS CTDT WHERE CTDT.MaThuoc

IN (SELECT MaThuoc FROM dbo.Thuoc WHERE SoLuongThuocTrongKho (SELECT MAX(SoLuongThuocTrongKho) FROM dbo.Thuoc ))

4 mã loại thuốc có số lượng bán ra ít nhất

SELECT pk.MaLoaiThuoc ,pk.SL

FROM (SELECT MaLoaiThuoc,Count(*) AS SL FROM dbo.LoaiThuoc GROUP

WHERE PK.Sl = (SELECT MAX(PK1.SL) FROM ( SELECT

PK.MaLoaiThuoc,Count(*) AS SL FROM dbo.LoaiThuoc GROUP BY

5 đưa ra số lượng bán, mã đơn, mã thuốc

SELECT DT.MaDon, CTDT.MaThuoc , CTDT.SoLuongBan

FROM dbo.ChiTietDonThuoc AS CTDT,dbo.DonThuoc AS DT

WHERE DT.MaDon = CTDT.MaDon

6 đưa ra tên thuốc và giá thuốc có số lượng bán thấp nhất

SELECT T.TenThuoc , T.GiaThuoc FROM dbo.Thuoc AS T WHERE T.MaThuoc

IN (SELECT MaThuoc FROM dbo.ChiTietDonThuoc WHERE SoLuongBan (SELECT MIN(SoLuongBan) FROM dbo.ChiTietDonThuoc ))

7 đưa ra mã thuốc và cách sử dụng của thuốc có số lượng nhiều trong kho nhất

SELECT CTDT.MaThuoc , CTDT.CachSuDung FROM dbo.ChiTietDonThuoc AS CTDT WHERE CTDT.MaThuoc

IN (SELECT MaThuoc FROM dbo.Thuoc WHERE SoLuongThuocTrongKho (SELECT MAX(SoLuongThuocTrongKho) FROM dbo.Thuoc ))

8 mã loại thuốc có số lượng bán ra nhiều nhất

SELECT pk.MaLoaiThuoc ,pk.SL

FROM (SELECT MaLoaiThuoc,Count(*) AS SL FROM dbo.LoaiThuoc GROUP

WHERE PK.Sl = (SELECT MIN(PK1.SL) FROM ( SELECT

PK.MaLoaiThuoc,Count(*) AS SL FROM dbo.LoaiThuoc GROUP BY

9 tên loại thuốc có số lượng bán ra ít nhất

SELECT pk.TenLoaiThuoc,pk.SL

FROM (SELECT TenLoaiThuoc,Count(*) AS SL FROM dbo.LoaiThuoc GROUP

WHERE PK.Sl = (SELECT MAX(PK1.SL) FROM ( SELECT

PK.TenLoaiThuoc,Count(*) AS SL FROM dbo.LoaiThuoc GROUP BY

10 đưa ra tên thuốc và giá thuốc của các thuốc có số lượng bán ra là 2

SELECT T.TenThuoc , T.GiaThuoc FROM dbo.Thuoc AS T WHERE T.MaThuoc

IN (SELECT MaThuoc FROM dbo.ChiTietDonThuoc WHERE SoLuongBan

Khai thác bằng ngôn ngữ T-SQL

3.3.1 Trần Thị Vân Anh – CNTT1

1 Tạo Function tính tổng doanh thu phòng khám trong một khoản thời gian.

Biến đầu vào : @BatDau, @KetThuc là thời gian bắt đầu tính và thời gian kết thúc truy vấn

Kết quả đầu ra: NgayThang, DoanhThu

CREATE FUNCTION [dbo].[UF_TongDoanhThuPhongKham](@BatDau date, @KetThuc date) RETURNS @TongDoanhThu TABLE (NgayThang date , DoanhThu money )

WHEN XN.NgayLamXetNghiem IS NULL THEN T.NgayLamPhieu

WHEN T.NgayLamPhieu IS NULL THEN XN.NgayLamXetNghiem

WHEN XN.NgayLamXetNghiem IS NULL THEN T.TongTien

WHEN T.NgayLamPhieu IS NULL THEN XN.TongTien

FROM (SELECT NgayLamXetnghiem,SUM(DonGia) AS TongTien FROM

UF_DanhSachXetNghiemTrongMotThoiGian (@BatDau,@KetThuc) GROUP BY

( SELECT NgayLamPhieu, SUM(GiaThuoc*SoLuongBan) AS TongTien FROM

UF_DanhSachLuongThuocBanTrongMotThoiGian(@BatDau,@KetThuc) GROUP BY NgayLamPhieu )AS T

2 Sử dụng Cursor tạo bảng lấy ra danh sách bệnh nhân khám trong ngày hôm nay. Kết quả đưa ra sẽ là bảng danh sách các bệnh nhân khám trong ngày hiện tại gồm các thuộc tính: MaBenhNhan, TenBenhNhan, GioiTinh, DiaChi, TenNguoiThan, DienThoai

CREATE TABLE DanhSachBenhNhan (MaBenhNhan CHAR (6), TenBenhNhan nvarchar(30), GioiTinh bit, DiaChi nvarchar(150), TenNguoiThan nvarchar(30), DienThoai CHAR(10))

DECLARE @ma CHAR (6) , @tenBN nvarchar(30), @GT bit , @DC NVARCHAR(150), @tenNT

DECLARE BN_Cursor CURSOR FORWARD_ONLY FOR SELECT BN.MaBenhNhan, TenBenhNhan, GioiTinh, DiaChi, TenNguoiThan, DienThoaiNguoiThan FROM dbo.BenhNhan AS BN, dbo.PhieuKham WHERE

FETCH NEXT FROM BN_Cursor

INTO @ma, @tenBN, @GT, @DC, @tenNT, @DT

3 Tạo Function tính tổng doanh thu phòng khám chi tiết: tổng doanh thu, doanh thu thuốc, doanh thu xét nghiệm.

Biến đầu vào: @BatDau, @KetThuc là thời gian bắt đầu và kết thúc truy vấn

Kết quả đầu ra: bảng tổng doanh thu phòng khám trong khoảng thời gian đó bao gồm : NgayThang, DoanhThu, DoanhThuThuoc, DoanhThuXN

CREATE FUNCTION [dbo].[UF_TongDoanhThuPhongKhamChiTiet](@BatDau date, @KetThuc date)

RETURNS @TongDoanhThuChiTiet TABLE (NgayThang date , DoanhThu money,

WHEN XN.NgayLamXetNghiem IS NULL THEN T.NgayLamPhieu

WHEN T.NgayLamPhieu IS NULL THEN XN.NgayLamXetNghiem

WHEN XN.NgayLamXetNghiem IS NULL THEN T.TongTien

WHEN T.NgayLamPhieu IS NULL THEN XN.TongTien

, DoanhThuThuoc = case when T.NgayLamPhieu is null then 0 else T.TongTien end

, DoanhThuXN = case when XN.NgayLamXetNghiem is null then 0 else XN.TongTien end

FROM (SELECT NgayLamXetnghiem,SUM(DonGia) AS TongTien FROM

UF_DanhSachXetNghiemTrongMotThoiGian (@BatDau,@KetThuc) GROUP BY

( SELECT NgayLamPhieu, SUM(GiaThuoc*SoLuongBan) AS TongTien FROM

UF_DanhSachLuongThuocBanTrongMotThoiGian(@BatDau,@KetThuc) GROUP BY NgayLamPhieu )AS T

4 Tạo procedure xoá một bệnh nhân.

Biến đầu vào: @MaBenhNhan là mã bệnh nhân cần xoá

CREATE PROC sp_XoaBenhNhan( @MaBenhNhan char (6))

SELECT @maPhieuKham = MaPhieuKham FROM dbo.PhieuKham WHERE MaBenhNhan =

SELECT @maDonThuoc = MaDon FROM dbo.DonThuoc WHERE MaPhieuKham =

DELETE dbo.ChiTietDonThuoc WHERE MaDon = @maDonThuoc

DELETE dbo.DonThuoc WHERE MaDon = @maDonThuoc

tạo cursor xoá phiếu xét nghiệm của bệnh nhân

DECLARE PXN_cursor CURSOR FORWARD_ONLY FOR SELECT MaPhieuXetNghiem FROM dbo.PhieuXetNghiem WHERE MaPhieuKham = @maPhieuKham

FETCH NEXT FROM PXN_cursor

BREAK DELETE dbo.SuDungXetNghiem WHERE MaPhieuXN = @maPhieuXetNghiem DELETE dbo.PhieuXetNghiem WHERE MaPhieuXetNghiem =

END CLOSE PXN_cursor DEALLOCATE PXN_cursor DELETE dbo.PhieuKham WHERE MaBenhNhan = @MaBenhNhan

DELETE dbo.BenhNhan WHERE MaBenhNhan = @MaBenhNhan

5 Tạo Function đưa ra danh sách các xét nghiệm trong ngày

Biến đầu vào: @NgayThang là ngày truy vấn

Kết quả: danh sách các xét nghiệm được làm trong ngày hôm đó: MaXetNghiem, TenXetNghiem, SoLuong, DonGia

The function [dbo].[UF_ThongKeXetNghiemTheoNgay] is designed to return a table containing statistics on laboratory tests conducted on a specific date It takes a date parameter, @NgayThang, and outputs a table, @ThongKeXetNghiemTheoNgay, which includes columns for test code (MaXetNghiem), test name (TenXetNghiem), quantity (SoLuong), and unit price (DonGia) The function populates this table by selecting data from the PhieuKham table, counting the occurrences of each test code and retrieving the corresponding test name and price.

JOIN dbo.PhieuXetNghiem AS PXN ON PXN.MaPhieuKham = PK.MaPhieuKham

JOIN dbo.SuDungXetNghiem AS SDXN ON PXN.MaPhieuXetNghiem = SDXN.MaPhieuXN

JOIN dbo.DanhMucXetNghiem AS DMXN ON DMXN.MaXetNgiem = SDXN.MaXetNghiem where PK.NgayLamPhieu = @NgayThang group by DMXN.MaXetNgiem, DMXN.TenXetNghiem, DMXN.DonGia return end

6 Tạo procedure xoá một nhân viên.

Biến đầu vào: @MaNhanVien là mã nhân viên cần xoá

CREATE PROC sp_XoaNhanVien(@maNhanVien char (3))

tạo cursor để xoá các phiếu xét nghiệm mà nhân viên đó làm

DECLARE PXN_cursor CURSOR FORWARD_ONLY FOR SELECT MaPhieuXetNghiem FROM dbo.PhieuXetNghiem WHERE MaNhanVien = @maNhanVien

FETCH NEXT FROM PXN_cursor INTO @maPhieuXetNghiem

DELETE dbo.SuDungXetNghiem WHERE MaPhieuXN = @maPhieuXetNghiem

DELETE dbo.PhieuXetNghiem WHERE MaPhieuXetNghiem =

tạo cursor để xoá tất cả các phiếu khám mà nhân viên đó thực hiện

DECLARE PK_cursor CURSOR FORWARD_ONLY FOR SELECT MaPhieuKham FROM dbo.PhieuKham WHERE MaNhanVien = @maNhanVien

FETCH NEXT FROM PK_cursor

BREAK SELECT @maDonThuoc = MaDon FROM dbo.DonThuoc WHERE MaPhieuKham =

DELETE dbo.ChiTietDonThuoc WHERE MaDon = @maDonThuoc

DELETE dbo.DonThuoc WHERE MaDon = @maPhieuKham

DELETE dbo.PhieuKham WHERE MaPhieuKham = @maPhieuKham

DELETE dbo.NhanVien WHERE MaNhanVien = @maNhanVien

7 Tạo procedure tổng tiền thuốc của bệnh nhân

Với các biến : @MaBenhNhan là bệnh nhân cần tính tiền thuốc

@Tien là tổng tiền thuốc mà bệnh nhân phải trả

CREATE PROC [dbo].[sp_TienThuocBN] (@MaBenhNhan char(6), @TienThuoc MONEY OUT) AS

SELECT @maPhieuKham = MaPhieuKham FROM dbo.PhieuKham WHERE MaBenhNhan =

SELECT @maDon = MaDon FROM dbo.DonThuoc WHERE MaPhieuKham = @maPhieuKham SELECT @TienThuoc = SUM(CT.SoLuongBan*T.GiaThuoc) FROM dbo.ChiTietDonThuoc

AS CT, dbo.Thuoc AS T WHERE CT.MaDon = @maDon AND CT.MaThuoc = T.MaThuoc

8 Tạo procedure tính tổng tiền xét nghiệm của bệnh nhân

CREATE ALTER PROC [dbo].[sp_TienXetNghiemBN]( @MaBenhNhan char(6), @TienXN money =0 OUT)

SELECT @maPhieuKham = MaPhieuKham FROM dbo.PhieuKham WHERE MaBenhNhan =

SELECT @TienXN = SUM(DM.DonGia) FROM dbo.PhieuXetNghiem AS XN , dbo.SuDungXetNghiem AS SD, dbo.DanhMucXetNghiem AS DM

WHERE XN.MaPhieuKham = @maPhieuKham AND XN.MaPhieuXetNghiem = SD.MaPhieuXN AND SD.MaXetNghiem = DM.MaXetNgiem

9 Tạo procedure đưa ra hoá đơn của bệnh nhân

@TongTien: số tiền mà bệnh nhân phải trả sau khi khám bệnh gồm tổng tiền thuốc và tiền xét nghiệm

CREATE PROC [dbo].[sp_HoaDonBN](@MaBenhNhan char(6), @TongTien money OUT)

EXEC sp_TienThuocBN @MaBenhNhan, @tienThuoc OUTPUT

EXEC sp_TienXetNghiemBN @MaBenhNhan, @tienXN OUTPUT

10 Tạo Function đưa ra danh sách xét nghiệm trong một khoảng thời gian Biến đầu vào @BatDau và @KetThuc là thời gian bắt đầu tính và thời gian kết thúc tính. Giá trị đầu ra: MaXetNghiem, TenXetNghiem, DonGia, NgayLamXetNghiem

CREATE FUNCTION [dbo].[UF_DanhSachXetNghiemTrongMotThoiGian](@BatDau date ,

RETURNS @DanhSachXetNghiemTrongMotThoiGian TABLE (MaXetNghiem CHAR(2) ,

TenXetNghiem nvarchar(30), DonGia money , NgayLamXetNghiem date )

SELECT DMXN.MaXetNgiem,DMXN.TenXetNghiem,DMXN.DonGia,Pk.NgayLamPhieu FROM dbo.PhieuKham AS PK

JOIN dbo.PhieuXetNghiem AS PXN ON PXN.MaPhieuKham = PK.MaPhieuKham

JOIN dbo.SuDungXetNghiem AS SDXN ON PXN.MaPhieuXetNghiem = SDXN.MaPhieuXN

JOIN dbo.DanhMucXetNghiem AS DMXN ON DMXN.MaXetNgiem = SDXN.MaXetNghiem

WHERE DATEDIFF(DAY,PK.NgayLamPhieu, @KetThuc)

Ngày đăng: 30/07/2021, 07:01

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w