1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Khoa học máy tính: Xây dựng phần mềm quản lý hồ sơ sức khỏe điện tử cho các phòng khám gia đình

140 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

ĐẠI HỌC QUỐC GIA TP.HCMTRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

Xây dựng phần mềm quản lý hồ sơ sức khỏe điện tửcho các phòng khám gia đình

NGÀNH: KHOA HỌC MÁY TÍNH

HỘI ĐỒNG: KHOA HỌC MÁY TÍNH 4GVHD: Ths Trần Thị Quế Nguyệt

GVPB: Ths Nguyễn Đình Thành -o0o -

SVTH: Nguyễn Công Anh (1710477)

TP HỒ CHÍ MINH, 12/2021

Trang 2

ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM - Độc lập - Tự do - Hạnh phúc

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA:KH & KT Máy tính NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP

BỘ MÔN:Hệ thống thông tin Chú ý: Sinh viên phải dán tờ này vào trang nhất của bản thuyết trình

HỌ VÀ TÊN: NGUYỄN CÔNG ANH MSSV: 1710477

3 Ngày giao nhiệm vụ luận án: 01/03/20214 Ngày hoàn thành nhiệm vụ: 28/02/2022

ThS Trần Thị Quế Nguyệt

Nội dung và yêu cầu LVTN đã được thông qua Bộ môn.

Ngày tháng năm

PGS TS Trần Minh Quang ThS Trần Thị Quế Nguyệt

PHẦN DÀNH CHO KHOA, BỘ MÔN:

Người duyệt (chấm sơ bộ):Đơn vị:

Ngày bảo vệ:Điểm tổng kết:Nơi lưu trữ luận án:

Trang 3

TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KHOA KH & KT MÁY TÍNH Độc lập - Tự do - Hạnh phúc -

Ngày tháng năm

PHIẾU CHẤM BẢO VỆ LVTN

(Dành cho người hướng dẫn/phản biện)

1 Họ và tên SV: Nguyễn Công Anh

2 Đề tài: Xây dựng phần mềm quản lý hồ sơ sức khỏe điện tử cho các phòng khám gia đình

3 Họ tên người hướng dẫn: ThS Trần Thị Quế Nguyệt 4 Tổng quát về bản thuyết minh:

- Các thông tin lưu trữ hồ sơ khá chi tiết như thông tin bệnh nhân, thông tin sức khoẻ (các tiền sử cá nhân, tiền sử gia đình), thông tin cận lâm sàng bao gồm xét nghiệm, nội soi, điện tim, điện não, siêu âm, chẩn đoán hình ảnh, đơn thuốc, lịch sử khám

- Phần mềm có chức năng xuất file để thuận tiện in ấn cho người cũng như các tính năng cài đặt danh sách chi nhánh, danh sách bách sĩ, thời gian làm việc, nhóm quyền dành cho người quản trị phòng khám

- Sinh viên cũng đã tìm hiểu cách thức triển khai hệ thống trên nền tảng cloud amazon web service

7 Những thiếu sót chính của LVTN:

- Chức năng báo cáo, thống kê chưa thực hiện

- Chức năng phân quyền chưa được linh hoạt, việc chỉnh sửa tạo hồ sơ bệnh nhân chưa phụ thuộc vào ca làm việc của bác sĩ tại phòng khám

- Phần mềm chỉ tập trung chức năng quản lý hồ sơ sức khoẻ, cần mở rộng các chức năng bảo mật hồ sơ sức khoẻ hoặc dự báo tình trạng sức khoẻ

8 Đề nghị: Được bảo vệ □ Bổ sung thêm để bảo vệ □ Không được bảo vệ □ 9 3 câu hỏi SV phải trả lời trước Hội đồng:

10 Đánh giá chung (bằng chữ: giỏi, khá, TB): Khá Điểm : 7.5 /10

Trang 4

TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

-Ngày 27 tháng 2 năm 2022

PHIẾU CHẤM BẢO VỆ LVTN

(Dành cho người hướng dẫn/phản biện)

1 Họ và tên SV: Nguyễn Công Anh MSSV: 1710477Ngành (chuyên ngành): Hệ thống thông tin

2 Đề tài: Xây dựng phần mềm quản lý hồ sơ sức khỏe điện tử cho các phòng khám gia đình3 Họ tên người phản biện: Ths Nguyễn Đình Thành

4 Tổng quát về bản thuyết minh:

 Đã tìm hiểu và áp dụng tốt được các công nghệ liên quan.

 Đã tìm hiểu và xây dựng được quy trình cơ bản của việc khám bệnh của các phòng khám, nội dung các mẫu hồ sơ bệnh án, hồ sơ sức khỏe.

 Hệ thống được triển khai trên môi trường điện toán đám mây.7 Những thiếu sót chính của LVTN:

 Chưa phân tích và xem xét các giải pháp bảo vệ tính riêng tư , bảo mật dữ liệu của người dùng.

 Thiết kế hệ thống chưa mang tính khả mở, chưa hỗ trợ cho phép tích hợp các hệ thống khác, các phòng khám ngoài hệ thống truy xuất.

8 Đề nghị: Được bảo vệ ■ Bổ sung thêm để bảo vệ □ Không được bảo vệ □9 3 câu hỏi SV phải trả lời trước Hội đồng:

10 Đánh giá chung (bằng chữ: giỏi, khá, TB): kháĐiểm : 7.5/10

Ký tên (ghi rõ họ tên)

Trang 5

LỜI CAM ĐOAN

LỜI CAM ĐOAN

Tôi xin cam đoan đây là phần mềm do tôi phát triển dưới sự hướng dẫn của Ths.Trần Thị Quế Nguyệt Các nội dung nghiên cứu, kết quả trong đề tài này là trung thực vàchưa được công bố dưới bất kỳ hình thức nào trước đây.

Nếu phát hiện có bất kỳ sự gian lận nào, tôi xin hoàn toàn chịu trách nhiệm về nộidung luận văn của mình và chịu mọi hình thức kỷ luật trước Ban chủ nhiệm Khoa và Bangiám hiệu nhà trường.

Trang 6

LỜI CẢM ƠN

LỜI CẢM ƠN

Để hoàn thành quá trình nghiên cứu và hoàn thiện luận văn này, lời đầu tiên, tôixin chân thành cảm ơn sâu sắc đến cô Trần Thị Quế Nguyệt thuộc Khoa Khoa học và Kỹthuật Máy tính – Trường đại học Bách Khoa Cô đã trực tiếp hướng dẫn tôi trong suốt quátrình thực hiện để tôi có thể hoàn thiện luận văn này.

Ngoài ra tôi xin chân thành cảm ơn các thầy, cô trong Khoa, những người đã tậntình truyền đạt kiến thức quý báu cho tôi suốt những năm học vừa qua Đó là những kiếnthức nền tảng vô cùng quan trọng không chỉ để có thể hoàn thành luận văn này, mà còn làhành trang không thể thiếu để tiếp tục sự nghiệp sau khi hoàn thành chương trình học.

Nhân dịp này, tôi cũng xin cảm ơn các cán bộ trong Khoa cũng như ban giám hiệunhà trường và các anh chị đang công tác tại các doanh nghiệp đã giúp đỡ tôi đạt được rấtnhiều kinh nghiệm trong thời gian thực tập.

Cuối cùng, tôi xin cảm ơn những người thân, bạn bè đã luôn ở bên, động viên tôihoàn thành khóa học và luận văn này.

Tuy nhiên vì kiến thức chuyên môn còn hạn chế và bản thân mỗi người còn thiếusót nhiều kinh nghiệm thực tiễn nên nội dung của báo cáo không tránh khỏi những sai sót,tôi rất mong nhận sự góp ý, chỉ bảo thêm của quý thầy cô để báo cáo này được hoàn thiệnhơn.

Một lần nữa xin gửi đến thầy cô, bạn bè lời cảm ơn chân thành và tốt đẹp nhất!Trân trọng cảm ơn!

Trang 7

TÓM TẮT ĐỀ TÀI

TÓM TẮT ĐỀ TÀI

E-HEALICORDS là một phần mềm cung cấp giải pháp quản lý hồ sơ sức khỏeđiện tử cho các phòng khám bác sĩ gia đình, với mục tiêu giúp các phòng khám quản lýđồng bộ hồ sơ bệnh án điện tử của người bệnh đến khám tại nhiều chi nhánh khác nhaugóp phần tạo thành các bộ hồ sơ sức khỏe điện tử cho người bệnh của họ.

