mobile online booking

FastMed** là hệ thống phòng khám đa khoa tại Úc với nhiều cơ sở chính cùng những phòng khám liên kết trải dài khắp lãnh thổ đất nước. FastMed có liên kết với chính phủ và hệ thống bảo hiểm y tế Úc, đồng thời phục vụ khám chữa bệnh – theo dõi sức khỏe với nhiều quy mô trong đó có hộ gia đình và doanh nghiệp.

Medical online booking (MOB) là hệ thống đặt lịch khám bệnh của FastMed, phục vụ cho nhu quản lý và đặt lịch khám bệnh, thay thế cho các phương pháp truyền thống đã lỗi thời. Hệ thống này được sử dụng bởi nhân viên cơ hữu của FastMed và nhân viên quản lý của các công ty liên kết được cấp tài khoản.

**Tên và logo FastMed đã được thay đổi, các dữ liệu trong showcase không phải là dữ liệu thực tế.

FastMed** is a polyclinic system in Australia with many clinics over the country, including the allied clinics. They have a contract with the government and their national health insurance, provide healthcare services in many scales consisting of family and company.

Medical online booking (MOB) Medical online booking (MOB) is FastMed’s online booking system which supports appointment booking and management, as a replacement of the outdated traditional system. This system is operated by FastMed administrators and staffs from their organization customers.

**the FastMed name and logo are changed, data in this showcase is not the actual data.

Tổng quan về project

Click để xem/ẩn nội dung

Tổng quan về project

Quy mô project

01 Project manager
02 Front end dev
02 Back end dev
01 UX/UI designer

Vai trò cá nhân

Trong project này tớ đóng vai trò UX/UI designer, trao đổi với team về quy trình hoạt động, data in-out, userflow, từ đó đưa ra thiết kế giao diện phù hợp với điều kiện và mục đích sử dụng.

Bên cạnh thiết kế giao diện, tớ còn làm prototype để PM đi present với các sếp bề trên, sản xuất UI guidelines cho dev tùy chỉnh dựa trên UI components có sẵn.

Và không thể không kể đến công việc OCD nhất – căn chỉnh giao diện cho sát với thiết kế!

Chức năng

Medical Online Booking phục vụ mục tiêu quản lý và theo dõi lịch khám bệnh cùng các thông tin liên quan, được sử dụng bởi 2 nhóm người dùng với các phân quyền khác nhau:

  • Bookings: xem danh sách các booking và thông tin chi tiết từng booking, chức năng hỗ trợ như filter, export, search
  • Make booking: đặt lịch khám, MOB phục vụ đặt khám cho các công ty nên chức năng này cho phép đặt khám cho nhiều người cùng lúc
  • Scheduler: xem lại lịch khám bệnh trên timeline.
  • Companies: thông tin về công ty, các thông tin này có thể được prefill ở chức năng make booking.
  • Packages: các gói khám bệnh được custom và lưu lại để dùng cho chức năng make booking.
  • Positions: các chức danh của nhân viên được tạo sẵn để dùng cho chức năng make booking.
  • Booking Accounts (FastMed Admin): tạo và quản lý tài khoản đăng nhập cho các công ty, đơn vị.
  • Sites (FastMed Admin): quản lý thông tin về các phòng khám, cơ sở liên kết…

Và các chức năng phụ như quên mật khẩu, đổi mật khẩu…

Project overview

Click to view/hide the content

Tổng quan về project

The team scale

01 Project manager
02 Front end dev
02 Back end dev
01 UX/UI designer

My personal role

I take the role of UX/UI designer in this project, discuss with team members about the workflow, dataflow, user flow,… then provide the most suitable UI for usage.
 
Beside UI designing, i also do prototyping for presentation and produce the UI guidelines which instructs devs to modify the pre-built UI components.
 
And the most important task, adjusting the UI code to keep it match my design.

 

The system feature

