Ứng dụng Android MyHospital

Một phần của tài liệu Thiết kế hệ thống lấy số khám bệnh từ xa my hospital (Trang 39 - 58)

6. Điểm: (Bằng chữ: )

3.2.2.Ứng dụng Android MyHospital

Ứng dụng dành cho 3 đối tượng sử dụng:

Hình 3.10 Lưu đồ hoạt động của phần mềm (1)

Ở màn hình đăng nhập người dùng có thể click vào nhiều mục khác nhau như:

Forget Password: Người nhập vào email của mình và nhấn OK để hoàn

thành thao tác hoặc nhấn Return của điện thoại, sau đó lại quay trở lại màn hình đăng nhập.

28

Sign up: Chuyển người dùng đến giao diện đăng ký, có thể nhấn Return để

về màn hình đăng nhập hoặc nhập đầy đủ thông tin, lưu mã QR và nhấn OK để về màn hình đăng nhập.

Sign in : Bắt buộc người dùng phải nhập đầy đủ thông tin về ACCOUNT và

PASSWORD thì mới có thể đăng nhập tài khoản khi nhấn Sign in. Do ứng dụng được thực hiện cho ba đối tượng nên trong quá trình đăng nhập, ứng dụng sẽ phải lấy dữ liệu về node dữ liệu “quyen” có trong Database của người dùng thông qua email đã nhập. Nếu:

▪ quyen = 0 : Chuyển tới giao diện “Bệnh nhân”. ▪ quyen = 1: Chuyển tới giao diện “Quản trị”. ▪ quyen = 2: Chuyển tới giao diện “Bác sĩ”.

Ở các giao diện này khi người dùng nhấn “ RETURN” thì sẽ trở về giao diện đăng nhập trước đó.

RETURN: Nếu người dùng click vào nút Return của điện thoại sẽ thoát ứng dụng.

Giao diện khởi động:

Hình 3.11 Giao diện khởi động của ứng dụng My Hospital

Text box nhập Tên Email đăng nhập

Text box nhập Password

Button để mở mục đăng kí dành cho bênh nhân

Button để đăng nhập

Giao diện Reset

29 Giao diện

a. Quản trị:

Các tài khoản của “Bác sĩ” và “Người quản trị” phải do người quản trị tạo ra. Tài khoản của ba đối tượng sử dụng (bệnh nhân, bác sĩ và quản trị) sẽ có những chức năng và giao diện làm việc riêng biệt, do đó khi các tài khoản được tạo sẽ có một node dữ liệu dùng để phân biệt – “quyen”.

Bệnh nhân : quyen = 0 Quản trị: quyen = 1 Bác sĩ : quyen = 2

Trên thực tế, đề tài nhóm đang thực hiện sẽ tốt hơn khi thực hiện được chức năng “Liên kết với tài khoản ngân hàng” để thanh toán viện phí và phí đặt số khám qua thẻ ngân hàng. Nhưng nhóm chưa thực hiện được chức năng trên nên nhóm làm một tính năng khác là “Khóa chức năng đặt số khám”khi người bệnh vắng mặt quá ba lần và người quản trị là người có thể xem các tài khoản đang bị tạm khóa và kích hoạt lại.

Quản trị có thể thêm các phòng “Tiếp nhận”.

Quản trị có thể thêm các phòng khám chuyên khoa, tạo QR phòng và lưu ở Firebase Storage

30 Sau khi đăng nhập với tài khoản của quản trị viên, giao diện như sau:

Hình 3.12 Giao diện thao tác của quản trị viên

Nút nhấn để thao tác với đối tượng Bác sĩ

Nút nhấn để thao tác với phòng khám (adsbygoogle = window.adsbygoogle || []).push({});

Nút nhấn để thao tác với đối tượng Quản trị

Nút nhấn để chuyển đến màn hình My Hospital. Nút nhấn thao tác với các bệnh nhân bị Khóa. Nút nhấn thao tác với các phòng khám Chuyên khoa.