Nhằm hướng tới thực hiện hóa mục tiêu đó, phần mềm cung cấp cho quản trị viêncủa các chi nhánh những nhóm chức năng liên quan đến quản lý chi nhánh như: quản lýthông tin chi nhánh, quản lý thông tin các bác sĩ của chi nhánh, cấu hình chi nhánh bằngnhững nhóm chức năng: quản lý chuyên khoa bác sĩ của chi nhánh, quản lý phòng và kiểuphòng của chi nhánh.

Đối với bác sĩ, phần mềm cung cấp các chức năng liên quan đến quản lý hồ sơ sứckhỏe điện tử của người bệnh như: tạo thông tin nhân khẩu cho người bệnh, tạo hồ sơkhám cho người bệnh khi người bệnh đến khám tại một chi nhánh bất kỳ, cũng liên quanđến các hồ sơ khám đó, những chức năng quản lý thông tin khám lâm sàng, quản lý thôngtin sức khỏe, quản lý thông tin cận lầm sàng, quản lý thông tin chẩn đoán và kết luận,quản lý đơn thuốc, sẽ giúp bác sĩ hoàn thiện được các bộ hồ sơ bệnh án của người bệnhvà lưu các bệnh án đó lại theo lịch sử, giúp người bệnh của phòng khám có một bộ hồ sơsức khỏe thống nhất cho dù là đi khám khi nào, đi khám ở chi nhánh nào.

Để hoàn thành đề tài này, tôi đã thực hiện những công việc sau:

- Tìm hiểu nghiệp vụ liên quan đến quy trình khám bệnh của các phòngkhám, nội dung các mẫu hồ sơ bệnh án cũng như hồ sơ sức khỏe.

- Thực hiện thiết kế hệ thống phù hợp với mục tiêu có khả năng cấu hìnhcho các chi nhánh khác nhau và phù hợp với các chức năng đã đề ra.

- Tìm hiểu những công nghệ phù hợp để áp dụng vào hệ thống tiêu biểu nhưSpring Boot, ReactJs, NextJs,

- Tìm hiểu để triển khai hệ thống lên môi trường dịch vụ điện toán đám mây.

Trang 8

TÓM TẮT CHƯƠNG

TÓM TẮT CHƯƠNGChương 1: Tổng quan đề tài

Trong chương đầu tiên này, tôi trình bày ý nghĩa và mục tiêu của đề tài Bên cạnhđó là những giới hạn trong khuôn khổ đề tài luận văn tốt nghiệp.

Chương 2: Kiến thức nền tảng

Trong chương này tôi giới thiệu các công nghệ, lý do lựa chọn các công nghệ để ápdụng hiện thực và triển khai hệ thống.

Chương 3: Phân tích và thiết kế hệ thống

Trong chương này tôi cung cấp những khái niệm trong phần mềm, mô tả cácusecase và thiết kế cơ sở dữ liệu.

Chương 4: Hiện thực

Trong chương này tôi trình bày kiến trúc của hệ thống, các công cụ quản lý mãnguồn, cấu trúc mã nguồn ứng dụng web và ứng dụng web server.

Chương 5: Giao diện ứng dụng web

Trong chương này tôi trình bày các giao diện ứng dụng web dưới dạng hình ảnh hỗtrợ một cái nhìn toàn diện về phần mềm.

Chương 6: Triển khai

Trong chương này tôi trình bày các bước triển khai hệ thống trên Vercel và AWS.

Chương 7 Tổng kết và hướng phát triển đề tài

Trong chương này tôi tổng kết lại kết quả trong suốt quá trình lên ý tưởng và hiệnthực đề tài Cuối cùng, tôi trình bày một số hướng phát triển cho đề tài hiện tại.

Trang 9

7 Mô hình dữ liệu quan hệ 30

8 Hệ quản trị cơ sở dữ liệu MySQL 31

9 Docker 31

10 Amazon Web Services 32

Trang 10

MỤC LỤC

11 Third party services 33

11.1 Amazon S3 33

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 35

1 Các khái niệm trong hệ thống 35

2 Use Case Diagram 36

2.1 Quản trị viên chi nhánh 36

2.2 Bác sĩ 44

3 Cơ sở dữ liệu 68

3.1 ERD - Quan hệ 68

3.2 ERD - Thực thể 70

3.3 ERD - Thực thể chi tiết 72

3.4 Sơ đồ cơ sở dữ liệu vật lý 80

CHƯƠNG 4: HIỆN THỰC 82

1 Kiến trúc hệ thống 82

2 Quản lý mã nguồn 83

2.1 Ứng dụng web (front-end) 83

2.2 Ứng dụng web HTTP server (back-end) 84

CHƯƠNG 5: GIAO DIỆN ỨNG DỤNG WEB 85

1 Giao diện đăng nhập 85

2 Giao diện đổi mật khẩu lần đầu 85

3 Giao diện quản trị viên 86

3.1 Các giao diện quản lý chi nhánh 86

3.2 Các giao diện quản lý bác sĩ của chi nhánh 87

4 Giao diện bác sĩ 91

4.1 Các giao diện quản lý người bệnh 91

4.2 Giao diện thêm hồ sơ khám 94

4.3 Các giao diện quản lý lịch sử khám 95

4.4 Các giao diện quản lý thông tin khám lâm sàng 100

4.5 Các giao diện quản lý thông tin chẩn đoán và kết luận 102

4.6 Các giao diện quản lý thông tin cận lâm sàng 103

4.7 Các giao diện quản lý thông tin sức khỏe 106

4.8 Các giao diện quản lý đơn thuốc 112

CHƯƠNG 6: TRIỂN KHAI 117

Trang 11

MỤC LỤC

1 Ứng dụng web 117

2 Ứng dụng web HTTP server 118

CHƯƠNG 7: TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 133

1 Đánh giá kết quả đạt được 133

1.1 Đối với nhiệm vụ đề tài 133

1.2 Đối với cơ sở lý thuyết và công nghệ 133

1.3 Đối với quy trình phát triển phần mềm 134

1.4 Đối với lợi ích thực tế 134

2 Đánh giá ưu điểm, nhược điểm 134

2.1 Ưu điểm 134

2.3 Nhược điểm 135

3 Hướng phát triển đề tài 135

DANH MỤC TÀI LIỆU THAM KHẢO 137

Trang 12

DANH MỤC HÌNH ẢNH

DANH MỤC HÌNH ẢNH

Hình 2.1: Client side rendering 20

Hình 2.2: Virtual DOM 22

Hình 2.3: Redux quản lý state bằng store 24

Hình 2.4: NextJs real experience score 25

Hình 2.5: Spring framework, các thành phần lõi 29

Hình 4.2: Mã nguồn frontend trên github 84

Hình 4.3: Mã nguồn backend trên github 84

Hình 5.1: Màn hình đăng nhập 85

Hình 5.2: Màn hình đổi mật khẩu lần đầu 86

Hình 5.3: Màn hình xem thông tin chi nhánh 87

Hình 5.4: Mà hình cập nhật thông tin chi nhánh 87

Hình 5.10: Màn hình danh sách hồ sơ người bệnh 91

Hình 5.11: Màn hình thêm mới hồ sơ người bệnh 92

Hình 5.12: Mà hình cập nhật hồ sơ người bệnh 92

Hình 5.13: Màn hình xóa hồ sơ người bệnh 93

Hình 5.14: Màn hình thông tin chi tiết người bệnh 94

Hình 5.15: Màn hình thêm hồ sơ khám 94

Hình 5.16: Màn hình lịch sử khám 95

Trang 13

Hình 5.25: Màn hình chọn đợt khám cho thông tin lâm sàng 101

Hình 5.26: Màn hình thông tin khám lâm sàng 1 101

Hình 5.27: Màn hình thông tin khám lâm sàng 2 102

Hình 5.28: Màn hình thông tin chẩn đoán và kết luận 103

Hình 5.29: Màn hình chọn kiểu cận lầm sàng 104

Hình 5.30: Màn hình thêm mới xét nghiệm 104

Hình 5.31: Màn hình thêm mới chẩn đoán hình ảnh 105

Hình 5.32: Màn hình xóa cận lâm sàng 105

Hình 5.33: Màn hình thêm mới tình trạng lúc sinh 106

Hình 5.34: Màn hình thêm mới yếu tố nguy cơ 107