Mobile Online Booking’s purpose is to manage and keep track of medical bookings and the related information, it is used by 2 groups of user with different permission:

  • Bookings: browse the appointment list and its detailed information, it has some utilities of filter, export, search…
  • Make booking: to place an appointment booking, allow multiple candidates with maximum of 5 persons.
  • Scheduler: review the appointments visually on a timline.
  • Companies: manage company’s information which can be prefilled on the make booking feature.
  • Packages: customize the assessments for appointments.
  • Positions: create and manage staff’s position in a company.
  • Booking Accounts (FastMed Admin): create and manage user accounts for companies.
  • Sites (FastMed Admin): manage clinic and allied clinic information.

And some must-have features such as login, reset password…

Thiết kế ✨✨✨

The design ✨✨✨

1. UI guideline

Để làm cơ sở cho sự đồng nhất giữa thiết kế và coding, tớ phải xây dựng một bộ guideline cơ bản cho các đồng chí front-end dev code theo. Để tiết kiệm chi phí và thời gian, team đã chọn một UI library phục vụ reactJS là MUI. MUI hỗ trợ đầy đủ các UI components cơ bản, và việc của tớ là đặt ra các thông số về màu sắc, kích thước, khoảng cách phù hợp cho branding, dựa trên bộ UI này.

1. UI guideline

To ensure the consistency between design and coding, i have to build a basic guideline for the dev team, providing all necessary specs for UI coding. To save time and enhance productivity, our team decided to use MUI – a UI framework supporting reactJS. MUI has all needed basic controls, and my job is to define the color guide, size and spacing… to make them fit with the branding.


Cụ thể, có 4 nhóm thông số: Typography, Colors, Control elements (các input field, button, checkbox…), Forms (thông số cho card, column spacing…)

Và, theo sát guideline bên trên thì các UI component sẽ có giao diện như này. Nhìn chug cũng không có gì quá nổi trội nhưng tớ tin điều này tốt cho một giao diện chức năng nhập liệu. Giao diện rộng vừa phải cùng các input control quen thuộc giúp không quá mất thời gian để đoán và tìm hiểu cách thao tác.

In detail, there are 4 groups of specs: Typography, Colors, Control elements (such as input field, button, checkbox…) and Form (size and spacing parameters for card, group of fields…)

Following my guideline, the UI components look like below. Personally, i think it is not really shiny, but suitable for a dashboard interface. I give it enough white space and use the familiar form control elements to ensure users don’t feel hard to operate.

mob ui components
mob ui components
mob ui components

2. Giao diện Bookings

Màn hình này hiển thị danh sách các booking dưới dạng table, nhưng ở đây tớ có điều chỉnh lại một chút. Mỗi row của table sẽ được hiển thị dưới dạng card và có khả năng expand để xem thêm nhiều thông tin chi tiết. Khi expand, user có thể thực hiện vài tác vụ như gửi email, cancel booking hoặc thay đổi vài thông tin cá nhân.

Ngoài ra, trên màn hình còn có chức năng filter và select để hỗ trợ tìm kiếm và thao tác nhanh trên nhiều booking.

2. Bookings interface

This screen display the list of all appointment as a table. However, i made some changes here, the table row will be displayed as a card, an expandable card. When expanded, the card show more infomation and user can execute some tasks like send confirmation email, cancel booking or change some info.

Moreover, this screen also has the filter feature and supports selection with bulk action.

Bookings screen

Giao diện Bookings

Booking card được expand với nhiều thông tin hơn

Expanded Booking card with more information

MOB - booking filter

Chức năng filter

Filter feature

MOB - bulk select

Selection và các thao tác lụa chọn

Selection and bulk action

3. Chức năng Make booking

Make booking là chức năng cốt lõi của hệ thống MOB, được thao tác bởi bộ phận admin cơ hữu của FastMed và các bộ phận tương đương của những công ty liên kết.

Userflow của chức năng make booking như sau:

3. Make booking feature

This is the core function of the MOB system, operated by the FastMed administrators and staff form client companies.

The user flow:

Theo userflow trên, giao diện nhập liệu được tớ chia làm 3 block: Company information – Booking details – Candidates. Dữ liệu nhập từ block trước sẽ quyết định các tùy chọn dữ liệu của block sau. Ví dụ như chọn Company và Subsidiary sẽ thay đổi dữ liệu Paperwork, Package ở Booking details, và từ đó quyết định các thông tin ngày giờ và địa chỉ phòng khám ở bước cuối.

