ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: MASTER PATIENT INDEX Người hướng dẫn: ThS TRẦN HỒ THỦY TIÊN Sinh viên thực hiện: LÊ ĐÌNH TUYẾN Số thẻ sinh viên: 102150144 Lớp : 15T2 Đà Nẵng, 12 / 2019 L ê Đình Tuyến T ÊN ĐỀ TÀI : MASTER PATIENT INDEX 2019 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM ĐỀ TÀI: MASTER PATIENT INDEX Người hướng dẫn: ThS TRẦN HỒ THỦY TIÊN Sinh viên thực hiện: LÊ ĐÌNH TUYẾN Số thẻ sinh viên: 102150144 Lớp : 15T2 Đà Nẵng, 12 / 2019 NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. ………………………………………………………………………………………… .. TÓM T Ắ T Tên đề tài: Master Patient Index – Hệ thống định danh bệnh nhân Sinh viên thực hiện: LÊ ĐÌNH TUYẾN Số thẻ SV: 102150144 Lớp: 15T2 Đề tài: Master Patient Index - Hệ thống chỉ mục bệnh nhân Master Patient Index(gọi tắt là MPI) là một hệ thống lưu giữ thông tin bệnh nhân khi các bệnh nhân này tham gia các dịch vụ chăm sóc sức khỏe ở các cơ sở y tế khác nhau. MPI nhằm mục đích gán mỗi bệnh nhân với 1 định danh duy nhất. Khi một bệnh nhân đến k hám 7 tại các cơ sở y tế khác nhau thì ở những cơ sở y tế này sẽ tạo ra nhiều bản ghi chứa thông tin của bệnh nhân này, hệ thống MPI sẽ giúp ta biết được những bản ghi này đều tham chiếu đến cùng 1 người duy nhất. ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc NHI Ệ M V Ụ Đ Ồ ÁN T Ố T NGHI Ệ P Họ tên sinh viên: : LÊ ĐÌ NH TUYẾN Số thẻ sinh viên: 102150144 Lớp: 15T2 Khoa: Công nghệ thông tin Ngành: Công nghệ phần mềm 1. Tên đề tài đồ án: Master Patient Index – Hệ thống chỉ mục bệnh nhân 2. Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện 3. Các số liệu và dữ liệu ban đầu: Thông tin cá nhân của bệnh nhân Thông tin các tỉnh thành phố theo tổng cục thống kê Cấu hình các thuật toán 4. Nội dung các phần thuyết minh và tính toán: Cấu hình hệ thống: thuật toán so sánh, blocking Tạo mới, quản lý tài khoản cho cơ sở y tế Quản lý các cơ sở y tế Thêm mới, quản lý thông tin bệnh nhân Thực hiện manual merge person 5. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ): Sơ đồ ca sử dụng Sơ đồ hoạt động Bản vẽ cơ sở dữ liệu 6. Họ tên người hướng dẫn: Th.S TRẦN HỒ THỦY TIÊN 7. Ngày giao nhiệm vụ đồ án: ……../……./201….. 8. Ngày hoàn thành đồ án: ……../……./201….. Đà Nẵng, ngày tháng năm 201 Trưởng Bộ môn: TS.LÊ THỊ MỸ HẠNH Người hướng dẫn Trần Hồ Thủy Tiên i L Ờ I NÓI Đ Ầ U Đầu tiên, em xin gửi lời cảm ơn chân thành tới Th.S Trần Hồ Thủy Tiên đã giúp đỡ em hoàn thành tốt đề tài đồ án tốt nghiệp này. Trong quá trình hướng dẫn em làm đồ án, cô đã chỉ bảo và hướng dẫn tận tình cho em những lý thuyết, cũng như các kỹ năng trong lập trình, cách giải quyết các vấn đề trong đề tài. Cô luôn là người truyền động lực cho em, đề xuất cho em các ý tưởng mới mẽ để giúp em hoàn thành tối đề tài đồ án. Em thực sự biết ơn và ghi nhớ sự dạy dỗ tận tình của các thầy cô khoa Công nghệ thông tin – Trường Đại học Bách khoa – Đại học Đà Nẵ ng. Trong quá trình hoàn thành đồ án, em đã rất cố gắng thực hiện hết khả năng trong thời gian cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót. Em rất mong nhận sự góp ý, chỉ bảo của quý thầy cô. ii CAM ĐOAN Tôi xin cam đoan: 1. Nội dung trong đồ án này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của Th. S Trần Hồ Thủy Tiên 2. Các tham khảo dùng trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố 3. Nếu có những sao chép không hợp lệ, vi phạm, tôi xin chị u hoàn toàn trách nhiệm. Sinh viên thực hiện iii M Ụ C L Ụ C TÓM TẮT ................................ ................................ ................................ .................... . NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ................................ ................................ ............. . LỜI NÓI ĐẦU ................................ ................................ ................................ .............. i CAM ĐOAN ................................ ................................ ................................ ............... ii MỤC LỤC ................................ ................................ ................................ ................. iii DANH SÁCH CÁC BẢNG, HÌNH VẼ ................................ ................................ ....... v DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT ................................ ....................... vi MỞ ĐẦU ................................ ................................ ................................ .................... 1 Chương 1: GIỚI THIỆU CHUNG ................................ ................................ ............ 2 1.1. Giới thiệu chung về đề tài: ................................ ................................ .............. 2 1.1.1. Đề tài: ................................ ................................ ................................ ...... 2 1.1.2. Lợi ích mang lại của đề tài: ................................ ................................ ..... 2 1.2. Các công nghệ đã được sử dụng: ................................ ................................ ....... 3 1.2.1. Back end : ................................ ................................ ................................ .... 3 1.2.2. Front end: ................................ ................................ ................................ ... 3 1.2.3 Hệ quản trị cơ sở dữ liệu: ................................ ................................ ............ 4 Chương 2: PHÂN TÍCH HỆ THỐNG ................................ ................................ ...... 6 2.1. Actors: ................................ ................................ ................................ ............... 6 2.2. Sơ đồ Use cases: ................................ ................................ ................................ 6 2.3. Sơ đồ hoạt động: ................................ ................................ ............................... 8 2.4. Từ điển dữ liệu: ................................ ................................ ................................ . 9 Chương 3: PHÁT TRIỂN VÀ TRIỂN KHAI HỆ THỐNG ................................ ... 13 3.1. Phát triển hệ thống: ................................ ................................ .......................... 13 3.1.1. Thuật toán tính độ tương đồng của hai chuỗi: ................................ ........... 13 3.1.2. Thuật toán chia block: ................................ ................................ .............. 15 3.1.3. Quy tắc sinh mã định danh: ................................ ................................ ....... 16 3.1.4. Cơ sở dữ liệu: ................................ ................................ ........................... 17 3.2. Triển khai hệ thống: ................................ ................................ ........................ 19 3.2.1. Triển khai back end: ................................ ................................ ................. 19 3.2.2. Triển khai frontend: ................................ ................................ .................. 22 3.3. Kết quả đã thực hiện: ................................ ................................ ....................... 23 iv 3.3.1. Màn hình bắt đầu: ................................ ................................ .................... 23 3.3.2. M àn hình đăng nhập: ................................ ................................ ............... 24 3.3.3. Màn hình quản lý bệnh nhân: ................................ ................................ ... 24 3.3.4. Màn hình quản lý định danh: ................................ ................................ .... 25 3.3.5. Màn hình duyệt thủ công: ................................ ................................ ......... 26 3.3.6. Màn hình cài đặt: ................................ ................................ ..................... 26 KẾT LUẬN ................................ ................................ ................................ .............. 28 TÀI LIỆU THAM KHẢO ................................ ................................ ....................... 29 PHỤ LỤC 1 ................................ ................................ ................................ ................ . PHỤ LỤC 2 ................................ ................................ ................................ ................ . v DANH SÁCH CÁC B Ả NG, HÌNH V Ẽ Bảng 2.1 Actors Bảng 2.2 Setting Bảng 2.3 FieldWeight Bảng 2.4 BlockingRound Bảng 2.5 BlockingField Bảng 2.6 User Bảng 2.7 Role Bảng 2.8 HealthCenter Bảng 2.9 Person Bảng 2.10 Person Bảng 2.11 ReviewLink Bảng 2.12 Province Bảng 3.1 Ví dụ về cách đá nh trọng số Bảng 3.2 Ví dụ về blocking Hình 1.1 Hình minh họa về Master Patient Index Hình 1.2 Kiến trúc của Spring Framework Hình 1.3 Đ ặc đ iểm của th ư viện của React.js Hình 1.4 Kiến trúc của MySQL Hình 2.2 S ơ đ ồ Use case Hình 2.3 S ơ đ ồ hoạt đ ộng Hình 3.1 Mã giả thuật toán Levenshtein Hình 3.2 Quy tắ c sinh mã đ ịnh danh Hình 3.3 Màn hình đă ng ký Heroku Hình 3.4 Đă ng nhập Heroku CLI thành công Hình 3.5 Màn hình thêm mới app Hình 3.6 Thêm add - on heroku - postgresql Hình 3.7 Cấu hình datasource Hình 3.8 Toàn bộ file server.js Hình 3.9 Màn hình welcome Hình 3.10 Màn hình đă ng nhập Hình 3.11 Màn hình quản lý bệnh nhân Hình 3.12 Màn hình quản lý đ ịnh danh Hình 3.13 Màn hình duyệt thủ công Hình 3.14 Màn hình cài đ ặt vi DANH SÁCH CÁC KÝ HI Ệ U, CH Ữ VI Ế T T Ắ T KÝ HIỆU: …….……................................................................................................... ....................... …….……................................................................................................... ....................... …….……................................................................................................... ....................... …….……................................................................................................... ....................... …….……................................................................................................... ....................... …….……................................................................................................... ....................... CHỮ VIẾT TẮT: MPI: Master Patient Index Java EE: Java Enterprise Edition CSDL : Cơ sở dữ liệu SQL: Structure Query Language CLI: Command Line Interface Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 1 M Ở Đ Ầ U Mục đích thực hiện đề tài: Củng cố, hoàn thiện các kiến thức và kỹ năng đã trau dồi suốt thời gian học tập Nắm bắt những công nghệ mới, đang là xu thế trong ngành công nghệ thông tin Xây dựng một hệ thống có thể mang những lợi ích thiết thực trong cuộc sống Mục tiêu đề tài: Xây dựng hệ thông Master Patient Index – nhằm ma ng lại cơ sở dữ liệu để định danh bệnh nhân giữa các cơ sở y tế khác nhau Hệ thông có đầy đủ chức năng và đáp ứng tốt các yêu cầu phi chức năng Phạm vi và đối tượng nghiên cứu: Tham khảo các hệ thống tương tự đã có trên các nước khác, các phần mềm mã nguồn mở Các quy định về y tế đã được ban hành Phương pháp nghiên cứu: Tìm hiểu, nghiên cứu các tài liệu, hệ thống mã nguồn mở có sẵ n trên internet Học cách sử dụng các công nghệ như Spring, React Cấu trúc của đồ án tốt nghiệp: C hương 1 Giới thiệu chung Chương 2 Phân tích hệ thống Chương 3 Phát triển hệ thống và triển khai Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 2 Chương 1: GI Ớ I THI Ệ U CHUNG 1.1. Gi ớ i thi ệ u chung v ề đ ề tài : 1.1.1. Đề tài: Master Patient Index(gọi tắt là MPI) là một hệ thống lưu giữ thông tin bệnh nhân khi các bệnh nhân này tham gia các dịch vụ chăm sóc sức khỏe ở các cơ sở y tế khác nhau. MPI nhằm mục đích gán mỗi bệnh nhân với 1 định danh duy nhất. K hi một bệnh nhân đến k hám tại các cơ sở y tế khác nhau thì ở những cơ sở y tế này sẽ tạo ra nhiều bản ghi chứa thông tin của bệnh nhân này, hệ thống MPI sẽ giúp ta biết được những bản ghi này đều tham chiếu đến cùng 1 người duy nhất. Hình 1.1 Hình minh họa về Master Patient Index 1.1.2. Lợi ích mang lại của đề tài: MPI là 1 phần quan trọng, không thể thiếu trong 1 hệ thống y tế điện tử hiện nay. MPI cho phép trao đổi thông tin cá nhân và những hồ sơ bệnh án của cùng 1 bệnh nhân giữa các cơ sở y tế mà bệnh nhân đó đã tham gia khám, điều trị. Nhờ đó, bác sĩ có thể dễ dàng xem xét việc tiếp tục điều trị như thế nào. Duy trì 1 định danh duy nhất cho mỗi bệnh nhân, có thể sử dụng để liên kết với bệnh án điện tử. Hệ thống này còn giúp xác định các cở sở y tế mà bệnh nhân đã tham gia khám, điều trị. Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 3 1.2. Các công ngh ệ đã đư ợ c s ử d ụ ng: 1.2.1. Back end : Sử dụng ngôn ngữ Java với Framework Spring Boot Spring Framework là một bộ khung ứng dụng và bộ chứa đảo ngược điều khiển cho nền tảng Java. Chức năng tính của bộ khung này có thể áp dụng cho bất kỳ ứng dụng Java nào, tuy vậy, nhiều bản mở rộng dành cho việc xây dựng ứng dụng nền web cũng được phát triển trên nền tảng Java EE. Tuy bộ khung không ấn định lên một cụ thể nào, Spring Framework đã trở nên phổ biến trong cộng đồng Java như một ph ương án song hành, thay thế, hoặc thậm chí bổ sung cho mô hình Enterprise JavaBeans (EJB). Đây là bộ khung mã nguồn mở. Hình 1.2 Kiến trúc của Spring Framework 1.2.2. Front end: S ử dụng ngôn ngữ JavaScript với Framework React.js React là một thư viện JavaScript nhằm đơn giản hóa việc phát triển giao diện người dùng. Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 4 Được phát triển bởi Facebook và bản release đầu tiên trên thế giới vào nằm 2013 và được sử dụng để viết ra Facebook, instagram và được sự ủng hộ sử dụng của rất nhiều công ty khác trên thế giới. Mục tiêu của react chính là đơn giản để phát triển. Tất cả trạng thái đều được tập trung tại một thời điểm, bằng cách chia giao diện người dùng thành tập hợp các thành phần (components) Hình 1.3 Đặc điểm của thư viện của React.js 1.2.3 H ệ qu ả n t r ị cơ s ở d ữ li ệ u: Sử dụng hệ quản trị cơ sở dữ liệu MySQL. MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet. Người dùng có thể tải về MySQL mi ễn phí từ trang chủ. MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,.. Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 5 MySQL là một trong những ví dụ rất cơ bản v ề Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). MySQL được sử dụng cho việc bổ trợ NodeJs, PHP, Perl, và nhiều ngôn ngữ khác, làm nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHP hay Perl,... Hình 1.4 Kiến trúc của MySQL Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 6 Chương 2: PHÂN TÍCH H Ệ TH Ố NG 2.1. Actors: Bảng dưới đây sẽ mô tả tất cả các tác nhân tham gia vào hệ thông Master Patient Index. Mỗi tác nhân sẽ có một vai trò khác nhau trong hệ thống. Hiện tại chúng ta có các tác nhân : Admin, Health Center User. Actor Description Admin Có quyền chỉnh sửa thông tin cá nhân, mật khẩu Cấu hình hệ thống: thuật toán so sánh, blocking Tạo mới , quản lý tài khoản cho cơ sở y tế Quản lý các cơ sở y tế Thực hiện manual merge person Xem, tìm kiếm thông tin person, master person Health Center User Có qu yền chỉnh sửa thông tin cá nhân , mật khẩu Tạo mới, cập nhật person Thực hiện manual merge person Xem, tìm kiếm thông tin person, master person Bảng 2 .1 Actors 2.2. Sơ đ ồ Use cases: Chúng ta có 2 sơ đồ use case tương ứng với 2 actors có trong hệ thông: Admin: là người quản trị hệ thống Health Center User: là người dùng ở các cơ sở y tế Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 7 Hình 2 .2 Sơ đồ Use case Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 8 2.3. Sơ đ ồ ho ạ t đ ộ ng: Hình 2 .3 Sơ đồ hoạt động Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 9 2.4. T ừ đi ể n d ữ li ệ u: Setting STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 mpi_key varchar Key của setting 3 mpi_value varchar Giá trị của setting key tương ứng 4 description text Mô tả Bảng 2 . 2 Setting FieldWeight STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 field int Id của trường cần đánh trọng số 3 weight int Trọng số Bảng 2 .3 FieldWeight BlockingRound STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 name varchar Tên của blocking round Bảng 2 . 4 BlockingRound Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 10 BlockingField STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 field int Id của trường có trong block 3 blocking_round_id long Khóa ngoại nối với blocking round tương ứng Bảng 2 . 5 BlockingField User STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 f ull_name varchar Họ và tên người dùng 3 password varchar Mật khẩu 4 user_name varchar Tên đăng nhập 5 health_center_id long Khóa ngoại nối với cơ sở y tế tương ứng 6 role_id long Khóa ngoại nối với role tương ứng Bảng 2 . 6 User Role STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 role_name varchar Tên của role Bảng 2 . 7 Role Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 11 HealthCenter STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 name varchar Tên của cơ sở y tế 3 address varchar Địa chỉ của cơ sở y tế Bảng 2 . 8 HealthCenter Person STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 address varchar Tên của cơ sở y tế 3 date_of_birth date Địa chỉ của cơ sở y tế 4 full_name varchar Họ và tên bệnh nhân 5 gender int Id của giới tính 6 health_center_insurance_number varchar Mã thẻ bảo hiểm y tế 7 identification_number varchar Số chứng minh nhân dân 8 patient_code varchar Mã bệnh nhân ở cơ sở 9 person_status int Trạng thái của record 10 score double Điểm số khi chạy thuật toán 11 health_center_ id long Id của cơ sở y tế 12 master_person_id long Id của master person Bảng 2 . 9 Person Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 12 Master Person STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 address varchar Tên của cơ sở y tế 3 date_of_birth date Địa chỉ của cơ sở y tế 4 full_name varchar Họ và tên bệnh nhân 5 gender int Id của giới tính 6 health_center_insurance_number varchar Mã thẻ bảo hiểm y tế 7 identification_number varchar Số chứng minh nhân dân Bảng 2 . 10 Person ReviewLink STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 link_status int Trạng thái của record 3 score double Điểm số khi chạy thuật toán 4 master_person_id long Khóa ngoại nối với master person tương ứng 5 person_id long Khóa ngoại nối với person tương ứng Bảng 2 . 11 ReviewLink Province STT Trường Kiểu dữ liệu Mô tả 1 id long Id tự động tăng 2 code varchar Mã tỉnh theo tổng cục thống kê 3 name varchar Tên tỉnh Bảng 2 . 12 Province Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 13 Chương 3 : PHÁT TRI Ể N VÀ TRI Ể N KHAI H Ệ TH Ố NG 3 .1. Phát tri ể n h ệ th ố ng: 3 . 1 . 1 . Thu ậ t toán tính đ ộ tương đ ồ ng c ủ a hai chu ỗ i: Để xác định 2 bản ghi có cùng tham chiếu đến 1 người hay không, chúng ta phải đánh giá độ tương đồng giữa 2 bản ghi này. Vì vậy, trước hết, chúng ta cần phải tìm ra độ tương đồng giữa 2 chuỗi. Trong đồ án tốt nghiệp này, em dùng thuật toán Levenshtein để tìm ra khoảng cách giữa hai chuỗi . Từ đó, chúng ta có thể dễ dàng tính ra độ tương đồng hai chuỗi này. Trong các thuật toán của bộ môn khoa học máy tính, khái niệm Khoảng cách Levenshtein thể hiện khoảng cách khác biệt giữa 2 chuỗi ký tự. Khoảng cách Levenshtein giữa chuỗi S và chuỗi T là số b ư ớc ít nhất biến chuỗi S thành chuỗi T thông qua 3 phép biến đ ổi là: xoá 1 ký tự. thêm 1 ký tự. thay ký tự này bằng ký tự khác. Khoảng cách này đư ợc đ ặt theo tên Vladimir Levenshtein, ng ư ời đã đ ề ra khái niệm này vào n ă m 1965. Nó đư ợc sử dụng trong việc tính toán sự giống và khác nhau giữa 2 chuỗi, nh ư ch ươ ng trình kiểm tra lỗi chính tả của winword spellchecker. Ví dụ: Khoảng cách Levenshtein giữa 2 chuỗi "kitten" và "sitt ing" là 3, vì phải dùng ít nhất 3 lần biến đ ổi. kitten - > sitten (thay "k" bằng "s") sitten - > sittin (thay "e" bằng "i") sittin - > sitting (thêm ký tự "g") Mã giả: Master Patient Index S inh viên thực hiện: Lê Đình Tuyến Hướng dẫn: Trần Hồ Thủy Tiên 14 Hình 3 .1 Mã giả thuật toán Levenshtein Khi đó , độ tương đồng của 2 chuỗi sẽ là:
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM
ĐỀ TÀI:
MASTER PATIENT INDEX
Người hướng dẫn: ThS TRẦN HỒ THỦY TIÊN Sinh viên thực hiện: LÊ ĐÌNH TUYẾN
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH: CÔNG NGHỆ PHẦN MỀM
ĐỀ TÀI:
MASTER PATIENT INDEX
Người hướng dẫn: ThS TRẦN HỒ THỦY TIÊN Sinh viên thực hiện: LÊ ĐÌNH TUYẾN
Số thẻ sinh viên: 102150144
Lớp: 15T2
Đà Nẵng, 12/2019
Trang 3………
………
………
………
………
………
………
Trang 4………
………
………
………
………
………
………
Trang 5
Tên đề tài: Master Patient Index – Hệ thống định danh bệnh nhân
Sinh viên thực hiện: LÊ ĐÌNH TUYẾN
Số thẻ SV: 102150144 Lớp: 15T2
Đề tài: Master Patient Index- Hệ thống chỉ mục bệnh nhân
Master Patient Index(gọi tắt là MPI) là một hệ thống lưu giữ thông tin bệnh nhân khi các bệnh nhân này tham gia các dịch vụ chăm sóc sức khỏe ở các cơ sở y tế khác nhau MPI nhằm mục đích gán mỗi bệnh nhân với 1 định danh duy nhất
Khi một bệnh nhân đến khám 7tại các cơ sở y tế khác nhau thì ở những cơ sở y tế này
sẽ tạo ra nhiều bản ghi chứa thông tin của bệnh nhân này, hệ thống MPI sẽ giúp ta biết được những bản ghi này đều tham chiếu đến cùng 1 người duy nhất
Trang 6KHOA CÔNG NGHỆ THÔNG TIN
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: : LÊ ĐÌNH TUYẾN Số thẻ sinh viên: 102150144
Lớp: 15T2 Khoa:Công nghệ thông tin Ngành: Công nghệ phần mềm
1 Tên đề tài đồ án:
Master Patient Index – Hệ thống chỉ mục bệnh nhân
2 Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện
3 Các số liệu và dữ liệu ban đầu:
Thông tin cá nhân của bệnh nhân
Thông tin các tỉnh thành phố theo tổng cục thống kê
Cấu hình các thuật toán
4 Nội dung các phần thuyết minh và tính toán:
Cấu hình hệ thống: thuật toán so sánh, blocking
Tạo mới, quản lý tài khoản cho cơ sở y tế
Quản lý các cơ sở y tế
Thêm mới, quản lý thông tin bệnh nhân
Thực hiện manual merge person
5 Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ):
Sơ đồ ca sử dụng
Sơ đồ hoạt động
Bản vẽ cơ sở dữ liệu
6 Họ tên người hướng dẫn: Th.S TRẦN HỒ THỦY TIÊN
7 Ngày giao nhiệm vụ đồ án: …… /……./201…
8 Ngày hoàn thành đồ án: …… /……./201…
Đà Nẵng, ngày tháng năm 201
Trần Hồ Thủy Tiên
Trang 7Đầu tiên, em xin gửi lời cảm ơn chân thành tới Th.S Trần Hồ Thủy Tiên đã giúp
đỡ em hoàn thành tốt đề tài đồ án tốt nghiệp này Trong quá trình hướng dẫn em làm đồ
án, cô đã chỉ bảo và hướng dẫn tận tình cho em những lý thuyết, cũng như các kỹ năng trong lập trình, cách giải quyết các vấn đề trong đề tài Cô luôn là người truyền động lực cho em, đề xuất cho em các ý tưởng mới mẽ để giúp em hoàn thành tối đề tài đồ án
Em thực sự biết ơn và ghi nhớ sự dạy dỗ tận tình của các thầy cô khoa Công nghệ thông tin – Trường Đại học Bách khoa – Đại học Đà Nẵng
Trong quá trình hoàn thành đồ án, em đã rất cố gắng thực hiện hết khả năng trong thời gian cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Em rất mong nhận sự góp ý, chỉ bảo của quý thầy cô
Trang 8Tôi xin cam đoan:
1 Nội dung trong đồ án này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của Th.S Trần Hồ Thủy Tiên
2 Các tham khảo dùng trong đồ án đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
3 Nếu có những sao chép không hợp lệ, vi phạm, tôi xin chịu hoàn toàn trách nhiệm
Sinh viên thực hiện
Trang 9TÓM TẮT
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
LỜI NÓI ĐẦU i
CAM ĐOAN ii
MỤC LỤC iii
DANH SÁCH CÁC BẢNG, HÌNH VẼ v
DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT vi
MỞ ĐẦU 1
Chương 1: GIỚI THIỆU CHUNG 2
1.1 Giới thiệu chung về đề tài: 2
1.1.1 Đề tài: 2
1.1.2 Lợi ích mang lại của đề tài: 2
1.2 Các công nghệ đã được sử dụng: 3
1.2.1 Back end: 3
1.2.2 Front end: 3
1.2.3 Hệ quản trị cơ sở dữ liệu: 4
Chương 2: PHÂN TÍCH HỆ THỐNG 6
2.1 Actors: 6
2.2 Sơ đồ Use cases: 6
2.3 Sơ đồ hoạt động: 8
2.4 Từ điển dữ liệu: 9
Chương 3: PHÁT TRIỂN VÀ TRIỂN KHAI HỆ THỐNG 13
3.1 Phát triển hệ thống: 13
3.1.1 Thuật toán tính độ tương đồng của hai chuỗi: 13
3.1.2 Thuật toán chia block: 15
3.1.3 Quy tắc sinh mã định danh: 16
3.1.4 Cơ sở dữ liệu: 17
3.2 Triển khai hệ thống: 19
3.2.1 Triển khai back end: 19
3.2.2 Triển khai frontend: 22
3.3 Kết quả đã thực hiện: 23
Trang 103.3.2 Màn hình đăng nhập: 24
3.3.3 Màn hình quản lý bệnh nhân: 24
3.3.4 Màn hình quản lý định danh: 25
3.3.5 Màn hình duyệt thủ công: 26
3.3.6 Màn hình cài đặt: 26
KẾT LUẬN 28
TÀI LIỆU THAM KHẢO 29
PHỤ LỤC 1
PHỤ LỤC 2
Trang 11Hình 1.1 Hình minh họa về Master Patient Index
Hình 1.2 Kiến trúc của Spring Framework
Hình 1.3 Đặc điểm của thư viện của React.js
Hình 1.4 Kiến trúc của MySQL
Hình 2.2 Sơ đồ Use case
Hình 2.3 Sơ đồ hoạt động
Hình 3.1 Mã giả thuật toán Levenshtein
Hình 3.2 Quy tắc sinh mã định danh
Hình 3.3 Màn hình đăng ký Heroku
Hình 3.4 Đăng nhập Heroku CLI thành công
Hình 3.5 Màn hình thêm mới app
Hình 3.6 Thêm add-on heroku-postgresql
Trang 12KÝ HIỆU:
…….……
…….……
…….……
…….……
…….……
…….……
CHỮ VIẾT TẮT:
MPI: Master Patient Index
Java EE: Java Enterprise Edition
CSDL: Cơ sở dữ liệu
SQL: Structure Query Language
CLI: Command Line Interface
Trang 13MỞ ĐẦU
Mục đích thực hiện đề tài:
Củng cố, hoàn thiện các kiến thức và kỹ năng đã trau dồi suốt thời gian học tập
Nắm bắt những công nghệ mới, đang là xu thế trong ngành công nghệ thông tin
Xây dựng một hệ thống có thể mang những lợi ích thiết thực trong cuộc sống Mục tiêu đề tài:
Xây dựng hệ thông Master Patient Index – nhằm mang lại cơ sở dữ liệu để định danh bệnh nhân giữa các cơ sở y tế khác nhau
Hệ thông có đầy đủ chức năng và đáp ứng tốt các yêu cầu phi chức năng
Phạm vi và đối tượng nghiên cứu:
Tham khảo các hệ thống tương tự đã có trên các nước khác, các phần mềm mã nguồn mở
Các quy định về y tế đã được ban hành
Phương pháp nghiên cứu:
Tìm hiểu, nghiên cứu các tài liệu, hệ thống mã nguồn mở có sẵn trên internet
Học cách sử dụng các công nghệ như Spring, React
Cấu trúc của đồ án tốt nghiệp:
Chương 1 Giới thiệu chung
Chương 2 Phân tích hệ thống
Chương 3 Phát triển hệ thống và triển khai
Trang 14Chương 1: GIỚI THIỆU CHUNG
1.1 Giới thiệu chung về đề tài:
1.1.1 Đề tài:
Master Patient Index(gọi tắt là MPI) là một hệ thống lưu giữ thông tin bệnh nhân khi các bệnh nhân này tham gia các dịch vụ chăm sóc sức khỏe ở các cơ sở y tế khác nhau MPI nhằm mục đích gán mỗi bệnh nhân với 1 định danh duy nhất
Khi một bệnh nhân đến khám tại các cơ sở y tế khác nhau thì ở những cơ sở y tế này
sẽ tạo ra nhiều bản ghi chứa thông tin của bệnh nhân này, hệ thống MPI sẽ giúp ta biết được những bản ghi này đều tham chiếu đến cùng 1 người duy nhất
Hình 1.1 Hình minh họa về Master Patient Index
1.1.2 Lợi ích mang lại của đề tài:
MPI là 1 phần quan trọng, không thể thiếu trong 1 hệ thống y tế điện tử hiện nay MPI cho phép trao đổi thông tin cá nhân và những hồ sơ bệnh án của cùng 1 bệnh nhân giữa các cơ sở y tế mà bệnh nhân đó đã tham gia khám, điều trị Nhờ đó, bác sĩ có thể dễ dàng xem xét việc tiếp tục điều trị như thế nào
Duy trì 1 định danh duy nhất cho mỗi bệnh nhân, có thể sử dụng để liên kết với bệnh
án điện tử
Hệ thống này còn giúp xác định các cở sở y tế mà bệnh nhân đã tham gia khám, điều trị
Trang 151.2 Các công nghệ đã được sử dụng:
1.2.1 Back end:
Sử dụng ngôn ngữ Java với Framework Spring Boot
Spring Framework là một bộ khung ứng dụng và bộ chứa đảo ngược điều khiển cho nền tảng Java Chức năng tính của bộ khung này có thể áp dụng cho bất kỳ ứng dụng Java nào, tuy vậy, nhiều bản mở rộng dành cho việc xây dựng ứng dụng nền web cũng được phát triển trên nền tảng Java EE Tuy bộ khung không ấn định lên một cụ thể nào, Spring Framework đã trở nên phổ biến trong cộng đồng Java như một phương án song hành, thay thế, hoặc thậm chí bổ sung cho mô hình Enterprise JavaBeans (EJB) Đây là bộ khung mã nguồn mở
Hình 1.2 Kiến trúc của Spring Framework
1.2.2 Front end:
Sử dụng ngôn ngữ JavaScript với Framework React.js
React là một thư viện JavaScript nhằm đơn giản hóa việc phát triển giao diện người dùng
Trang 16Được phát triển bởi Facebook và bản release đầu tiên trên thế giới vào nằm 2013 và được sử dụng để viết ra Facebook, instagram và được sự ủng hộ sử dụng của rất nhiều công ty khác trên thế giới
Mục tiêu của react chính là đơn giản để phát triển Tất cả trạng thái đều được tập trung tại một thời điểm, bằng cách chia giao diện người dùng thành tập hợp các thành phần (components)
Hình 1.3 Đặc điểm của thư viện của React.js
1.2.3 Hệ quản trị cơ sở dữ liệu:
Sử dụng hệ quản trị cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ
sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều
hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet Người dùng có thể tải về MySQL miễn phí từ trang chủ MySQL có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng
Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,
Trang 17MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ
sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL)
MySQL được sử dụng cho việc bổ trợ NodeJs, PHP, Perl, và nhiều ngôn ngữ khác, làm nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHP hay Perl,
Hình 1.4 Kiến trúc của MySQL
Trang 18Chương 2: PHÂN TÍCH HỆ THỐNG
2.1 Actors:
Bảng dưới đây sẽ mô tả tất cả các tác nhân tham gia vào hệ thông Master Patient Index Mỗi tác nhân sẽ có một vai trò khác nhau trong hệ thống Hiện tại chúng ta có các tác nhân : Admin, Health Center User
Admin Có quyền chỉnh sửa thông tin cá nhân, mật khẩu
Cấu hình hệ thống: thuật toán so sánh, blocking Tạo mới, quản lý tài khoản cho cơ sở y tế Quản lý các cơ sở y tế
Thực hiện manual merge person Xem, tìm kiếm thông tin person, master person Health Center
2.2 Sơ đồ Use cases:
Chúng ta có 2 sơ đồ use case tương ứng với 2 actors có trong hệ thông:
Admin: là người quản trị hệ thống
Health Center User: là người dùng ở các cơ sở y tế
Trang 19Hình 2.2 Sơ đồ Use case
Trang 202.3 Sơ đồ hoạt động:
Hình 2.3 Sơ đồ hoạt động
Trang 212.4 Từ điển dữ liệu:
Setting
3 mpi_value varchar Giá trị của setting key tương ứng
Trang 22BlockingField
3 blocking_round_id long Khóa ngoại nối với blocking round
tương ứng Bảng 2.5 BlockingField
User
5 health_center_id long Khóa ngoại nối với cơ sở y tế tương
Trang 23HealthCenter
Bảng 2.8 HealthCenter Person
6 health_center_insurance_number varchar Mã thẻ bảo hiểm y tế
7 identification_number varchar Số chứng minh nhân dân
toán
Bảng 2.9 Person
Trang 24MasterPerson
6 health_center_insurance_number varchar Mã thẻ bảo hiểm y tế
7 identification_number varchar Số chứng minh nhân dân
Bảng 2.10 Person
ReviewLink
4 master_person_id long Khóa ngoại nối với master person
tương ứng
ứng Bảng 2.11 ReviewLink
Province
Bảng 2.12 Province
Trang 25Chương 3: PHÁT TRIỂN VÀ TRIỂN KHAI HỆ THỐNG
3.1 Phát triển hệ thống:
3.1.1 Thuật toán tính độ tương đồng của hai chuỗi:
Để xác định 2 bản ghi có cùng tham chiếu đến 1 người hay không, chúng ta phải đánh giá độ tương đồng giữa 2 bản ghi này Vì vậy, trước hết, chúng ta cần phải tìm ra
độ tương đồng giữa 2 chuỗi
Trong đồ án tốt nghiệp này, em dùng thuật toán Levenshtein để tìm ra khoảng cách giữa hai chuỗi Từ đó, chúng ta có thể dễ dàng tính ra độ tương đồng hai chuỗi này Trong các thuật toán của bộ môn khoa học máy tính, khái niệm Khoảng cách
Levenshtein thể hiện khoảng cách khác biệt giữa 2 chuỗi ký tự Khoảng cách
Levenshtein giữa chuỗi S và chuỗi T là số bước ít nhất biến chuỗi S thành chuỗi T thông qua 3 phép biến đổi là:
Ví dụ: Khoảng cách Levenshtein giữa 2 chuỗi "kitten" và "sitting" là 3, vì phải dùng
ít nhất 3 lần biến đổi
kitten -> sitten (thay "k" bằng "s")
sitten -> sittin (thay "e" bằng "i")
sittin -> sitting (thêm ký tự "g")
Mã giả:
Trang 26Hình 3.1 Mã giả thuật toán Levenshtein
Khi đó, độ tương đồng của 2 chuỗi sẽ là:
𝐿𝑒𝑣𝑒𝑛𝑠ℎ𝑡𝑒𝑖𝑛𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒(𝑠1, 𝑠2)𝑀𝑎𝑥𝐿𝑒𝑛𝑔𝑡ℎ(𝑠1, 𝑠2)
Chúng ta biết rằng có vài trường trong bản ghi thông tin bệnh nhân sẽ có mức độ quan trọng cao hơn Do đó, chúng ta cần đánh trọng số tương ứng với mức độ quan trọng của trường đó
address 1600 pennsylvania ave 1600 Pensylvannia Avenue 20
Trang 27Bảng 3.1 Ví dụ về cách đánh trọng số
3.1.2 Thuật toán chia block:
Khi 1 bản ghi bệnh nhân được thêm vào hệ thống MPI, bản ghi này sẽ được chạy thuật toán so sánh độ tương đồng với tất cả các bản ghi trong MPI Khi mà số lượng bản ghi MPI trở nên lớn thì việc so sánh này trở nên chậm chạp, mất rất nhiều thời gian
Trong thực tế, những bản ghi trùng nhau hầu như luôn luôn chia sẻ một vài đặc điểm chung Nếu chúng ta định nghĩa được những nhóm dữ liệu phân chia theo đặc điểm chung đó, việc so sánh chỉ còn đối với nhóm dữ liệu này thay vì so sánh với toàn
bộ cơ sở dữ liệu
Chúng ta phải dùng thuật toán blocking để giảm số lần so sánh
record id first name last name address phone
number
gender
pennsylvania ave
555-0123 male
Pensylvannia Avenue
Với dữ liệu như bảng ở trên, nếu chúng ta gom nhóm các bản ghi theo trường
gender thì số lần so sánh sẽ giảm đi rất nhiều và kết quả vẫn được đảm bảo
Câu lệnh truy vẫn SQL tương ứng sẽ là
“SELECT * FROM master_person WHERE gender=?”
Trang 283.1.3 Quy tắc sinh mã định danh:
Trong hệ thống MPI, chúng ta cần sinh ra mã định danh(globalId) cho mỗi bệnh nhân Định danh này được sinh theo quy tắc như sau
Hình 3.2 Quy tắc sinh mã định danh Thuật toán module 11:
Các bước để tính ký tự kiểm tra:
Gán trọng số cho mỗi số trong dãy số cần tính Trọng số được đánh từ 2, 3, 4, từ trái sang phải
Mỗi số được nhân với trọng số của nó
Kết quả của mỗi phép nhân được cộng lại với nhau
Tổng này được chia cho 11 để lấy số dư
Ký tự kiểm tra bằng 11 trừ cho số dư(nếu ký tự kiểm tra bằng 10 thì được thay bằng “X”, nếu ký tự kiểm tra bằng 11 thì được thay bằng “0”)
Ví dụ: cần tính ký tự kiểm tra cho dãy số 036532
Trang 2911 - 4 = 7
7 là ký tự cần tìm
Các bước để đảm bảo tính đúng dắn của ký tự kiểm tra:
Toàn bộ mỗi số cần tính được nhân với trọng số như cách tính trên, với ký tự kiểm tra thì được nhân với 1
Kết quả của các phép nhân được cộng lại với nhau
Tổng này được chia cho 11, nếu số dư là 0, thì dãy số trên là đúng đắn
Từ những thiết kế ở từ điển dữ liệu, chúng ta triển khai cài đặt trên hệ quản trị cơ sở
dữ liệu MySQL Kết quả thu được như hình dưới: