Phân tích và thiết kế hệ thống thông tin quản lý bệnh nhân tại bệnh viện đa khoa tỉnh Khánh Hòa - Bùi Văn Mừng

pdf 49 trang huongle 3590
Bạn đang xem 20 trang mẫu của tài liệu "Phân tích và thiết kế hệ thống thông tin quản lý bệnh nhân tại bệnh viện đa khoa tỉnh Khánh Hòa - Bùi Văn Mừng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfphan_tich_va_thiet_ke_he_thong_thong_tin_quan_ly_benh_nhan_t.pdf

Nội dung text: Phân tích và thiết kế hệ thống thông tin quản lý bệnh nhân tại bệnh viện đa khoa tỉnh Khánh Hòa - Bùi Văn Mừng

  1. LUẬN VĂN TỐT NGHIỆP KHOA CÔNG NGHỆ THÔNG TIN Đề tài: Phân tích và thiết kế hệ thống thông tin quản lý bệnh nhân tại bệnh viện đa khoa tỉnh Khánh Hòa
  2. Lời nói đầu Ngày này cùng với sự phát triển vượt bậc của khoa học kỹ thuật thì công nghệ thông tin là một trong những lĩnh vực có nhiều đóng góp thiết thực nhất, công nghệ thông tin có mặt trong hầu hết các lĩnh vực của cuộc sống đặc biệt công nghệ thông tin là một công cụ hỗ trợ rất đắc lực trong công tác quản lý. Chúng ta dễ dàng thấy được việc đưa tin học vào trong quản lý kinh doanh là một trong những ứng dụng quan trọng trong rất nhiều ứng dụng cơ sở dữ liệu. Nhờ vào công tác tin học hóa mà công việc quản lý và điều hành doanh nghiệp tỏ ra rất nhanh chóng và hiệu quả. Chính vì lẽ đó mà cơ sở dữ liệu như là một giải pháp hữu hiệu nhất cho các doanh nghiệp có thể tồn tại và phát triển một cách nhanh chóng. Bệnh viện đa khoa tỉnh Khánh Hòa là một trong những trung tâm khám chữa bệnh lớn nhất tỉnh Khánh Hòa. Do đó nhu cầu ứng dụng cơ sở dữ liệu trong việc quản lý bệnh nhân là hết sức thiết thực. Vì vậy em chọn đề tài phân tích và thiết kế hệ thống thông tin quản lý bệnh nhân tại bệnh viện đa khoa tỉnh Khánh Hòa làm đề tài thực tập tốt nghiệp. Hệ thống được phân tích và thiết kế theo phương pháp có cấu trúc và được cài đặt trên môi trường Visual Basic 6.0 và được thiết kế dữ liệu dựa trên ngôn ngữ SQL Server 2000, các chương tiếp theo sẽ nói rõ hơn về vấn đề này Mặc dù có nhiều cố gắng nhưng vốn kiến thức chưa sâu nên không thể tránh khỏi những thiếu sót. Rất mong được sự góp ý của quý thầy cô,anh chị cùng các bạn để báo cáo được hoàn thiện hơn. Tôi xin chân thành cảm ơn phòng Kế Hoạch Tổng Hợp bệnh viện đa khoa tỉnh Khánh Hòa, quý thầy cô và các bạn đã tận tình giúp đỡ tôi hoàn thành báo cáo này đặc biệt là cô Nguyễn Kim Anh người trực tiếp hướng dẫn em trong suốt thời gian thực tập vừa qua. Sinh viên thực hiện: Bùi Văn Mừng
  3. Chương I: Giới Thiệu Nội Dung Đề Tài I. Giới thiệu hệ thống 1. Nhiệm vụ của hệ thống quản lý bệnh viện Hệ thống quản lý bệnh nhân là một hệ thống giúp cho chúng ta quản lý bệnh nhân đã và đang điều trị tại bệnh viện, cũng như trong quá trình khám chữa bệnh của bệnh nhân tại bệnh viện. Quản lý việc thanh toán tạm ứng của bệnh nhân với bệnh viện cũng như của bệnh viện với bảo hiểm y tế, quản lý lượng bệnh nhân đến điều trị tại bệnh viện trong những khoảng thời gian xác định. Đồng thời chúng ta đi thống kê số lượng Bệnh nhân mắc phải một số căn bệnh nào đó trong một thời gian trong năm để đưa ra phương pháp điều trị và đề phòng Đồng thời chúng ta còn thống kê được một số căn bệnh mà Bộ Y Tế và nhà nước quan tâm. 2 Tổ chức của bệnh viện đa khoa tỉnh Khánh Hòa a. Quản lý một số thông tin về nhân viên làm việc tại bệnh viện - Quản lý họ tên của nhân viên (chủ yếu là Y, Bác sĩ). - Quản lý địa chỉ của nhân viên. - Quản lý số điện thoại của nhân viên (nếu có). - Và quản lý một số thông tin khác của nhân viên để phục vụ cho việc quản lý bệnh nhân cũng như quá trình khám chữa bệnh của bệnh nhân trong bệnh viện được dễ dàng hơn như: khoa, chuyên môn, chức vụ. b. Quản lý dữ liệu về bệnh nhân điều trị tại bệnh viện Khi một bệnh nhân đến bệnh viện để khám chữa bệnh ta cần lưu trữ những thông tin sau: - Quản lý họ tên bệnh nhân (họ và tên bệnh nhân quản lý riêng). - Quản lý địa chỉ bệnh nhân(quản lý địa chỉ tới mức xã). - Quản lý bảo hiểm y tế của bệnh nhân. (nếu bệnh nhân có thẻ bảo hiểm y tế thì quản lý số thẻ bảo hiểm y tế và nếu bệnh nhân đó đang làm việc tại một cơ quan nào đó thì Quản lý thêm cơ quan mà bệnh nhân đó đang làm việc) - Trong quá trình khám chữa bệnh tại bệnh viện bệnh nhân có yêu cầu dùng thêm một số dịch vụ, chúng ta quản lý thêm trong quá trình đó bệnh nhân đã dùng những dịch vụ nào. - Quản lý hồ sơ chứng từ về các khoản tiền mà bệnh nhân phải đóng cho bệnh viện cũng như đã đóng cho bệnh viện (Tạm ứng). c. Quản lý quá trình khám chữa bệnh của bệnh nhân tại bệnh viện. - Bệnh nhân đến nơi tiếp nhận bệnh nhân (phòng cấp số) để đăng ký khám chữa bệnh và được chỉ định một vị trí khám bệnh. - Bệnh nhân được bác sĩ khám bệnh - Sau khi khám bệnh, bệnh nhân thuộc một trong hai loại: Điều trị tại nhà hoặc điều trị tại bệnh viện.
  4. + Nếu bệnh nhân điều trị tại nhà thì bác sĩ cho một đơn thuốc trong đó ghi đầy đủ tên thuốc, số lượng và cách dùng cũng như căn bệnh mà bác sĩ dự đoán. + Nếu bệnh nhân phải nhập viện thì bác sĩ cho một giấy nhập viện, trên đó ghi đầy đủ thông tin về bệnh nhân và căn bệnh dự đoán sau đó bệnh nhân được đưa đến khoa điều trị. - Tại khoa điều trị bệnh nhân được bác sĩ khám lại và cho một đơn thuốc trên đơn thuốc có ghi đầy đủ tên thuốc số lượng và cách dùng. Theo định kỳ bác sĩ sẽ khám bệnh lại cho bệnh nhân (tùy theo từng loại bệnh nhân). Trong quá trình điều trị tại bệnh viện bác sĩ sẽ lập một bệnh án của bệnh nhân trong đó ghi đầy đủ thông tin về bệnh nhân, căn bệnh mà bệnh nhân mắc phải cũng như diễn biến quá trình điều trị tại bệnh viện. - Trong quá trình điều trị bệnh nhân có thể yêu cầu dùng thêm một số dịch vụ như: X_quang, Siêu âm việc sử dụng này cũng theo sự chỉ định của bác sĩ, mỗi loại dịch vụ có một giá riêng. - Trong quá trình điều trị tại bệnh viện cứ ba ngày bệnh viện yêu cầu bệnh nhân đóng tạm ứng viện phí một lần. Nếu bệnh nhân có thẻ bảo hiểm y tế thì bệnh nhân chỉ phải đóng phần trăm viện phí theo quy định của bảo hiểm y tế. Trong quá trình điều trị nếu bệnh nhân không thanh toán viện phí mà tự ý xuất viện thì bệnh viện sẽ lưu lại toàn bộ thông tin về bệnh nhân đó. - Đối với bệnh nhân có thẻ bảo hiểm y tế thì vẫn phải nộp một phần viện phí theo phần trăm ghi trên bảo hiểm. - Theo chu kỳ hàng tháng bệnh viện thanh toán viện phí của bệnh nhân có bảo hiểm y tế với bảo hiểm y tế. 3. Những yêu cầu cần giải quyết - Bệnh nhân có những yêu cầu sau: + Tổng chi phí trong thời gian điều trị tại bệnh viện. + Tổng số tiền đã đóng. + Tổng số tiền mà bệnh nhân phải đóng. + Cần biết chi tiết các khoản phải đóng. - Các bác sĩ cần biết những thông tin sau: + Cần biết rõ diễn biến bệnh của bệnh nhân mà mình đang điều trị. + Cần tìm kiếm một số trường hợp tương tự để tìm lấy một số giải pháp chữa trị hữu hiệu nhất. + Cần thống kê bệnh nhân theo từng mùa hoặc theo từng bệnh để đưa ra một số phương án hoạt động dự phòng một số bệnh theo từng mùa hoặc theo từng khu vực - Người nhà bệnh nhân cần biết + Biết được diễn biến chính xác bệnh của người nhà mình (có một số trường hợp bác sĩ không thể nói trực tiếp với bệnh nhân được nên phải nói với người nhà bệnh nhân)
  5. + Có thể biết quá trình điều trị của người nhà mình cũng như biết rõ được người nhà mình đang được điều trị như thế nào. - Đối với nhân viên tài chính của bệnh viện + Tổng số tiền tạm ứng mà bệnh nhân đã đóng và chưa đóng (còn lại là bao nhiêu). + Tổng số bệnh nhân điều trị trong tháng có bảo hiểm y tế, và tổng chi phí của những bệnh nhân này để thanh toán với bảo hiểm y tế. 4. Hướng phát triển của hệ thống quản lý bệnh nhân hiện nay. Ngày nay với sự ra đời và phát triển nhanh chóng của máy tính đã làm thay đổi phong cách làm việc của hầu hết các cơ quan tư nhân cũng như nhà nước. Trước kia mọi thủ tục cũng như việc lưu trữ đều dựa trên giấy tờ do đó rất khó khăn trong việc tìm kiếm một hồ sơ về một người, cũng như tìm kiếm một vấn đề nào đó trong rất nhiều hồ sơ lưu trữ, chưa kể đến việc thống kê theo một tiêu chí nào đó Ngày nay với sự trợ giúp của máy tính chúng ta có thể thực hiện các công việc đó một cách dễ dàng, nhanh chóng và chính xác. Với hệ thống quản Lý bệnh nhân chúng ta có thể thực hiện việc tìm kiếm một bệnh nhân, cũng như việc thống kê bệnh nhân theo những tiêu chí mà ban lãnh đạo bệnh viện đưa ra một cách nhanh chóng và hiệu quả II. Hướng thực thi đề tài - Đối tượng sử dụng: Đối tương sử dụng hệ thống chủ yếu la nhân viên trong bệnh viện (chủ yếu là những người dùng chuyên nghiệp, có những hiểu biết nhất định về chuyên môn cũng như tin học) nên việc thiết kế một hệ thống sử dụng chuyên nghiệp là việc cần thiết. - Vấn đề phân tích bài toán: Trong đề tài này em phân tích theo phương pháp có cấu trúc, vì các lẽ như sau: + Phương pháp có cấu trúc, trải qua thời gian đã chứng tỏ được tính kinh điển của nó. + Phương pháp có cấu trúc là phương pháp dung dị, không cầu kỳ như một số phương pháp khác, dễ áp dụng, nhưng lại rất hữu hiệu. Ngày nay nó chưa lạc hậu mà vẫn còn phát huy tác dụng. - Vấn đề lựa chọn ngôn ngữ cũng là một vấn đề hết sức quan trọng. Hiện nay có rất nhiều hệ quản trị cơ sở dữ liệu như Oracle, Access, Fospro, SQL Server, Song để phù hợp với cách quản lý tại bệnh viện hiện nay và để cho hệ thống phát triển sau này (có thể đưa lên mạng Internet cũng như mạng liên bệnh viện ). Em đã lựa chọn ngôn ngữ SQL Server 2000 làm ngôn ngữ thiết kế dữ liệu và ngôn ngữ Visual Basic 6.0 làm ngôn ngữ thiết kế giao diện. Đặc điểm về hai ngôn ngữ này sẽ được trình bày kỹ ở chương giới thiệu ngôn ngữ (các chương tiếp theo). Tuy nhiên trong đề tài này em cài đặt hệ thông trên máy đơn.
  6. Chương II. Giới thiệu ngôn ngữ cài đặt hệ thống I. Giới thiệu chung về hệ quản trị cơ sở dữ liệu và SQL Server 2000 I.1 Hệ quản trị cơ sở dữ liệu là gì? Một hệ quản trị cơ sở dữ liệu là một hệ thống các chương trình hỗ trợ các tác vụ quản lý, khai thác dữ liệu theo mô hình cơ sở dữ liệu quan hệ. SQL Server là một hệ thống quản Lý cơ sở dữ liệu quan hệ (RDBMS) hay còn được gọi là Relation Database Management System. Cơ sở dữ liệu quan hệ là cơ sở dữ liệu mà dữ liệu bên trong nó được tổ chức thành các bảng. Các bảng được tổ chức bằng cách nhóm dữ liệu theo cùng chủ đề và có chứa các cột và các hàng thông tin. Sau đó các bảng này lại liên hệ với nhau bởi Database Engine khi có yêu cầu. RDBMS là một trong những mô hình cơ sở dữ liệu thông dụng nhất hiện nay. I.2 Giới thiệu chung về SQL Server 2000 SQL (Structured Query Language) là ngôn ngữ dùng để truy vấn cơ sở dữ liệu, hay nói cách khác đây là ngôn ngữ truy vấn cho phép lấy thông tin về từ các bảng dữ liệu. SQL Server 2000 tối ưu hơn nhiều so với cơ sở dữ liệu quan hệ. Chúng phát triển để sử dụng trên nhiều ấn bản như: CE, Personal, Desktop Engine, Standard Developer, Enterprise. SQL Server 2000 hỗ trợ kiểm tra khóa chính, phụ thuộc tồn tại, miền giá trị, của dữ liệu bên trong các bảng một cách chặt chẽ. SQL Server 2000 hỗ trợ khá mạnh cho cơ sở dữ liệu đa truy cập, cơ sở dữ liệu mạng, Những thành phần chính trong SQL Server 2000 Hệ Thống Diễn Tả ấn Bản SQL Server Đây là phần chính của hệ thống, là trung tâm Desktop 2000 điều hành những phần thực thi khác. Với Engine Desktop Engine bạn sẽ thấy các dịch vụ Personal trong hệ thống như: SQL Server Profiler, Standard và một số công cụ khác. Developer Enterprise Full – Text Đây là phần tự chọn trong lúc cài đặt, nếu Personal Sarch bạn muốn chức năng tìm kiếm thì nên chọn (Except hệ thống này vì chúng không là phần mặc Win95) nhiên. Standard Full – Text Sarck cung cấp chức năng tìm Developer kiếm (Word) rất mạnh, nếu sử dụng Iternet Enterprise
  7. để tìm kiếm thì đây là một giải pháp tuyệt vời. Nếu bạn muốn tìm kiếm một chuỗi con trong một văn bản lớn thì đây là công cụ thích hợp cho công việc đó. English Query English Query cho phép người sử dụng Personal không có kỹ thuật về SQL cũng có thể sử Standard dụng SQL Server, bằng cách đặt câu hỏi Developer chuỗi English sau đó được dịch ra Query mà Enterprise có thể thực thi trên SQL Server. Analusis Phần này không bao gồm mặc định trong Personal Services phần cài đặt, chúng là dạng sản phẩm tự Standard chọn, là công cụ phân tích OLAP (Online Developer Analysis Processing), sử dụng cho cơ sở dữ Enterprise liệu lớn. Replication Chức năng này cho phép tái tạo một bản sao Desktop đến SQL Server khác, thông thường dùng Engine chức năng này cho các hệ thống Server từ xa Personal hay trong Network, nhằm để làm giảm trao Standard đổi dữ liệu giữa các SQL Server với nhau. Developer Enterprise Data Data Transformation Servise (DTS) được mở Desktop Transformation rộng trong phiên bản SQL Server 2000, bao Engine Servise gồm những chức năng trao đổi dữ liệu giữa Personal các cơ sở dữ liệu, và giao tiếp dữ liệu giữa Standard các cơ sở dữ liệu khác nhau, đây là những Developer giải pháp lập trình trên Visual Basic. Enterprise 1. Các thành phần của SQL Server 2000. RDBMS cũng như SQL Server chứa đựng nhiều đối tượng bao gồm: - Database: cơ sở dữ liệu SQL Server . - Tập tin log: Tập tin lưu trữ những chuyển tát của SQL. - Tables: Bảng dữ liệu. - Filegroups: Tập tin nhóm. - Diagrams: Sơ đồ quan hệ. - Views: Khung nhìn (hay bảng ảo) số liệu dựa trên bảng. - Stored Procedure: Các thủ tục lưu trữ và hàm nội. - Users defined: Hàm do người dùng định nghĩa. - Users: Người sử dụng cơ sở dữ liệu. - Rules: Những quy tắc. - Defaults: Các giá trị mặc nhiên. - User - defined data type: Kiểu dữ liệu do người dùng định nghĩa. - Full - text catalogs: Tập phân loại dữ liệu text.
  8. 2. Các đối tượng cơ sở dữ liệu Cơ sở dữ liệu là đối tượng có ảnh hưởng cao nhất khi bạn làm việc với SQL Server, tuy nhiên những đối tượng con của cơ sở dữ liệu mới là thành phần chính của cơ sở dữ liệu. Bản thân SQL Server là một hệ quản trị cơ sở dữ liệu, chúng bao gồm các đối tượng như database, table, view, procedure nêu trên cùng một số cơ sở dữ liệu hỗ trợ khác. Cơ sở dữ liệu SQL Server là cơ sở dữ liệu đa người dùng, với mỗi Server bạn chỉ có một hệ quản trị cơ sở dữ liệu. Nếu muốn có nhiều hệ quản trị cơ sở dữ liệu bạn cần có nhiều Server tương ứng. Truy cập cơ sở dữ liệu SQL Server dựa vào những tài khoản người dùng riêng biệt và ứng với quyền truy nhập nhất định. Cài đặt cơ sở dữ liệu SQL Server bạn có 6 cơ sở dữ liệu mặc định sau: - Master: Bất kỳ SQL Server nào đều có cơ sở dữ liệu Master (còn gọi là master file), cơ sở dữ liệu này chứa đựng tất cả các bảng dữ liệu đặc biệt (bảng hệ hệ thống), chúng kiểm soát tất cả hoạt động của hệ quản trị cơ sở dữ liệu SQL Server. Ví dụ: Khi người dùng cơ sở dữ liệu mới trong SQL Server, thêm hoặc xóa một Procedure thì tất cả thông tin này đều được lưu trữ trong cơ sở dữ liệu Master của hệ thống. - Model: Cơ sở dữ liệu này chứa đựng tất cả Template dùng làm mẫu để tạo cơ sở dữ liệu mới. Khi bạn tạo một cơ sở dữ liệu thì SQL Server lấy tất cả các mẫu (bao gồm bảng, view, ) từ cơ sở dữ liệu model này. Xuất phát từ tính chất cơ sở dữ liệu mẫu giúp SQL Server thực hiện việc tao mới cơ sở dữ liệu cho người dùng khi có yêu cầu, bạn không được xóa cơ sở dữ liệu này. Khi một cơ sở dữ liệu được tạo ra thì ít nhất cơ sở dữ liệu mới này cũng bằng và giống như cơ sở dữ liệu model. - Msdb: Như đã nêu, chúng ta có hai cơ sở dữ liệu hệ thống master và model, nếu xóa một trong hai cơ sở dữ liệu này thì hệ thống SQL Server sẽ bị lỗi, nhưng với cơ sở dữ liệu Msdb thì khác. Msdb chính là SQL Agent lưu trữ tất cả các tác vụ xảy ra trong SQL Server. - Tempdb: Là một trong những cơ sở dữ liệu chính trong SQL Server. Cơ sở dữ liệu này cho phép người dùng tạo những ứng dụng tham khảo hay thực tập trước khi bạn bắt đầu với cơ sở dữ liệu thực. Ngoài ra chúng còn giúp thực hiện những thao tác về cơ sở dữ liệu mỗi khi SQL Server khởi động. - Pubs: Chứa hầu hết nội dung về hướng dẫn, trợ giúp và sách tham khảo về SQL Server. - Northwind: Cũng giống như cơ sở dữ liệu Pubs, đây là cơ sở dữ liệu mẫu cho người dùng tham khảo, hoặc cho các lập trình viên Visual Basic hay Assces dùng truy cập dữ liệu SQL Server. Cơ sở dữ liệu này được cài đặt như một phần của SQL Server, nếu cần dùng cấu trúc của hai cơ sở dữ liệu này bạn có thể sử dụng hai file kịch bản script mang tên inspub.sql và insnwnd.sql.
  9. - Tập tin Log: Tập tin chứa đựng những hoạt động, hay tất cả những chuyển tác của cơ sở dữ liệu theo thời gian. Thông thường khi cần tìm hiểu sự cố xảy ra với cơ sở dữ liệu, người ta chỉ cần tham khảo tập tin log sẽ biết được nguyên nhân. 3. Giới thiệu một số đối tượng cơ sở dữ liệu SQL Server - Bảng - Table Trong cơ sở dữ liệu, bảng (Table) là phần chính của chúng. Do bảng là đối tượng lưu trữ dữ liệu thực, khi cần giao tiếp với cơ sở dữ liệu khác bảng là đối tượng căn bản nhất trong bất kỳ cơ sở dữ liệu nào, chúng được coi như một miền dữ liệu. Mỗi bảng được định nghĩa nhiều trường, mỗi trường (Field còn gọi là Column name) ứng với mỗi loại kiểu dữ liệu. Dữ liệu nhập vào có thể chấp nhận hoặc từ chối tùy thuộc vào nguyên tắc ràng buộc dữ liệu hoặc loại dữ liệu tương thích do hệ thống hay người dùng định nghĩa. Khi định nghĩa bảng cơ sở dữ liệu bạn cần quan tâm đến các yếu tố sau: + Key: Trường đó là khóa hay không (Primary key)? + ID: Trường đó có thuộc tính Indentity hay không? + Column name: Tên của trường (cột ) + Data type: Loại dữ liệu cho trường tương ứng + Size: Kích thước trường dữ liệu + Allow null: Cho phép giá trị rỗng lưu trong trường này hay không + Default: Giá trị mặc nhiên cho trường + Identity: Nếu ta sử dụng một trường có giá trị tự động như autonumber trong assces, trường này Not Null và Identity: Yes(No) + Identity Seed: Nếu trường (cột) này là Identity, cần số bắt đầu là 1 hoặc 2 + Identity Increament: Số nhảy cho mỗi lần tăng - Chỉ Mục - Indexs Đối tượng chỉ mục (Indexs) chỉ tồn tại trong bảng hay khung nhìn (view). Chỉ mục có ảnh hưởng đến tốc độ truy nhập số liệu, nhất là khi cần tìm kiếm thông tin trên bảng. Chỉ mục giúp tăng tốc cho việc tìm kiếm. + Clustered: ứng với loại chỉ mục này có một bảng có thể có nhiều chỉ mục và số liệu được sắp xếp theo trường dữ liệu mà bạn trỏ đến. - Bẫy lỗi - Triggers Là đối tượng chỉ tồn tại trong bảng, cụ thể là một đoạn mã và tự động thực hiện khi một hành động nào đó xảy ra đối với dữ liệu trong bảng như Insert, Update, Delete, Trigger có thể bẫy rất nhiều tình huống như copy dữ liệu, xóa dữ liệu, cập nhật dữ liệu, kiểm tra dữ liệu theo một tiêu chuẩn nào đó - Lược đồ quan hệ - Diagram
  10. Khi xây dựng cơ sở dữ liệu cho ứng dụng hay thương mại điện tử, thường đều phải dựa trên trình phân tích và thiết kế hệ thống. Sau những bước phân tích và thiết kế, chúng ta sẽ thiết lập quan hệ dữ liệu giữa các thực thể ERD (Entity relationship diagram). - Khung nhìn - View View là khung nhìn (hay bảng ảo) của bảng. Cũng giống như bảng nhưng view không thể chứa dữ liệu, bản thân view có thể tạo nên trường mới dựa vào những phép toán biểu thức của SQL Server. - Thủ tục lưu trữ - Stored Procedure Stored Procedure còn gọi là Spocs, tiếp tục phát triển như một phần SQL trên cơ sở dữ liệu. Stored Procedure cho phép khai báo biến, nhận tham số cũng như thực thi các phát biểu có điều khiển. Stored Procedure có các ưu điểm lớn như sau. + Kế thừa tất cả các phát biểu của SQL, và là một đối tượng xử lý số liệu hiệu quả nhất khi dùng SQL Server. + Tiết kiệm thời gian thực thi trên dữ liệu. + Có thể gọi Stored Procedure theo cách gọi thủ tục hay hàm trong ngôn ngữ lập trình truyền thống, đồng thời sử dụng lại khi yêu cầu. - Sử dụng kiểu dữ liệu Cursor (Cursor type) Khi dùng cơ sở dữ liệu SQL Server, nếu có nhu cầu tính toán trên bảng số liệu, chuyển tác thực hiện trên từng mẩu tin, ta nên nghĩ đến kiểu dữ liệu Cursor. 4. Kiểu dữ liệu - Data Type Bất kỳ trường nào trong bảng (Table) của cơ sở dữ liệu đều phải có kiểu dữ liệu. Một số kiểu dữ liệu SQL Server cho phép định nghĩa chiều dài của kiểu trong khi một số kiểu khác thì không. Cũng như những ngôn ngữ lập trình khác SQL Server cung cấp đầy đủ kiểu dữ liệu cần thiết, như: Kiểu số nguyên (Binary, Int, TinyInt, ), kiểu tiền tệ (Money, SmallMoney, ), kiểu chuỗi (Char, nchar, Varchar, Text, ) và nhiều kiểu dữ liệu khác. Ngoài ra SQL Server cong cho phép chuyển đổi qua lại giữa các kiểu dữ liệu, tuy nhiên điều này cũng có một số hạn chế đối với một số kiểu dữ liệu. Ví dụ: kiểu binary không thể nhận sự chuyển đổi từ dữ liệu kiểu Float hay Real, 5. Một số phát biểu cơ bản của T-SQL T-SQL còn gọi là Transact-SQL (SQL) bao gồm các phát biểu như SELECT, INSERT, UPDETE, DELETE - Lệnh Select SELECT FROM [WHERE ] [GROUP BY ] [HAVING ]
  11. [ORDER BY ] Trong đó tất cả các phát biểu nằm trong cặp dấu ngoặc [] thì có thể có hoặc có thể không có. ORDER BY dùng để hiển thị kết quả truy vấn theo tiêu chuẩn của người dùng. Nếu thiếu tham số này thì việc sắp xếp sẽ theo thứ tự ALPHABET. Ngoài những câu lệnh truy vấn trên trong SQL Server còn cung cấp một số hàm cũng như một số biểu thức tính toán, - Lệnh INSERT Để thêm dữ liệu vào bảng (Table) ta dùng câu lệnh truy vấn INSERT cú pháp như sau: INSERT INTO (danh sách cột) VALUES (Danh sách giá trị) - Lện UPDATE Để sửa dữ liệu trong một bảng đã có sắn ta dùng câu truy vấn UPDATE cú pháp như sau: UPDATE FROM SET = WHERE - Lệnh DELETE Để xóa dữ liệu trong một bảng ta dùng câu lệnh truy vấn DELETE cú pháp như sau: DELETE FROM WHERE Ngoài ra trong SQL Server còn có những phát biểu cho phép kết nối nhiều bảng với nhau (JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN) 6. Khái niệm về đối tượng trong SQL và cách tạo đối tượng trong SQL Server 2000 a. Tạo cơ sở dữ liệu (CREATE DATABASE) Để tạo một cơ sở dữ liệu trong SQL Server ta dùng cú pháp như sau: CREATE DATABASE [ON[PRIMARY]( [Name= ,] File Name= [,SIZE=<Size in Megabyte or KiloByte] [,MAXSIZE=<Size in Megabyte or Kilobyte] FILEGROWTH=<NO of Kylobyte | Percentage] )] (LOG ON
  12. [Name= ,] FileName= [,SIZE= ] [,MAXSIZE= ] FILEGROWTH= ] )] [COLLATE ] [For Load | For Attach] Trong đó: - ON: Định nghĩa nơi chứa dữ liệu và không gian chứa tập tin log - Name: Tên tập tin cơ sở dữ liệu trên đĩa cứng, lưu ý khi tạo cơ sở dữ liệu ta đặt tập tin ở vị trí nào thì không thể di chuyển một cách thủ công được. - SIZE: Cho biết dung lượng cơ sở dữ liệu khi tạo chúng. Thông thường là 1 MB - MAXSIZE: Dung lượng lớn nhất, khi dung lương cơ sở dữ liệu tăng đến mức Maxsize thì dừng lại. - FILEGROWTH: Dung lượng khởi tạo cùng dung lượng tối đa trong quá trình thêm dữ liệu vào cơ sở dữ liệu. - Log ON: Cho phép quản lý chuyển tác xảy ra trong quá trình sử dụng cơ sở dữ liệu của SQL Server. Thông thường chúng chiếm khoảng 25% dung lượng tập tin dữ liệu. Ngoài việc tạo cơ sở dữ liệu bằng mã lệnh trong SQL Server còn cho phép tạo cơ sở dữ liệu bằng giao diện đồ họa. Để tạo cơ sở dữ liệu ta dùng trình SQL Server Enterprise Manager. Việc thực hiện bằng giao diện đồ họa có vẻ đơn gian và hiệu quả hơn. b. Tạo bảng (CREATE TABLE) Tạo bảng trong cơ sở dữ liệu cũng giống như tạo các đối tượng khác trong SQL Server. Cú pháp đầy đủ để tạo bảng như sau: CREATE TABLE [Database_name.[owner].table_name ( [[DEFAULT ] [[IDENTITY (seed, increament) [NOT FOR REPLICATION]]]] [ROWGUIDCOL] [NULL | NOT NULL] [ ] [column_name as computed_columns_expression ) ON { > | DEFAULT}
  13. - Tên cột (Column name): Tên cột cũng giống như tên bảng và tên cơ sở dữ liệu không có khoảng trắng, không bắt đầu bằng chữ số và các ký tự đặc biệt, tuy nhiên chúng ta nên đặt tên ngắn gọn dễ nhớ - Kiểu dữ liệu (Data type): Khi xây dựng cơ sở dữ liệu tất cả các trường trong bảng cần phải có kiểu dữ liệu cụ thể. Vấn đề là chọn dữ liệu nào cho phù hợp với dữ liệu mà người dùng sẽ nhập vào. - Giá trị mặc nhiên (Default): Gán giá trị mặc nhiên cho những cột không có giá trị. - IDENTITY: Đây là giá trị cực kỳ quan trọng trong SQL Server. Khi chúng ta muốn một cột có giá trị tự động tăng. - NULL | NOT NULL: Là trạng thái của một cột có cho phép null hay không. - Ràng buộc (Column constrain): Kiểm tra dữ liệu khi dữ liệu mới được đưa vào cột hoặc dữ liệu bị thay đổi. - Ràng buộc bảng dữ liệu (TABLE CONSTRAINTS): Ràng buộc bảng cũng giống như ràng buộc cột trong bảng, là kiểm tra dữ liệu nhập vào bảng theo một quy luật đã định sẵn. Song cũng có thể tạo bảng bằng giao diện đồ họa như tạo cơ sở dữ liệu. Trong khi xây dựng bảng dữ liệu cần chú ý đến các trường khóa c. Tạo view View là bảng ảo và cũng như với bảng view cũng có thể tạo được bằng mã lệnh cũng như giao diện đồ họa View cho phép kết nối nhiều bảng với nhau để hiển thi thông tin. d. Tạo thủ tục lưu trữ (Stored Procedure hay sp) Stored Procedure là một phần cực kỳ quan trọng trong cơ sở dữ liệu SQL Server. Nếu biết SQL Server mà không biết Stored Procedure là một thiếu sót rất lớn. Cú pháp để tạo một Stored Procedure như sau: CREATE PROCEDURE | PRO [ [VARYING] [= ][OUT PUT], [ [VARYING] [= ][OUT PUT][, [WITH RECOMPILE | ENCRIPTION | RECOMPILE, ENCRIPTION] [FOR REPLICATION] AS GO
  14. Đó là cú pháp đầy đủ để tạo một Stored Procedure song ta có thể tạo Stored Procedure bằng giao diện đồ họa Ví dụ tạo một Stored Procedure đơn giản USE dbBENHNHAN GO Create proc Sp_NhapXa @MaXa nchar(9), @TenXa char(30), @MaHuyen nchar(6) AS Insert Into tblXa ( MaXa, TenXa,MaHuyen ) Values ( @MaXa,@TenXa,@MaHuyen ) GO Trên đây ta trình bày một Stored Procedure dùng để nhập một xã vào bảng tblXa. e. Tạo hàm (Function) Tương tự như Stored Procedure hàm cũng có thể tạo bằng giao diện đề họa cũng như mã lệnh, song với hàm giá trị trả về là đa dạng hơn và giá trị trả về này có thể là một bảng. Ví dụ tạo hàm thống kê bệnh nhân theo tỉnh, hàm này trả về một bảng chứa thông tin về các bệnh nhân trong tỉnh CREATE FUNCTION udf_ThongKeBenhNhanTheoTinh (@TenTinh Char(30)) RETURNS Table AS Return Select * From tblBenhNhan Where tblBenhNhan.MaXa in thuoc xa (Select MaXa
  15. From tblXa Where tblXa.MaHuyen in thuoc huyen (Select MaHuyen From tblHuyen Where tblHuyen.MaTinh in thuoc tinh ( Select MaTinh From tblTinh Where tblTinh.TenTinh=@TenTinh))) II. giới thiệu về Visual Basic 6.0 và cơ sở dữ liệu trong Visual Basic 6.0. II.1 Giới thiệu chung về Visua Basic Visua Basic là một trong những ngôn ngữ lập trình bậc cao thông dụng nhất hiện nay, là một sản phẩm của Microsoft. Nó cũng giống như hầu hết các ngôn ngữ lập trình bậc cao khác, trong Visua Basic chứa đầy đủ các câu lệnh cần thiết, các hàm xây dựng sẵn, Ngoài ra Visual Basic chứa một số phương tiện giúp cho việc áp dụng kỹ thuật hướng đối tượng trong việc truy cập dữ liệu. Trong Visual Basic có rất nhiều phương pháp truy cũng như các đối tượng truy cập dữ liệu như: ADO, ADODB, DAO, nói chung các đối tượng này có những thuộc tính tương đối giống nhau. Trong luận văn này em chủ yếu đi sâu vào đối tượng ADO. Vì ADO là một công cụ truy cập dữ liệu rất hữu hiệu và ADO cũng được cài đặt trong chương trình. II.2 ADO là gì ? ADO (Activex Data Object hay đối tượng dữ liệu ActiveX). Ta có thể hình dung rằng ADO là một mô hình làm giảm kích thước của mô hình RDO (Đối tượng dữ liệu từ xa). Mô hình đối tượng dữ liệu ActiveX rất gọn. Nó được thiết kế để cho phép lập trình viên lấy được một tập các Record từ nguồn dữ liệu một cách nhanh nhất nếu có thể. Tốc độ và tính đơn giản là một trong những mục tiêu cốt lõi của ADO, mô hình này được thiết kế để cho phép tạo ra một đối tượng Recordset mà không cần phải di chuyển qua các đối tượng trung gian khác trong quá trình lập trình. Thực tế chỉ có ba đối tượng chính trong mô hình: - Connection: Đại diện kết nối thực sự. - Command: Được sử dụng để thực thi các query dựa vào kết nối dữ liệu. - Recordset: Đại diện cho một tập các Record được chọn query thông qua đối tượng Command. Đối tượng Connection chứa một tập các đối tượng còn gọi là các đối tượng Errors đối tượng này giữ lại bất kỳ một thông tin lỗi nào có liên quan đến kết nối. Đối tượng Command có một tập các đối tượng con là Paramenters để giữ bất cứ tham số nào có thể thay thế cho query. Recordset cũng có một tập các đối tượng con Properties để lưu các thông tin chi tiết về đối tượng. Connectio n Command Parameter
  16. II.3 Các thuộc tính đặc biệt của đối tượng ADO Mô hình ADO có một số thuộc tính mà các mô hình cơ sở dữ liệu khác như DAO và RDO không có. Các thuộc tính này điều khiển cách thức tạo ra Dataset và quyền hạn truy cập trong một kết nối dữ liệu, có bảy thuộc tính như sau: - Connection String (Chuỗi kết nối) - Command Texxt (Văn bản câu lệnh) - Command Type (Kiểu câu lệnh) - Cursor Location (Định vị con trỏ) - Cursor Type (Kiểu con trỏ) - Look Type (Kiểu khóa) - Mode Type (Kiểu chế độ làm việc) Ví dụ: Để tạo kết nối đến cơ sở dữ liệu SQL Server với tên cơ sở dữ liệu dbBenhNhan ta có mã lệnh như sau: Public Sub OpenConnection() ' Tạo kết nối đến nguồn dữ liệu Set cn = New ADODB.Connection cn.Provider = "SQLOLEDB.1;" cn.ConnectionString = " Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dbBenhNhan" cn.Open End Sub Ngoài ra trong Visual Basic còn chứa một số kiểu dữ liệu thông dụng khác cũng như Visual Basic cho phép lập trình viên tự định nghĩa kiểu và cũng như hầu hết các ngôn ngữ lập trình khác, ngoài ra Visual Basic còn có các câu lệnh chuẩn khác,
  17. Chương III. Phân Tích Và Thiết Kế Hệ Thống I. Phân tích hệ thống về chức năng I.1 Biểu đồ phân cấp chức năng 1. Biểu đồ phân cấp chức năng là gì ? Là một loại biểu đồ diễn tả sự phân rã dần dần các chức năng từ đại thể đến chi tiết. Mỗi nút trong biểu đồ là một chức năng, và quan hệ duy nhất giữa các chức năng, diễn tả bởi các cung nối liền các nút, là quan hệ bao hàm. như vậy biểu đồ phân cấp chức năng tạo thành một cấu trúc cây Sau khi tìm hiểu và phân tích hệ thông quản Lý bệnh nhân tại bệnh viện tỉnh Khánh Hòa em đã đưa ra được biểu đồ phân cấp chức năng như sau: Quản lý bệnh nhân 0 Cấp số Khám bệnh Thu viên phí 1 2 3 Cấp Tiếp Cung Lập thuốc nhận cấp DV bệnh án 2.1 BN 2.3 2.4 2.2 Thu tạm Thanh ứng BN toán với 3.1 BHYT 3.2
  18. 2. Đặc điểm của biểu đồ phân cấp chức năng: - Cho một cách nhìn khái quát, dễ hiểu, từ đại thể đến chi tiết về các chức năng, nhiệm vụ cần thực hiện (thường ở mức diễn tả logic) - Rất dễ thành lập, bằng cách phân rã dần các chức năng từ trên xuống - Có tính chất tĩnh, bởi chúng chỉ cho thấy các chức năng mà không cho thấy trình tự xử lý. - Thiếu vắng sự trao đổi thông tin giữa các chức năng. Vì những lý do trên nên biểu đồ phân cấp chức năng thường được sử dụng làm mô hình chức năng trong bước đầu phân tích, hoặc cho các hệ thống đơn giản. Nếu hệ thống phức tạp thì biểu đồ phân cấp chức năng là quá sơ lược và còn thiếu sót nêu trên nên không thể châm trước được. Khi đó chúng ta thường dùng biểu đồ luồng dữ liệu I.2 Biểu đồ luồng dữ liệu 1. Biểu đồ luồng dữ liệu là gì ? Biểu đồ luồng dữ liệu là một loại biểu đồ nhằm mục đích diễn tả một quá trình xử lý thông tin với các yêu cầu sau: - Sự diễn tả ở mức logic, nghĩa là nhằm trả lời câu hỏi “Làm gì”, mà bỏ qua câu hỏi “làm như thế nào ?”. - Chỉ rõ các chức năng (con) phải thực hiện để hoàn tất quá trình xử lý cần mô tả - Chỉ rõ các thông tin được chuyển giao giữa các chức năng đó, và qua đó phần nào thấy được trình tự thực hiện của chúng. 2. Kỹ thuật phân mức Kỹ thuật này còn được gọi là “Phân tích từ trên xuống” (top-down analysis) tiến hành phân tích chức năng của hệ thống bằng cách đi dần từ một mô tả đại thể đến những mô tả chi tiết thông qua nhiều mức. Sự chuyển dịch từ một mức tới mức tiếp theo thực chất là phân ra một chức năng thành một số chức năng con ở mức dưới. Với biểu đồ luồng dữ liệu thì quá trình phân tích trên xuống lại là quá trình thành lập dần dần các biểu đồ luồng dữ liệu diễn tả các chức năng của hệ thống theo từng mức. Mỗi mức là một tập hợp các biểu đồ luồng dữ liệu. Mức 0, hay mức bối cảnh chỉ gồm biểu đồ luồng dữ liệu, trong đó chỉ có một chức năng duy nhất, trao đổi các luồng thông tin với các đối tác. Mức 1, còn gọi là mức đỉnh, cũng chỉ dùng một biểu đồ luồng dữ liệu, và mức 2, 3, , mỗi mức gồm nhiều hơn 1 biểu đồ luồng dữ liệu được thành lập như sau: - Cứ mỗi chức năng ở mức trên, ta thành lập một biểu đồ luồng dữ liệu, ở mức dưới, gọi là biểu đồ luồng dữ liệu định nghĩa chức năng đó theo cách sau: + Phân rã chức năng đó thành nhiều chức năng con. + Vẽ lại luồng dữ liệu vào và ra chức năng trên, nhưng nay phải vào hay ra chức năng con thích hợp. + Nghiên cứu các quan hệ về dữ liệu giữa các chức năng con, nhờ đó bổ sung các luồng dữ liệu nội bộ hoặc các kho dữ liệu nội bộ.
  19. - Các chức năng được đánh số theo ký pháp chấm, cho phép theo dõi vệt triển khai trên xuống Thông qua tìm hiểu hệ thống quản lý bệnh nhân tại bệnh viện tỉnh Khánh Hòa ta có biểu đồ luồng dữ liệu của hệ thống như sau: Biểu đồ luồng dữ liệu mức bối cảnh: Trong biểu đồ luồng dữ liệu mức bối cảnh chỉ có một chức năng 0 (chức năng quản lý bệnh nhân), các tác nhân của hệ thống gồm: Bệnh nhân, khoa điều trị và phòng tài chính. Kết quả bệnh nhân Yêu cầu KB Quản lí Chi phí bệnh khám chữa nhân bệnh 0 Kế Danh t Chi Danh sách phí sách BN BN điều nhập viện Bệnh trị án Khoa điều trị Phòng tài chính Biểu đồ luồng dữ liệu mức bối cảnh
  20. Biểu đồ luồng dữ liệu mức đỉnh: Chức năng quản lý bệnh nhân được phân ra thành các chức năng cấp số, khám bệnh, thanh toán viện phí. Ngoài ra ở đây trong biểu đồ còn xuất hiện thêm các tác nhân như khoa điều trị, phòng tài chính và toàn bộ kết quả khám bệnh của bệnh nhân được lưu vào một tệp có tên là hồ sơ bệnh nhân tất cả những thông tin về bệnh nhân được lưu trữ tại đây. Thông qua tệp này phòng tài chính sẽ gửi giấy thanh toán viện phí đến cho bệnh nhân và bảo hiểm y tế . Vị trí KB Yêu cầu KB Cấp bệnh nhân số 1 Y/C KB tại vị trí Khám Kết quả bệnh bệnh nhân Kết 2 quả Xác Đóng nhận tạm ứng TT Danh Kết Thanh sách BN quả toán V/P nhập 3 viện Bệnh Danh sách án BN đã Danh sách đóng T.Ư BN điều trị Khoa Điều Trị Phòng Tài Chính Hồ sơ bệnh nhân
  21. Biểu đồ luồng dữ liệu biểu diễn chức năng khám bệnh: Lúc này chức năng khám bệnh được phân rã thành bốn chức năng: Cấp thuốc, cung cấp dịch vụ, tiếp nhận bệnh nhân nhập viện, lập bệnh án. lú này bệnh nhân đã có được kết quả khám bệnh. Trong biểu đồ trên hầu hết các chức năng được thực hiện một cách thủ công và được lưu lại trong tệp Hồ Sơ bệnh nhân như vậy khi bệnh nhân mua thuốc thì tại phòng cấp thuốc sẽ lưu lại đơn thuốc của bệnh nhân đã mua và tương tự như vậy khi bệnh nhân dùng dịch vụ cũng được lưu lại thông tin đó để phục vụ việc lưu trữ và thanh toán tạm ứng sau này. Song khi bệnh nhân phải nhập viện thì tại khoa điều trị sẽ lập bệnh án cho bệnh nhân đó và cũng được lưu lại trong bệnh án ghi đầy đủ thông tin về bệnh nhân quá trình điều trị tại bệnh viện. Đơn thuốc Bệnh nhân Cấp Thuốc cấp thuốc 2.1 Giấy Tiếp Yêu cầu NV nhận Dịc vụ dùng Cung Tiếp cấp nhận BN dịch vụ N/V 2.3 2.2 Giấy NV Khoa điểu trị D/SBN Bệnh nhập án viện Hồ sơ Bênh
  22. Đối với biểu đồ luồng dữ liệu phân cấp chức năng thanh toán viện phí: Tương tự chức năng khám bệnh với chức năng thanh toán tạm ứng viện phí của bệnh nhân được phân ra thành hai chức năng là: thu tạm ứng, và thanh toán với bảo hiểm y tế . Theo quy định của bệnh viện cứ ba ngày bệnh viện lại yêu cầu bệnh nhân thanh toán tạm ứng viện phí một lần và theo chu kỳ mỗi tháng bệnh viện lại in danh sách bệnh nhân có bảo hiểm y tế đã điều trị tại bệnh viện trong tháng để thanh toán với bảo hiểm y tế. Đối với bệnh nhân có bảo hiểm y tế cũng phải đóng một phần viện phí theo quy định phần trăm trên bảo hiểm y tế. Cả hai chức năng này đều được thực hiện một cách tự động. Phiếu thanh Thu bệnh nhân tạm Thanh toán viện phí ứng 3.1 Xác nhận thanh toán Hồ sơ Bênh Nhân Danh sách BN đã đóng T.Ư Danh sách bệnh nhân điều trị Thanh Danh sách BN toán với Phòng tài điều trị có BHYT BHYT chính 3.2 Biểu đồ luồng dữ liệu biểu diễn chức năng thanh toán viện phí
  23. II. Phân tích hệ thống về dữ liệu II.1 Mô hình thực thể/liên kết 1. Khái niêm mô hình thực thể/liên kết Mô hình thực thể/ liên kết (Entity/Association Model) là mô hình dữ liệu do P.P. Chen đưa ra năm 1976 và sau đó được dùng khá phổ biến trên thế giới. Nó có đặc điểm khá đơn giản và gần với tư duy khách quan. Khi xem xét các thông tin, người ta thường gom cụm chúng xung quanh các vật thể 2. Các loại mô hình E/A - Mô hình E/A kinh điển Mô hình E/A kinh điển xuất phát từ ba khái niệm cơ bản: thực thể, liên kết và thuộc tính. + Các thực thể: Là một vật thể cụ thể hay trừu tượng, tồn tại thực sự và khá ổn định trong thế giới thực, mà ta muốn phản ánh nó trong hệ thống thông tin. + Các thuộc tính: Thuộc tính (Property hay attribute) là một giá trị dùng để mô tả khía cạnh nào đó của thực thể. + Các liên Kết: Một liên kết (association) là một sự gom nhóm các thực thể trong đó mỗi thực thể có một vai trò nhất định. - Mô hình thực thể/ Liên kết mở rộng. Đối với những hệ thống phức tạp khi phân tích và thiết kế người ta thương dùng đến mô hình E/A mở rộng. Do các điểm mở rộng này chịu ảnh hưởng từ xu hướng hiện đại của mô hình hóa hướng đối tượng, cũng như các hệ quản trị cơ sở dữ liệu hướng đối tượng. Các đặc điểm của mô hình E/A mở rộng + Các kiểu thuộc tính đa trị: Cho phép nhận giá trị có thể là một tập các giá trị. + Các kiểu thuộc tính phức hợp: Cho phép sử dụng các kiểu thuộc tính là tổ hợp. + Các kiểu thực thể con: xuất hiện bởi yêu cầu chuyên biệt hóa và khái quát hóa khi cần phân cấp các sự vật - Mô hình E/A hạn chế Mô hình E/A hạn chế tuy bị hạn chế nhiều về các hình thức diễn tả (khó vận dụng), nhưng lại rất gần với mô hình quan hệ do đó lại dễ dàng chuyển sang cài đặt với hệ quản trị cơ sở dữ liệu quan hệ hơn. Các đặc điểm của mô hình E/A hạn chế. + Trong mô hình E/A hạn chế chỉ có kiểu liên kết 1-nhiều và được biểu diễn như sau: A B
  24. + Trong mô hình E/A hạn chế các kiểu liên kết 0/1-nhiều được coi là trường hợp đặc biệt của 1-nhiều Trong báo cáo này Em chi sử dụng mô hình E/A hạn chế. Vì bất cứ mô hình E/A kinh điển hay E/A mở rộng nào cũng có thể biến đổi thành mô hình E/A hạn chế được, hơn nữa mô hình E/A hạn chế là mô hình gần với mô hình cơ sở dữ liệu quan hệ nhất. Sau khi phân tích hệ thống em đã đưa ra mô hình E/A hạn chế của bài toán như sau (trang sau): Tỉnh Khoa Chuyên môn Chức vụ Bệnh Mã tỉnh Mã khoa Mã CM Mã CV Mã bệnh Tên tỉnh Tên khoa Tên CM Tên CV Tên bệnh Nhân viên Vị Trí Huyện Mã Nhân viên Mã vị trí Mã huyện Họ tên NV Tên vị trí Ngày sinh NV Tên huyện Mã tỉnh Giới tính NV Số nhà NV Dòng khám bệnh Điện thoại NV Mã xã Mã khám bệnh Mã nhân viên Xã Mã khoa Mã bệnh nhân Mã xã Mã CM Mã bệnh Tên xã Mã CV Mã vị trí Mã huyện Bệnh nhân Ngày KB Mã bênh nhân Nội dung KB Họ bệnh nhân Chi phí KB Tên bệnh nhân Ngày sinh BN bảo hiểm y tế Giới tính BN Mã bệnh nhân Mã xã Số thẻ BHYT Ngày bắt đầu Thuốc dùng Ngày kết thúc Bệnh án Mã khám Phần trăm Mã khám bệnh bệnh Mã nhân viên Mã nhân viên Mã bệnh nhân Mã bệnh nhân Mã bệnh Mã bệnh Mã vị trí Mã vị trí Cán bộ Mã nơi Đ.T Mã thuốc Mã bệnh nhân Ngày vào Số lượng Mã cơ quan Ngày ra
  25. II. Mô hình quan hệ 1. Khái niệm Mô hình quan hệ do Codd đề xuất năm 1970, với ưu điểm như sau: + Đơn giản: các dữ liệu được biểu diễn dưới một dạng duy nhất, là quan hệ, tức là các bảng giá trị, khá tự nhiên và dễ hiểu đối với người dùng không chuyên tin học. + Chặt chẽ: các khái niệm được hình thức hóa cao, cho phép áp dụng các công cụ toán học, các thuật toán. + Trừu tượng hóa cao: mô hình chỉ dừng ở mức quan niệm, nghĩa là độc lập với mức vật lý, với sự cài đặt, với các thiết bị. Nhờ đó làm cho tính độc lập giữa dữ liệu và chương trình cao. + Cung cấp ngôn ngữ truy nhập dữ liệu ở mức cao, dễ sử dụng và trở thành chuẩn. 2. Các dạng chuẩn của lược đồ quan hệ Một lược đồ quan hệ R là ở dạng chuẩn 1 (1NF) nếu các miền thuộc tính của nó đều là các miền đơn (nghĩa là không cấu thành từ nhiều miền khác). Một lược đồ quan hệ R là ở dạng chuẩn 2 (2NF) nếu nó là 1NF và các phụ thuộc hàm giữa khóa và mỗi thuộc tính ngoài khóa đều là phụ thuộc hàm sơ đẳng. Nói cách khác, mọi thuộc tính ngoài khóa đều không phụ thuộc bộ phận vào khóa. Một lược đồ quan hệ R là ở dạng chuẩn 3 (3NF) nếu nó là 2NF và các phụ thuộc hàm giữa khóa và mỗi thuộc tính ngoài khóa đều là phụ thuộc hàm trực tiếp. Nói cách khác là không tồn tại phụ thuộc hàm giữa các thuộc tính ngoài khóa.
  26. 3. Các lược đồ quan hệ của hệ thống Từ mô hình thực thể liên kết (mô hình E/A hạn chế ở trên) ta chuyển sang các lược đồ quan hệ như sau: Tỉnh (Mã tỉnh, Tên tỉnh) Huyện (Mã huyện, Tên huyện, Mã tỉnh) Xã (Mã xã, Tên xã, Mã huyện) Khoa (Mã khoa, Tên khoa) Chuyên môn (Mã chuyên môn, Tên chuyên môn) Chức Vụ (Mã chức vụ, Tên chức vụ) Bệnh (Mã bệnh, Tên bệnh) Vị trí (Mã vị trí, Tên vị trí) Nhân viên (Mã NV, Họ tên NV, Ngày sinh NV, Giới tính NV, Số nhà NV, Điện thoại NV, Mã xã, Mã khoa, Mã CM, Mã CV) Dòng khám bệnh (Mã khám bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Ngày KB, Nội dung KB, Chi phí KB) Bệnh nhân (Mã bệnh nhân, Họ bệnh nhân, Tên bệnh nhân, Ngày sinh BN, Giới tính BN, Mã xã) Bảo hiểm y tế (Mã bệnh nhân, Số thẻ BHYT, Ngày bắt đầu, Ngày kết thúc, Phần trăm) Cơ quan (Mã cơ quan, Tên cơ quan, Điện thoại CQ, Fax cơ quan) Cán bộ (Mã bệnh nhân, Mã cơ quan) Tạm ứng (Mã T.ứng, Lần T.ứng, Số tiền, Ngày T.ứng, Mã bệnh nhân) Bệnh án (Mã khám bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Mã nơi Đ.T, Ngày vào, Ngày ra, Tình trạng ra) Nơi Điều Trị (Mã nơi Đ.T, Tên nơi Đ.T, Đơn giá) Dịch Vụ Dùng (Mã khám Bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Mã nơi Đ.T, Mã dịch Vụ, Lần dùng) Dịch Vụ (Mã dịch vụ, Tên dịch vụ, Đơn giá D.V) Thuốc Dùng (Mã khám Bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Mã thuốc, Số lượng, Liều dùng) Thuốc (Mã thuốc, Tên thuốc, Đơn giá) 4. Danh Sách Các Bảng 4.1 Bảng Tỉnh Tỉnh (Mã tỉnh, Tên tỉnh) Tên trường Loại dữ liệu Mô tả Kích thước Mã tỉnh Char Mã tỉnh Len()=2 Tên tỉnh Char Tên tỉnh 30 Giải Thích
  27. + Bảng tỉnh lưu trữ thông tin về tỉnh mà bệnh nhân và Nhân Viên đang sống 4.2 Bảng Huyện Huyện (Mã Huyện, Tên Huyện, Mã Tỉnh) Tên trường Loại dữ liệu Mô tả Kích thước Mã huyện Char Mã huyện Len()=4 Tên huyện Char Tên huyện 30 Mã tỉnh Char Mã tỉnh Len()=2 Giải Thích + Bảng huyện lưu trữ thông tin về huyện mà bệnh nhân và Nhân Viên đang sống - Trường mã huyện gồm có 4 ký tự 2 ký tự đầu là mã tỉnh mà huyện đó trực thuộc hai ký tự tiếp theo là thứ tự huyện trong tỉnh. - Trường mã tỉnh là khóa ngoài của bảng huyện trường này nhận thông mã tỉnh từ bảng tỉnh 4.3 Bảng Xã Xã (Mã xã, Tên xã, Mã huyện) Tên trường Loại dữ liệu Mô tả Kích thước Mã xã Char Mã xã Len()=6 Tên xã Char Tên xã 30 Mã huyện Char Mã huyện Len()=4 Giải thích + Bảng xã cùng với bảng huyện và bảng tỉnh lưu trữ thông tin địa chỉ của bệnh nhân cũng như nhân viên - Trường mã xã gồm có 6 ký tự 4 ký tự đầu là mã huyện mà xã trực thuộc còn hai ký tự sau là thứ tự xã trong huyện. - Trường mã huyện là khóa ngoài của bảng xã, trường này nhận thông tin từ trường mã huyện của bảng huyện 4.4 Bảng KHOA KHOA(Mã khoa, Tên khoa) Tên trường Loại dữ liệu Mô tả Kích thước Mã khoa Char Mã khoa Len()=2 Tên khoa Char Tên khoa 30 Giải thích + Bảng Khoa lưu trữ thông tin về khoa mà nhân viên (Bác sĩ) đang làm việc 4.5 Bảng CHUYÊN MÔN CHUYÊN MÔN (Mã chuyên môn, Tên chuyên môn)
  28. Tên trường Loại dữ liệu Mô tả Kích thước Mã chuyên môn Char Mã chuyên môn Len()=2 Tên chuyên môn Char Tên chuyên môn 30 Giải thích + Bảng chuyên môn lưu trữ thông tin về chuyên môn của nhân viên 4.6. Bảng Chức Vụ Chức Vụ (Mã chức vụ, Tên chức vụ) Tên trường Loại dữ liệu Mô tả Kích thước Mã chức vụ Char Mã chức vụ Len()=2 Tên chức vụ Char Tên chức vụ 30 Giải thích + Bảng chức vụ lưu trữ thông tin về chức vụ của Nhân Viên 4.7. Bảng Bệnh Bệnh (Mã bệnh, Tên bệnh) Tên trường Loại dữ liệu Mô tả Kích thước Mã bệnh Char Mã bệnh Len()=4 Tên bệnh Char Tên bệnh 30 Giải thích + Bảng này lưu trữ tất cả các bệnh hiện có 4.8. Bảng Vị Trí Vị Trí (Mã vị trí, Tên vị trí) Tên trường Loại dữ liệu Mô tả Kích thước Mã vị trí Char Mã vị trí Len()=2 Tên vị trí Char Tên vị trí 30 Giải Thích + Bảng này lưu trữ thông tin về vị trí mà bệnh nhân được khám bệnh 4.9. Bảng Nhân Viên Nhân Viên (Mã NV, Họ Tên NV, Ngày Sinh NV, Giới Tính NV, Số Nhà NV, Điện Thoại NV, Mã Xã, Mã Khoa, Mã CM, Mã CV) Tên Trường Loại Dữ Liệu Mô Tả Kích Thước Mã NV Char Mã nhân viên Len()=5 Họ Tên NV Char Họ tên nhân viên 30 Ngày Sinh NV Date Ngày sing nhân viên Giới Tính NV Boolear Giới tính nhân viên Số Nhà NV Char Số nhà nhân viên 30
  29. Điện Thoại NV Char Điện thoại nhân viên 15 Mã Xã Char Mã xã Len()=6 Mã Khoa Char Mã khoa Len()=2 Mã CM Char Mã chuyên môn Len()=2 Mã CV Char Mã chức vụ Len()=2 Giải thích + Bảng nhân viên lưu trữ tất cả thông tin về nhân viên (Bác sĩ) - Trường ngày sinh Nhân Viên nhận dữ liệu sao cho tuổi của nhân viên không được lớn hơn 65 và không được nhỏ hơn 18 - Trường giới tính nhân viên nhận kiểu dữ liệu Boolear (True tương ứng với nam, False tương ứng với nữ). - Trường số nhà nhân viên để xác định chỗ ở của nhân viên. - Bảng Nhân Viên nhận Mã Xã, Mã Khoa, Mã CM, Mã CV làm khóa ngoài các trường này nhận giá trị tương ứng từ các bảng Xã, Khoa, Chuyên môn, Chức vụ. 4.10. Bảng Dòng Khám Bệnh Dòng Khám Bệnh (Mã Khám Bệnh, Mã Nhân Viên, Mã bệnh nhân, Mã Bệnh, Mã Vị trí, Ngày KB, Nội Dung KB, Chi Phí KB) Tên trường Loại dữ liệu Mô tả Kích thước Mã khám bệnh Char Mã khám bệnh Len()=9 Mã nhân viên Char Mã nhân viên Len()=5 Mã bệnh nhân Char Mã bệnh nhân Len()=9 Mã bệnh Char Mã bệnh Len()=5 Mã Vị Trí Char Mã vị trí Len()=2 Ngày KB Date Ngày khám bệnh Nội dung KB Char Nội dung khám bệnh 50 Chi phí KB Money Chi phí khám bệnh >0 Giải thích + Bảng dòng khám bệnh là mối kết hợp giữa các thực thể nhân viên, bệnh nhân, bệnh, vị trí nên nó nhận tất cả các khóa của các theca thể tham gia vào mối kết hợp làm khóa chính, các giá trị của các trường này được lấy tương ứng từ các bảng tương ứng. Ngoài ra nó còn có khóa riêng là Mã khám bệnh - Ngày KB không được sau ngày hiện tại - Chi phí KB là khoản tiền mà bệnh nhân phải trả sau khi khám bệnh khoản này không được nhỏ hơn 0. 4.11. Bảng bệnh nhân
  30. bệnh nhân (Mã Bênh Nhân, Họ bệnh nhân, Tên bệnh nhân, Ngày Sinh BN, Giới Tính BN, Mã Xã) Tên trường Loại dữ liệu Mô tả Kích thước Mã bệnh nhân Char Mã bệnh nhân Len()=9 Họ bệnh nhân Char Họ bệnh nhân 20 Tên bệnh nhân Char Tên bệnh nhân 10 Ngày sinh BN Date Ngày sinh bệnh nhân Giới tính BN Boolear Giới tính bệnh nhân Mã xã Char Mã xã Len()=6 Giải thích + Bảng bệnh nhân lưu trữ tất cả các thông tin về bệnh nhân - Mã bệnh nhân gồm 9 ký tự 4 ký tự đầu là năm mà bệnh nhân đó khám, còn lại 5 ký tự sau là thứ tự bệnh nhân đó đến khám trong năm - Ngày sinh bệnh nhân không được sau ngày hiện tại và tuổi bệnh nhân không được lớn hơn 150 - Giới tính bệnh nhân là True tương ứng với Nam, False tương ứng với Nữ - Bảng bệnh nhân nhận mã xã làm khóa ngoài, trường này nhận giá trị từ bảng Xã 4.12 Bảng bảo hiểm y Tế bảo hiểm y tế (Mã bệnh nhân, Số thẻ BHYT, Ngày bắt đầu, Ngày kết thúc, Phần trăm) Tên trường Loại dữ liệu Mô tả Kích thước Mã bệnh nhân Char Mã bệnh nhân Len()=9 Số thẻ BHYT Char Số thẻ bảo hiểm y tế Len()=9 Ngày bắt đầu Date Ngày bắt đầu Ngày kết thúc Date Ngày kết thúc Phần trăm Int Phần trăm Giải thích + Bảng Bảo hiểm y tế lưu thông tin về BHYT của các bệnh nhân có thẻ BHYT - Thực thể bảo hiểm y tế là thực thể chuyên biệt hóa của thực thể bệnh nhân nên nhận khóa của thực thể bệnh nhân là mã bệnh nhân làm khóa chính - Trường Số Thẻ BHYT là số thẻ bảo hiểm y tế để xác định thẻ đó là của ai - Trường ngày bắt đầu là ngày mà thẻ bảo hiểm y tế có hiệu lực ngày này không được sau ngày kết thúc và sau ngày hiện tại
  31. - Trường ngày kết thúc là ngày mà thẻ bảo hiểm y tế không còn hiệu lực (ngày này thường cách ngày bắt đầu một năm). - Trường phần trăm là một số nguyên nằm trong khoảng (1 100) 4.13. Bảng Cơ Quan Cơ Quan (Mã cơ quan, Tên cơ quan, Điện thoại CQ, Fax cơ quan) Tên trường Loại dữ liệu Mô tả Kích thước Mã cơ quan Char Mã cơ quan Len()=6 Tên cơ quan Char Tên cơ quan 30 Điện thoại CQ Char điện thoại cơ quan 15 Fax cơ quan Char Fax cơ quan 15 Giải thích + Bang cơ quan lưu trữ thông tin về cơ quan mà những bệnh nhân có BHYT thuộc một cơ quan nào đó - Trường điện thoại cơ quan và trường fax cơ quan chứa điện thoại và fax cơ quan và hai trường này cho phép Null 4.14. Bảng Cán Bộ Cán Bộ (Mã bệnh nhân, Mã Cơ Quan) Tên trường Loại dữ liệu Mô tả Kích thước Mã bệnh nhân Char Mã bệnh nhân Len()=9 Mã cơ quan Char Ma cơ quan Len()=6 Giải thích + Bảng cán bộ là thực thể chuyên biệt hóa của thực thể bảo hiểm y tế nên nó nhận thuộc tính khóa của thực thể này làm khóa ngoài ra để xác định Cán Bộ đó thuộc cơ quan nào thi bảng này phải nhận thêm khóa của thực thể cơ quan làm khóa chính. Hai trường này lấy giá trị từ trường Mã bệnh nhân trong bảng bệnh nhân và trường Mã Cơ Quan trong bảng Cơ Quan 4.15 Bảng Tạm ứng Tạm ứng (Mã tạm ứng, Lần T.Ư, Số Tiền, Ngày T.Ư, Mã bệnh nhân) Tên trường Loại dữ liệu Mô tả Kích thước Mã tạm ứng Char Mã tạm ứng Len()=11 Lần tạm ứng Int Lần tạm ứng Số tiền Money Số tiền tạm ứng Ngày tạm ứng Date Ngày tạm ứng Mã bệnh nhân Char Mã bệnh nhân Len()=9 Giải thích + Bảng Tạm ứng lưu trữ thông tin về số tiền mà bệnh nhân đã tạm ứng cho bệnh viện, số lần tạm ứng, mỗi lần số tiền là bao nhiêu,
  32. - Mã tạm ứng gồm có 11ký tự 9 ký tự đầu là mã bệnh nhân lấy từ bảng bệnh nhân, hai ký tự tiếp theo là số lần mà bệnh nhân đó tạm ứng. - Lần tạm ứng là lần mà bệnh nhân đóng một phần viện phí trong thời gian điều trị tại bệnh viện. - Trường số tiền là số tiền bệnh nhân tạm ứng tương ứng với lần ở trên - Ngày tạm ứng là ngày mà bệnh nhân đóng tạm ứng, ngày này phải sau ngày nhập viện, và phải trước hoặc trùng với ngày hiện tại. - Để xác định lần tạm ứng đó là của ai thì bảng này nhận Mã bệnh nhân làm khóa ngoài 4.16 Bảng Bệnh án Bệnh án (Mã khám bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Mã nơi Đ.T, Ngày vào, Ngày ra, Tình trạng ra) Tên trường Loại dữ liệu Mô tả Kích thước Mã khám bệnh Char Mã khám bệnh Len()=9 Mã nhân viên Char Mã nhân viên Len()=5 Mã bệnh nhân Char Mã bệnh nhân Len()=9 Mã bệnh Char Mã bệnh Len()=5 Mã vị trí Char Mã vị trí Len()=2 Mã nơi Đ.T Char Mã nơi điều trị Len()=2 Ngày vào Date Ngày bệnh nhân nhập viện Ngày ra Date Ngày bệnh nhân ra viện Tình trạng ra Char Tình ra viện của bệnh nhân 50 Giải thích + Bệnh án là mối kết hợp được sinh ra từ mối kết hợp Dòng Khám Bệnh nên nó nhận tất cả các khóa chính của bảng Dòng Khám Bệnh và nó có Khóa riêng của nó (Mã Bệnh án) ngoài ra thực thể Nơi Điều Trị cũng tham gia vào mối kết hợp này nên nó nhận thêm khóa của thực thể này làm khóa - Ngày vào là ngày mà bệnh nhân nhập viên ngày này không được sau ngày ra hoặc sau ngày hiện tại - Ngày ra là ngày mà bệnh nhân được xuất viện ngày này cũng phải trước hoặc trùng với ngày hiện tại - Tình trạng ra là nhận xét của bác sĩ khi bệnh nhân xuất viện 4.17 Bảng Nơi Điều Trị Nơi Điều Trị (Mã nơi Đ.T, Tên nơi Đ.T, Đơn giá) Tên trường Loại dữ liệu Mô tả Kích thước
  33. Mã nơi Đ.T Char Mã nơi điều trị Len()=2 Tên nơi Đ.T Char Tên nơi điều trị 30 Đơn giá Money Đơn giá nơi điều trị Giải thích + Nơi điều trị là nơi mà bệnh nhân điều trị khi ở bệnh viện. - Đơn giá nói điều trị luôn nhận giá trị lớn hơn 0 4.18 Dịch Vụ Dùng Dịch Vụ Dùng (Mã khám bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Mã nơi Đ.T, Mã dịch vụ, Lần dùng) Tên trường Loại dữ liệu Mô tả Kích thước Mã khám bệnh Char Mã khám bệnh Len()=9 Mã nhân viên Char Mã nhân viên Len()=5 Mã bệnh nhân Char Mã bệnh nhân Len()=9 Mã bệnh Char Mã bệnh Len()=5 Mã vị trí Char Mã vị trí Len()=2 Mã nơi Đ.T Char Mã nơi điều trị Len()=2 Mã dịch vụ Char Mã dịch vụ Len()=2 Lần dùng Int Lần dùng dịch vụ Giải thích + Thực thể dịch vụ dùng là chuyển từ mối kết hợp giữa Bệnh án với dùng dịch vụ nên nó phải nhận tất cả các khóa của bệnh án làm khóa chính ngoài ra nó còn nhận khóa của thực thể Dịch Vụ làm khóa chính (Mã Dịch Vụ). - Lần dùng là lần mà bệnh nhân đó dùng một loại dịch vụ 4.19. Bảng Dịch Vụ Dịch Vụ (Mã dịch vụ, Tên dịch vụ, Đơn giá DV) Tên trường Loại dữ liệu Mô tả Kích thước Mã dịch vụ Char Mã dịch vụ Len()=2 Tên dịch vụ Char Tên dịch vụ 30 Đơn giá D.V Money Đơn giá dịch vụ Giải thích + Bảng dịch vụ lưu trữ những thông tin về những dịch vụ mà bệnh viện có - Đơn giá dịch vụ không được nhỏ hơn 0 4.20. Bảng Thuốc Dùng Thuốc Dùng (Mã khám Bệnh, Mã nhân viên, Mã bệnh nhân, Mã bệnh, Mã vị trí, Mã thuốc, Số lượng, Liều dùng) Tên Trường Loại Dữ Liệu Mô Tả Kích Thước
  34. Mã khám bệnh Char Mã khám bệnh Len()=9 Mã nhân viên Char Mã nhân viên Len()=5 Mã bệnh nhân Char Mã bệnh nhân Len()=9 Mã bệnh Char Mã bệnh Len()=5 Mã vị trí Char Mã vị trí Len()=2 Mã thuốc Char Mã thuốc Len()=4 Số lượng Int Số lượng thuốc dùng Liều dùng Char Liều lượng thuốc dùng Giải thích + bảng thuốc dùng là mối kết hợp được sinh ra từ mối kết hợp khám bệnh (thực thể dòng khám bệnh) nên nó nhận khóa của thực thể dòng khám bệnh làm khóa đồng thời nó nhận thuộc tính khóa của thực thể thuốc làm khóa. + Thực thể này kết hợp với thực thể dòng khám bệnh và thực thể thuốc để tạo thành đơn thuốc. - Số lương là số lượng một loại thuốc được cấp trong một đơn thuốc - Liều dùng công thức dùng thuốc 4.21 Bảng Thuốc Thuốc (Mã Thuốc, Tên Thuốc, Đơn Giá) Tên Trường Loại Dữ Liệu Mô Tả Kích Thước Mã Thuốc Char Mã thuốc Len()=9 Tên Thuốc Char Tên thuốc 30 Đơn Giá Money Đơn giá thuốc Giải thích + Bảng thuốc lưu trữ thông tin về thuốc
  35. Chương IV. Thực hiện Cài đặt hệ thống i. cách kết nối dữ liệu Trong chương trình em thực hiện kết nối thông qua đối tượng ADO (ActiveX Data Object), đối tượng này cung cấp hầu hết các công cụ để thực hiện kết nối với cơ sở dữ liệu ADO Interface: Các đối tương ADO giao tiếp với dữ liệu thông qua ODBC (Open Database Connectivity), chúng có thể giao tiếp với bất kỳ loại dữ liệu nếu như ODBC driver hỗ trợ. Thực hiện kết nối với cơ sở dữ liệu: Như phần tổng quan ngôn ngữ ta đã nói để đối tượng ADO kết nối được với cơ sở dữ liệu (hay để ứng dụng có thể hoạt động xử lý trên cơ sở dữ liệu) ta phải viết mã lệnh cho công cụ này kết nối với cơ sở dữ liệu. Cụ thể để kết nối với cơ sở dữ liệu dbBenhNhan ta làm như sau: Public cn As ADODB.Connection Public Sub OpenDb() Set Cn = New ADODB.Connection Cn.Provider = "SQLOLEDB.1;" Cn.ConnectionString = " Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DbBenhNhan" Cn.Open End Sub
  36. Trong modul trên ta khai báo biến Cn là toàn cục cấp modul, Cn có kiểu đối tượng ADODB.Connection tức đối tượng này dùng để kết nối với cơ sở dữ liệu và đối tượng này có thể được gọi ở mọi nơi trong chương trình. II. các phương thức đối tượng ADODb - Open method: Được sử dụng để mở một liên kết với Database. Ngay sau khi tạo instance cho conection object ta có thể mở một kết nối với datasour để truy suất dữ liệu. - Execute method: Cho phép thực thi một câu lệnh tác động trên datasour. Trong đó commandText là chuỗi lệnh cần thực hiện, thông qua tham số option các giá trị khác nhau quy định loại commandText. Giá trị Danh hiệu hằng tương ứng Loại của CommandText 0 AdCmdUnknown Mặc định khi định nghĩa 1 AdCmdText Là một câu lệnh, VD: câu lệnh SQL 2 AdCmdTable Tên của table mà ta sẽ tạo Recordset 3 AdCmdStoreProc Một Stor Procedure trong datasour Thông thường các giá trị trên được gắn sẵn vào các danh hiệu hằng và được lưu trữ trong file Include có tên là adovbs.inc. Trong chương trình này em sử dụng giá trị mặc định tức adCmdUnknown - Close method: phương thức này dùng để đóng các kết nối được chỉ ra sau câu lệnh. Ta cũng có thể set đối tượng này về nothing Ngoài ra Visual Basic còn cung cấp một dịch vụ kết nối bằng Data Environment rất tiện lợi đây cũng là một dạng kết nối ADO rất dễ sử dụng, tất cả hầu như được thực hiện qua giao diện đồ họa. Trong Data Environment có thể lưu trữ các bảng (Table), lưu trữ các thủ tục lưu trữ (Stor Procedure) cũng như các hàm (Function) và các bảng ảo (View) khác III. Một số modul chính của chương trình Để hiển thị dữ liệu trong trong một Table ta sử dụng đối tưởng Listview đối tượng này tương đối tiện lợi để hiển thị dữ liệu cụ thể như sau: Private Sub Display_Listview() Dim rs As New ADODB.Recordset Dim Str Dim mItem As listItem listItem.ListItems.Clear Str = "select * from tblTinh order by Matinh asc" Set rs = cn.Execute(Str) 'Thuc Hien Mot Lenh SQL duoc chi ra boi str If rs.EOF = False Then While Not rs.EOF Set mItem = listItem.ListItems.Add(, , rs!MaTinh) mItem.SubItems(1) = rs!TenTinh rs.MoveNext Wend End If End Sub Trong đó listItem là đối tượng Listview có chức năng hiển thị dữ liệu, biến rs có kiểu Recordset để lưu trữ dữ liệu trong một Recor (dữ liệu trong bảng).
  37. Trong đoạn chương trình trên ta còn sử dụng phương thức Set rs = cn.Execute(Str) để thực hiện câu truy vấn (SQL) trong ngoặc, câu truy vấn này lấy về dữ liệu được cất trong biến Record (rs) và được hiển thị trên Listview. Để thêm mới dữ liệu vào một Table trong chương trình ta sử dụng đối tượng Data Environment đối tượng này cho phép gọi các hàm hoặc các thủ tục như cách gọi của Visual Basic. Dưới đây là ví dụ cách gọi một hàm có tên Sp_NhapTinh có chức năng thêm một tỉnh mới DE.Sp_NhapTinh MaTinh, TenTinh Trong đó DE là đối tượng Data Environment và hàm Sp_NhapTinh là hàm (có thể là các thủ tục thậm chí là một View) được viết và lưu trong cơ sở dữ liệu. Tương tự với các thủ tục khác cũng được thực hiện bằng cách gọi như trên, tuy nhiên đối với thủ tục xóa dữ liệu trong một Table lại là một việc khá phức tạp bởi việc này còn liên quan đế một số ràng buộc về khóa. Ví dụ việc xóa một tỉnh thành, ta phải đi xóa toàn bộ các huyện, xã trực thuộc tỉnh đó, không những vậy ta còn phải xóa tất cả các bệnh nhân và nhân viên cùng các giấy tờ có liên quan, cụ thể ta có mã lệnh như sau: CREATE PROCEDURE Sp_XoaTinh @MaTinh Char(2) AS Xoa Tat ca can bo la benh nhan truc thuoc tinh Delete From tblCanBo Where tblCanBo.MaBenhNhan in( Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa Tat ca cac bao hiem y te cua benh nhan thuoc tinh Delete From tblBaoHiemYTe Where tblBaoHiemYte.MaBenhNhan in( Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen
  38. in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa tam ung cua cac benh nhan thuoc tinh Delete From tblTamUng Where tblTamUng.MaBenhNhan in(Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa Dung dich vu ma benh an dung Delete From tblDichVuDung Where tblDichVuDung.MaBenhNhan in(Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa Dung Dich Vu Delete From tblDichVuDung Where tblDichVuDung.MaNhanVien in (Select MaNhanVien From tblNhanVien Where tblNhanVien.MaXa in (Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.matinh=@MaTinh))) Xoa Benh An cua Benh Nhan thuoc tinh tren Delete From tblBenhAn Where tblBenhAn.MaBenhNhan in(Select MaBenhNhan From tblBenhNhan
  39. Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa Benh An ma Nhan Vien lap Delete From tblBenhAn Where tblBenhAn.MaNhanVien in (Select MaNhanVien From tblNhanVien Where tblNhanVien.MaXa in (Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.matinh=@MaTinh))) Xoa dong kham benh cua benh nhan Delete From tblDongKhamBenh Where tblDongKhamBenh.MaBenhNhan in(Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa Dong Kham Benh Ma Nhan Vien kham Delete From tblDongKhamBenh Where tblDongKhamBenh.MaNhanVien in (Select MaNhanVien From tblNhanVien Where tblNhanVien.MaXa in (Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.matinh=@MaTinh)))
  40. Xoa Thuoc ma Nhan vien cap cho don thuoc Delete From tblThuocDung Where tblThuocDung.MaNhanVien in (Select MaNhanVien From tblNhanVien Where tblNhanVien.MaXa in (Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.matinh=@MaTinh))) Xoa thuoc dung cho benh nhan thuoc tinh Delete From tblThuocDung Where tblThuocDung.MaBenhNhan in(Select MaBenhNhan From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh))) Xoa benh nhan thuoc tinh Delete From tblBenhNhan Where tblBenhNhan.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh)) Xoa Nhan Vien thuoc tinh Delete From tblNhanVien Where tblNhanVien.MaXa in(Select MaXa From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@MaTinh)) Xoa Xa truc thuoc tinh
  41. Delete From tblXa Where tblXa.MaHuyen in(Select MaHuyen From tblHuyen Where tblHuyen.MaTinh=@Matinh) Xoa Huyen trong tinh Delete From tblHuyen Where tblHuyen.MaTinh=@MaTinh Xoa Tinh can Xoa Delete From tblTinh Where tblTinh.MaTinh=@Matinh GO Đối với các thủ tục xóa huyện, xã cũng tương tự như việc xóa một tỉnh nên cũng phải xóa tất cả các dữ liệu có liên quan. Để trình bày dữ liệu em dùng view để kết nối các bảng. Ví dụ đối với view địa chỉ la sự kết nối của ba bảng Tỉnh, Huyện, Xã như sau: CREATE VIEW dbo.vwDiaChi AS SELECT dbo.tblTINH.TenTinh, dbo.tblHUYEN.TenHuyen, dbo.tblXA.TenXa, dbo.tblXA.Maxa FROM dbo.tblHUYEN INNER JOIN dbo.tblTINH ON dbo.tblHUYEN.MaTinh = dbo.tblTINH.MaTinh INNER JOIN dbo.tblXA ON dbo.tblHUYEN.MaHuyen = dbo.tblXA.MaHuyen Để tìm kiếm dữ liệu trong chưng trình em sử dụng hàm tìm kiếm được xây dựng sẵn trong cơ sở dữ liệu ví dụ tìm kiếm một bệnh nhân ta có đoạn truy vấn sau: CREATE FUNCTION udf_TimBenhNhanTheoHoTen (@HoBenhNhan Char(20), @TenBenhNhan char(20)) RETURNS Table AS Return Select * From tblBenhNhan Where (tblBenhNhan.HoBenhNhan= @HoBenhNhan) and (tblBenhNhan.TenBenhNhan= @TenBenhNhan) GO Hàm này trả về một Table và các tiêu chí tìm kiếm được chỉ ra trong dữ liệu đầu vào là @HoBenhNhan và @TenBenhNhan. Tương tự như vậy ta có thể
  42. tìm kiếm bất kỳ dữ liệu nào có trong cơ sở dữ liệu và với các tiêu chí được đưa ra ở đầu vào. Thoạt tiên ta có cảm giác một hàm (Function) hơi giống với một view song với view không có dữ liệu đầu vào, song với hàm thì ngược lại. Do đó để truy xuất dữ liệu thì với hàm là linh hoạt hơn rất nhiều so với view. Iv một số form chính của chương trình Form chính của chương trinh, khi chạy chương trình form này được gọi đầu tiên và từ form này có thể gọi bất kỳ form nào khác Form chính của chương trình Form thông tin bệnh nhân có chức năng hiển thị tất cả các thông tin về bệnh nhân, ngoài ra ta còn có thể thêm một bệnh nhân, sửa, xóa một bệnh nhân trên form này tất nhiên là người thay đổi thông tin là người được trao quyền truy xuất và thay đổi dữ liệu.
  43. Trong form này khi ta click vào một bệnh nhân bất kỳ thì mọi thông tin về bệnh nhân đó đều được hiển thị lên trên. Ngoài ra ta có thể thay đổi cũng như xem chi tiết một số thông tin khác về bệnh nhân như bệnh án, bảo hiểm y tế, Form nhân viên: Tại đây hiển thi tất cả các thông tin về nhân viên Form tìm kiếm bệnh nhân form này cho phép tìm kiếm bệnh nhân theo những tiêu chí được chỉ ra trong hộp combobox (tiêu chí có thể là tìm theo tên, họ tên, ) và thông tin cần tìm kiếm được nhập vào trong hộp textbox. Sau khi tìm kiếm có thể cho một hoặc một số bệnh nhân thậm chí có thể chẳng tìm thấy bệnh nhân nào nên ta có thể xem chi tiết từng bệnh nhân, và có thể in chi tiết đó ra giấy, chúng ta cũng có thể in ra toàn bộ danh sách bệnh nhân đã tìm kiếm được.
  44. Form tìm kiếm bệnh nhân Form thống kê bệnh nhân cũng tương tự như với tìm kiếm ta cũng có thể thống kê theo bệnh của bệnh nhân. Sau khi tìm kiếm thông thường ta tìm được một danh sách bệnh nhân và ta cũng có thể in ra danh sách đó.
  45. Form thống kê bệnh nhân. Trong chương trình còn một số form khác song em không tiện trình bày ra. Chương V. kết luận và đề xuất ý kiến I. Kết luận Đứng trước xu hướng phát triển nhanh và mạnh của nền công nghệ thông tin thế giới cũng như nền công nghệ thông tin nước nhà, thì tin học hóa quản lý hành chính là vô cùng quan trọng và bức thiết hiện nay. Nó sẽ giúp cho các cơ quan hành chính giải quyết những công việc một cách nhanh chóng và ít sai sót nhất, đặc biệt là trong lĩnh vực quản lý sổ sách chứng từ. Những ứng dụng về cơ sở dữ liệu đã giải quyết được những vấn đề bức thiết nêu trên. Trong đợt thực tập này em đã được giao thực hiện phân tích và thiết kế hệ thống quản lý bệnh nhân tại bệnh viện đa khoa tỉnh Khánh Hòa. Tuy chương trình chưa được hoàn thiện các chức năng, song nó đã cho em thấy được vấn đề quan trọng trong lĩnh vực quản lý, với chương trình quản lý bệnh nhân khi hoàn thiện sẽ giúp cho nhân viên quản lý bệnh nhân cũng như quản lý một số thông tin về nhân viên trong bệnh viện một cách nhanh chóng và hiệu quả.
  46. II. hạn chế của chương trình Do thời gian thực hiện phân tích và thiết kế hệ thống là tương đối hạn chế so với một đề tài tương đối rộng và phong phú nên không thể tránh khỏi những thiếu sót nhất định. Bên cạnh đó chương trình còn có một số chức năng chưa hoàn thiện và chính xác. Hơn nữa việc tìm hiểu ngôn ngữ cài đặt (SQL Server và Visual Basic) còn nhiều hạn chế nên việc tận dụng được những thế mạnh của ngôn ngữ là chưa mang lại hiệu quả cao. III. hướng phát triển của đề tài Hệ thống quản lý bệnh nhân sau khi được phân tích thiết kế và được cài đặt hoàn thiện sẽ góp phần quan trọng trong việc quản lý chứng từ sổ sách về bệnh nhân tại bệnh viện. Song nhất thiết cần phải có sự quản lý song song giữa bệnh nhân và nhân viên trong bệnh viện. Nếu chương trình được cài đặt trên môi trường mạng hay có một trang web của bệnh viện trên mạng internet để giúp cho người thân của bệnh nhân có thể theo dõi quá trình điều trị của người nhà mình mà không nhất thiết phải đến bệnh viện. Điều quan trong hơn nữa là đối với những bệnh nhân phải chuyển bệnh viện (ví dụ bệnh nhân phải chuyển từ Nha Trang đi thành phố Hồ Chí Minh), trong những trường hợp cấp bách như vậy không thể đem theo hồ sơ bệnh án ngay được khi đó tại nơi bệnh nhân được chuyển đến có thể truy cập đến trang web mà bệnh nhân đến từ đó, xem thông tin về bệnh nhân và đưa ra phương án điều trị hữu hiệu nhất. Ngoài ra đối với những trường hợp khó các bác sĩ có thể hội chuẩn ngay trên mạng (mạng liên bệnh viện). Tài liệu tham khảo [1]. Phạm Hữu Khang(Chủ biên) Lập trình ứng dụng chuyên nghiệp SQL Server 2000 tập 1,2,3 [2]. Nguyễn Văn Hoàng và nhóm tác giả Elicom Tự học Microsoft SQL Server 7.0 [3]. TS.Trần Văn Tư - Phú Thành - Thiên Trường và nhóm kỹ sư tin học ứng dụng Microsoft SQL Server 7.0 [4]. TS Đỗ Trung Tuấn Mô Hình Cơ Sở Dữ Liệu [5]. PTS Nguyễn Tiến (Dũng chủ biên) biên dịch Trần Thế San - Vũ Hữu Tường Kỹ Năng Lập Trình Visual Basic 6.0 [6]. Cát Văn Thành - Hạnh Nguyên Những bài thực hành cơ sở dữ liệu Visual Basic căn bản
  47. [7]. Nguyễn Thị Ngọc Mai Lập trình cơ sở dữ liệu với Visual Basic 6.0 [8]. ThS.Nguyễn Hữu Trọng Bài giảng cơ sở dữ liệu và phân tích thiết kế hệ thống thông tin quản lý [9]. Trần Thành Trai Phân tích và thiết kế hệ thống thông tin quản lý [10]. Nguyễn Đình Tê Lập trình cơ sở dữ liệu với Visual Basic trong 21 ngày tập 1,2,3 [11]. Nguyễn Văn Ba Phân tích và thiết kế hệ thống thông tin Mục lục Trang Lời nói đầu 1 Chương I: Giới Thiệu Nội Dung Đề Tài 2 I. Giới thiệu hệ thống 2 2. Nhiệm vụ của hệ thống quản lý bệnh viện 2 3 Tổ chức của bệnh viện đa khoa tỉnh Khánh Hòa 2 3. Những yêu cầu cần giải quyết 3 4. Hướng phát triển của hệ thống quản lý bệnh nhân hiện nay. 4 III H ướng thực thi đề tài 4
  48. Chương II. Giới thiệu ngôn ngữ cài đặt hệ thống 5 I. Giới thiệu chung về hệ quản trị cơ sở dữ liệu và SQL Server 2000 5 I.1 Hệ quản trị cơ sở dữ liệu là gì? 5 I.2 Giới thiệu chung về SQL Server 2000 5 1. Các thành phần của SQL Server 2000. 6 2. Các đối tượng cơ sở dữ liệu 6 3. Giới thiệu một số đối tượng cơ sở dữ liệu SQL Server 8 4. Kiểu dữ liệu - Data Type 9 5. Một số phát biểu cơ bản của T-SQL 9 6. Khái niệm về đối tượng trong SQL và cách tạo đối tượng trong SQL Server 2000 10 II. giới thiệu về Visual Basic 6.0 và cơ sở dữ liệu trong Visual Basic 6.0. 14 II.1 Giới thiệu chung về Visua Basic 14 II.2 ADO là gì ? 14 II.3 Các thuộc tính đặc biệt của đối tượng ADO 15 Chương III. Phân Tích Và Thiết Kế Hệ Thống 16 I. Phân tích hệ thống về chức năng 16 I.1Biểu đồ phân cấp chức năng 16 1. Biểu đồ phân cấp chức năng là gì ? 16 2. Đặc điểm của biểu đồ phân cấp chức năng: 16 I.2 Biểu đồ luồng dữ liệu 17 1. Biểu đồ luồng dữ liệu là gì ? 17 2. Kỹ thuật phân mức 17 II. Phân tích hệ thống về dữ liệu 21 II.1 Mô hình thực thể/liên kết 21 1. Khái niêm mô hình thực thể/liên kết 21 2. Các loại mô hình E/A 21 II.2. Mô hình quan hệ 24 1. Khái niệm 24 2. Các dạng chuẩn của lược đồ quan hệ 24 3. Các lược đồ quan hệ của hệ thống 24 4. Danh Sách Các Bảng 25 Chương IV. Thực hiện Cài đặt hệ thống 34 i. cách kết nối dữ liệu 34 II. các phương thức đối tượng ADODb 34 III. Một số modul chính của chương trình 35 Iv một số form chính của chương trình 40
  49. chương V. kết luận và đề xuất ý kiến 44 I. Kết luận 44 ii. hạn chế của chương trình 44 III. hướng phát triển của đề tài 44 Tài liệu tham khảo 45