31 Có hai thao tác được thực hiện với đối tượng Bác sĩ khi người dùng có quyền Quản trị: (1) Xem danh sách bác sĩ, (2)Thêm tài khoản bác sĩ

32 Có hai thao tác được thực hiện với đối tượng Quản trị: (1) Xem danh sách quản trị, (2)Thêm tài khoản quản trị.

33 Người quản trị có thể thêm hoặc xóa phòng khám hiện tại.

34 Người quản trị có thể xem và kích hoạt lại tài khoản cho bệnh nhân

Hình 3.18 Quản trị viên kích hoạt lại tài khoản bị khóa cho bệnh nhân

Người quản trị có thể xem và thêm phòng Chuyên khoa

35 b. Bác sĩ

Giao diện làm việc của bác sĩ sẽ tuân theo lưu đồ sau:

36

MÔ TẢ HOẠT ĐỘNG:

Các công việc trên được thực hiện theo một trình tự đã quy định trước.Ban đầu khi giao diện mới mở, các nút nhấn sẽ bị vô hiệu hóa, ngoại trừ nút nhấn Scan mã QR phòng khám.

Sau khi Scan QR phòng khám, nút nhấn Scan mã QR bệnh nhân và Next sẽ được kích hoạt , các nút nhấn Write Status, Medical File, Specialist Clinic sẽ được kích hoạt sau khi bác sĩ Scan QR của bệnh nhân.

Khi bác sĩ nhấn nút Next thì các nút nhấn Write Status, Medical File, Specialist Clinic sẽ lại bị vô hiệu hóa trở lại và quy trình sẽ quay trở về giai đoạn đợi quét QR bệnh nhân.

Trước khi thực hiện các thao tác với Database trong một ngày mới, “Cập nhật lịch khám” đã đặt trước là việc đầu tiên luôn phải làm để đồng bộ dữ liệu.

Để các thao tác với dữ liệu được chính xác, bắt buộc địa chỉ Node dữ liệu phải đúng và không xảy ra trường hợp dữ liệu bị Null, do đó, việc quét mã QR phải thực hiện đầu tiên để Activity có được địa chỉ chính xác của các dữ liệu cần lấy. Thực tế trường hợp dữ liệu bị Null đôi khi vẫn xảy ra nhưng để tránh trường hợp ứng dụng bị dừng giữa chừng, nhóm phải thực hiện kiểm tra sự tồn tại của dữ liệu trên Database thông qua hàm exsist() trước khi lấy và xử lý.

Mỗi đối tượng trong “Giao diện bác sĩ” đều có chức năng riêng, đặc biệt là các việc tính toán cần thiết như ước lượng giờ khám cho bệnh nhân. Khi bác sĩ nhấn nút “Next”, ngoài tính năng đơn giản là tăng số thứ tự lên một đơn vị và cập nhật lên Database thì nó còn phải lấy các dữ liệu cần thiết cho việc ước lượng có trong Node dữ liệu của phòng khám hiện tại, thực hiện các công việc tính toán cần thiết. Nội dung này sẽ được trình bày ở phần LƯU ĐỒ GIẢI THUẬT.

37

QUÉT MÃ QR PHÒNG:

Lưu thông tin bác sĩ đang làm việc tại các phòng.

Bảng 3.5 Cập nhật tên các bác sĩ tại phòng khám

Lấy địa chỉ Node dữ liệu của phòng mà bác sĩ đang làm việc để hỗ trợ cho các thao tác lấy, xử lý và cập nhật dữ liệu từ Firebase Database.

Sau khi quét mã QR phòng, các dữ liệu khi thao tác với giao diện “Bác sĩ” của My Hospital sẽ được lấy ở Node dữ liệu của phòng đó.

VD: Khi bác sĩ quét mã QR phòng 1

Hình 3.21 Mã QR của phòng khám 1

Các dữ liệu cần thiết cho các thao tác sau này của bác sĩ sẽ được lấy từ địa chỉ “ROOM/1/…”

