Đặc biệt ở nước ta hiện nay hệ điều hành Windows của Microsoft được sử dụng rất phổ biến.Công nghệ .NET là một công nghệ do Microsoft xây dựng và phát triển,nó hoạt động trong môi trường
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 3
Chương 1:GIỚI THIỆU CHUNG 4
1.1 Ứng dụng công nghệ thông tin trong quản lý .4
1.2 Ứng dụng công nghệ thông tin trong Y Tế 6
1.3 Một số xu hướng ứng dụng công nghệ thông tin trong y tế ở nước ta hiện nay .9
Chương 2:GIỚI THIỆU CHUNG VỀ PHẦN MỀM MEDISOFT 2003 VÀ PHÂN TÍCH CƠ SỞ DỮ LIỆU 12
2.1 Phần mềm Medisoft 2003 12
2.2 Phân tích cơ sở dữ liệu của phần mềm Medisoft 2003 18
Chương 3:GIỚI THIỆU CHUNG VỀ C SHARP, CÁC ĐỐI TƯỢNG ĐỒ HOẠ, LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU VÀ MỘT SỐ CÔNG CỤ CHÍNH .32
3.1 Giới thiệu chung về C Sharp. 32
3.1.1 Không gian tên 34
3.1.2 Windows Forms 34
3.2 Giới thiệu lớp đồ hoạ. 36
3.2.1 Khai báo một đối tượng đồ hoạ. 36
3.2.2 Pen ( bút vẽ ) và Brush ( chổi vẽ ) 37
3.2.3 Giới thiệu về In ấn ( Printing ) 38
3.2.4 Thuộc tính và trạng thái. 39
3.2.5 Giới thiệu một số hàm vẽ trong Drawing. 40
3.3 Kết nối cơ sở dữ liệu. 41
3.3.1 Giới thiệu lớp kết nối. 42
3.3.2 Lớp kết nối ( Connection ). 43
3.3.3 Thuộc tính ConnectionString. 43
3.3.4 Phương thức của lớp SqlConnection 44
3.3.5 Phương thức của lớp OleDbConnection 44
3.3.6 Phương thức của lớp OdbcConnection 44
3.3.7 Sự kiện (Event ) của lớp kết nối. 44
Trang 23.4 Một số công cụ chính trong C Sharp. 45
3.4.1 Công cụ SERVER EXPLORER 45
3.4.2 sử dụng dự án cơ sở dữ liệu. 50
3.4.3 thiết kế cơ sở dữ liệu database designer. 51
3.4.4 Tạo Typed Dataset. 54
Chương 4: KẾT QUẢ CÀI ĐẶT 55
4.1 Đặt vấn đề. 55
4.2 Một số giải thuật chính được sử dụng trong chương trình .58
4.2.1 Thuật toán vẽ biểu đồ dạng hình bánh ( Pie Chart). 55
4.2.2 Thuật toán vẽ biểu đồ dạng hình cột (Column) 57
4.2.3 Thuật toán lấy cơ sở dữ liệu. 59
4.2.4 Thuật toán thống kêt xuất ra Excel 67
4.3 Hướng dẫn sử dụng và giao diện của chương trình. 71
4.3.1 Hướng dẫn sử dụng. 71
4.3.2 Giao diện của chương trình. 72
4.4 Một số đoạn code chính của chương trình 74
4.5 Kết luận và hướng phát triển. 82
Nhận xét của giáo viên hướng dẫn 83
Tài liệu tham khảo 84
Trang 3LỜI NÓI ĐẦU
Trong thời kỳ bùng nổ thông tin việc trao đổi, xử lý, lưu trữ thông tin sao cho nhanh chóng, tiện lợi, chính xác là một vấn đề lớn Sự phát triển mạnh mẽ của công nghệ thông tin đã đáp ứng được yêu cầu trên, đó là sự ra đời của các ứng dụng mới, công nghệ mới nó đã giúp con người làm việc dễ dàng và hiệu quả hơn đó Internet hình thành và phát triển đã giúp việc truyền tin một cách
dễ dàng, nhanh chóng (công nghệ Web 2.0) và môi trường làm việc dựa trên nền tảng đồ hoạ giúp cho người dụng sử dụng máy tính một cách tiện lợi, dễ hình dung, dễ thao tác, dễ nhớ, dễ học… những điều này làm cho máy vi tính càng ngày càng phổ biến rộng rãi, đó là các hệ điều hành thao tác trên các cửa
sổ như Windows, Linux , Mac OS …
Trong các môi trường làm việc dựa trên đồ hoạ hiện nay thì làm việc trên môi trường Windows là được sử dụng nhiều hơn cả bởi tính tiện lợi, thói quen, dễ dàng làm việc và đặc biệt là có nhiều ứng dụng tiện lợi,ứng dụng trong thực tế chạy trên môi trường này Đặc biệt ở nước ta hiện nay hệ điều hành Windows của Microsoft được sử dụng rất phổ biến.Công nghệ NET là một công nghệ do Microsoft xây dựng và phát triển,nó hoạt động trong môi trường hệ điều hành Windows với nhiều tính năng được ưa thích hiện nay như khả năng lập trình theo hướng đối tượng, bảo mật dữ liệu cao (kết nối với
dữ liệu thông qua lớp kết nối ADO) và đặc biệt là việc thể hiện đồ hoạ…
C Sharp là một ngôn ngữ lập trình điển của công nghệ NET, là ngôn ngữ hướng đối tượng với những từ khóa dành riêng rất thân thuộc với ngôn ngữ tự nhiên, nó có những kiểu dữ liệu và những cấu trúc lệnh căn bản nhất để bạn
áp dụng những thuật toán cần thiết cho công việc, tính bảo mật dữ liệu cao, an toàn trong truyền tin, khả năng thể hiện đồ hoạ tốt và có nhiều công cụ hỗ trợ trong việc lập trình như bộ Visual Studio.Net…
Để thực hiện đề tài “Tích hợp một số đối tượng Graphics của C# xây dựng công cụ phân tích dữ liệu tổng hợp của phần mềm Medisoft 2003” Tôi xin cảm ơn thầy giáo Thạc sĩ Nguyễn Hải Minh, các thầy cô giáo trong khoa Công Nghệ Thông Tin đại hoc Thái Nguyên và Bệnh viện Lao và các bệnh phổi Thái Nguyên – Phòng kết hoạch tổng hợp bác sĩ Lê Tiến Dũng, Nguyễn Thị Yến, Trần Thị Loan… đã hướng dẫn và giúp đỡ tôi hoàn thành đề tài này
Thái Nguyên 05-2008
Trang 4Chương 1 GIỚI THIỆU CHUNG
1.1 Ứng dụng công nghệ thông tin trong quản lý
Trong thời đại toàn cầu hoá hiện này việc quản lý, lưu trữ và trao đổi thông tin là một vấn đề lớn của mỗi một công ty, tổ chức, hay một cá nhân nào đó, đôi khi nó là yếu tố quyết định sự thành công Nắm bắt được thông tin càng sớm thì chúng ta càng có nhiều thời gian và biện pháp để sử lý một vấn
đề tiết kiệm được thời gian, của cải, sức lực của con người
Đất nước ta đang giai đoạn chuyển mình của nền kinh tế, đã và đang có rất nhiều sự thay đổi trong công cuộc đổi mới Có rất nhiều cơ hội và thách thức trong quá trình toàn cầu hoá, vì vậy việc ứng dụng công nghệ thông tin vào các vấn đề kinh tế xã hội là một vấn đề cấp thiết hiện nay để hoà nhập mình với bạn bè năm châu
Việc ứng dụng công nghệ thông tin vào trong quản lý đã và đang có nhiều kết quả đáng mừng, nó đã tạo ra một cung cách làm việc mới có hiệu quả hơn nhiều, thuận tiên cho người sử dụng, tra cứu thông tin, dự báo và đánh giá Một số vấn đã đề được ứng dụng thành công trong vấn đề quản lý như : trong quản lý bệnh viện, quản lý xét nghiệm, trong công tác quản lý hải quan, trong quản lý rừng và môi trường, quản lý doanh nghiệp, quản lý thư viện đặc biệt
là vấn đề quản lý và dự báo thời tiết quản lý cháy rừng giúp chúng ta có những dự báo chính xác về tình hình mưa lũ, cháy rừng để thông báo kịp thời đến người dân và các cơ quan chức năng có biệt pháp ứng phó nhằm giảm đến mức thấp nhất thiệt hại về người và của do thiên tai gây ra…
Đối với các công ty, doanh nghiệp thi việc ứng dụng công nghệ thông tin còn mang một yếu tố sống còn trong thời kỳ cạnh tranh gay gắt này Việc quản lý tốt về nhân sự, khách hàng, sản phẩm và doanh số bán hàng…nó sẽ
Trang 5giúp lãnh đạo công ty đưa ra những dự báo và chiến lược hoạt động tốt mang lại nhiều lợi nhuận hơn, tránh thua lỗ…
Đối với các vấn đề văn hóa xã hội công nghệ thông tin có vai trò lưu giữ
và truyền bá các giá trị văn hoá của đất nước, một số trang Web về ca nhạc tại
đó có lưu các bài hát cổ truyền của dân tộc, các bài hát do các tác giả Việt Nam sáng tác, một số trang khác lại có thông tin về các lễ hội phong tục, cảnh quan thiên nhiên của đất nước để giới thiệu với bạn bè năm châu, tạo một hình ảnh mới mẻ tốt đẹp hơn về đất nước và con người Việt Nam Ta có thể tham khảo một số địa chỉ trang Web như http//www.nhacso.net, http//vinhhalong.vn, http//nhacvui.vn…
Các báo điện tử cùng với các loại hình báo chí khác đã góp phần vào việc cung cấp thông tin cho người dân một cách nhanh chóng kịp thời, chính xác
về các vấn đề thời sự, chính trị, văn hoá, thể thao và giải trí … Nhưng với ưu điểm hơn hẳn là tin tức luôn luôn được cập nhật 24/24h và dễ dàng tìm lại các bài viết đã đọc một cách dễ dàng nhờ những tiện lợi của Internet và công nghệ Web 2.0 ngày nay…
Nhờ có công nghệ thông tin mà con người chúng ta quản lý được nhiều vấn đề rộng hơn, lớn hơn, giải quyết được nhiều vấn đề trong xã hội Với các
ưu điểm như: khả năng lưu trữ được dữ liệu lớn, tra cứu và lập kế hoạch một cách thuận tiện mà không tốn nhiều thời gian công sức của con người Và còn nhiều vấn đề khác nữa mà công nghệ thông tin đã mang lại nhiều tiện ích cho con người …
Trang 61.2 Ứng dụng công nghệ thông tin trong Y Tế
Hiện nay, việc ứng dụng công nghệ thông tin trong công tác quản lý bệnh viện đã trở thành một yêu cầu cấp bách nhằm nâng cao chất lượng của công tác quản lý bệnh viện, góp phần thúc đẩy bệnh viện phát triển toàn diện, từng bước đáp ứng yêu cầu về khám chữa bệnh và chăm sóc sức khỏe cho nhân dân Việc ứng dụng công nghệ thông tin đã giúp các bệnh viện quản lý và sử dụng hiệu quả các nguồn lực, thống thất thu viện phí, công khai minh bạch tài chính bệnh nhân, giúp kiểm soát sử dụng thuốc hợp lý an toàn
Bên cạnh việc ứng dụng thành công về tin học trong quản lý, rất nhiều bệnh viện đã xây dựng được trang thông tin điện tử riêng với nhiều nội dung chuyên môn phong phú, hấp dẫn như bệnh viện Việt Đức, bệnh viện Nhi Trung ương, bệnh viện Chợ Rẫy, góp phần đưa các dịch vụ y tế đến gần với người dân hơn
Theo số liệu báo cáo của các bệnh viện trên toàn quốc, việc ứng dụng công nghệ thông tin ở đa số các bệnh viện Việt Nam hiện nay mới dừng lại ở việc khai thác công việc văn phòng, thống kê, báo cáo Một số bệnh viện mới chỉ ứng dụng được từng phần riêng lẻ như quản lý nhân sự, viện phí, quản lý kho dược, bệnh nhân ra vào viện và chỉ có một số ít bệnh viện triển khai quản lý đồng bộ tới người bệnh trong toàn bộ quá trình điều trị
Theo số liệu của Vụ điều trị (Bộ Y tế), năm 2005 cả nước có gần 1000 bệnh viện công lập nhưng mới chỉ có khoảng 5% có phần mềm ứng dụng tin học quản lý bệnh viện tương đối tổng thể nhưng lại do hàng chục nhà cung cấp phần mềm khác nhau Tại một số bệnh viện còn nảy sinh bất cập như: thông tin của một bệnh nhân Bảo hiểm y tế phải nhập làm 3 lần trên 3 phần mềm khác nhau (phần mềm quản lý bệnh viện; phần mềm thanh toán bảo hiểm y tế; phần mềm quản lý báo cáo thống kê) đã gây nhiều phiền hà cho bệnh nhân phải chờ đợi và gây lãng phí nhân lực nhập số liệu của bệnh viện
Trang 7Và còn một số vấn đề bất cập khác như:hệ thống máy vi tính dùng trong các bệnh viện không đồng bộ, hệ thống mạng quá cũ, tư vấn thiết kế không tốt
và trình độ của cán bộ ở nhiều bệnh viện cũng còn hạn chế, dẫn tới việc triển khai các phần mềm quản lý bệnh viện gặp nhiều khó khăn
Vậy phải làm gì để phát triển công nghệ thông tin trong ngành Y tế? Đó không phải chỉ là câu hỏi của các nhà lãnh đạo ngành Mà đó còn là những trǎn trở của mỗi một cán bộ nhân viên trong ngành y tế Để ứng dụng công nghệ thông tin vào ngành y tế trước sự đòi hỏi cấp bách của thời đại, mỗi chúng ta sẽ làm gì nếu như không phải là mọi người sẽ cùng nhau "tin học hóa" ngành y tế, để ngành chúng ta xứng đáng là một ngành phát triển của cả nước và có thể sánh vai với các nước trong khu vực, cũng như trên thế giới Nhìn thẳng vào sự thật của sự phát triển và ứng dụng công nghệ thông tin trong y tế hiện nay đang bị hẫng hụt trước tốc độ phát triển của khoa học công nghệ Hơn ai hết mỗi cán bộ nhân viên ngành y tế sẽ là một ngọn lửa sáng trong việc ứng dụng công nghệ thông tin trong công việc của mình
Đào tạo cán bộ cập nhật về công nghệ thông tin để ứng dụng nhanh chóng đáp ứng các yêu cầu phát triển của ngành Y tế trong công tác điều trị - phòng chống dịch bệnh - truyền thông - trang thiết bị y tế - quản lý ngành, quản lý dược hoặc đào tạo nhân lực v.v là yêu cầu cấp bách hiện nay
Theo quan điểm lạc quan của các nhà công nghệ thông tin ở Việt Nam: Khoảng 5-10 nǎm tới với "thiên thời, địa lợi, nhân hòa" với sự lãnh đạo của Đảng cộng sản Việt Nam, đất nước ta sẽ trở thành một trong những cường quốc về ứng dụng công nghệ thông tin Do vậy mọi cán bộ nhân viên trong ngành y tế sẽ nhất định không để công nghệ thông tin phát triển chậm và kém chất lượng Chính vì vậy mỗi chúng ta cần bắt tay làm ngay các công việc nhằm ứng dụng phát triển công nghệ thông tin trong ngành, góp phần hiện đại hóa ngành y tế Việt Nam, thiết thực nâng cao sức khỏe nhân dân
Trang 8Nhằm đáp ứng được những yêu cầu trên Ngày 19/12/2005, tại Hà Nội đã diễn ra Lễ bàn giao Phần mềm Medisoft 2003 từ công ty Links Toàn Cầu về
Vụ Điều trị - Bộ Y tế Đến dự buổi lễ có TS Trần Chí Liêm, Thứ trưởng Bộ
Y tế; đại diện lãnh đạo các vụ, cục, Văn phòng thuộc Bộ Y tế; đại diện các bệnh viện; đại diện Công ty Intel tại Việt Nam, Công ty Links Toàn Cầu và các cơ quan có liên quan
Thực hiện chủ trương của lãnh đạo Bộ, Vụ Điều trị đã phối hợp cùng Công
ty Links Toàn cầu thiết kế phần mềm Medisoft 2003, nhằm ứng dụng trong quản lý hồ sơ bệnh án và biểu mẫu báo cáo thống kê tại các bệnh viện Sau khi triển khai thí điểm thành công tại một số bệnh viện, ngày 19/08/2004 phần mềm đã được Bộ Y tế nghiệm thu và ban hành trên toàn quốc theo quyết định
số 2484/2004/QĐ-BYT
Theo đánh giá của TS Lý Ngọc Kính – Vụ trưởng Vụ Điều trị, sau một năm thực hiện công tác triển khai phần mềm Medisoft 2003 đã đạt được một
số thành quả bước đầu như sau: Có 6 Sở Y tế và hơn 200 bệnh viện đa khoa
và chuyên khoa trên toàn quốc ứng dụng phần mềm Medisoft 2003 trong việc quản lý các báo cáo thống kê của bệnh viện và truy xuất dữ liệu gửi về Sở Y
tế, Bộ Y tế theo đúng mẫu quy định Trong số đó, khoảng 60 bệnh viện đã bước đầu ứng dụng phần mềm để quản lý một phần hồ sơ bệnh án của bệnh viện; khoảng 40 bệnh viện quản lý toàn bộ hồ sơ bệnh án của tất cả các bệnh nhân trong bệnh viện Một số điển hình trong công tác triển khai Medisoft
2003 như bệnh viện Đống Đa Hà nội và bệnh viện Trà Vinh; bệnh viện Gang thép Thái Nguyên; bệnh viện Điện Biên đã trang bị hệ thống máy tính nối mạng LAN và tập huấn cho toàn bộ cán bộ bệnh viện để phục vụ công tác quản lý thông tin xuất nhập và chuyển viện cho toàn bộ các bệnh nhân trong bệnh viện
Tại buổi lễ, đại diện của Công ty Links Toàn Cầu đã bàn giao phần mềm Medisoft 2003 về Vụ Điều trị để tiếp tục quản lý, nâng cấp và sử dụng Trong
Trang 9thời gian tới, Vụ Điều trị sẽ nhanh chóng nâng cấp phần mềm Medisoft 2003 trở thành một phần mềm khung quản lý bệnh viện mã nguồn mở nhằm tiết kiệm ngân sách của các bệnh viện chi cho phần mềm, phát huy được kết quả của phần mềm Medisoft 2003 và đẩy nhanh tốc độ ứng dụng công nghệ thông tin quản lý bệnh viện, đáp ứng hơn nữa nhu cầu quản lý bệnh viện trong tình hình mới
1.3 Một số xu hướng ứng dụng công nghệ thông tin trong y tế ở nước ta hiện nay
Xu hướng xây dựng hệ thống quản lý thông tin bệnh nhân bằng thẻ thông minh trên phạm vi toàn quốc Trong thực tế lĩnh vực y tế hiện vẫn đang lưu trữ và quản lý thông tin về bệnh nhân chủ yếu là trên giấy Ngoài những hạn chế truyền thống của phương pháp này thì nó cũng là nguyên chính cản trở tích hợp và quản lý toàn diện thông tin về bệnh nhân giữa các bệnh viện, trên toàn quốc hoặc giữa các quốc gia với nhau Sự nổi lên của công nghệ thẻ thông minh (smart card) được đánh giá là giải pháp đầy tiềm năng cho việc quản lý chính xác và hiểu quả thông tin về bệnh nhân Với những tiến bộ gần đây trong công nghệ này cho phép chúng ta có thẻ lưu trữ rất nhiều thông tin
cơ bản về bệnh nhân (tên, tuổi, giới tính, địa chỉ, nhóm máu, mã số bảo mật ) trên một thẻ thông minh Thêm vào đó bằng cách tích hợp thông tin lưu trữ trên hệ thống máy tính chúng ta có thể biết thêm được nhiều thông tin về bệnh nhân từ các hệ thống trang bị khác ở trong bệnh viện Điều này giúp cho việc chuẩn đoán và điều trị nhanh chóng và chính xác hơn Với những giá trị hấp dẫn trên việc xây dựng hệ thống thống nhất về bệnh nhân trên toàn quốc là một nhu cầu cấp thiết có ý nghĩa kinh tế - xã hội và nhân đạo cao
Xu hướng ứng dụng công nghệ thông tin trong tư vấn chăm sóc sức khoẻ
từ xa cho cộng đồng Trong xu hướng toàn cầu hoá hiện nay, đồng thời với sự bùng phát, lây lan các dịch bệnh trên toàn thế giới Việc chăm sóc sức khoẻ cộng đồng, phổ cập và cung cấp, tư vấn hỗ trợ thông tin sức khoẻ y tế đang
Trang 10ngày càng được mọi tầng lớp nhân dân, doanh nghiêp, tổ chức quan tâm sâu sắc và cấp thiết Các thông tin này được truyền trên tất cả các kênh thông tin truyền thông như báo giấy, phát thanh, truyền hình và các công cụ công nghệ thông tin (internet, E-mail, Instant Messeger ) và viễn thông (tin nhắn SMS ) để thu hẹp các khoảng cách địa lý, vùng miền Xuất phát từ yêu cầu thực tế này, việc định hướng cung cấp thông tin và tư vấn chăm sóc sức khoẻ
từ xa trên một số kênh truyền thống về Y tế, sức khoẻ cộng đồng làm một trong những định hướng được đánh giá là mang tính khả thi cao Ban đầu áp dụng ở các thành phố lớn với việc thu thập, tập hợp đầy đủ cơ sở dữ liệu về thông tin Y tế dưới dạng điện tử, phối hợp đưa lên các Website trực thuộc Bộ
Y tế, sau đó sẽ áp dụng mô hình đến các tỉnh thành địa phương khác và các vùng sâu vùng xa trên toàn quốc Khi dữ án này thành công thì lợi ích không chỉ là vấn đề sức khoẻ cộng đồng được cải thiện, được nâng cao mà điều quan trọng nhất là nó tạo cho mỗi người Việt Nam có được ý thức biết quan tâm đến sức khoẻ của mình, và của những người thân, và có ý thức cao trong việc phòng bệnh, lựa chọn các thông tin phù hợp nhất để đảm bảo sức khoẻ của chính mình
Xu hướng xây dựng bộ mã thuốc quốc gia và ứng dụng công nghệ thông tin trong việc sử dụng bộ mã thuốc quốc gia phục vụ công tác quản lý dược tại Việt Nam Hiện nay việc thống kêt tình hình sản xuất nhập khẩu, sử dụng thuốc và theo dõi biến động về giá thuốc tại các cơ sở điều trị gặp rất nhiều khó khăn vì chưa có bộ mã thuốc chuẩn Do nhiểu doanh nghiệp dược, nhiều bệnh viện ở Việt Nam đang ứng dụng các phần mềm tác nghiệp phục vụ công tác ở đơn vị mình đều xây dựng một bộ mã thuốc riêng cho đơn vị mình không theo một chuẩn nhất định nào Kết quả là cả nước không thể tích hợp
dữ liệu, vì không thể tổng hợp, thống kêt báo cáo về tình hình sản xuất, cung ứng và sử dụng thuốc trong phạm vi cả nước bằng con đường ứng dụng tin học Và làm cho việc phân tích, đánh giá hoạch định các chính sách về dược
Trang 11gặp nhiều khó khăn vì chưa dựa trên cơ sở khoa học của các số liệu thực tế một cách đầy đủ Do đó, việc ứng dụng công nghệ thông tin trong xây dựng
và quản lý một bộ mã quốc gia về thuốc phục vụ cho công tác quản lý, sản xuất, trao đổi thương mại cũng như phục vụ nhu cầu đông đảo việc tra cứu, tìm hiểu về lĩnh vực dược ở Việt Nam là hết sức cần thiết Nó là cơ sở thúc đẩy việc tin học hoá công tác quản lý ngành Y tế nói chung và lĩnh vực dược nói riêng
Và còn rất nhiều xu hướng khác nữa đã và đang được ứng dụng công nghệ thông tin trong Y tế được áp dụng vào trong thực tế cuộc sống của chúng ta
Trang 12Chương 2 GIỚI THIỆU CHUNG VỀ PHẦN MỀM MEDISOFT 2003 VÀ PHÂN TÍCH CƠ SỞ DỮ LIỆU
2.1 Phần mềm Medisoft 2003
Việc ứng dụng Công nghệ thông tin vào trong công tác quản lý điều hành
và ứng dụng chuyên môn trong bệnh viện nói chung và trong công tác báo cáo thống kê bệnh viện nói riêng là một vấn đề hết sức cần thiết và cấp bách
để nâng cao hơn nữa chất lượng, độ chính xác, tính kịp thời và hiệu quả cho công tác quản lý, hoạch định chiến lược tại bệnh viện và cho lĩnh vực điều trị của ngành Y tế
Phần mềm phục vụ báo cáo thống kê hiện đại đi cùng với khung cơ sở
dữ liệu quản lý bệnh viện cần được nhanh chóng xây dựng để có thể là tiếng nói chung về thông tin y tế trong môi trường quản lý rất khác nhau của các bệnh viện
Từ năm 1999 Vụ Điều Trị là cơ quan chủ quản về chuyên môn đã kịp thời xây dựng phần mềm Bsoft để thu lượm thông tin cơ bản của người bệnh và quản lý bệnh tật tại tất cả các bệnh viện ở các tuyến
Tuy nhiên đến nay phần mềm Bsoft không còn đáp ứng được một số yêu cầu cơ bản trong việc phát triển tin học của ngành Y tế nó riêng và của cả nước nói chung như không đáp ứng được phông chữ Unicode theo yêu cầu của chính phủ, không quan tâm đến mã số bệnh nhân là vấn đề cốt lõi trong quản lý.Cơ sở dữ liệu Foxpro đã lạc hậu vì không đáp ứng được phông Unicode
Đây là lý do của sự ra đời Medisoft 2003 Medisoft 2003 là phần mềm dùng chung , được cung cấp miễn phí Đây là phiên bản nâng cấp phần mềm BSOFT và sẽ là bước khởi đầu cho việc phát triển hệ thống thông tin bệnh viện trong tương lai
Trang 13Phần mềm được viết với ngôn ngữ lập trình mới nhất là C#.net, font UNICODE với cơ sở dữ liệu ACCESS 2000 và XML cho các bệnh viện và
cơ sở dữ liệu Oracle 9i cho cấp Sở Y tế, Bộ Y tế
Các bệnh viện không sử dụng Medisoft 2003 cũng vẫn có thể chuyển thông tin về Sở Y tế thông qua cơ sở dữ liệu HL7 (chuẩn dữ liệu quốc tế : Health Level Seven) đặt nền tảng trên XML Các máy chủ Oracle tại Sở Y tế
và Bộ Y tế sử dụng phân hệ 2 của Medisoft 2003 hoàn toàn tương thích HL7
để đón thông tin và chuyển vào nguồn dữ liệu của Bộ Y tế
- Sử dụng phần Xuất viện của Medisoft 2003
- Bệnh viện có nhiều máy bố trí tại các khoa
- Các khoa có máy sử dụng phần Nhập khoa và Xuất khoa, đến
kỳ báo cáo xuất ra đĩa mềm nộp phòng kế hoạch tổng hợp để tổng hợp dữ liệu chuyển về Sở y tế,Bộ y tế
b Bệnh viện có mạng nội bộ nhập liệu theo chức năng :
- Nhận bệnh : tại bàn nhận bệnh nhân nội trú
- Nhập khoa, xuất khoa , phẩu thuật thủ thuật: nhập liệu tại khoa
- Xuất viện : Phòng kế hoạch tổng hợp kiểm tra lại dữ liệu, kết thúc hồ sơ, chuyển dữ liệu về Sở y tế, Bộ y tế
Phân hệ 2 : dùng tại các Sở Y tế và Bộ Y tế
Các đơn vị này cần có máy chủ với hệ điều hành Linux hoặc Windows
2000, cơ sở dữ liệu là Oracle 9i và XML
Trang 14Các nơi này sẽ nhận thông tin từ các bệnh viện chuyển về bằng đĩa mềm hoặc E-mail để tổng hợp thực hiện các báo cáo thống kê định kỳ phục
vụ nhu cầu của ngành Y tế Ngoài ra đây có thể là các điểm được truy cập thông qua Internet hoặc Intranet
MEDISOFT CENTER :Để đảm bảo việc triển khai Medisoft 2003 trên phạm vi toàn quốc website WWW.MEDISOFTCENTER.COM là trung tâm
Diễn đàn trên Medisoft Center sẽ tạo điều kiện để các bệnh viện, các chuyên gia tin học y tế đóng góp ý kiến để phần mềm ngày một hoàn thiện hơn Sau đây một số đặc điểm của phần mềm Medisoft 2003
Trang 15
1 Sự khác nhau giữa Medisoft 2003 và Bsoft
Medisoft 2003 và Bsoft có cùng mục tiêu là quản lý tờ bìa bệnh án, chuyển các thông tin này về Bộ Y tế ,Sở Y tế Tuy nhiên Medisoft 2003 và Bsoft có rất nhiều điểm khác biệt
Quản lý bệnh
nhân
Chạy trên môi
trường mạng
Chạy được trên môi trường mạng với yêu cầu khai báo đường dẫn (Map)
Không chạy được trên môi trường mạng
quy định về font của chính phủ
Dùng font ABC
Viết bằng ngôn
ngữ
Viết trên C Sharp (C#.net)
Ngôn ngữ đang được ưa thích hiện nay
Foxpro Ngôn ngữ đã ít được sử dụng
cho máy trạm, Oracle9i cho máy chủ tại Sở Y tế, Bộ Y tế
Sử dụng data Foxpro
2 Một số yêu cầu về phần cứng để sử dụng Medisoft 2003
Về quản lý : mỗi bệnh nhân phải có sổ khám bệnh hoặc thẻ khám bệnh với mã số bệnh nhân, do vậy các bệnh viện cần chuẩn bị sổ khám bệnh hoặc
có in số nhảy để cấp phát hoặc bán cho bệnh nhân
Trong trường hợp bệnh nhân mất sổ hoặc quên sổ Medisoft 2003 sẽ tìm lại mã số cũ thông qua họ tên và ngày tháng hoặc năm sinh
Về phần yêu cầu phần cứng:
Bệnh viện chưa có mạng nội bộ
Trang 16Các máy sử dụng cần có cấu hình thấp nhất là:
- Vận tốc CPU : tối thiểu 500 Mhertz
- RAM : tối thiểu 64 Meg ( nên dùng 128 Meg)
- Hệ điều hành : Windows 2000 Professional hoặc WindowsXP
Tại bệnh viện có mạng nội bộ:
- Máy trạm : cấu hình như trên
- Máy chủ :
+ CPU : tối thiểu 1GIGA Hertz
+ RAM tối thiểu 256 Meg (nên dùng >256 Meg)
+ Hệ điều hành : LINUX 9.0 hoặc Windows 2000 Adv Server
- Mạng : mạng với vận tốc 100 mbps, nối kết bằng dây UTP category 5e với các Switch
Về vấn đề truyền thông tin:
Trong Bsoft bệnh viện chuyển dữ liệu thẳng về Vụ điều trị , còn trong Medisoft bệnh viện chuyển dữ liệu về Sở Y tế, các Sở Y tế chuyển về
Bộ Y tế
3 Medisoft có phục vụ nhu cầu thống kê của bệnh viện
Có, ngoài nhu cầu báo cáo thống kê cho Bộ Y tế , Medisoft có tiện ích thống kê riêng cho bệnh viện cùng với các tiện ích dạng biểu đồ
4 Cách cài đặt Medisoft 2003
Chúng ta có thể xem phần hướng dẫn cài đặt chi tiết tại địa chỉ Website www.medisoftcenter.com hoặc trên đĩa CD phân phối cho các đơn
vị, hoặc xem trang 21 phần “Cài đặt Medisoft 2003”
5 Cách phân phối phần mềm Medisoft 2003
Trang 17Medisoft 2003 sẽ được Vụ điều trị cung cấp miễn phí trên các đĩa
CD hoặc có thể download từ website www.medisoftcenter.com
Trang 182.2 Phân tích cơ sở dữ liệu của phần mềm Medisoft 2003
Cơ sở dữ liệu là một file Access gồm 230 bảng, chứa toàn bộ thông tin
về bệnh nhân, quá trình khám chữa bệnh tại bệnh viện như mắc bệnh gì, quê quán, ngày nhập viện, ngày ra viện, người thân ( bố mẹ ), được chuẩn đoán tại bệnh viện nào (bảng QUANHE, TENVIEN, BHYTE…) Ngoài ra còn có bảng chứa toàn bộ các loại mã bệnh tương ứng với từng tên bệnh bằng tiếng Anh và cả tiếng Việt ( theo chuẩn chung của bộ Y tế), ví dụ như các bảng sau:
Bảng ICD10: Lưu các loại mã bệnh tương ứng với từng tên bệnh cả bằng tiếng Việt và cả tiếng Anh ( theo chuẩn của bộ Y tế và chuẩn quốc tế ), tạo thuận tiện cho quá trình nghiên cứu sau này
Hình 1: Bảng ICD10
Trang 19Bảng QUANHE : Lưu thông tin về người thân của bệnh nhân với các thông tin, mối quan hệ với bệnh nhân,họ tên, địa chỉ liên lạc, số điện thoại
Hình 2: Bảng Quan hệ
Trang 20Bảng TENVIEN : Lưu thông tin về mã bệnh viện, tên bệnh viện, địa chỉ
Trang 21Bảng NHAPKHOA : Chứa các thông tin về mã bệnh nhân, giường nằm, chuẩn đoán, tuổi… đây là các thông tin cơ bản về bệnh nhân từ khi nhập viện cho đến khi xuất viện (các vấn đề về bệnh tật, cách điều trị…)
Hình 5: Bảng Nhập khoa
Bảng BTDBN: lưu các thông tin mã bệnh nhân (MABN), tên bệnh nhân, tuổi, thôn, công việc, ngày sinh, mã phường xã…
Hình 6: Bảng BTDBN
Trang 22Bảng BTDDT : lữu dữ tên và mã của 54 dân tộc Việt Nam
Trang 23Các bảng sẽ có quan hệ với nhau thông qua các khóa là các MAQL, MABN Trong chương trinh không có các câu lệnh truy vấn cơ sở dữ liệu cũng như trong cơ sở dữ liệu các bảng không có quan hệ với nhau Việc lấy
dữ liệu được thực hiện khi chạy chương trình, lúc này chường sẽ mở các bảng chứa câu lệnh SQL để truy vấn các bảng và điều kiện rằng buộc tương ứng với từng yêu cầu của người dung Các câu lệnh này nằm tại những bảng sau:
SELECT year(date())-a.NAMSINH as TUOI, a.PHAI, a.MANN, a.MADANTOC, a.MATT,
b.MAICD FROM BTDBN a,BENHANDT b WHERE a.MABN = b.MABN and b.LOAIBA=3 Điều trị
ngoạI trú
SELECT year(date())-a.NAMSINH as TUOI, a.PHAI, a.MANN, a.MADANTOC, a.MATT, a.MAQU, a.MAPHUONGXA, b.MAKP, b.DENTU, b.NHANTU, b.MADOITUONG, b.MAICD, c.KETQUA, c.TTLUCRV FROM (BTDBN AS a INNER JOIN BENHANDT AS
b ON a.MABN = b.MABN) LEFT JOIN XUATVIEN AS c ON b.MAQL = c.MAQL WHERE b.LOAIBA=2
Nhận
bệnh
SELECT year(date())-a.NAMSINH as TUOI, a.PHAI, a.MANN, a.MADANTOC, a.MATT,
b.MAICD FROM BTDBN a,BENHANDT b WHERE a.MABN = b.MABN and b.LOAIBA=1 Nhập
khoa
SELECT YEAR(DATE())-a.NAMSINH AS TUOI, a.PHAI, a.MANN, a.MADANTOC, a.MATT, a.MAQU, a.MAPHUONGXA, b.MAKP, b.MAICD, c.DENTU, c.NHANTU,
a.mabn=c.mabn and c.maql=b.maql and c.LOAIBA=1
Xuất
khoa
SELECT YEAR(DATE())-a.NAMSINH AS TUOI, a.PHAI, a.MANN, a.MADANTOC,
c.MAKP, d.KETQUA, d.TTLUCRK as TTLUCRV, d.MAICD FROM BTDBN
b.maql=c.maql and c.id=d.id and b.loaiba=1
Xuất viện SELECT year(date())-a.NAMSINH as TUOI, a.PHAI, a.MANN, a.MADANTOC, a.MATT,
a.MAQU, a.MAPHUONGXA, c.MAKP, b.DENTU, b.NHANTU, b.MADOITUONG, c.MAICD, c.KETQUA, c.TTLUCRV FROM BTDBN a,BENHANDT b,XUATVIEN c where
Trang 24SELECT Year(Date())-a.NAMSINH AS TUOI, a.MANN, a.MADANTOC, a.MATT, a.MAQU, a.MAPHUONGXA, b.MAKP, b.DENTU, b.NHANTU, b.MADOITUONG, b.MAICD, c.NGOITHAI, c.PHAI, c.TINHTRANG, c.DITAT, c.CANNANG FROM (BTDBN
AS a INNER JOIN BENHANDT AS b ON a.MABN = b.MABN) INNER JOIN TRESOSINH AS c ON b.MAQL = c.MAQL WHERE a.MABN=b.MABN AND b.MAQL=c.MAQL
AS d ON b.MAQL = d.MAQL WHERE a.MABN=b.MABN AND b.MAQL=c.MAQL
Bảng danh mục bảng (DMTABLE):
DMTABLE
Trang 25Bảng danh mục xóa bệnh án (DMXOABA)
Trang 26HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,BENHANDT
B WHERE A.MABN=B.MABN AND B.LOAIBA=3
DELETE FROM BENHANDT WHERE LOAIBA=3 AND MAQL=
ngoạI trú
SELECT
A.MABN,A.HOTEN,A.NAMSINH,format(B.NGAY,'dd/MM/yyyy
HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,BENHANDT
B WHERE A.MABN=B.MABN AND B.LOAIBA=2
DELETE FROM BENHANDT WHERE LOAIBA=2 AND MAQL=
A.MABN,A.HOTEN,A.NAMSINH,format(B.NGAY,'dd/MM/yyyy
HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,BENHANDT
B WHERE A.MABN=B.MABN AND B.LOAIBA=1
DELETE FROM BENHANDT WHERE LOAIBA=1 AND MAQL=
A.MABN,A.HOTEN,A.NAMSINH,format(B.NGAY,'dd/MM/yyyy
HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,XUATVIEN B
WHERE A.MABN=B.MABN
DELETE FROM XUATVIEN WHERE MAQL=
A.MABN,A.HOTEN,A.NAMSINH,format(B.NGAY,'dd/MM/yyyy
HH:mm') as NGAY,B.MAQL,B.ID AS ID FROM BTDBN A,HIENDIEN
DELETE FROM HIENDIEN WHERE ID=
Trang 27HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,BENHANDT
B,TAINANTT C WHERE A.MABN=B.MABN AND B.MAQL=C.MAQL
DELETE FROM TAINANTT WHERE MAQL=
A.MABN,A.HOTEN,A.NAMSINH,format(B.NGAY,'dd/MM/yyyy
HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,XUATVIEN
B,TUVONG C WHERE A.MABN=B.MABN AND B.MAQL=C.MAQL
DELETE FROM TUVONG WHERE MAQL=
A.MABN,A.HOTEN,A.NAMSINH,format(B.NGAY,'dd/MM/yyyy
HH:mm') as NGAY,B.MAQL,0 AS ID FROM BTDBN A,CDSANKHOA
C.MAQL=B.MAQL
DELETE FROM CDSANKHOA WHERE MAQL=
Trang 28Dựa vào các câu lệnh SQL trong các bảng trên ta có thê hình dung ra mối quan hệ của các trong cơ sở dữ liệu, phù hợp với quá trình phân tích thiết kế
hệ thống của phần mềm Medisoft 2003, các bảng quan hệ với nhau thông qua các khóa: ID, MABN, MAQL, MAPT… như sau:
Một số bảng quan hệ trong cơ sở dữ liệu:
Hình 9: Mô hình quan hệ được thể hiện trong bảng DMSOLIEU
Trang 29Hinh 10: Mô hình quan hệ được thể hiện trong bảng DMTABLE p1
Hinh 11: Mô hình quan hệ được thể hiện trong bảng DMTABLE p2
Trang 30Hinh 12: Mô hình quan hệ được thể hiện trong bảng DMTABLE p3
Hinh 13: Mô hình quan hệ được thể hiện trong bảng DMTABLE p4
Trang 31Với yêu cầu phân tích tổng hợp cơ sở dữ liệu cho phần mềm MEDISOFT
2003, và cơ sở dữ liễu đã có sau một thời gian sử dụng tại bệnh viện em nhận thấy cần có một số vấn đề chính cần quan tâm như sau:
Đầu tiên để tổng hợp được, ta phải biết tên những căn bệnh đã mắc trong thời gian qua, tương ứng tên bệnh là mã bệnh theo tiêu chuẩn đã được qui định của bộ Y Tế, do vậy ta cần tới thông tin được lưu tại bảng ICD10
Điều tiếp theo là, sau khi đã có mã bệnh cần tổng hợp so sánh thì cần phải biết đã có bao nhiêu bệnh nhân đã mắc căn bệnh này trong thời gian trên, thông tin này được lưu tại bảng NHAPKHOA căn cứ vào ngày nhập khoa của bệnh nhân
Tại bảng này ta lọc cơ sở dữ liệu, điều kiên tìm kiếm là mã bệnh tương ứng với mã bệnh đã được chọn ở trên Sau khi đã tìm thấy những người mắc bệnh này ta lại phải tiến hành so sánh xem thời gian mắc bệnh của người đó
có nằm trong phạm vi thời gian cần so sánh hay không, nếu không nằm trong khoảng thời gian cần so sánh thì bỏ qua, còn nếu nằm trong thời gian cần so sánh thì ta lấy
Cách so sánh thời gian như thế nào còn phụ thuộc vào yêu cầu so sánh của vấn đề cần tổng hợp, tổng hợp giữa các năm, giữa các tháng trong một năm, giữa một tháng nào đó trong các năm khác nhau Tuỳ vào từng yêu cầu này
mà ta có cách so sánh về thời gian mắc bệnh của bệnh nhân là khác
Với yêu cầu so sánh giữa các năm với nhau thi điều kiện để lấy chỉ cần bệnh nhân đó mắc bệnh trong các năm đã chọn là được
Với yêu cầu so sánh giữa các tháng trong một năm thì điều kiện lấy là bệnh nhân đó phải mắc bệnh trong năm này và trong các tháng cần so sánh Còn với yêu cầu so sánh giữa một tháng nào trong các năm khác nhau yêu cầu đầu tiên là phải mắc bệnh trong tháng đó và trong các năm khác nhau mà
ta đã chọn yêu cầu so sánh
Trang 32Chương 3 GIỚI THIỆU CHUNG VỀ C SHARP, CÁC ĐỐI TƯỢNG ĐỒ HOẠ, LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU
VÀ MỘT SỐ CÔNG CỤ CHÍNH
3.1 Giới thiệu chung về C Sharp
Ngôn ngữ lập trình C# (hay còn gọi là C Sharp ) được thiết kế bởi Anders Hejlsberg của Microsoft C Sharp là một ngôn ngữ lập trình hướng đối tượng hiện đại có thể tương tác với các phần tử của ngôn ngữ khác như C, C++, Pascal, Java, và ngay cả Basic C# là một sản phẩm của bộ NET Ngoài ra NET còn có các sản phẩm khác như Visual Basci.NET,…
Tập tin viết bằng ngôn ngữ C# cũng như các tập tin khác nhưng chúng có tên mở rộng là cs (C Sharp ), và có tên mở rộng của project là csproj Chương trình đầu tiên của chúng ta có tên ConsolehellooWorld.cs viết bằng ngôn ngữ C# xuất hiện ra câu Hello có nội dung như sau :
Để soạn thảo nội dung của chương trình C#, bạn có thể sử dụng bất kì trình soạn thảo văn bản nào của Microsoft như Notepad, Visual Studio.NET… Ngoài ra để biên dịch chương trình ConsoleHelloWolrd.cs bạn cần có môi trường gọi là Framework Software Development Kit (SDK ) Tuỳ vào khả năng tài chính mà bạn có thể mua bản quyền hay có thể download bộ NET Framework Software Development Kit từ địa chỉ http://msdn.microfot.com
Trang 33hoạc bộ đĩa CD-ROM ở các của hàng bán đĩa CD-ROM, sau đó báo cáo chúng trên máy của bạn Để biên dịch một chương trình C# bằng command line, bạn có cú pháp như sau, (trình biên dịch C# có tên là csc.exe, tập tin mã nguồn là ConsoleHelloWorld.cs và sau khi biên dịch bạn sẽ thu được tập tin thực thi mang tên ConsoleHelloWorld):
csc ConsoleHelloWorld.cs
Ngoài ra bạn cũng có thể tạo, thực thi và biên dịch chương trình này ngay trong môi trường Visual C#.NET Visual C#.NET là phiên bản mới nhất của Microsoft, nó còn là ngôn ngữ cho những nhà lập trình chuyên nghiệp C#trong tương lai dưới đây là cách tạo chương trình trong môi trường giao diện Visual Studio.NET
Khi bạn tạo một chương trình trong Visual Studio.NET, bạn cần bắt đầu với một Solution, trong Solution bao gồm các dự án (project ) và mỗi project
sẽ chứa một hay nhiều tập tin cs
Để tạp một solution, bạn bất đầu từ Menu File | New | Blank Solution Trong mỗi project bạn cần trọn lựa không gian lưu trữ và đặt tên cho Solution đó Khi đã tạo xong Solution trong Visual C#.NET bạn cần tạo tiếp project để tạo project, chọn File | Add project | New project, Microsoft cung cấp cho bạn nhiều mẫu có sẵn, ở đây chúng ta bắt đầu bằng một dự án trống (Empty), vì vậy bạn hãy chọn Empty Project
Trong mỗi project bạn có thể tạo các tập tin cs bằng cách chọn Menu Project | Add New Item, trong khung categories bạn chọn local project item tiếp đến chọn các mẫu có sẵn ( templape) do môi trường IDE cung cấp
Trong trường hợp tập tin ConsoleHelloWorld.cs, nếu dịch tập tin này từ dòng lệnh hoặc Visual Studio.NET bạn sẽ thu được tập tin thực thi exe có dung lượng chừng khoảng 3-4kb Tập tin exe này chứa đựng các phát biểu Microsoft Intermediate Language ( MSIL ) MSIL là đặc tả ngôn ngữ được chấp nhận bởi tiêu chuẩn của European Computer Manufacturer’s Association
Trang 34- ( ECMA ) MSIL được xem như là một ngôn ngữ phổ dụng trung gian (CIL Common Intermediate Language)
Bằng cách sử dụng NET Framework và lập trình bằng ngôn ngữ C#, bạn cũng có thể tạo ra các đoạn mã tự quản ( managed code) mã nguồn tự quản viết bằng CIL có thể đánh giá và phân tích bởi các chương trình khác và cho phép tìm hiểu các hoạt động mà chương trình thực hiện
3.1.1 Không gian tên
Không gian tên là khái niệm vay mượn của ngôn ngữ C+ có ý nghĩa cho phép bạn khai báo tên của một định danh nào đó cùng với các thông tin trong lớp của nó vào trong project của C+
Trong một chương trình hay project, tên khai báo cho không gian tên này
là duy nhất Nếu tên này khai báo trùng lặp thì trường sẽ không cho phép bạn phiên dịch và ngay cả khi DLL này được sử dụng cũng sẽ gây ra xung đột tên của những lớp trong không gian tên đó
Trong trường hợp có 2 định danh khác nhau nhưng có cùng tên lớp (class) thì dĩ nhiên khi sử dụng lớp nào đó cùng tên bạn cần phải tham chiếu tên của không gian tên đó đi kèm
3.1.2 Windows Forms
Để xây dựng một ứng dụng Windows đầy đủ bạn cần phải tạo ra một số mẫu form dùng theo giao diện mà Windows gọi là Form Trong NET Framework cửa sổ được gọi là Form Form thường được xem như cửa sổ chính của chương trình ứng dụng Windows
Một Form trong ứng dụng Windown bao gồm các thanh công cụ như:Captionbar, menubar, và phần bên trong được gọi là vùng cửa sổ (Client Area)
Trang 35Bạn có thể tham khảo trong ví dụ đầu tiên, chương trình tạo một Form với không gian tên System.Windows.Forms như sau :
Form là một lớp trong không gian tên System.Windows.Form, trong chương trình có sử dụng toán tử New để tạo một đối tượng Form của lớp Form, bạn có thể viết lại chương trình trên bằng cách sử dụng từ khoá chỉ mục using và có thể khai báo đối tượng Form như sau :
Trang 363.2 Giới thiệu lớp đồ hoạ
Thế giới đồ hoạ máy tính chia làm hai phần :
Đồ hoạ hướng đối tượng hay còn gọi là đồ hoạ Vecter
Đồ hoạ ảnh quét hay còn gọi là đồ hoạ tập hợp điểm ( bao gồm các điểm ảnh pixel )
Tại đây tôi xin giới thiệu về đồ hoạ vecter trong Microsoft Windown Forms và GDI+ Tất cả các hàm thảo luận trong phần này đều là phương thức của lớp đồ hoạ, các phương thức này bắt đầu bởi chữ Draw và Fill
Phương thức Draw dùng để vẽ các đường nét như đường thẳng, đường cong… cong phương thức Fill dùng để tô mầu trong một vùng nào đó Tham
số đầu tiên của phương thức Draw là đối tượng Pen và tham số đầu tiên của phương thức Fill là Brush
3.2.1 Khai báo một đối tượng đồ hoạ
Hầu hết các hàm vẽ là các phương thức của lớp đồ hoạ Graphics Các hàm
vẽ chứa trong lớp ControlPaint, vì thế để vẽ một đối tượng đồ hoạ bạn cần phải khai báo đối tượng trong lớp Graphics, nhưng lớp này không chứa Constructor công khai Chính vì vậy khi sử dụng ngữ pháp như sau sẽ không thể thực hiện :
Graphics grfx = new Graphics( ) ;
Bạn cũng không thể khai báo lớp như
Class MyGraphics : Graphics
Chính vì vậy đối tứợng đồ hoạ chỉ có thể lấy theo các phương pháp sau:
Khi bạn ghi đè lên phương thức OnPaint hay thiết lập bộ điều khiển Paint trong lớp lấy từ Control (ví dụ như form), khi đó đối tượng Graphics sẽ được cung cấp cho bạn như một thuộc tính của lớp PaintEvenArgs
Khi vé trên Control hay form bạn có thể sử dụng phương thức CreatGraphics thay vì sử dụng phương thức OnPaint và bộ điều khiển Paint
Trang 37 Khi in, bạn cần phải thiết lập bộ điều khiển PrintPage và lấy đối tượng của PrintPageEventArgs Lớp này có chứa đối tượng đồ hoạ dùng cho máy in
Hầu hết các control như menu, text box, combo boxes, status bars,… đều gọi sự kiện Ownerdraw cho phép chương trình tự động vẽ tuỳ biến trên control Hai sự kiện MeasureItem và DrawItem cung cấp các đối tượng của MeasureItemEvenArgs và DrawItemArgs dùng để vẽ
Để vẽ trên một hình ảnh bạn cần phải sử dụng đối tượng đặc biệt bằng cách gọi phương thức Graphics.FormImage
Nếu cần lấy thông tin từ đối tượng Graphics kết hợp với máy in bạn
sử dụng phương thức MeasurementGraphics trong lớp PrinterSettings
Nếu giao tiếp với mã nguồn Win32, bạn có thể sử dụng phương thức tĩnh Graphics.FormHwnd và Graphics.FormHdc để lấy đối tượng Graphics
3.2.2 Pen ( bút vẽ ) và Brush ( chổi vẽ )
Khi vẽ đường nét trên giấy chúng ta thường sử dụng bút vẽ, (như bút mực, bút lông…) trong trường hợp lập trình bằng ngôn ngữ C#, bạn cần phải sử dụng đối tượng của lớp Pen
Để khai báo đối tượng Pen, bạn có thể khai báo một đối tượng Pen được thực hiện như sau:
Pen pen = new Pen ( color );
Tham số color là một đối tượng màu của lớp Color Bạn có thể chỉ rõ một trong 141 thuộc tính trả về đối tượng của Pens như Pens.HotPink
Ngoài ra lớp SystemPens chứa 15 thuộc tínhd chỉ đọc và chúng cũng trả về đối tượng Pen dựa trên hệ thống màu tương tự như khai báo:
Pen pen = new Pen ( ForeColor ) ;
Một thuộc tính cần quan tâm khi sử dụng pen là Width, với thuộc tính này bạn có thể sử dụng thay đổi như bảng thuộc tính constructor sau:
Trang 38Bảng thuộc tính của pen:
Loại Thuộc tính Truy cập
- Float Width get/set
-Bảng Pen Constructor
Pen ( Color Color ) ;
-Pen ( Color Color, float fWidth ) ;
Brush cũng giống như Pen, và cũng có thể khai báo như sau:
-Brush brush = new Solid -Brush( Color.Red );
3.2.3 Giới thiệu về In ấn ( Printing )
Kĩ thuật in ấn ( Print ) được trình bày trong phần này, tôi chỉ giới thiệu các lớp và đối tượng, phương thức để in ra máy in bằng phương thức OnClick trên lớp Control
Phương thức OnClick được gọi khi người dùng bấm chuột bất kì nút nào trên vùng client area Để in ra máy in, bạn cần phải tạo ra đối tượng của lớp PrintDocument, lớp này nằm trong không gian tên System.Drawing.Printing như khai báo sau:
PrintDocument prndoc = new PrintDocument ( ) ;
Bạn cần phải định dạng thuộc tính DocumentName của đối tượng PrintDocument thành chuỗi văn bản, cho phép máy in nhận dạng sự kiện in như phát biểu sau:
prndoc DocumentName = “ My Print Job ” ;
Tiếp đến, cần phải tạo một lớp thực hiện kết xuất dữ liệu đồ hoạ trong lớp của bạn Phương thức này sử dụng tham số PrintPageEvenHandler, bạn đặt tên cho lớp này là PrintDocumentOnPrintPage như khai báo sau:
Trang 39Void PrintDocumentOnPrintPage( object obj, PrintPgaeEventArgs ppea ) {
…
}
Sau đó gắn lớp này vào sự kiện PrintPage của đối tượng PrintDocument prndoc.PrintPage +=
New PrintPageHandler ( PrintDocumentOnPrintPage );
Để IN văn bản gọi phương thức Print trong đối tượng của lớp PrintDocument như phát biểu :
prndoc.Print( );
3.2.4 Thuộc tính và trạng thái
Mội và môi trường lập trình có khái niệm điểm toạ độ hay vị trí hiện hành ( current position ) Đó là điểm xuất phát và một phương thức khác sẽ dùng điểm này để vẽ một đường thẳng đến một điểm thứ hai
GDI+ không có khái niệm điểm hiện hành, điều này gây khó chịu cho người lập trình viên trên Windows vì để một đường thẳng trong Windows GDI yêu cầu phải sử dụng hai hàm : MoveTo (current position ) và LineTo vẽ đường tới toạ độ thứ hai
GDI+ cũng khác với Windows GDI trong trường hợp DrawLine và DrawString, khi hai phương thức này được gọi bạn phải cung cấp các tham số pen, bursh và font
Vì những lí do này nên cấu trúc của GDI+ có giới hạn trạng thái trong môi trường lập trình đồ hoạ Tuy nhiên lớp Graphics có 13 thuộc tính cho phép đọc và ghi, 6 thuộc tính chỉ đọc, bạn có thể tìm thấy 4 thuộc tính Graphics như sau :
PageScale và PageUnit cài đặt quy mô và số đơn vị pixel
Thuộc tính Transform là đối tượng của Matrix
Clip là miền vẽ, giới hạn không gian xuất dữ liệu
Trang 40Ngoài các thuộc tính ở trên còn hai thuộc tính SmoothingMode và PixelOffsetMode như bảng sau :
-
3.2.5 Giới thiệu một số hàm vẽ trong Drawing
Vẽ đường thẳng DrawLine
void DrawLine ( Pen pen, int x1, int y1, int x2, int y2 );
void DrawLine ( Pen pen, float x1, float y1, float x2, float y2 );
void DrawLine ( Pen pen, Point point1, Point point2 );
void DrawLine ( Pen pen, PointF point1, PointF point2 );
Vẽ và tô mầu hình đa giác DrawPolygon và FillPolygon :
void DrawPolygon (Pen pen, Point[ ] point );
void DrawPolygon ( Pen pen, PointF[ ] point );
void FillPolygon ( Brush brush, Point[ ] point );
void FillPolygon ( Brush brush, PointF[ ] point );
Vẽ và tô mầu hình ellipse DrawEllipse và FillEllipse :
void DrawEllipse ( Pen pen, int x, int y, int cx, int cy);
void DrawEllipse ( Pen pen, float x, float y, float cx, float cy);
void DrawEllipse ( Pen pen, Rectangle rect );
void DrawEllipse ( Pen pen, RectangleF rectf );
void FillEllipse ( Brush brush, int x, int y, int cx, int cy );
void FillEllipse ( Brush brush, float x, float y, float cx, float cy );
void FillEllipse ( Brush brush, Rectangle rect );
void FillEllipse ( Brush brush, RectangleF rectf );