Phần custom package được đặt ở sidebar ẩn, kết hợp với animation cơ bản; chỉ trồi ra khi thao tác để gọn layout.

Following that, the main form was separated into 3 blocks: Company information – Booking Details – Candidates. Data input from the previous block affects data in the next one. For example, changing Company and Subsidiary could change the Paperworks and Package data in the Booking Details block, and also decide the clinic, available time slot in the last step.

the custom package feature is placed in the hidden sidebar and only slide out when called in order to keep the layout clean.


Riêng block Candidate (nhập người khám) có khá nhiều trạng thái do bị ràng buộc nhiều về dữ liệu và do đặc thù của booking online là phải kiểm tra dữ liệu liên tục:

The Candidate block has some different states due to data constraint and the peculiarity of online booking – real time data check up.

Medical booking add candidate

1. Nhập đủ thông tin người khám

1. Full fill all the information

Medical booking online - pick slot

2. Chọn ‘slot’ khám

2. Appointment slot picking

Medical booking online - no slot available

3. Không có slot khám trong ngày đã chọn

3. No slots available in the selected day range

Medical booking online - slot taken

4. Thay đổi thông tin dẫn đến mất ‘slot’

4. Change of site or date cause loss of slot

Panel nhập thông tin người khám bệnh và chọn ‘slot’. Các slot khám sẽ được hiển thị dựa trên Site và trong khoảng ngày đã chọn.

Do lượng slot lớn và để tránh rủi ro hao tốn tài nguyên khi người dùng chọn khoảng thời gian rộng hoặc chọn đi chọn lại nhiều lần, các api request sẽ không được tự động gửi ngay sau khi chọn ngày tháng mà chỉ được gửi khi người dùng click vào button.

Ngoài ra còn một số trường hợp báo lỗi như không có slot khám, slot bị mất chỗ do người khác book trước… cũng được thể hiện rõ ràng trên panel.

The personal information form and Appointment slot picker. The available slots are displayed based on the selected Site and Preferred date range.

Because of the large amount of slots and to avoid data overload issues, the api request will be sent only when users trigger by clicking a button. Auto sending data requests is good for UX, but it becomes serious when users change the date multiple times or select a wide range of time.

Moreover, there are some cases of error such as no slots available, slot taken by another… They will be displayed on the panel.

After pressing the ‘Save’ button, the booking slot will be temporarily saved on the database as a reserve to avoid conflict with other bookings. It will be booked officially when users submit and confirm the entire booking.

The MOB system allows the reserve booking to be kept in 15 minutes. After 15 mins, that booking slot will be canceled if it’s not submitted. That’s why the warning label appears on the up right corner of the Candidates panel. 15 minutes is a calculated time range, it is enough for entering data of 5 people.

Khi bấm save, booking slot và candidate sẽ được lưu tạm trên database (reserve) để tránh xung đột giữa nhiều người đặt khám cùng lúc. Nó sẽ được lưu chính thức khi người dùng submit toàn bộ booking.

MOB quy định thời gian tạm giữ chỗ là 15 phút, sau 15 phút nếu booking không được submit thì các slot lưu tạm sẽ bị hủy. Do đó ở block Candidates sẽ có thêm label cảnh báo khi sắp hết thời gian. Ngoài ra, 15 phút là thời lượng đã được tính toán đủ để nhập liệu thủ công đủ cho tối đa 5 người.

Sau khi nhập thông tin và bấm submit, user sẽ được chuyển đến màn hình Review Booking để kiểm tra lại thông tin. Ở bước này user vẫn có thể quay lại thực hiện các thay đổi nếu cần, hoặc bấm Submit một lần nữa để đặt lịch khám.

Các thông báo thành công hoặc lỗi sẽ được hiển thị ngay sau đó. Trong trường hợp có lỗi thì sẽ hiển thị lỗi cụ thể, nếu user chọn thực hiện thay đổi thì nội dung lỗi sẽ được highlight đỏ.

After completing the form and pressing submit, users will be directed to the Review Booking to have a final checking. There’s always a chance for them to correct their mistakes, by pressing the “Back to edit” button. Or press the “Submit” button if everything is fine.