Hình 5.35: Màn hình thêm mới tiền sử dị ứng 107

Hình 5.36: Màn hình thêm mới tiền sử bệnh 108

Hình 5.37: Màn hình thêm mới tiền sử dị ứng gia đình 108

Hình 5.38: Màn hình thêm mới tiền sử bệnh gia đình 109

Hình 5.39: Màn hình thêm mới tiền sử phẫu thuật 109

Hình 5.40: Màn hình thêm mới thông tin khuyết tật 110

Hình 5.41: Màn hình xem thông tin sức khỏe ví dụ 110

Hình 5.42: Màn hình cập nhật thông tin sức khỏe ví dụ 111

Hình 5.43: Màn hình xóa thông tin sức khỏe ví dụ 112

Hình 5.44: Màn hình danh sách đơn thuốc 112

Hình 5.45: Màn hình thêm mới đơn thuốc 113

Hình 5.46: Màn hình xem chi tiết đơn thuốc 113

Hình 5.47: Màn hình cập nhật đơn thuốc 114

Hình 5.48: Màn hình xóa đơn thuốc 114

Hình 5.49: Màn hình hoàn thành đơn thuốc 1 115

Trang 14

DANH MỤC HÌNH ẢNH

Hình 5.50: Màn hình hoàn thành đơn thuốc 2 115

Hình 5.51: Màn hình xem lại file đơn thuốc 116

Hình 6.1: Thêm project github vào vercel 117

Hình 6.2: cấu hình thông tin triển khai trên vercel 118

Hình 6.3: Hệ thống vercel triển khai ứng dụng web 118

Hình 6.4: Ứng dụng web được triển khai thành công 118

Hình 6.5: Chọn “Create key pair” trong màn hình danh sách key pair 119

Hình 6.6: Tạo key pair “ehealicords” 119

Hình 6.7: Lưu key pair về máy 120

Hình 6.8: Kiểm tra key pair đã có ở trong danh sách key pair 120

Hình 6.9: “Launch Instance” mới trong màn hình danh sách EC2 Instances 121

Hình 6.10: Chọn AMI 121

Hình 6.11: Chọn loại EC2 instance 122

Hình 6.12: Tùy chọn thông số instance 122

Hình 6.13: Chọn bộ nhớ SSD cho instance mới 123

Hình 6.14: Bỏ qua bước gắn thẻ 123

Hình 6.15: Mở các port cho ứng dụng backend 124

Hình 6.16: Xem lại các thông tin cấu hình của instance mới 124

Hình 6.17: Chọn key pair để truy cập được vào instance thông qua ssh 125

Hình 6.18: Kiểm tra instance đã khởi động được hay chưa 126

Hình 6.19: Các lệnh bash để build docker image cho backend 126

Hình 6.20: Dockerfile tương ứng dùng để build ra image chứa backend 127

Hình 6.21: Kiểm tra docker image đã được push lên docker hub hay chưa 127

Hình 6.22: Chọn instance sẽ chạy ứng dụng backend 128

Hình 6.23: Truy cập trực tiếp vào shell của instance 128

Hình 6.24: Shell của instance 129

Hình 6.25: Các lệnh bash để cài docker vào instance 130

Hình 6.26: Lệnh bash để pull image chứa backend về 130

Hình 6.27: Kiểm tra image backend đã được pull về thành công hay chưa 130

Hình 6.28: Lệnh bash dùng để khởi chaỵ container chứa backend 131

Hình 6.29: Kiểm tra container đã chạy được và expose cổng 80 ra bên ngoài 131

Hình 6.30: Đăng nhập web thành công sau khi triển khai backend 132

Trang 15

DANH MỤC BẢNG BIỂU

DANH MỤC BẢNG BIỂU

Bảng 3.1: Usecase đổi mật khẩu lần đầu 37

Bảng 3.2: Usecase đăng nhập 38

Bảng 3.3: Usecase đăng xuất 38

Bảng 3.4: Usecase xem thông tin chi nhánh 39

Bảng 3.5: Usecase cập nhật thông tin chi nhánh 40

Bảng 3.6: Usecase xem danh sách bác sĩ 40

Bảng 3.7: Usecase tìm kiếm bác sĩ 41

Bảng 3.8: Usecase thêm mới bác sĩ 42

Bảng 3.9: Usecase xem chi tiết bác sĩ 42

Bảng 3.10: Usecase xóa hồ sơ bác sĩ 43

Bảng 3.11: Usecase cập nhật hồ sơ bác sĩ 44

Bảng 3.12: Usecase xem danh sách người bệnh 46

Bảng 3.13: Usecase thêm hồ sơ người bệnh 47

Bảng 3.14: Usecase cập nhật hồ sơ người bệnh 48

Bảng 3.15: Usecase xem chi tiết người bệnh 48

Bảng 3.16: Usecase tìm kiếm hồ sơ người bệnh 49

Bảng 3.17: Usecase xóa hồ sơ người bệnh 50

Bảng 3.18: Usecase thêm mới hồ sơ khám 50

Bảng 3.19: Usecase xem danh sách lịch sử khám 51

Bảng 3.20: Usecase xem chi tiết lịch sử khám 52

Bảng 3.21: Usecase cập nhật lịch sử khám 52

Bảng 3.22: Usecase xóa lịch sử khám 53

Bảng 3.23: Usecase hoàn thành đợt khám 54

Bảng 3.24: Usecase xem lại tóm tắt đợt khám 55

Bảng 3.25: Usecase thêm mới hoặc cập nhật thông tin khám lâm sàng 55

Bảng 3.26: Usecase xem chi tiết thông tin khám lâm sàng 56

Bảng 3.27: Usecase thêm mới hoặc cập nhật thông tin chẩn đoán và kết luận 57

Bảng 3.28: Usecase xem chi tiết thông tin chẩn đoán và kết luận 58

Bảng 3.29: Usecase thêm mới thông tin cận lâm sàng 58

Bảng 3.30: Usecase xem chi tiết thông tin cận lâm sàng 59

Bảng 3.31: Usecase xóa thông tin cận lâm sàng 60

Bảng 3.32: Usecase thêm mới đơn thuốc 61

Trang 16

DANH MỤC BẢNG BIỂU

Bảng 3.33: Usecase xem danh sách đơn thuốc 61

Bảng 3.34: Usecase xem chi tiết đơn thuốc 62

Bảng 3.35: Usecase cập nhật đơn thuốc 63

Bảng 3.36: Usecase xóa đơn thuốc 63

Bảng 3.37: Usecase hoàn thành đơn thuốc 64

Bảng 3.38: Usecase thêm mới thông tin sức khỏe 65

Bảng 3.39: Usecase xem danh sách cập nhật thông tin sức khỏe 66

Bảng 3.40: Usecase xem chi tiết thông tin sức khỏe 66

Bảng 3.41: Usecase xóa thông tin sức khỏe 67

Bảng 3.42: Usecase cập nhật thông tin sức khỏe 68

Bảng 3.43: Chi tiết thực thể Business Hours 72

Bảng 3.44: Chi tiết thực thể Room Type 72

Bảng 3.45: Chi tiết thực thể Room 72

Bảng 3.46: Chi tiết thực thể Record Type 73

Bảng 3.47: Chi tiết thực thể Subclinical Type 73

Bảng 3.48: Chi tiết thực thể Medical Specialty 73

Bảng 3.49: Chi tiết thực thể Province 73

Bảng 3.50: Chi tiết thực thể District 74

Bảng 3.51: Chi tiết thực thể Ward 74

Bảng 3.52: Chi tiết thực thể Medicine 74

Bảng 3.53: Chi tiết thực thể Patient 75

Bảng 3.54: Chi tiết thực thể Specialist 76

Bảng 3.55: Chi tiết thực thể Branch 76

Bảng 3.56: Chi tiết thực thể Staff 77

Bảng 3.57: Chi tiết thực thể Group of Roles 77

Bảng 3.58: Chi tiết thực thể Examination History 77

Bảng 3.59: Chi tiết thực thể Prescription 77

Bảng 3.60: Chi tiết thực thể Clinical Details 78

Bảng 3.61: Chi tiết thực thể Diagnosis And Conclusions 79

Bảng 3.62: Chi tiết thực thể Subclinical Details 79

Bảng 3.63: Chi tiết thực thể Birth Status 79

Bảng 3.64: Chi tiết thực thể Risk Factors 80