Sau dấu ‘…’ là tên node của các dữ liệu cần lấy của phòng đó.

Địa chỉ này được sử dụng để thực hiện các thao tác tính toán dữ liệu cho việc “Ước lượng thời gian khám, Gọi bệnh nhân kế tiếp vào khám, Lấy dữ liệu để hiện thị lên màn hình,..”. (adsbygoogle = window.adsbygoogle || []).push({});

QUÉT MÃ QR BỆNH NHÂN:

Quét mã QR bệnh nhân: Để có thể xem được hồ sơ bệnh án của bệnh nhân, bác sĩ cần quét mã QR bệnh nhân. Mã QR này mang thông tin về node dữ liệu của

38 bệnh nhân ở Database. Sau khi quét ta sẽ có được địa chỉ node dữ liệu của bệnh nhân này và thực hiện thao tác truy xuất dữ liệu cần thiết cho các tác vụ sau đó.

VD: Ta quét mã QR mang thông tin là “huanhuanzazagmail”:

Hình 3.22 Mã QR của bệnh nhân

Sau khi quét sẽ có được địa chỉ node dữ liệu của bệnh nhân: “USERS/huanhuanzazagmail/….”

Địa chỉ này được sử dụng để lấy dữ liệu về bệnh án của bệnh nhân, cập nhật bệnh án.

Ngoài ra, định danh của bệnh nhân còn được sử dụng khi bác sĩ tại phòng khám đó muốn chuyển bệnh nhân sang phòng khám khác thì định danh đó gửi được dùng để cấp số khám cho phòng khác.

39

Hình 3.23 Giao diện thao tác của bác sĩ

Tên Bác sĩ, Tên phòng Button quét mã phòng khám Button quét mã QR của bệnh nhân Button tăng số thứ tự khám Quay về màn hình trước Lưu bệnh án

Giao diện ghi bệnh án Giao diện xem bệnh án Button chuyển tiếp Bệnh nhân

đến phòng khám chuyển khoa Tổng số bệnh nhân đăng ký khám của phòng Số thứ tự hiện đang được khám Button tăng số thứ tự khám, đánh dấu bệnh nhân vắng

40 c. Bệnh nhân

Hình 3.24 Lưu đổ hoạt động của phầm mềm(3)

Khi bắt đầu mở giao diện của “bệnh nhân”, mặc định Tab My Hospital sẽ được mở, nếu sau đó người dùng vuốt qua hoặc click vào Tab khác thì ứng dụng sẽ mở Tab đó.

41

Hình 3.25 Giao diện hiện thị số khám

Hình 3.26 Giao diện hiển thị lịch khám

Hình 3.27 Giao diện hiện thị thông tin cá nhân

Phía bệnh nhân sẽ được chia thành ba chức năng chính, mỗi chức năng sẽ được thể hiện trên một màn hình, do đó để trực quan hơn, ứng dụng My Hospital sử dụng ViewPager để linh động hơn. Mỗi chức năng chính được đưa vào từng Tab và có thể trượt qua trượt lại khi cần thiết.

Với mục đích đã nêu ra của ứng dụng My Hospital, phía bệnh nhân sẽ có các chức năng chính:

▪ Quan sát trạng thái khám bệnh tại các phòng khám tại bệnh viện hiện tại ở tab My Hospital.

▪ Xem lịch khám đã đặt trước hoặc đặt số khám bệnh ở tab Get Number. ▪ Xem, chỉnh sửa thông tin cá nhân hoặc lấy mã QR của mình ở tab Personal.

MY HOSPITAL: Hiển thị trạng thái hiện tại ở các phòng khám bao gồm tên

bác sĩ đang khám trong từng phòng, số thứ tự đang khám và tổng số bệnh nhân đã đăng kí khám của từng phòng.

42 Để đạt được hiệu quả mong muốn, ở Tab My Hospital cần phải có tính Realtime để thông tin hiển thị hiện tại đúng với thực tế nhất. Do đó sử dụng kiểu Get dữ liệu theo sự kiện (EvenValue) của Firebase.