The result dialog appears right after that. In case of error, it will point out what is wrong, and the error field will be highlighted in red if users decide to fix it.

mob - booking summary

4. Scheduler

Scheduler là chức năng hiển thị toàn bộ các booking dưới dạng timeline. Timeline được hiển thị dạng cột với mỗi cột là một bác sĩ. Bằng cách này, user có thể xem tổng quát toàn bộ lịch khám trong ngày cùa toàn bộ hệ thống FastMed (đối với FastMed admin) hoặc của riêng công ty (đối với các account công ty).

Scheduler đi cùng với chức năng filer để hỗ trợ user lọc hoặc tìm kiếm theo tên người khám, bác sĩ, phòng khám.

4. Scheduler

This screen displays all appointments in form of a timeline table. There are multiple columns of timeline, and each one belongs to a doctor. With this appearance, users can have a bird eye view over all appointments on a day. FastMed administrators can access all appointments of the clinic system, but the Company’s account is limited with their company’s appointment.

Scheduler comes with the Filter feature to empower users to find a specific person’s appointment or filter the timeline by doctor, site…


Về UX, để tiện cho việc quan sát, tớ yêu cầu xây dựng chức năng drag to scroll và đặt cả 2 button scroll trái phải phòng trường hợp người dùng gặp khó khăn khi rê chuột, chẳng hạn như dùng trackpad của laptop văn phòng.

Tại FastMed, một số chuyên khoa khám nhất định cho phép khám đồng thời tối đa 3 người; và để tránh việc scroll ngang quá nhiều, tớ dùng collapse/expand đối với các cột có multiple slot. Ngoài ra, thông tin chi tiết về buổi khám sẽ được hiển thị khi hover chuột.

Làm nhiều nói ít, tớ có live demo code chay với html/css đây, bạn có thể trải nghiệm để biết thêm chi tiết nhaa

👉👉👉 Medical booking scheduler demo

For the UX, to improve the accessibility, i asked for the drag to scroll feature, and also placing 2 buttons for scrolling left & right. This helps users to scroll easily in case they have dragging trouble, for example, with the office laptop’s trackpad.

At FastMed, some of their services allow multiple appointments with a maximum of 3 people at once. That lengthens the Schedule table, and my solution to keep it stay organized is using collapse/expand function for the multi-column timeline. Moreover, detailed information of the appointment will be placed on a popover panel which appears when hovered.

A demo worth a thousand words, luckily i have one! Made with pure html/css, available for trying out:

👉👉👉 Medical booking scheduler demo

5. Companies

Đây là giao diện quản lý thường gặp, các nhóm thông tin về công ty được chia thành nhiều tabs. Các dữ liệu trong đây chủ yếu là về nội dung và các tùy chọn thiết lập sẵn sẽ được dùng tại chức năng Make Booking. Điểm khác biệt giữa tài khoản admin FastMed và tài khoản công ty nằm ở màn hình list companies, chỉ có FastMed admin mới có thể truy cập được toàn bộ công ty trong hệ thống.

5. Companies

Well, this is a common screen helping us manage the company information. Data are grouped and separated into tabs, and most of them are information and settings which will be used in the Make Booking feature. The differences between FastMed admin account and Company’s account is the list companies screen, only FastMed admin has the ability to access all company’s data in the MOB system.

 

List companies screen

Giao diện list companies

Thông tin chi tiết về công ty

Company Information

Quản lý chi nhánh – công ty con

The subsidiary screen

Tài khoản công ty liên kết

Booking account screen

Positions screen

Chức vụ trong công ty

Packages screen

…và các gói khám bệnh

Khi xem đến đây bạn có thể gặp một thắc mắc là các nội dung hiển thị trên tab bar trong màn hình Company nó bị lặp lại với các menu trên sidebar. Bạn thiệt sự tinh ý đó!

Thiết kế giao diện bạn đang xem là của FastMed admin với phân quyền cao nhất. Do vậy các menu Companies, Package, Booking Accounts, Positions trên sidebar của FastMed admin có thể truy cập toàn bộ dữ liệu trên hệ thống. Còn dữ liệu trong các tabs của Company là dữ liệu riêng của đơn vị đó.