Bảng 3.65: Chi tiết thực thể Anamnesis 80

Trang 17

DANH MỤC BẢNG BIỂU

Bảng 3.66: Chi tiết thực thể Surgery History 80

Trang 18

CHƯƠNG 1: TỔNG QUAN HỆ THỐNG

CHƯƠNG 1: TỔNG QUAN HỆ THỐNG1 Giới thiệu

Trong hệ thống thông tin y tế của các cơ sở chăm sóc sức khỏe xưa và nay, côngtác lưu trữ thông tin về người bệnh đến khám đều phải thực hiện trên giấy tờ, sổ sách.Việc này gây ra vô vàn những bất cập như lượng thông tin lưu trữ quá lớn, tìm kiếm khókhăn, đặc biệt là việc chia sẻ thông tin giữa các khâu khám bệnh, giữa các khoa trong cáccơ sở chăm sóc sức khỏe hoặc giữa các cơ sở chăm sóc sức khỏe với nhau còn hạn chế.

Cùng với sự phát triển vượt bậc của công nghệ thông tin, sự hoàn thiện cơ sở pháplý về ứng dụng công nghệ thông tin trong đời sống xã hội nói chung và trong lĩnh vựcchăm sóc sức khỏe nói riêng, việc tiến đến xây dựng và triển khai các hệ thống bệnh ánđiện tử là xu thế khách quan đối với các cơ sở chăm sóc sức khỏe trong nước và trên thếgiới.

Bệnh án điện tử là bản tin học hóa của hồ sơ bệnh án được sở hữu riêng bởi một cơsở y tế cụ thể, có thể là bệnh viện, phòng khám đa khoa, phòng khám chuyên khoa Hồ sơbệnh án điện tử bao gồm thông tin được thu thập bởi các bác sĩ để chẩn đoán và điều trịcho bệnh nhân của họ, được ghi lại để sử dụng nội bộ và thông tin này thường không thểsử dụng bên ngoài cơ sở y tế đó Bệnh án điện tử không chỉ là chuyển hồ sơ giấy sang hồsơ số, điều quan trọng hơn là tích hợp nhiều tiện ích cho bác sĩ, điều dưỡng và cả nhàquản lý nhằm tăng hiệu quả điều trị và tăng tính an toàn cho người bệnh.

Ở một bước tiến mới hơn, Hồ sơ sức khỏe điện tử gần giống như hồ sơ bệnh ánđiện tử nhưng thông tin về bệnh nhân vượt xa giới hạn trong một cơ sở y tế Hồ sơ sứckhỏe điện tử là một bộ sưu tập dữ liệu sức khoẻ của một cá nhân, thu thập từ tất cả cácbác sĩ tham gia chăm sóc bệnh nhân tại nhiều cơ sở y tế khác nhau Hồ sơ sức khỏe toàndiện này cũng có thể được chia sẻ giữa các cơ sở y tế với nhau vì nó được tạo ra bởi chínhcác nhà cung cấp dịch vụ y tế khác nhau, do đó thông tin sẽ đầy đủ hơn, hữu ích hơntrong chẩn đoán và điều trị so với hồ sơ bệnh án điện tử.

Hồ sơ sức khỏe điện tử đã được Tổ chức y tế thế giới xác định là mục tiêu phấnđấu cho tất cả hệ thống y tế của mọi quốc gia, tức là trong tương lai không còn hình ảnhmỗi cơ sở y tế, mỗi cơ sở chăm sóc sức khỏe lại có một hệ thống hồ sơ bệnh án điện tửdùng riêng mà các dữ liệu và thông tin về tình hình sức khoẻ và các chăm sóc trước đó

Trang 19

CHƯƠNG 1: TỔNG QUAN HỆ THỐNG

của người bệnh phải được liên thông, xuyên suốt theo thời gian và địa điểm chăm sóc sứckhỏe Điều này đã yêu cầu thay đổi trọng tâm trong chăm sóc sức khỏe ở nhiều lĩnh vựcđể đảm bảo, nếu có thể nên triển khai thực hiện hồ sơ sức khỏe điện tử trên một phạm virộng lớn các cơ sở cung ứng dịch vụ chăm sóc sức khỏe.

Tuy nhiên đây chỉ được xem là tình huống lý tưởng, cho đến nay không phải quốcgia nào cũng thực hiện được như vậy, mặc dù nhiều kế hoạch đã được xây dựng nhưngvẫn không thực hiện được ở một số nước đang phát triển và ngay cả một số nước pháttriển.

Tại Việt Nam, việc triển khai hồ sơ sức khỏe điện tử vẫn còn đang trong giai đoạnhoàn thiện các quy định pháp lý và triển khai thí điểm tại các bệnh viện loại 1, nhưng đâylại là là một công việc vô cùng phức tạp đòi hỏi sự tham gia của toàn bộ ngành y tế, toànbộ các cơ sở khám chữa bệnh từ các bệnh viện loại 1 cho đến các phòng khám đa khoa,phòng khám chuyên khoa, đến cả những phòng khám nhỏ như phòng khám bác sĩ giađình.

Nhằm hưởng ứng những mục tiêu trên của nền y tế số nước nhà, tôi đã lên ý tưởngvà thực hiện đề tài luận văn của mình về việc sẽ xây dựng một phần mềm quản lý hồ sơsức khỏe điện tử cho các phòng khám bác sĩ gia đình có một chi nhánh hoặc đa chi nhánh.Vì vậy đề tài được mang tên “Xây dựng phần mềm quản lý hồ sơ sức khỏe điện tử chocác phòng khám gia đình”.

2 Ý nghĩa

Về thực tiễn, phần mềm sẽ hỗ trợ các phòng khám bác sĩ gia đình có một chi nhánhhoặc đa chi nhánh cải thiện việc cung cấp dịch vụ chăm sóc sức khỏe và đảm bảo việcchăm sóc của một cá nhân bởi nhiều chuyên gia chăm sóc sức khỏe khác nhau từ nhiềuchi nhánh khác nhau được ghi lại trong một hồ sơ duy nhất và có sẵn Nó sẽ cho phépthông tin chăm sóc sức khỏe, như dị ứng, kết quả xét nghiệm gần đây hoặc lịch sử kê đơnluôn sẵn sàng để hỗ trợ ra quyết định chẩn đoán, điều trị và dùng thuốc Lý tưởng nhất làphần mềm sẽ ghi nhận được toàn bộ lịch sử sức khỏe của một cá nhân trong tất cả các lầnthăm khám tại bất kỳ chi nhánh nào Qua đó giúp phòng khám tận dụng được những ưuthế của hồ sơ sức khỏe điện tử như:

Trang 20

CHƯƠNG 1: TỔNG QUAN HỆ THỐNG

Đối với người bệnh:

- Hồ sơ sức khỏe điện tử cung cấp thông tin sức khỏe của người bệnh chocác bác sĩ một cách nhanh chóng, chính xác tạo thuận lợi cho việc chẩnđoán và điều trị người bệnh giúp họ được chăm sóc sức khỏe toàn diện vàliên tục, phát hiện bệnh sớm, điều trị kịp thời khi bệnh còn ở giai đoạn sớmmang lại hiệu quả điều trị cao, giảm bớt chi phí khám chữa bệnh.

- Cho phép thông tin về sức khỏe của người bệnh được chia sẻ tại bất kỳ chinhánh nào của phòng khám Khi thông tin về sức khỏe của người bệnhđược thông suốt giữa các chi nhánh sẽ giúp việc chẩn đoán chính xác, phốihợp điều trị thống nhất, hiệu quả điều trị sẽ cao hơn.

Đối với cơ sở khám bệnh, chữa bệnh:

- Có thể tra cứu thông tin lịch sử sức khỏe của người bệnh đến khám chữabệnh bất kỳ lúc nào một cách nhanh chóng, thuận tiện.

- Cập nhật thông tin khám bệnh, chữa bệnh vào một hệ thống hồ sơ sức khỏeđiện tử duy nhất.

- Hồ sơ sức khỏe điện tử cung cấp cho bác sĩ đầy đủ các thông tin về bệnhtật, tiền sử bệnh tật, các yếu tố nguy cơ ảnh hưởng đến sức khỏe Từ đó kếthợp với thăm khám hiện tại, bác sĩ sẽ có nhận định về sức khỏe của ngườibệnh toàn diện hơn, chẩn đoán bệnh kịp thời, chính xác hơn, phát hiệnbệnh sớm hơn, điều trị kịp thời khi bệnh còn ở giai đoạn sớm mang lại hiệuquả điều trị cao hơn Hơn nữa, khi thông tin về sức khỏe của người bệnhđược thông suốt giữa các chi nhánh sẽ giúp việc chẩn đoán và phối hợpđiều trị tốt hơn.

