Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.52 MB, 75 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>I. NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN1. Mục tiêu và nội dung của đồ án:</b>
1.1 Mục tiêu:
1.2 Nội dung:
<b>2. Kết quả đạt được:</b>
<b>3. Ý thức làm việc của sinh viên:</b>
<i>Hà Nội, ngày 28 tháng 02 năm 2023</i>
<b>Giảng viên hướng dẫn</b>
<i>(ký và ghi rõ họ tên)</i>
<b>Vũ Thành Nam</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Đầu tiên em xin phép được gửi lời cảm ơn đến TS. Vũ Thành Nam, giảng viên ViệnToán ứng dụng và Tin học, Đại Học Bách Khoa Hà Nội. Thầy đã giúp đỡ, tận tìnhtruyền đạt kiến thức, tạo điều kiện cho em hoàn thành nhiều mơn học trong chươngtrình, đặc biệt thầy đã nhiệt tình chỉ bảo, định hướng cho em để em có thể thực hiệnđồ án này.
Ngoài ra, em cũng xin phép được gửi lời cảm ơn đến các thầy cô giảng viên ĐạiHọc Bách Khoa Hà Nội nói chung và các thầy cơ giảng viên Viện Tốn ứng dụng vàTin học nói riêng, nhờ sự chỉ bảo của các thầy cơ em mới có đủ cơ sở về kiến thức, kỹnăng để hồn thành đồ án này.
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Sự phát triển của công nghệ thông tin hiện nay đã ảnh hưởng đến mọi mặt của đờisống kinh tế xã hội. Các ứng dụng của cơng nghệ thơng tin được tìm thấy trên mọilĩnh vực, giúp cải thiện tốc độ làm việc cũng như cải thiện trải nghiệm của con ngườitrong việc sử dụng các loại dịch vụ. Tuy nhiên, trên thực tế tại Việt Nam vẫn còn mộtsố lĩnh vực chưa thực sự lợi dụng sự tiện dụng của công nghệ trong việc cải thiện tốcđộ và trải nghiệm của người sử dụng, tiêu biểu là lĩnh vực y tế, khi việc thăm khámcho bệnh nhân còn nhiều thủ tục rườm rà, việc đặt lịch khám và quản lý bệnh án cònphức tạp gây rất nhiều phiền toái và mất rất nhiều thời gian cho cả bác sĩ, bệnh nhânvà người quản lý.
Từ thực tế đó, việc phát triển một phần mềm giúp cải thiện hiệu quả làm việc củacác phòng khám là rất cấp thiết. Do đó em thực hiện đồ án này với mục đích xây dựngmột hệ thống, trước tiên là quản lý lịch khám và bệnh án của bệnh nhân, giúp các bácsĩ và bệnh nhân tiết kiệm thời gian khi thăm khám và giúp đỡ các nhà quản trị dễ dànghơn trong việc quản lý phịng khám của mình.
Hệ thống này được xây dựng với mục đích quản lý phịng khám với các chức năngchính như quản lý tài khoản của bệnh nhân, quản lý bệnh án, quản lý bác sĩ, quản lýlịch hẹn khám, thông báo... Hệ thống hướng tới người dùng chính là các nhà quản lýphịng khám, các bác sĩ và bệnh nhân.
<b>Sinh viên thực hiện</b>
<b>Đinh Tuấn Anh</b>
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>Tóm tắt nội dung đồ án</b>
<b>Chương 1 Cơ sở lý thuyết4</b>
1.1 Tổng quan về tiêu chuẩn RESTfulAPI . . . . 4
1.7.2 Sử dụng JPA thay thế cho lớp DAO . . . . 10
1.8 Quản lý xác thực bằng JSON Web Token . . . . 10
<b>Chương 2 Khảo sát hệ thống12</b>2.1 Cấu trúc phòng khám tư nhân tại Việt Nam . . . . 12
2.2 Mơ hình hoạt động của phòng khám chuyên khoa . . . . 13
2.2.1 Quy trình hoạt động: . . . . 13
2.2.2 Các phịng ban, khu vực chính của phịng khám chun khoa: . 152.3 Một số biểu mẫu được sử dụng trong quản lý phòng khám chuyên khoa 152.4 Một số giao diện của các phần mềm quản lý khác . . . . 22
2.5 Quy định về nghiệp vụ . . . . 23
2.6 Nhận xét . . . . 24
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>Chương 3 Phân tích và thiết kế hệ thống26</b>
3.1 Mơ hình nghiệp vụ . . . . 26
3.1.1 Sơ đồ luồng dữ liệu mức 0 . . . . 26
3.1.2 Sơ đồ luồng dữ liệu mức 1 . . . . 28
3.1.3 Sơ đồ luồng dữ liệu mức 2 . . . . 29
3.2 Sơ đồ Usecase . . . . 30
3.2.1 Usecase tổng quan . . . . 30
3.2.2 Quản lý thời gian làm việc . . . . 32
3.2.3 Quản lý tài khoản . . . . 34
3.2.4 Quản lý thơng tin phịng khám . . . . 36
3.2.5 Đặt lịch hẹn . . . . 38
3.2.6 Quản lý lịch hẹn . . . . 40
3.2.7 Quản lý khách đến khám . . . . 42
3.2.8 Quản lý phiên khám - thêm dịch vụ cho khách hàng . . . . 44
3.2.9 Quản lý phiên khám - kết phiên . . . . 46
3.2.10 Đăng nhập . . . . 48
3.2.11 Đăng ký . . . . 49
3.3 Yêu cầu phi chức năng . . . . 50
3.4 Sơ đồ thực thể liên kết . . . . 50
3.4.1 Giải thích các thực thể và trường dữ liệu của thực thể . . . 52
<b>Chương 4 Triển khai ứng dụng61</b>4.1 Cấu trúc thư mục của hệ thống . . . . 61
4.2 Trình tự xử lý yêu cầu của hệ thống . . . . 62
4.3 Luồng làm việc liên quan đến quản lý thông tin tài khoản . . . . 64
4.3.1 Đăng ký/Đăng nhập . . . . 65
4.3.2 Tra cứu thông tin tài khoản . . . . 66
4.3.3 Chỉnh sửa thông tin tài khoản . . . . 67
4.4 Luồng làm việc liên quan đến quản trị hệ thống . . . . 69
4.4.1 Quản lý thơng tin phịng khám . . . . 69
4.4.2 Quản lý thống kê lịch hẹn . . . . 71
4.4.3 Quản lý lịch làm việc . . . . 73
4.5 Luồng làm việc liên quan đến quản lý phiên khám . . . . 74
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>Kết luận81Tài liệu tham khảo85</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">2.9 Giao diện bệnh nhân chờ khám của phần mềm STDClinic . . . . 22
2.10 Giao diện thông tin khám của phần mềm STDClinic . . . . 22
2.11 Giao diện thông tin khám của phần mềm NanoSoft . . . . 23
3.1 Sơ đồ luồng dữ liệu mức ngữ cảnh (mức 0) . . . . 27
3.2 Sơ đồ luồng dữ liệu mức 1 . . . . 28
3.3 Chức năng quản lý chung . . . . 29
3.4 Chức năng quản lý phiên khám . . . . 29
3.5 Chức năng quản lý - tra cứu thời gian làm việc . . . . 30
3.6 Sơ đồ Usecase tổng quan . . . . 31
3.7 Biểu đồ hoạt động chức năng Quản lý thời gian làm việc . . . . 33
3.8 Biểu đồ hoạt động chức năng Quản lý tài khoản . . . . 35
3.9 Biểu đồ hoạt động chức năng Quản lý thơng tin phịng khám . . . . 37
3.10 Biểu đồ hoạt động chức năng Đặt lịch hẹn . . . . 39
3.11 Biểu đồ hoạt động chức năng Quản lý lịch hẹn . . . . 41
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">3.13 Biểu đồ hoạt động chức năng Quản lý phiên khám - thêm dịch vụ cho
khách hàng . . . . 45
3.14 Biểu đồ hoạt động chức năng Quản lý phiên khám - kết phiên . . . 47
3.15 Biểu đồ hoạt động chức năng Đăng nhập . . . . 48
3.16 Biểu đồ hoạt động chức năng Đăng ký . . . . 49
3.17 Sơ đồ thực thể liên kết . . . . 51
4.1 Cấu trúc thư mục của hệ thống . . . . 61
4.2 Controller cho đăng ký tài khoản mới . . . . 62
4.3 Model dữ liệu được gửi kèm . . . . 62
4.4 Service đảm nhận việc tạo mới tài khoản người dùng qua số điện thoại 634.5 Kiểm tra dữ liệu đầu vào cho chức năng tạo mới tài khoản . . . . 63
4.6 Kết quả cho chức năng tạo mới tài khoản . . . . 64
4.7 Kết quả cho chức năng tạo mới tài khoản . . . . 65
4.8 Kết quả cho chức năng đăng nhập . . . . 66
4.9 Kết quả cho chức năng tra cứu thông tin bản thân . . . . 66
4.10 Kết quả cho chức năng tra cứu thông tin người dùng khác . . . . 67
4.11 Kết quả cho chức năng tra cứu thông tin tất cả người dùng trong phòngkhám . . . . 67
4.12 Kết quả cho chức năng chỉnh sửa thông tin cá nhân . . . . 68
4.13 Kết quả cho chức năng chỉnh sửa thông tin người dùng cho quản trị . . 68
4.14 Kết quả cho chức năng chỉnh sửa thông tin phòng khám . . . . 69
4.15 Kết quả cho chức năng chỉnh sửa thông tin khả năng làm việc của phòngkhám . . . . 70
4.16 Kết quả cho chức năng tạo một dịch vụ cho phòng khám . . . . 70
4.17 Kết quả cho chức năng chỉnh sửa một dịch vụ cho phòng khám . . . 70
4.18 Kết quả cho chức năng thống kê số lượng cuộc hẹn trong một khoảngthời gian . . . . 71
4.19 Kết quả cho chức năng thống kê số lượng cuộc hẹn trong một ngày . . 72
4.20 Kết quả cho chức năng tra cứu chi tiết cuộc hẹn trong ngày . . . . 72
4.21 Kết quả cho chức năng thêm một khung giờ làm việc . . . . 73
4.22 Kết quả cho chức năng xóa một khung giờ làm việc . . . . 73
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">tuần . . . . 74
4.24 Kết quả cho chức năng tra tạo QR cho phòng khám . . . . 75
4.25 Kết quả cho chức năng checkin bằng cách quét mã QR . . . . 75
4.26 Kết quả cho chức năng chuyển trạng thái trong phiên khám . . . . 75
4.27 Kết quả cho chức năng thêm dịch vụ vào phiên khám . . . . 76
4.28 Kết quả cho chức năng thống kê dịch vụ sử dụng trong phiên khám . . 76
4.29 Kết quả cho chức năng tính hóa đơn sử dụng dịch vụ . . . . 77
4.30 Kiểm thử: Không đăng nhập . . . . 77
4.31 Kiểm thử: Sử dụng chức năng vượt cấp . . . . 78
4.32 Kiểm thử: Đặt lịch một ngày trong quá khứ . . . . 78
4.33 Kiểm thử: Dữ liệu đầu vào không hợp lệ . . . . 79
4.34 Kiểm thử: Lịch làm việc mới trùng với lịch sẵn có . . . . 79
4.35 Kiểm thử: Mật khẩu không trùng khớp . . . . 80
4.36 Kiểm thử: Thông tin đăng ký đã tồn tại . . . . 80
4.37 Sử dụng API lấy số lượng cuộc hẹn trong ngày để đánh giá mật độ ngườiđến khám trên website . . . . 82
4.38 Sử dụng API lấy số lượng cuộc hẹn trong ngày để đánh giá mật độ ngườiđến khám trên ứng dụng di động . . . . 83
4.39 Sử dụng API lấy lịch làm việc theo tuần của phòng khám . . . . 83
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Trong thời đại kỹ thuật số hiện nay, Công nghệ thông tin (CNTT) đã trở thànhmột yếu tố quan trọng, không thể thiếu trong các lĩnh vực khác nhau của đời sống.Tuy nhiên, vẫn còn nhiều vấn đề tồn tại trong việc ứng dụng CNTT, đặc biệt là tại cácdoanh nghiệp, tổ chức, cơ quan đoàn thể... Một trong những vấn đề phổ biến là cácdoanh nghiệp chưa sử dụng CNTT một cách hiệu quả, hoặc ứng dụng CNTT không đủsức mạnh để đáp ứng nhu cầu kinh doanh và cạnh tranh trên thị trường. Điều này cóthể là do thiếu kiến thức về CNTT, thiếu nguồn tài chính để đầu tư, hoặc khơng có kếhoạch chiến lược phát triển công nghệ trong doanh nghiệp.
Với sự phát triển của ngành y tế đặc biệt là hậu đại dịch COVID19, việc quản lýthông tin và dữ liệu của bệnh nhân và phòng khám đang trở thành một vấn đề quantrọng. Tuy nhiên, nhiều phòng khám vẫn đang sử dụng phương pháp ghi chép thủ côngvà quản lý tập trung, gây ra nhiều khó khăn và bất tiện trong q trình quản lý, tìmkiếm thơng tin và phân tích dữ liệu.
Phần mềm quản lý phịng khám là một trong những giải pháp hiệu quả nhất đểquản lý thông tin của bệnh nhân, đặt lịch khám, lưu trữ kết quả xét nghiệm và quản lýtài chính của phịng khám. Tuy nhiên, hiện nay vẫn còn nhiều phòng khám chưa sửdụng phần mềm quản lý hoặc sử dụng phần mềm khơng đủ tiện ích và hiệu quả.
Vấn đề đặt ra là việc sử dụng phần mềm quản lý phòng khám cịn gặp nhiều khókhăn. Những phịng khám này thường gặp vấn đề về việc quản lý thông tin của bệnhnhân, đặt lịch khám, lưu trữ kết quả xét nghiệm và quản lý tài chính. Do đó, nhiềulần thơng tin khơng được cập nhật đầy đủ và chính xác, dẫn đến tình trạng khó khăntrong việc quản lý và điều hành phòng khám.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Trên thị trường hiện nay đã có một số phần mềm quản lý phòng khám với các chứcnăng tương đồng, tuy nhiên có một số hạn chế như sau:
•Hầu như các hệ thống chỉ hỗ trợ nền tảng ứng dụng Windows.
• Các hệ thống chỉ quan tâm một phía, tức là có một số hệ thống chỉ quan tâm vềkhía cạnh quản lý, một số hệ thống chỉ quan tâm vấn đề đặt lịch khám và tracứu thông tin của bệnh nhân.
• Đa số các phần mềm dựa trên nền tảng các cơ sở y tế công, cứng nhắc trong việccài đặt giờ làm việc cũng như trong việc cung cấp các dịch vụ.
• Việc đặt lịch, quản lý đặt lịch, chăm sóc khách hàng cũng chưa được quan tâmđúng mực.
Với mục đích giải quyết các vấn đề này, đồ án phần mềm quản lý phòng khám đượcđưa ra với mong muốn cung cấp một giải pháp tiện ích, hiệu quả và dễ sử dụng cho cácphòng khám. Dự án này sẽ tập trung vào việc phát triển một phần mềm quản lý phòngkhám đầy đủ chức năng, giúp quản lý thông tin của bệnh nhân, đặt lịch khám, lưu trữkết quả xét nghiệm và quản lý tài chính một cách tiện lợi và hiệu quả.
Trong đồ án này, em sẽ mơ phỏng hệ thống của một phịng khám chuyên khoa tưnhân tại Hà Nội. gồm 3 tác nhân: Quản lý phòng khám (Quản trị viên), bác sĩ và bệnhnhân.
Do hướng đến việc sử dụng đa nền tảng nên em sẽ xây dựng hệ thống theo tiêuchuẩn RESTful API với:
•Java SpringBoot cho application server.
• H2-Database, Liquibase cho phần database và changelogs của môi trường pháttriển.
Hệ thống sử dụng Maven để quản lý các thư viện, Github để quản lý phiên bản mãnguồn.
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Dưới đây là bố cục phần cịn lại của báo cáo đồ án này:
• Trong chương 1, em sẽ thực hiện khảo sát các hệ thống quản trị phịng khám sẵncó, đang được sử dụng hiện nay. Từ những khảo sát này em sẽ đưa ra các yêucầu về nghiệp vụ, đồng thời đưa ra nhận xét về các hệ thống hiện tại.• Hai chương tiếp theo (Chương 2 và chương 3) em sẽ tiến hành phân tích và thiết
kế hệ thống.
• Chương 4, em sẽ trình bày các cơng nghệ được sử dụng trong đồ án, tuần tự cácbước phát triển cũng như triển khai hệ thống. Với mỗi bước em sẽ đưa ra yêucầu và kết quả cũng như các bước kiểm thử.
• Cuối cùng, tại chương kết luận, em sẽ nêu ra những phần nổi bật của đồ án,những khó khăn đã gặp trong quá trình xây dựng hệ thống và những vấn đề đãđược giải quyết. Kết thúc là nêu ra định hướng mở rộng cũng như tính khả thikhi áp dụng vào thực tế của dự án.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">RESTful API là một kiểu thiết kế API (Application Programming Interface) được sửdụng để truyền tải dữ liệu giữa các ứng dụng web và di động. REST (RepresentationalState Transfer) là một kiến trúc phần mềm được phát triển bởi Roy Fielding năm 2000.RESTful API là một ứng dụng của kiến trúc này.
RESTful API sử dụng các phương thức HTTP như GET, POST, PUT, DELETEđể truy cập và xử lý dữ liệu. RESTful API được thiết kế để đảm bảo tính tương thích,độc lập và có thể mở rộng của các ứng dụng web và di động. Với RESTful API, cácứng dụng có thể giao tiếp với nhau thơng qua các yêu cầu HTTP đơn giản, dễ dàngtạo ra các ứng dụng phức tạp bằng cách kết hợp các tài nguyên khác nhau.
Một số đặc điểm của RESTful API:
•Sử dụng các phương thức HTTP để truy cập và xử lý dữ liệu.
• Sử dụng các định danh tài nguyên URI (Uniform Resource Identifier) để xác địnhvà truy cập các tài nguyên.
•Truyền tải dữ liệu dưới dạng định dạng mở JSON hoặc XML.•Hỗ trợ cache và có thể mở rộng.
RESTful API có nhiều ưu điểm như tính tương thích cao, độc lập với ngơn ngữ lậptrình, dễ dàng để phát triển và bảo trì. Nó cũng cho phép ứng dụng tương tác với nhaumột cách dễ dàng và hiệu quả. Tuy nhiên, việc thiết kế và triển khai RESTful API cần
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Spring Boot là một framework phát triển ứng dụng web cho phép người dùng dễdàng tạo ra các ứng dụng Java chạy trên nền tảng của Spring Framework. Spring Bootcung cấp cho người dùng một số tính năng và lợi ích, bao gồm:
<b>• Tự cấu hình: Spring Boot tự động cấu hình nhiều thứ để người dùng khơng cần</b>
phải cấu hình thủ cơng, giúp tiết kiệm thời gian và cơng sức.
• <b>Các phần mềm con độc lập: Spring Boot giúp đóng gói và phân phối các ứng</b>
dụng Java với các phần mềm con độc lập, điều này giúp cho việc cài đặt và triểnkhai trở nên dễ dàng và thuận tiện hơn.
• <b>Tích hợp tốt: Spring Boot tích hợp tốt với nhiều cơng nghệ phổ biến như Spring</b>
Data, Spring Security, và Spring MVC, giúp người dùng phát triển ứng dụngnhanh chóng và dễ dàng.
• <b>Các tính năng đáng chú ý: Spring Boot cung cấp nhiều tính năng đáng chú ý</b>
như chạy ứng dụng trên máy chủ web nhúng, tạo RESTful API, cấu hình dịch vụbảo mật, và tạo các hồ sơ giám sát (monitoring profiles).
• <b>Dễ dàng tùy chỉnh: Spring Boot cho phép người dùng tùy chỉnh cấu hình để</b>
tạo ra các ứng dụng theo nhu cầu của mình.
• <b>Hỗ trợ cộng đồng: Spring Boot có một cộng đồng lớn và tích cực, cung cấp cho</b>
người dùng các tài liệu và hướng dẫn chi tiết về cách sử dụng và tối ưu hóa ứngdụng của họ.
H2 Database là một hệ thống quản lý cơ sở dữ liệu mã nguồn mở được viết bằngJava, được thiết kế để có thể chạy trên nhiều nền tảng khác nhau. H2 Database cungcấp nhiều tính năng chính để quản lý cơ sở dữ liệu, bao gồm:
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">• <b>Hỗ trợ nhiều loại cơ sở dữ liệu: H2 Database hỗ trợ nhiều loại cơ sở dữ liệu,</b>
bao gồm cơ sở dữ liệu quan hệ (Relational database), cơ sở dữ liệu đối tượng(Object-oriented database) và cơ sở dữ liệu key-value.
• <b>Hỗ trợ nhiều ngơn ngữ lập trình: H2 Database hỗ trợ nhiều ngơn ngữ lập</b>
trình, bao gồm Java, C++, C#, Python và Ruby.
• <b>Tốc độ xử lý nhanh: H2 Database được thiết kế để có thể xử lý cơ sở dữ liệu</b>
nhanh chóng và hiệu quả.
• <b>Dễ dàng tích hợp: H2 Database có thể tích hợp với nhiều hệ thống phát triển</b>
phần mềm khác, bao gồm các framework phổ biến như Hibernate và Spring.• <b>Hỗ trợ mã hóa và bảo mật: H2 Database cung cấp nhiều tính năng bảo mật,</b>
bao gồm mã hóa dữ liệu và chứng thực người dùng.
<b>• Tính linh hoạt và mở rộng: H2 Database được thiết kế để có thể linh hoạt và</b>
dễ dàng mở rộng, cho phép người dùng thêm tính năng mới hoặc tùy chỉnh cơ sởdữ liệu theo nhu cầu của mình.
<b>• Hỗ trợ cập nhật và khôi phục dữ liệu: H2 Database cho phép người dùng</b>
thực hiện cập nhật và khôi phục dữ liệu dễ dàng, giúp đảm bảo tính tồn vẹncủa cơ sở dữ liệu.
<b>• Tính đa nền tảng: H2 Database có thể chạy trên nhiều nền tảng khác nhau,</b>
bao gồm Windows, Linux và Mac OS.
Liquibase là một công cụ quản lý phiên bản cơ sở dữ liệu được sử dụng để theo dõicác phiên bản cấu trúc cơ sở dữ liệu và thay đổi dữ liệu liên quan. Công cụ này chophép quản lý các phiên bản của cấu trúc cơ sở dữ liệu và quản lý các phiên bản của dữliệu. Với Liquibase, người dùng có thể tạo ra các script để tạo và thay đổi cấu trúc củacơ sở dữ liệu và lưu chúng trong các file XML hoặc YAML. Nó hỗ trợ nhiều hệ quản trịcơ sở dữ liệu phổ biến, bao gồm Oracle, SQL Server, MySQL, PostgreSQL, DB2 và H2.
Một số đặc tính chính của Liquibase bao gồm:
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">• Cho phép người dùng tạo ra các script để tạo ra các phiên bản cơ sở dữ liệu mới.•Hỗ trợ thay đổi dữ liệu và thay đổi cấu trúc cơ sở dữ liệu.
•Cho phép người dùng rollback các thay đổi.
•Có thể tích hợp vào các quy trình liên tục tích hợp và triển khai tự động.• Liquibase được sử dụng rộng rãi trong các dự án phát triển phần mềm và các
dự án cơ sở dữ liệu, và là một công cụ hữu ích trong việc quản lý các phiên bảncơ sở dữ liệu và đảm bảo tính nhất quán của dữ liệu trong các môi trường pháttriển và triển khai.
Kiến trúc của một ứng dụng Spring Boot theo tiêu chuẩn RESTful API có thể đượcthiết kế theo mơ hình 3 lớp (3-tier architecture), bao gồm các lớp sau:
<b>• Lớp Controller: Đây là lớp đầu tiên nhận các yêu cầu HTTP từ client. Lớp này</b>
sẽ kiểm tra và xử lý các yêu cầu này, định tuyến chúng đến lớp Service tương ứngvà trả về các đối tượng HTTP Response cho client.
<b>• Lớp Service: Lớp này chịu trách nhiệm xử lý các yêu cầu do lớp Controller gửi</b>
đến, thường bao gồm các thao tác CRUD (Create, Read, Update, Delete) trên cơsở dữ liệu. Lớp Service sẽ gọi các phương thức từ lớp DAO (Data Access Object)để truy cập vào cơ sở dữ liệu.
• <b>Lớp DAO: Lớp này là lớp truy cập cơ sở dữ liệu để thực hiện các thao tác CRUD.</b>
Lớp DAO sẽ đảm bảo kết nối tới cơ sở dữ liệu, tạo các câu lệnh SQL để thao tácdữ liệu và trả về kết quả cho lớp Service.
Ngoài ra, để đảm bảo đúng tiêu chuẩn RESTful API, các ứng dụng Spring Boot cầntuân thủ các nguyên tắc và tiêu chuẩn sau:
•Sử dụng các phương thức HTTP chuẩn (GET, POST, PUT, DELETE) để thaotác với tài nguyên (resource).
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">• Sử dụng các URL thân thiện với người dùng để truy cập tài ngun (ví dụ:/users/id thay vì /users?id=id).
• Sử dụng mã trạng thái HTTP (HTTP status code) để biểu thị trạng thái của yêucầu (ví dụ: 200 OK, 404 Not Found, 500 Internal Server Error).
• Đảm bảo rằng mã lỗi và thông báo lỗi được trả về đúng định dạng và đầy đủthông tin để giúp client xử lý lỗi một cách chính xác.
Trong hệ thống này em sẽ sử dụng JPA (Java Persistense API) làm giải pháp thay thếcho lớp DAO, sử dụng các Class Domain với kĩ thuật ORM để ánh xạ các đối tượngtrong hệ thống đến các bảng trong cơ sở dữ liệu
ORM là viết tắt của "Object-Relational Mapping" (Ánh xạ đối tượng-quan hệ), làmột kỹ thuật trong lập trình để ánh xạ dữ liệu giữa các đối tượng của ngơn ngữ lậptrình với các bảng trong cơ sở dữ liệu quan hệ.
Thay vì phải viết các truy vấn SQL để truy cập dữ liệu trong cơ sở dữ liệu, các đốitượng trong mã nguồn sẽ được sử dụng để tương tác với cơ sở dữ liệu. Điều này giúpgiảm bớt sự phức tạp trong việc tương tác với cơ sở dữ liệu, tăng tính bảo mật và giảmthiểu sự lỗi trong mã nguồn.
Ví dụ, trong ORM, một lớp đối tượng có thể tương ứng với một bảng trong cơ sởdữ liệu và các thuộc tính của lớp đối tượng sẽ tương ứng với các cột của bảng. Khi mộtđối tượng được tạo mới hoặc sửa đổi, các thay đổi sẽ được tự động đồng bộ hóa với cơsở dữ liệu mà không cần phải viết các truy vấn SQL.
ORM được sử dụng phổ biến trong các ứng dụng web để tương tác với cơ sở dữliệu, giúp giảm thiểu thời gian phát triển, tăng tính bảo mật và cải thiện hiệu suất củaứng dụng.
JPA là viết tắt của Java Persistence API, là một API trong Java để tương tác vớicơ sở dữ liệu quan hệ. Nó là một phần của Java Enterprise Edition (Java EE) và được
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">Sơ đồ luồng dữ liệu mức 0 là một sơ đồ đơn giản và trực quan hóa mức độ cao nhấttrong phân tích luồng dữ liệu. Miêu tả các quy trình cơ bản và các tác nhân chínhtrong hệ thống mà khơng đề cập đến bất kỳ chi tiết cụ thể nào, cung cấp một cái nhìntổng quan về kiến trúc của hệ thống.
Dưới đây là sơ đồ luồng dữ liệu mức ngữ cảnh cho hệ thống quản trị phịng khámvới 4 tác nhân chính:
•Quản lý phịng khám•Nhân viên phịng khám•Bác sĩ
•Bệnh nhân
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Sau khi phân rã chức năng quản trị phòng khám tại biểu đồ luồng dữ liệu mức ngữcảnh ta có sơ đồ luồng dữ liệu mức 1 như sau:
Hình 3.2: Sơ đồ luồng dữ liệu mức 1
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Hình 3.3: Chức năng quản lý chung
Hình 3.4: Chức năng quản lý phiên khám
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">• Quản lý phịng khám: quản lý này có khả năng tạo ra một bác sĩ, nhân viênphòng khám hoặc một bệnh nhân đến khám mới, ngoài ra quản lý cịn có thể sửdụng các chức năng quản trị trong hệ thống.
• Nhân viên phịng khám: nhân viên phịng khám có quyền quản lý tài khoản cánhân. Nhân viên đóng vai trị chăm sóc, tư vấn cho khách hàng đến khám và sửdụng dịch vụ.
• Bác sĩ: bác sĩ có quyền quản lý tài khoản cá nhân nhưng không được tạo mới.Bác sĩ được xem thơng tin bệnh nhân mình đã từng khám và các bệnh nhân đếnkhám trong ngày.
• Bệnh nhân: bệnh nhân có quyền chỉnh sửa thơng tin cá nhân, tra cứu lịch làmviệc và đặt lịch hẹn khám.
Tên usecase Quản lý thời gian làm việc
Mô tả <sup>Quản lý điều chỉnh thời gian làm việc theo ngày</sup>trong tuần của phòng khámĐiều kiện tiên quyết Đã đăng nhập và có role ADMIN
Đầu mỗi tuần, quản lý sẽ điều chỉnh thông tin về lịch làm việc của từng ngày trongtuần, chi tiết đến từng ca làm việc, phục vụ cho usecase tra cứu lịch hoạt động củaphòng khám.
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">Tên usecase Quản lý thơng tin phịng khám
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">Mô tả Người sử dụng chỉnh sửa lịch hẹnĐiều kiện tiên quyết Đã đăng nhập và có quyền ADMIN hoặc USER
Bệnh nhân có thay đổi kế hoạch về lịch hẹn, khi đó bệnh nhân có thể chủ độngchỉnh sửa lịch hẹn hoặc gọi điện đến nhờ phòng khám đổi lịch hẹn giúp. Bệnh nhân cóthể chỉnh sửa lịch hẹn của chính mình, nhân viên/quản lý phịng khám có thể chỉnh sửalịch hẹn giúp các bệnh nhân trong hệ thống, tuy nhiên muốn chỉnh sửa thì các cuộchẹn có thời gian hẹn phải đủ điều kiện có thể chỉnh sửa.
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">Mơ tả <sup>Nhân viên phịng khám checkin cho khách đến</sup>khám
Điều kiện tiên quyết Đã đăng nhập và có quyền STAFF
Bệnh nhân đến khám, nhân viên phịng khám làm thủ tục checkin cho bệnh nhân, nếubệnh nhân chưa có tài khoản trong hệ thống của phịng khám thì tạo mới tài khoản rồicheckin cho bệnh nhân.
</div>