Về cơ bản, FastMed admin có nhiểu menu item trên sidebar hơn tài khoản của các công ty. Còn giao diện của từng màn hình chức năng là tương đương, tớ xin mạn phép bỏ qua để showcase không bị quá dài 😁

You might have a question right here, that’s about the duplicate of information from the sidebar menu and the tab bar menu inside the Company screen.

Yeah, let me note something. All screens you have viewed in this entire showcase belong to FastMed admin view with the highest permission. Then, all menus of Companies, Package, Booking Accounts, Positions on the sidebar empower this user role to access all system data. The specific Company screen shows only data from that company. That’s the point!

A basic comparison, FastMed admin has more  menu items on the sidebar than the Company account’s. However, all their feature screens have the same functionality. So i just pick the FastMed admin’s screens to keep this show case as short as possible 😁

6. Thiết kế responsive

Công việc này cũng không kém phần quan trọng. Hệ thống MOB được dùng cho nhiều đối tượng trên các thiết bị đa dạng về kích cỡ. Một số công ty trang bị màn hình full HD hoặc 2.5k, cũng có nhiều đơn vị cấp cho nhân viên dùng laptop văn phòng nhỏ gọn với 1280px phân giải chiều ngang.

Vậy nên để đảm bảo sự thuận tiện cho user khi nhập liệu, tớ có 2 bộ kích thước và khoảng cách với breakpoint là 1600px:

6. The responsive design

This is an important part of my work though. MOB is a widely used system. Users can access from many kinds of devices with many different screen sizes. Many companies use big 2.5K screens, others may give their staff the small laptop with just 1280px screen width.

Then, to enhance the operating experience, I separated them into 2 groups with 2 different sets of size & spacing. The breakpoint is 1600px:

booking account on screen
booking account on laptop display

Chốt sổ

Heheee lăn chuột cuộn màn hình mỏi tay không bạn ơiiii

Bạn vừa lướt qua 4 tháng làm việc miệt mài của tớ đó 😁 Nếu đem so khối lượng thiết kế với thời gian thì có vẻ như tớ làm quá xá chậm hé? Nhưng không nhưng không; mỗi màn hình thiết kế đều phải đi qua present phải cãi nhau chí chóe, phải đến tay người dùng thật, phải nhận về những phản hồi đau tim đau não mới có thể thành hình. Good thing takes time 😂

Thú thật, tớ cũng có đôi ba lần thất vọng khi thiết kế của mình không được sáng láng như mấy shot dashboard trên Dribbble. Nhưng, đây là một dự án thật, một hệ thống hoạt động thật, có người dùng thật, và nó đáp ứng nhu cầu thật. Nên tớ hài lòng vì điều đó, bản thân tớ thấy mình đã cân bằng khá tốt giữa thẩm mỹ và công năng của MOB.

Bên cạnh đó, tớ còn phải cân bằng nhiều thứ khác trong quá trình làm việc. Đó là độ phức tạp cùa giao diện so với khả năng code cùa dev, là linh hoạt số bước của userflow để phù hợp mật độ khối lượng api gửi trả về server…

Và thành quả nhận về cũng ổn! Lướt qua một lần nữa những thiết kế của tớ nha!!

Summarization

Well yeah, it’s a loooong scroll for you right!

But you have scrolled through my 4 months of hard working 😁 4 months may be such a long time for this workload, am i a snail? Not really at all, heheeh, because every single screen i made had to be reviewed. There were meetings, discussings; there were actual users giving feedback. There was heart attacks, and these screens are well-made 😂

To be honest, i feel disappointed several times when seeing my design not shiny like shots on Dribbble. However, this is a REAL product, actually working, having real users and currently serving a real life purpose. Then i sat down and relaxed, i think i did it well. I have balanced the visual appearance and the functionality of the MOB system.

Beside that, there were more things i balanced. That was the interface complexibility and the code-ability of devs, the number of user flow steps and the density of sending api requests…

All of this makes a good project, right? Let’s see them all once again!

 

MOB - booking filter

Cảm ơn bạn 3000 vì đã dành thời gian đọc đến tận đây 🥺

Project 08.2021
Show case 05.2022

Thank you 3000 for scrolling here 🥺

Project finished in 08.2021
Show case written in 05.2022