Về mặt học thuật, việc hiện thực và triển khai nền tảng giúp tôi áp dụng và củng cốnhững kiến thức, kinh nghiệm có được qua quá trình học tập, các kỳ thực tập môn học vàdoanh nghiệp vào chính đề tài Hơn thế nữa tôi được phân tích thiết kế, tự mình chọnnhững công nghệ phù hợp và mới nhất để áp dụng điển hình như Spring Boot, NextJs.Được tận tay triển khai hệ thống trên nền tảng điện toán đám mây cụ thể là AWS Đượcvận dụng kiến thực các môn học không thể thiếu như hệ điều hành, mạng máy tính, hệ cơsở dữ liệu, lập trình web,

Trang 21

Đối với bác sĩ, phần mềm cung cấp các chức năng liên quan đến quản lý hồ sơ sứckhỏe điện tử của người bệnh như: tạo thông tin nhân khẩu cho người bệnh, tạo hồ sơkhám cho người bệnh khi người bệnh đến khám tại một chi nhánh bất kỳ, quản lý thôngtin khám lâm sàng, quản lý thông tin sức khỏe, quản lý thông tin cận lâm sàng, quản lýthông tin chẩn đoán và kết luận, quản lý đơn thuốc,

Sau cùng với sự kết hợp của các chức năng này, sẽ giúp bác sĩ hoàn thiện được cácbộ hồ sơ bệnh án của người bệnh và lưu các bệnh án đó lại theo lịch sử, giúp người bệnhcủa phòng khám có một bộ hồ sơ sức khỏe thống nhất cho dù là đi khám khi nào, đi khámở chi nhánh nào.

4 Giới hạn đề tài

Vì việc triển khai các hệ thống quản lý bệnh án vốn dĩ rất phức tạp, đề tài chỉ dừnglại ở việc cung cấp một phẩn mềm thỏa mãn những tiêu chí cơ bản nhất của một bộ hồ sơsức khỏe điện tử thuộc quy mô một phòng khám bác sĩ gia đình như:

- Chứa tất cả thông tin sức khỏe cá nhân của từng người bệnh đến khám theodiện ngoại trú không có bảo hiểm y tế, tại tất cả các lần khám và tất cả cácchi nhánh.

- Được các bác sĩ tại các chi nhánh nhập thông tin điện tử vào hồ sơ sứckhoẻ điện tử tại điểm chăm sóc trong suốt các lần khám.

- Luôn có sẵn thông tin và được truy cập bởi tất cả các chi nhánh đã và đangchăm sóc sức khỏe cho người bệnh.

Trong quá trình hiện thực đề tài, tôi nhận thấy có nhiều thiếu sót chức năng nhưngvì giới hạn về thời gian và nhân lực, tôi sẽ tiếp tục phát triển trong tương lai Nổi bật trong

Trang 22

CHƯƠNG 1: TỔNG QUAN HỆ THỐNG

đó là về việc chưa sử dụng chữ ký số, đồng thời phần mềm chưa đáp ứng các yêu cầu vềpháp lý, quyền riêng tư, bảo mật thông tin, chất lượng và độ chính xác của thông tin hồ sơbệnh án của người bệnh theo 8 cấp độ của bệnh án điện tử cũng như các chuẩn thông tin ytế điện tử đang được áp dụng.

Trang 23

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG1 React

Một trong những vấn đề đầu tiên là lựa chọn và xây dựng giao diện, bao gồm UI,UX, và phát triển các tính năng ở phía người dùng Do tập đối tượng sử dụng là cácphòng khám và bác sĩ, đã quen với việc sử dụng giao diện web, nền tảng web applicationđược ưu tiên lựa chọn do mức độ phổ biến, dễ sử dụng và phát triển của nó Sau khi cânnhắc công nghệ phát triển web application như VueJs, Html-Js-Css thuần, AngularJs vàReactJs, tôi đã cân nhắc lựa chọn ReactJs là khung xương để xây dựng đề tài React (hayReactJs, React.js) là một thư viện Javascript mã nguồn mở để xây dựng các thành phầngiao diện có thể tái sử dụng một cách hiệu quả Nó là một thư viện phổ biến hàng đầuhiện nay để xây dựng các Single-page-application (SPA).

1.1 Single page application

Hình 2.1: Client side rendering

SPA là một khái niệm và xu hướng mới trong việc phát triển web Singlepage application là một ứng dụng web giúp nâng cao trải nghiệm người dùng bằng

Trang 24

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

cách sử dụng Client Side Rendering Đầu tiên khi tải một trang web bất kỳ, SPA sẽtải một trang HTML đơn, mã nguồn Js, sau đó dựa trên request của người dùng,SPA sẽ tiếp tục cập nhật giao diện mà không cần phải request html file từ phíaserver Toàn bộ resource của web bao gồm các file Css, Javascript, master layouthay cấu trúc web page sẽ được load lần đầu tiên khi chúng ta bắt đầu duyệt mộtwebsite nào đó Ở những lần sau, khi chuyển sang một page/route khác, SPA sẽphát hiện được sự thay đổi của URL và từ đó cập nhật giao diện mà không phảiyêu cầu lại toàn bộ resource.

Việc này mang đến trải nghiệm cho người dùng web tốt hơn, giảm thời gianphải load lại toàn bộ trang web cồng kềnh, tiết kiệm băng thông cũng như thời gianchờ đợi Việc này là trái ngược hoàn toàn với trang web truyền thống khi toàn bộtrang web phải load lại mỗi khi chuyển trang SPA đem lại trải nghiệm tốt hơn, đặcbiệt trên các nền tảng mobile nơi mà băng thông thường thấp hơn máy tính.

1.2 React component

ReactJS cho phép tái sử dụng mã nguồn bằng cách chia các thành tố củawebsite thành các React Component Các component được sử dụng lồng vào nhau,việc sử dụng lại logic và giao diện của các component giúp giảm tải công việc viếtcode và testing Ý tưởng về Component chính là chìa khóa giải quyết vấn đề khókhăn khi dự án ngày càng lớn Giao diện được tạo ra từ các Component ghép lạivới nhau, một Component có thể được sử dụng tại nhiều nơi trong dự án Vì vậy,rất dễ dàng khi chúng ta chỉ cần quản lý các Component của mình.

1.3 JSX

React giới thiệu một cú pháp mới trong việc phát triển các component làJSX JSX cho phép người phát triển nhúng HTML vào trong JSX làm cho cáccomponent có thể dễ hiểu và quen thuộc hơn Nó thay đổi cú pháp dạng gần nhưXML về thành Javascript, giúp người lập trình có thể code ReactJs bằng cú phápcủa XML thay vì sử dụng Javascript Các XML elements, attributes và childrenđược chuyển đổi thành các đối số truyền vào React.createElement.

1.4 Virtual Dom

Trang 25

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

DOM ảo (virtual DOM) là một trong những tính năng mới giúp ReactJs cótốc độ nhanh đáng kể Đội ngũ phát triển ReactJs nhận ra rằng JavaScript rất nhanh,nhưng việc cập nhật DOM khiến nó chậm lại Do đó, React giảm thiểu các thay đổiDOM bằng cách hiệu quả và thông minh nhất để cập nhật DOM.

React sử dụng một cây DOM (tree) lưu giữ ánh xạ của một DOM bao gồmcác thuộc tính và thành phần con ở trong Khi dữ liệu của Component thay đổi,React cần phải vẽ lại (rerender) giao diện Thay vì tạo ra thay đổi trực tiếp vào môhình DOM của trình duyệt, nó tạo ra thay đổi trên một DOM ảo (virtual DOM),tính toán bằng các thuật toán nhằm hạn chế nhiều nhất số lần render lại React sẽ tựtính toán sự khác biệt giữa 2 mô hình DOM, và chỉ cập nhập các khác biệt choDOM của trình duyệt Cách tiếp cận này tăng hiệu năng cho ứng dụng web, giảmthiểu số lần tác động lên DOM của trình duyệt, giúp trải nghiệm của người dùngmượt mà hơn.