GET NUMBER: Hiển thị lịch khám mà bệnh nhân đã đăng kí từ trước hoặc

ngay hôm nay và Nút “Get Check Number” để đưa bệnh nhân đến màn hình chọn ngày khám và lấy số.

Ở tab này sẽ có hai công việc cần thực hiện: Hiển thị các lịch khám còn hiệu lựcước lượng thời gian khám của bệnh nhân. (adsbygoogle = window.adsbygoogle || []).push({});

Yêu cầu thông tin lịch khám Hiển thị phải là lịch khám trong hôm nay và tương lai, do đó khi lấy dữ liệu từ Database, trước khi hiển thị phải được lọc để có được kết quả hiển thị chính xác bằng cách:

43 Lấy ngày-tháng-năm hiện tại bằng Calendar.Để có thể kiểm tra được liệu hôm nay người dùng có đặt số khám hay không , sau đó truy xuất địa chỉ như sau ở Database “định_danh_bệnh_nhân/schedule/ngày_tháng_năm_hiện_tại/”để lấy List dữ liệu của các lịch khám.

Kiểm tra các Node ngày-tháng-năm để so sánh với ngày hôm nay, các Node dữ liệu của hôm nay và tương lai sẽ được lọc ra và lấy các thông tin về số khám bệnh (check_number), phòng khám (room) để hiển thị ở ListView trong màn hình Get Number. Nếu bệnh nhân đó có lịch khám cho ngày hôm nay, các dữ liệu đó sẽ được sử dụng để ước lượng thời gian khám cho bệnh nhân và hiển thị ở thanh thông báo.

Yêu cầu về ước lượng thời gian khám cho bệnh nhân cần bảo đảm bảo tính Realtime như yêu cầu đã đặt trước.

Việc ước lượng dựa trên một dữ liệu là “w_wait” ở Database có trong Node dữ liệu của từng phòng. Dữ liệu này sẽ được tính toán và cập nhật khi thỏa các yêu cầu đã đặt. Đồng thời khi tab “Get Number” được mở, nó sẽ lấy các dữ liệu cần thiết và xuất kết quả hiển thị ở thanh thông báo. Việc ước lượng phải đảm bảo tính Realtime, có nghĩa là sau khi đã hiển thị kết quả thì kết quả ước lượng này có thể sẽ được tính toán lại và hiển thị lên màn hình ngay lập tức cho bệnh nhân trong một số trường hợp nhất định. Chi tiết về thuật toán, dữ liệu và yêu cầu sẽ được trình bày ở phần LƯU ĐỒ THUẬT TOÁN.

Nếu bệnh nhân muốn lấy số khám, chỉ cần click vào “Get Checknumber”, ứng dụng sẽ đưa bệnh nhân đến phần “Calendar” để chọn ngày khám. Các ngày quá khứ sẽ bị vô hiệu hóa và người dùng chỉ có thể đặt lịch khám từ hôm nay đến hai tuần sau để người dùng nhớ về ngày mình đã đặt lịch khám.

44 Khi đã đặt số khám xong, ứng dụng sẽ finish activity của Calendar để tránh trường hợp các ứng dụng vẫn tồn tại sẽ dẫn đến hao bộ nhớ và khó quản lý.

45

PERSONAL: Hiển thị các thông tin cá nhân của bệnh nhân, cho phép chỉnh sửa

thông tin và xem bệnh án.

Hình 3.30 Giao diện thao tác trên thông tin cá nhân

Hình đại diện

Tên bệnh nhân

Thông tin cá nhân

Show QR Code

Lịch sử khám

Đăng xuất

Nút cập nhật thông tin

Giao diện câp nhật thông tin

Giao diện xem bệnh án Verified Account

46

Một phần của tài liệu Thiết kế hệ thống lấy số khám bệnh từ xa my hospital (Trang 39 - 58)