Hình 2.2: Virtual DOM

1.5 React hook

Trong phiên bản 16.8, ReactJs giới thiệu tính năng mới là React Hook Giờđây, chúng ta có thể kết nối state và component lifecycle vào functional component,giảm đáng kể số lượng code, làm các component trở nên gọn nhẹ hơn Nó ra đời đểgiải quyết một số vấn đề sau:

- “Wrapper hell” các component được lồng (nested) vào nhau nhiềutạo ra một DOM tree phức tạp.

Trang 26

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

- Component quá lớn.

- Sự phức tạp của Lifecycles trong class.

Một số hooks mặc định của react gồm `useState`, `useEffect`, `useRef`, vàta có thể tự viết một hook riêng để tái sử dụng React hook dựa trên cơ chế closurecủa JS, nhằm lưu giữ state độc lập và sử dụng được trong các functionalcomponent.

Với hệ thống thư viện phong phú, cộng đồng đông đảo vào vững chắc, React đemlại cho tôi rất nhiều lợi ích trong suốt quá trình phát triển giao diện.

2 Redux

Trong ReactJs, khi một dữ liệu thay đổi nó sẽ ảnh hưởng tới nhiều componentcùng lúc Việc đó sẽ gây ra việc rerender và vẽ lại giao diện Hầu hết các thư viện nhưReact, Angular,… sẽ được xây dựng sao cho các components có thể tự quản lý nội bộ cácstate của chúng mà không cần bất kỳ một thư viện hay công cụ nào từ bên ngoài.

State của component khuyên dùng là nên chia sẻ ở component cha gần nhất củachúng Trong một ứng dụng, nơi dữ liệu được chia sẻ thông qua các components, dữ liệuvà logic có thể nằm phân tán giữa các component khác nhau Việc xử lý một luồng phứctạp hoặc kết hợp nhiều tầng logic Một sự lý tưởng là data trong một component nên livetrong chỉ một component Vì vậy việc share data thông qua các components anh em sẽ trởnên khó khăn hơn.

Ví dụ, trong React để share data thông qua các components anh em, một state phảilive trong component cha Một method để update chính state này sẽ được cung cấp bởichính component cha này và pass như props đến các components con.

Ứng dụng càng lớn khiến việc quản lý state từ các component cha, các componentcon sử dụng lại dữ liệu của component cha, cập nhật, validate và thêm xử lý logic khiếnviệc quản lý, lưu trữ và đồng bộ state giữa các component trở nên rối rắm và phức tạp.

Redux ra đời như một giải pháp đơn giản giải quyết vấn đề đó: nó tập trung dữ liệulại một nơi, và component nào cần sẽ phải kết nối với store trong redux Tất cả STATEcủa ứng dụng được lưu trữ ở STORE Mỗi component có thể truy cập trực tiếp đến stateđược lưu trữ thay vì phải truyền thuộc tính từ component này đến component khác.

Trang 27

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

Hình 2.3: Redux quản lý state bằng store

Ngoài ra, việc thay đổi STATE cần thông qua các ACTIONS Mỗi ACTION sẽtương ứng với một logic nghiệp vụ, được xử lý thông qua các REDUCER Việc cácSTATE chỉ được thay đổi khi gởi một ACTION giúp việc quản lý việc thay đổi dữ liệuđồng bộ và thống nhất.

Các khái niệm cơ bản của redux:

- State: Trạng thái của model Thông thường, STATE là một JavaScriptOBJECT thuần, và là một immutable data.

- Actions: Action là một OBJECT thuần để thay đổi trạng thái Action làcách duy nhất để cập nhật dữ liệu vào Store Bất kỳ dữ liệu nào, cho dù từ các sựkiện từ người dùng, callback từ mạng hay các nguồn cần phải được gửi đi dướidạng Action.

- Reducers: Reducers là các function nguyên thủy chúng lấy state hiện tạicủa app, thực hiện một action và trả về một state mới.

- Store: Lưu trạng thái ứng dụng và nó là duy nhất trong bất kỳ một ứngdụng Redux nào.

Trang 28

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

Redux có hỗ trợ các middleware và các thư viện phát triển thêm nhằm phục vụviệc cập nhật dữ liệu một cách bất đồng bộ (do dữ liệu trong REDUX được cập nhật đồngbộ) như REDUX-SAGA, thêm log hoặc validate dữ liệu.

3 NextJs

Tuy ReactJs được sử dụng chính dưới dạng Client-side-rendering, với những ưuđiểm của nó như về tốc độ, Virtual DOM và tính phổ biến, NextJs là một frameworkServer-side-rendering với ReactJs.

Nextjs tích hợp nhiều tính năng như:

- Pre-rendering, cả static generation (SSG) và server-side rendering (SSR)- Tách mã tự động để tải trang nhanh hơn, mỗi trang chỉ tải những gì cầnthiết cho trang đó Ví dụ khi render trang chủ thì những trang khác sẽ không đượckhởi tạo, như vậy trang chủ sẽ được tải nhanh cho dù website của bạn có cả 100page.

- Hỗ trợ Css và Sass, hỗ trợ bất kì thư viện Css, JS nào.

- Hỗ trợ refresh page nhanh chóng ở môi trường development.- Routing theo cây thư mục.

- Tự động tối ưu việc tải và hiển thị hình ảnh.

- Hỗ trợ phân tích trang web tự động, tiện dụng khi SEO trang web khi hỗtrợ tốt cho các bot crawler dữ liệu của Google, Facebook,

Hình 2.4: NextJs real experience score

Trang 29

Jamstack triển khai ngay lập tức, tự động mở rộng quy mô và không yêu cầu giám sát, tấtcả đều cần phải cấu hình phức tạp.

Vercel có một số ưu điểm nổi bật như:- Khả năng phát triển đơn giản.- Dễ dàng cài đặt

- Miễn phí hoàn toàn cho người dùng cá nhân.- Miễn phí SSL.

Java là ngôn ngữ có cú pháp rõ ràng, tường minh và mang trong mình đặc điểmcủa hướng đối tượng Với những đặc điểm đó, java đã được tin tưởng trong cộng đồng lậptrình viên từ lâu để xây dựng nên những sản phẩm, ứng dụng lớn có tính phức tạp vàthương mại hoá.

Các công cụ, công nghệ opensource nổi tiếng bao gồm WebServer Apache,Apache Kafka, Cassandra, đều được phát triển bằng Java Một mặt khác, máy ảo JVMchính là máy ảo hỗ trợ chạy các ngôn ngữ mạnh mẽ khác như Scala – hỗ trợ functional

Trang 30

Ngoài ra, Maven còn hỗ trợ phát triển, tích hợp nhiều plugins CI/CD trong việcbuild, test dự án, kiểm tra chất lượng source code qua Sonarqube,

6 Spring

Spring Framework là một framework của Java cung cấp rất nhiều tính năng giúpxây dựng sản phẩm một cách thuận tiện và nhanh chóng hơn Spring hiện được sử dụngrất rộng rãi và là một phần gần như không thể thiếu trong các sản phẩm Java EE Nó cungcấp mô hình lập trình và cấu hình toàn diện cho các ứng dụng doanh nghiệp dựa trên Javahiện đại - trên bất kỳ loại nền tảng triển khai nào.

Các tính năng của Spring được chia làm rất nhiều module, ứng dụng có thể dễdàng chọn sử dụng nhiều module kết hợp chỉ bằng cách thêm các dependency vào trongMaven.

Spring Boot, Spring MVC cũng là các module nằm trong Spring Framework Tínhnăng chính và nổi bật của Spring Framework đó là Dependency Injection và Inversion ofControl (IoC) giúp phát triển các ứng dụng với khả năng loosely coupled Nhờ vậy, khi sửdụng Spring, chúng ta có thể phân chia mã nguồn thành nhiều module khác nhau, độc lậpvới nhau Khi thay đổi nhà cung cấp (provider), chúng ta chỉ cần cập nhật các cấu hìnhcủa Spring, khi đó Spring sẽ tự động quét và inject đúng dependency mà chúng ta đangcần Ngoài ra, Spring bao gồm một hệ sinh thái vô cùng rộng, các thư viện đã trưởngthành và tin cậy như: Spring Data, Spring Security, Spring Batch, Các sản phẩm xâydựng trên Spring framework đạt hiệu năng cao, dễ dàng thay đổi.

Trang 31

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

Về cơ chế DI, khi khởi tạo server, Spring sẽ tìm kiếm những Class được đánh dấulà Bean để khởi tạo chúng và đưa vào một khu vực gọi là Beans Container Những classkhi khởi tạo mà nhúng những dependency đã tồn tại thì Spring sẽ chuyển Bean tương ứngtừ store và “kết nối” với đối tượng được khai báo trong class, “inject” chúng vào thay vìphải khởi tạo trực tiếp ở trong class đó Đây chính là kỹ thuật Dependency Injection vàIoC.

Tuy nhiên, Spring Framework phải cấu hình các dependency injection bằng XML,khi dự án phát triển lớn hơn sẽ gây khó khăn khi cấu hình, tốn thời gian và khó sửa lỗi.Spring Boot được ra đời nhằm giải quyết các vấn đề này Spring Boot sử dụng các ConfigAnnotation để hiện thực Injection, đồng thời hỗ trợ nhiều tính năng khác Sự đơn giản vàtiện dụng này khiến Spring Boot là một lựa chọn kèm theo không thể thiếu khi làm việcvới Spring.

Trang 32

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

Hình 2.5: Spring framework, các thành phần lõi

6.2 Core container

Container xử lý IoC và DI của framework, bao gồm các module:

- Core module: module cung cấp các thành phần cơ bản của Springframework, bao gồm IoC và chức năng Dependency Injection.

- Bean module: module này cung cấp BeanFactory và quản lý Bean.- Context module: module này được cung cấp bởi Core và Beanmodule Nó cũng là một môi trường để truy cập vào bất kì object nào đượcđịnh nghĩa và được configured.

- SpEL module: module này cung cấp một dạng ngôn ngữ rất tiện íchcho việc query và thao tác với các object tại thời điểm runtime.

Trang 33

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

6.3 Data access / integration

Nhóm này bao gồm JDBC, ORM, OXM, JMS và module Transaction.Những module này cung cấp khả năng giao tiếp với databases.

6.4 Web

Web module cung cấp các chức năng tích hợp Web-oriented như là chứcnăng file-upload và khởi tạo IoC container thứ mà sử dụng servlet listener vàcontext ứng dụng web-oriented.

Web-MVC module chứa sự các thành phần Model-View-Controller cho 1web application.

Ngoài ra còn các module khác bao gồm AOP, Test và Aspects.

7 Mô hình dữ liệu quan hệ

Tôi lựa chọn xây dựng cơ sở dữ liệu dựa trên cơ sở dữ liệu quan hệ Cơ sở dữ liệuquan hệ tổ chức dữ liệu theo các bảng và có quan hệ với nhau để giảm thiểu sự dư thừa dữliệu đồng thời vẫn đảm bảo hiệu quả trong lưu trữ và truy xuất dữ liệu.

Mô hình cơ sở dữ liệu quan hệ là một mô hình mà ở đó dữ liệu được tổ chức thànhcác thực thể và các mối quan hệ giữa chúng Các thực thể này được ánh xạ từ thực tế hoặcnhững đối tượng trừu tượng Thực thể là khái niệm để chỉ một lớp các đối tượng có cùngđặc tính chung mà người ta muốn quản lý thông tin về nó Những đối tượng sẽ có thuộctính riêng, mô tả các đặc trưng riêng của thực thể Giữa các thực thể, sẽ có thể tồn tại cácmỗi quan hệ khác nhau Trong cơ sở dữ liệu quan hệ, chia ra 3 loại quan hệ: một – một,một – nhiều, nhiều - nhiều, và có thể đi kèm thêm các thuộc tính riêng.

Một cơ sở dữ liệu có thể chứa một số lượng nhất định các quan hệ Để giảm thiểutối đa trường hợp sai sót, mỗi quan hệ phải được xác định là duy nhất Một số đặc điểmgiúp tự động phân biệt các quan hệ trong cơ sở dữ liệu:

- Mỗi quan hệ trong cơ sở dữ liệu phải có một tên riêng biệt và duy nhất đểphân biệt nó với các quan hệ khác trong cơ sở dữ liệu.

- Một quan hệ không được có hai thuộc tính trùng tên Mỗi thuộc tính phảicó một tên riêng biệt.

- Trong một quan hệ không được xuất hiện các bộ giá trị trùng lặp

Trang 34

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

- Mỗi bộ phải có chính xác một giá trị dữ liệu cho một thuộc tính.

Cơ sở dữ liệu quan hệ đã chứng tỏ nền tảng vững chắc của nó khi hàng loạt nhữnghệ quản trị cơ sở dữ liệu quan hệ trở nên vô cùng phổ biến như Oracle, MySql,PostgreSql,

8 Hệ quản trị cơ sở dữ liệu MySQL

Hệ quản trị cơ sở dữ liệu (DBMS) là một gói phần mềm được thiết kế để xác định,thao tác, truy xuất và quản lý dữ liệu trong cơ sở dữ liệu DBMS thường thao tác với dữliệu của chính nó Định dạng dữ liệu, tên field, cấu trúc bản record và cấu trúc file Nócũng xác định các quy tắc để xác thực và thao tác với các dữ liệu này.

Hiện nay có rất nhiều DBMS sử dụng mô hình dữ liệu quan hệ (RDBMS) nhưOracle, SQL Server, MySQL, Trong đó MySQL là một hệ thống quản lý cơ sở dữ liệuquan hệ mã nguồn mở được phát triển, phân phối và hỗ trợ bởi tập đoàn Oracle MySQLchạy trên hầu hết tất cả các nền tảng, bao gồm cả Linux, UNIX và Windows MySQLthường được kết hợp với các ứng dụng web Là một Relational Database ManagementSystem (RDBMS) vô cùng phổ biến, việc tôi lựa chọn MySQL làm Database chính vìmột số lý do sau đây:

- Linh hoạt, dễ sử dụng.

- Hiệu năng cao, có lịch sử hình thành lâu đời.

- MySQL hoạt động trên nhiều hệ điều hành và với nhiều ngôn ngữ.

9 Docker

Một trong những xu hướng hiện nay của ứng dụng là serverless và cloud Dockerlà một nền tảng mở để phát triển, vận chuyển và chạy các ứng dụng nhanh, nhẹ, khởiđộng nhanh, dễ dàng triển khai trên cloud độc lập Với Docker, tôi có thể tách các ứngdụng khỏi cơ sở hạ tầng để có thể phân phối phần mềm một cách nhanh chóng Bằng cáchtận dụng Docker vào việc thử nghiệm và triển khai ứng dụng một cách nhanh chóng,chúng ta có thể giảm đáng kể độ trễ giữa việc viết code và chạy code trong quá trình rasản phẩm.

Docker cung cấp khả năng đóng gói và chạy ứng dụng trong một môi trường cô lậpđược gọi là container Sự cô lập và bảo mật cho phép bạn chạy nhiều container đồng thờitrên một máy chủ nhất định.

Trang 35

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

Các container có trọng lượng nhẹ nhưng lại được chạy trực tiếp từ trong nhân củamáy chủ Điều này có nghĩa là ta có thể chạy nhiều container hơn trên một hệ thống phầncứng nhất định so với khi đang sử dụng máy ảo (VM) Có thể thấy, các container chia sẻchung tài nguyên hệ điều hành, nên một container khi bắt đầu và kết thúc rất nhanh vàgọn nhẹ hơn so với máy ảo.

Một số khái niệm của Docker:

- Image: Một snapshot của máy ảo, là một file bất biến, chứa các sourcecode, libraries, dependencies, tools và các files khác cần thiết cho một ứng dụng đểchạy Chúng đại diện cho một application và virtual environment của nó tại mộtthời điểm cụ thể Tính nhất quán này là một trong những tính năng tuyệt vời củaDocker Nó cho phép các developers test và thử nghiệm phần mềm trong điều kiệnổn định, thống nhất.

- Container: Một image khi start thì sẽ trở thành container Container đảmbảo cho ứng dụng hoạt động như nhau trong các môi trường giống nhau.

- Volumes: Một container khi chạy sẽ có nhu cầu cập nhật dữ liệu hoặc lưudữ liệu trên máy host Volume chính là một “ổ đĩa” được gắn vào container để thựchiện map 1-1 một folder từ máy host vào container và ngược lại.

Hiện nay các nền tảng cloud phổ biến đều hỗ trợ triển khai các image một cách vôcùng tiện lợi và nhanh chóng Với tính chất chỉ cần cấu hình một lần, không cần phải cấuhình lại trên server cloud và đảm bảo tính thống nhất về môi trường, tôi quyết định sửdụng Docker trong việc xây dựng và phát triển phần mềm.

10 Amazon Web Services

Với nhu cầu triển khai back-end trên một nền tảng cloud trực tuyến, tôi đã lựachọn Amazon Web Services (AWS) làm nền tảng chính để triển khai AWS được ra đờivào năm 2016, cung cấp các dịch vụ cơ sở hạ tầng CNTT (cloud services) Một số lợi íchkhi sử dụng AWS:

- Chi phí thấp: AWS đưa ra các mức giá cạnh tranh và thanh toán theo mứcđộ sử dụng mà không cần phải trả trước.

Trang 36

11 Third party services11.1 Amazon S3

Hình 2.6: AWS S3 service

Amazon S3 (Amazon Simple Storage Service) là dịch vụ lưu trữ đối tượngđược xây dựng để lưu trữ và truy xuất dữ liệu với khối lượng bất kỳ từ bất cứ nơinào trên Internet.

S3 là dịch vụ lưu trữ đơn giản có độ bền, độ sẵn có, hiệu suất, tính bảo mật,và khả năng thay đổi quy mô gần như không giới hạn với chi phí cực kỳ thấp Điềunày cho phép các tổ chức tránh mua phần cứng và thanh toán cho các bộ nhớ màkhông được sử dụng Amazon S3 là một dịch vụ có giá cả phải chăng Để lưu trữ

Trang 37

CHƯƠNG 2: KIẾN THỨC NỀN TẢNG

dữ liệu trên web người dùng chỉ trả tiền cho bộ nhớ và băng thông mà họ thực sựsử dụng Amazon S3 chủ yếu để sao lưu và lưu trữ, để chạy các ứng dụng, lưu trữcác trang web lưu lượng truy cập cao, hoặc sao lưu dữ liệu trang web theo nhữngkhoảng thời gian đều đặn.

Một số thuật ngữ được sử dụng trong Amazon S3:- Object:

Key: sử dụng key để truy xuất đối tượng.

Version ID: Trong một bucket, key và version ID để xác định

duy nhất một object Version ID là một chuỗi mà Amazon S3 tạo rakhi thêm một object vào một bucket.

Value: Nội dung mà ta đang lưu trữ.

Metadata: Một tập hợp các cặp name-value lưu trữ thông tin

về object.Ta có thể gán metadata, được gọi là user-defined metadata,cho các đối tượng của mình trong Amazon S3.

Sub resources: Amazon S3 sử dụng cơ chế sub-resource để

lưu trữ thông tin bổ sung về đối tượng cụ thể.- Bucket:

Để lưu 1 object trong Amazon S3, ta tải file lên 1 bucket Khiđã tải file, chúng ta có thể gán quyền cho object cũng như bổ sungmetadata mô tả về file/object.

Bucket là các thùng chứa cho các object Chúng ta có thể tạo 1hay nhiều bucket Với mỗi bucket, ta có thể cài đặt quyền truy xuấtđến nó Mỗi một tài khoản chỉ tạo được tối đa là 100 buckets, vàBucket có tên là duy nhất.

Trang 38

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG1 Các khái niệm trong hệ thống

“Phần mềm quản lý hồ sơ sức khỏe điện tử cho các phòng khám gia đình” tươngđối phức tạp, để không gây nhầm lẫn và khó hiểu, tôi xin được giải thích một số kháiniệm sau trong phần mềm:

- Quản trị viên chi nhánh: Người chịu trách nhiệm quản lý một chi nhánhduy nhất bao gồm những công việc như: quản lý các thông tin cấu hình chi nhánh(chuyên khoa bác sĩ, các loại phòng tới các phòng, ), quản lý thông tin của chinhánh đồng thời quản lý thông tin tất cả các bác sĩ của chi nhánh.

- Bác sĩ: Người chịu trách nhiệm khám bệnh và lưu hồ sơ bệnh án chongười bệnh.

- Kiểu bệnh án: Là loại bệnh án được lưu, chẳng hạn như Bệnh án ngoại trú,Bệnh án nội trú, Bệnh án nhi khoa, Bệnh án ngoại khoa, Mỗi loại bệnh án lại cóđôi chút sự khác biết trong mẫu thông tin cũng như trong tóm tắt bệnh án.

- Lịch sử khám: Mỗi người bệnh đi khám sẽ có một lịch sử khám hay mộtlần khám, mỗi lần khám sẽ có một hồ sơ bệnh án riêng, hồ sơ sức khỏe sẽ lưu cácbệnh án này theo chiều dọc lịch sử khám bệnh của người bệnh.

- Thăm khám lâm sàng: Khám lâm sàng là hoạt động khám đầu tiên của tấtcả quy trình khám chữa bệnh Bác sĩ sẽ trực tiếp khám người bệnh thông qua cáckỹ năng lâm sàng cơ bản là nhìn, sờ, gõ, nghe, để phát hiện các dấu hiệu bấtthường của các cơ quan trong cơ thể Khám lâm sàng giúp bác sĩ tìm ra các yếu tốtác động tới tình trạng sức khỏe người bệnh như tuổi, tiền sử bệnh, môi trườngsống, nghề nghiệp, nghiện rượu, thuốc lá, Bước khám này giúp bác sĩ xác địnhtình trạng bệnh ban đầu, định hướng để chỉ định các xét nghiệm cận lâm sàng phùhợp để từ đó chẩn đoán xác định bệnh.

- Thông tin sức khỏe: Là những thông tin liên quan mật thiết đến sức khỏecủa người bệnh như: Tình trạng lúc sinh, Yếu tố nguy cơ tác động đến sức khỏe,Tiền sử bệnh, Tiền sử dị ứng, Tiền sử phẫu thuật, và Thông tin khuyết tật.

- Cận lâm sàng: Khám sức khỏe cận lâm sàng là một khâu nằm trong quytrình khám, nó bao gồm nhiều kỹ thuật như: Chụp X-quang, Siêu âm, chụp cắt lớp

Trang 39

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

vi tính (CT), chụp cộng hưởng từ (MRI), Kỹ thuật y học cận lâm sàng là sự hỗtrợ đắc lực cho các bác sĩ trong quá trình chẩn đoán và điều trị bệnh.

- Chẩn đoán và kết luận: Là những thông tin liên quan đến chẩn đoán banđầu của bệnh sau khi đã có kết quả khám lâm sàng và cận lâm sàng, cùng với cácthông tin về tiên lượng bệnh được theo dõi, sau cùng là các kết luận, hướng điều trịvà tư vấn của bác sĩ.

2 Use Case Diagram

2.1 Quản trị viên chi nhánh

Hình 3.1: Usecase của quản trị viên chi nhánh

Trang 40

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Usecase Id CC_DMK1

Tên usecase Đổi mật khẩu lần đầu

Mô tả Người dùng đăng nhập vào website lần đầu tiên được yêu cầuđổi mật khẩu để kích hoạt tài khoản

Actor Quản trị viên chi nhánh, Bác sĩMức độ ưu tiên Trung bình

Trigger Người dùng muốn đăng nhập vào website

Tiền điều kiện Người dùng đã được cấp tài khoản với mật khẩu mặc địnhĐiều kiện thực hiện

thành công Đổi mật khẩu thành công

Luồng thực thi chính 1 Người dùng nhập tên đăng nhập và mật khẩu2 Người dùng chọn “Đăng nhập”

3 Màn hình yêu cầu cập nhật mật khẩu hiện ra4 Người dùng nhập mật khẩu cập nhật 2 lần5 Người dùng chọn “Xác nhận”

6a Mật khẩu cập nhật thành côngLuồng thay thế

Luồng ngoại lệ 6b Hiển thị thông báo lỗi khi có lỗi xảy ra

Bảng 3.1: Usecase đổi mật khẩu lần đầu

Usecase Id CC_DNTên usecase Đăng nhập

Mô tả Người dùng đăng nhập vào website để sử dụng các chức nănghệ thống cung cấp

Actor Quản trị viên chi nhánh, Bác sĩMức độ ưu tiên Trung bình

Trigger Người dùng muốn đăng nhập vào website

Tiền điều kiện Tài khoản của người dùng đã được kích hoạt thông qua việc

Ngày đăng: 30/07/2024, 17:35

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

TÀI LIỆU LIÊN QUAN