Tải bản đầy đủ (.pdf) (71 trang)

Xây dựng hệ thống y tế khẩn cấp cho trung tâm cấp cứu 115

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 (4.06 MB, 71 trang )

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
KHOA CƠNG NGHỆ PHẦN MỀM

NGUYỄN TIẾN ĐẠT

KHĨA LUẬN TỐT NGHIỆP

XÂY DỰNG HỆ THỐNG Y TẾ KHẨN CẤP
CHO TRUNG TÂM CẤP CỨU 115
Building an emergency medical system
for 115 emergency center

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP.HỒ CHÍ MINH, 2021


ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

NGUYỄN TIẾN ĐẠT – 17520043

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG HỆ THỐNG Y TẾ KHẨN CẤP
CHO TRUNG TÂM CẤP CỨU 115
Building an emergency medical system


for 115 emergency center

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
NGUYỄN CƠNG HOAN

TP.HỒ CHÍ MINH, 2021


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
…………………… ngày ………………….. của Hiệu trưởng Trường Đại học Công
nghệ Thông tin.


LỜI CẢM ƠN
Sau hơn 4 năm học tập và rèn luyện tại Trường Đại Học Công Nghệ Thông Tin,
được sự chỉ bảo và giảng dạy nhiệt tình của quý thầy cô, đặc biệt quý thầy cô trong
khoa Công Nghệ Phần Mềm, chúng em đã nhận được vô vàng kiến thức bổ ích về lý
thuyết và thực hành trong thời gian qua.
Đặc biệt, em xin gửi lời cảm ơn và lòng biết ơn sâu sắc nhất tới Thầy Nguyễn
Công Hoan. Thầy đã tận tình giúp nhóm chúng em hồn thành tốt báo cáo khóa luận
của mình trong suốt q trình thực hiện đề tài.
Trong thời gian thực hiện đề tài, em đã vận dụng những kiến thức nền tảng đã tích
lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới. Từ đó,
em vận dụng tối đa những gì đã thu thập được để hồn thành một báo cáo khóa luận
tốt nhất.
Mặc dù đã rất cố gắng, tuy nhiên vì khả năng giới hạn nên vẫn khơng tránh khỏi
những sai sót, em rất mong nhận được sự thơng cảm và góp ý chân tình từ q thầy

cô và các bạn. Một lần nữa xin được chân thành cảm ơn mọi người.
Em xin chân thành cảm ơn q Thầy Cơ!
Tp. Hồ Chí Minh, ngày tháng năm
Nguyễn Tiến Đạt


MỤC LỤC
Chương 1.

GIỚI THIỆU TỔNG QUAN ...........................................................2

1.1.

Giới thiệu đề tài ......................................................................................2

1.2.

Mục tiêu và phạm vi ...............................................................................3

1.2.1.

Mục tiêu ...........................................................................................3

1.2.2.

Phạm vi ............................................................................................4

1.3.

Ý nghĩa thực tiễn.....................................................................................4


1.4.

Kết quả dự kiến .......................................................................................5

Chương 2.
2.1.

CÔNG NGHỆ SỬ DỤNG ...............................................................6

Ứng dụng di động trên hệ điều hành Android ........................................6

2.1.1.

Cơ bản về ứng dụng Android ...........................................................6

2.1.2.

Sử dụng vị trí người dùng ................................................................7

2.2.

Dịch vụ Google Maps Platform ..............................................................8

2.2.1.

Giới thiệu về Google Maps Platform ...............................................8

2.2.2.


Một số ứng dụng có thể xây dựng....................................................9

2.2.3.

Cách sử dụng và phát triển .............................................................10

2.3.

ASP.NET Core......................................................................................11

2.3.1.

Giới thiệu ASP.NET Core..............................................................11

2.3.2.

Lý do lựa chọn ASP.NET ..............................................................11

2.4.

Angular frontend framework ................................................................12

2.4.1.

Giới thiệu về Angular.....................................................................12

2.4.2.

Tại sao lựa chọn Angular ...............................................................12


2.5.

Dịch vụ Google Cloud Firebase ...........................................................13


2.5.1.

Giới thiệu về Firebase ....................................................................13

2.5.2.

Tính năng và lợi ích khi dùng Firebase..........................................13

2.5.3.

Cách sử dụng và phát triển .............................................................15

Chương 3.

NGHIÊN CỨU THỰC NGHIỆM .................................................16

3.1.

Phân tích, làm rõ, đặc tả yêu cầu ..........................................................16

3.1.1.

Xác định yêu cầu hệ thống .............................................................16

3.1.2.


Phân tích yêu cầu hệ thống ............................................................18

3.1.3.

Sơ đồ Use Case ..............................................................................20

3.1.4.

Sơ đồ Sequence ..............................................................................36

3.1.5.

Sơ đồ State .....................................................................................38

3.1.

Thiết kế trải nghiệm, giao diện người dùng..........................................40

3.1.1.

Nhóm màn hình Web của Điều phối viên ......................................40

3.1.2.

Nhóm màn hình Mobile xác thực người dùng ...............................45

3.1.3.

Nhóm màn hình Mobile cho Bệnh nhân gọi điện ..........................46


3.1.4.

Nhóm màn hình Mobile xem chi tiết .............................................47

3.1.5.

Nhóm màn hình Mobile cho Cấp cứu viên xử lý ...........................48

3.2.

Phân tích và thiết kế hệ thống ...............................................................49

3.2.1.

Thiết kế kiến trúc hệ thống ............................................................49

3.2.2.

Thiết kế cơ sở dữ liệu .....................................................................51

Chương 4.

KẾT LUẬN ....................................................................................55

4.1.

Kết quả đạt được ...................................................................................55

4.1.1.


Về phía bản thân ............................................................................55

4.1.2.

Về phía khóa luận ..........................................................................55


4.2.

Thuận lợi và khó khăn ..........................................................................56

4.2.1.

Thuận lợi ........................................................................................56

4.2.2.

Khó khăn ........................................................................................56

4.3.

Ưu điểm và nhược điểm .......................................................................56

4.3.1.

Ưu điểm..........................................................................................56

4.3.2.


Nhược điểm ....................................................................................57

Chương 5.

HƯỚNG PHÁT TRIỂN .................................................................58

TÀI LIỆU THAM KHẢO ....................................................................................59


DANH MỤC HÌNH
Hình 3-1: Sơ đồ Use-Case tổng quan ...................................................................20
Hình 3-2: Biểu mẫu thông tin chi tiết yêu cầu cấp cứu ........................................34
Hình 3-3: Biểu mẫu thơng tin u cầu chuyển viện .............................................35
Hình 3-4: Sơ đồ Sequence Nghiệp vụ cấp cứu ngoại viện ...................................36
Hình 3-5: Sơ đồ State của YCCC .........................................................................38
Hình 3-6: Màn hình đăng nhập Web cho Điều phối viên hoặc Quản trị viên ......40
Hình 3-7: Màn hình quản lý Vai trị của Quản trị viên.........................................41
Hình 3-8: Màn hình quản lý Người dùng của Quản trị viên ................................42
Hình 3-9: Màn hình giám sát năng lực trạm cấp cứu ...........................................43
Hình 3-10: Màn hình điều phối đội cấp cứu .........................................................44
Hình 3-11: Giao diện nhóm màn hình Mobile xác thực người dùng ...................45
Hình 3-12: Giao diện nhóm màn hình Mobile chính cho Bệnh nhân...................46
Hình 3-14: Giao diện nhóm màn hình Mobile bổ trợ ...........................................47
Hình 3-13: Giao diện nhóm màn hình Mobile chính cho Cấp cứu viên ..............48
Hình 3-15: Sơ đồ kiến trúc hệ thống.....................................................................49
Hình 3-16: Sơ đồ thiết kế CSDL ..........................................................................51


DANH MỤC BẢNG
Bảng 3-1: Mơ tả quy trình cấp cứu ngoại viện hiện tại ........................................16

Bảng 3-2: Danh sách các Actor ............................................................................21
Bảng 3-3: Danh sách các Use Case ......................................................................22
Bảng 3-4: Đặc tả Use Case Gọi cấp cứu khẩn cấp ...............................................28
Bảng 3-5: Đặc tả Use Case Tạo yêu cầu cấp cứu .................................................28
Bảng 3-6: Đặc tả Use Case Gọi điện thoại cấp cứu ..............................................29
Bảng 3-7: Lưu nội dung cuộc gọi .........................................................................30
Bảng 3-8: Đặc tả Use Case Giám sát năng lực cấp cứu .......................................30
Bảng 3-9: Đặc tả Use Case Điều phối đội cấp cứu...............................................31
Bảng 3-10: Đặc tả Use Case Theo dõi thông tin thời gian thực ...........................31
Bảng 3-11: Đặc tả Use Case Cập nhật thông tin YCCC ......................................32
Bảng 3-12: Đặc tả Use Case Kết thúc cấp cứu .....................................................32
Bảng 3-13: Danh sách các bảng thực thể quan hệ ................................................51
Bảng 3-14: Mô tả bảng thực thể Roles .................................................................52
Bảng 3-15: Mô tả bảng thực thể Users .................................................................52
Bảng 3-16: Mô tả bảng thực thể UserRoles ..........................................................52
Bảng 3-17: Mô tả bảng thực thể Permissions .......................................................53
Bảng 3-18: Mô tả bảng thực thể OrganizationUnits .............................................53
Bảng 3-19: Mô tả bảng thực thể UserOrganizationUnits .....................................53
Bảng 3-20: Mô tả bảng thực thể Emergencies .....................................................54


DANH MỤC TỪ VIẾT TẮT
Từ viết tắt

Từ viết đầy đủ

HCMC EMS

Ho Chi Minh City Emergency Medical System


CCNV

Cấp cứu ngoại viện

YCCC

Yêu cầu cấp cứu

TCC / TCCNV

Tổ cấp cứu / Tổ cấp cứu ngoại viện

YCCV

Yêu cầu chuyển viện

CCV

Cấp cứu viên

QTV

Quản trị viên

ĐPV

Điều phối viên

GMP


Google Maps Platform


TÓM TẮT NỘI DUNG
Hiện nay, số lượt gọi cấp cứu 115 của người dân cứ tăng dần mỗi năm và đã tăng
gấp 3 lần vào thời điểm năm 2019 (ước tính trên 25.000 cuộc gọi trong năm 2019)
nếu so sánh với năn 2015 (8.787 cuộc gọi). Dù chuyên môn đã được nâng cao, tuy
nhiên vẫn chưa đáp ứng được nhu cầu hiện tại của người dân. Đặc biệt trong công tác
điều phối, thông tin liên lạc giữa các bên và điều quan trọng là chưa kết nối hoàn toàn
giữa người bệnh và phía trung tâm cấp cứu. Chưa có một dịch vụ nào về gọi cấp cứu
cho người dân hoàn chỉnh, chủ yếu là liên hệ thông qua số điện thoại 115. Vì vậy em
xin đề xuất đề tài khóa luận là “Xây dựng hệ thống y tế khẩn cấp cho trung tâm
cấp cứu 115”. Mục tiêu của khóa luận là mô phỏng một hệ thống cung cấp khả năng
kết nối giữa người bệnh, tổ cấp cứu, bệnh viện và trung tâm điều hành trong công tác
cấp cứu ngoại viện. Giải pháp lựa chọn kết hợp các công nghệ để hiện thực gồm ứng
dụng di động Android, ứng dụng web Angular + ASP.NET và một số dịch vụ điện
toán đám mây như Google Map API. Nội dung đề tài được chia thành:
-

Chương 1: Giới thiệu tổng quan: Giới thiệu bối cảnh, lý do thực hiện đề tài

cũng như các giải pháp hiện tại cho vấn đề liên quan. Từ đó rút ra hướng tiếp cận
thực hiện đề tài.
-

Chương 2: Công nghệ sử dụng: Trình bày sơ lược về lý thuyết và kỹ thuật lập

trình của các cơng nghệ được sử dụng như: Android Java, ASP.NET, Angular,
Google Map API,...
-


Chương 3: Nghiên cứu thực nghiệm: Phân tích, xác định yêu cầu người dùng

và hệ thống. Phân tích và thiết kế hệ thống đáp ứng được yêu cầu đã đề ra.
-

Chương 4: Kết luận: Nêu đánh giá tồn bộ đề tài, trình bày những kết quả đạt

được, thuận lợi, khó khăn cũng như ưu nhược điểm của đề tài.
-

Chương 5: Hướng phát triển: Đề xuất hướng phát triển trong tương lai.

1


Chương 1. GIỚI THIỆU TỔNG QUAN
1.1. Giới thiệu đề tài
Hiện nay mạng lưới cấp cứu ngoại viện đã phát triển mạnh về số lượng, bao gồm
1 trung tâm và 33 trạm cấp cứu vệ tinh phủ khắp 24 quận huyện trên địa bàn thành
phố [1]. Hệ thống cấp cứu ngoại viện đã hoạt động hiệu quả trong việc nâng cao khả
năng đáp ứng nhu cầu người dân trong các tình huống y tế khẩn cấp, số lượt cấp cứu
năm 2015 tăng từ hơn 8 000 đến hơn 25 000 trong năm 2019 [2]. Tuy hoạt động hiệu
quả như thế nhưng vẫn không đáp ứng hết nhu cầu người dân, cùng với việc tiếp nhận
thông tin, tư vấn, điều phối lực lượng cấp cứu ngoại viện rất thô sơ, chủ yếu bằng ghi
chép thủ công và trao đổi qua điện thoại bàn cố định làm cho kéo dài thời gian cấp
cứu, ảnh hưởng rất nhiều đến sức khỏe người bệnh. Hiện nay trong q trình xây
dựng đơ thị thơng minh, việc xây dựng trung tâm cơ sở dữ liệu dùng chung nhằm
nâng cao hiệu quả quản lý khai thác và khả năng phân tích, dự báo thì khơng thể thiếu
hạ tầng dữ liệu y tế, nhất là dữ liệu về cấp cứu như tai nạn giao thơng, chấn thương,

đột quỵ v.v...Vì vậy, cần thực hiện sớm để mạng lưới cấp cứu ngoại viện vừa hoàn
thành nhiệm vụ được giao, vừa đáp ứng nhu cầu phát triển của thành phố.
Mặc dù Trung tâm cấp cứu 115 TpHCM đã có một hệ thống ứng dụng cơng nghệ
thơng tin vào q trình cấp cứu ngoại viện. Tuy nhiên trong một số khía cạnh vẫn
chưa phát huy được tối đa hiệu quả mà công nghệ thông tin mang lại. Các trạm cấp
cứu, xe cấp cứu và nhân viên thực hiện công tác y tế khẩn cấp đã đi vào quy chuẩn,
chuyên nghiệp nhưng vẫn chưa ứng dụng các công cụ hỗ trợ từ xa cho người dân. Sự
rời ràng trong việc kết nối giữa người bệnh và tổ cấp cứu đang là vấn đề khó khăn
nhất. Phương pháp hiện tại và là duy nhất của trung tâm là liên lạc thông qua số điện
thoại của bệnh nhân, điều nay mang lại sự phiền phức và tốn kém cho cả phía trung
tâm và người bệnh.
Mạng lưới cấp cứu ngoại viện vẫn chưa đáp ứng được nhu cầu của người dân. Hoạt
động trạm vệ tinh tuy đa dạng nhưng chưa đồng đều, thiếu xe cứu thương, nguồn
nhân lực… Ngoài ra, hoạt động các trạm vệ tinh là tự nguyện, BV phải chịu thất thu

2


khi đến nơi khơng có bệnh nhân hoặc bệnh nhân chờ lâu q đã tự túc di chuyển,
khơng thu phí được. Trung tâm cấp cứu 115 cịn gặp nhiều khó khăn khi kết nối, trao
đổi với trạm vệ tinh, các BV trong việc điều phối, hỗ trợ chuyên môn, vận chuyển
người bệnh.
Vì thế, xây dựng hệ thống điều hành mạng lưới cấp cứu thông minh kết nối trung
tâm với người dân; kết nối Trung tâm cấp cứu 115 với kíp xe cứu thương để biết tình
trạng xe cứu thương để điều phối, hỗ trợ kíp cấp cứu đi và tình hình thơng tin bệnh
nhân; kết nối trung tâm và BV điều trị giúp BV biết tình trạng bệnh nhân và Trung
tâm biết được BV nào quá tải để điều phối… Ngồi ra, hệ thống cần có phần mềm
phản hồi đánh giá, các dữ liệu phải được số hóa và phân tích định kỳ để phát triển
mạng lưới cho hiệu quả. Số liệu cập nhật thường xuyên trên dữ liệu dùng chung của
TP. Qua đó phối hợp liên ngành và kịp thời báo cáo cho Sở Y tế những trường hợp

khẩn cấp.
1.2. Mục tiêu và phạm vi
1.2.1.

Mục tiêu

Mục tiêu tổng quát: Xây dựng hệ thống điều hành cấp cứu tại Trung tâm cấp cứu
115, ứng dụng công nghệ thông tin và phương thức quản lý hiệu quả nhằm đáp ứng
nhu cầu điều hành mạng lưới cấp cứu ngoại viện phục vụ người dân.
Mục tiêu cụ thể:
-

Tìm hiểu các hoạt động, các quy trình nghiệp vụ chun mơn trong cơng tác
cấp cứu y tế ngoại viện.

-

Xây dựng được chức năng dành cho bệnh nhân hoặc người thân bệnh nhân để
thực hiện cuộc gọi cấp cứu.

-

Xây dựng được chức năng hỗ trợ điều phối đội cấp cứu dành cho nhân viên tại
các trung tâm cấp cứu.

-

Xây dựng được chức năng giám sát, theo dõi thơng tin cấp cứu để các bệnh
nhân có thể nắm bắt tiến trình cấp cứu.


3


-

Hệ thống phải đáp ứng được mục tiêu thông tin liên lạc và kết nối giữa các bên
tham gia vào hệ thống.

-

Hiển thị bản đồ trực quan và thông tin liên quan lên bản đồ.

-

Thiết kế UX/UI theo ngôn ngữ thiết kế Material Design.
1.2.2.

Phạm vi

-

Phạm vi địa lý: khu vực địa phận Thành phố Hồ Chí Minh

-

Phạm vi người dùng: mọi lứa tuổi và mọi giới tính

-

Phạm vi chức năng:

o Bệnh nhân hoặc người thân bệnh nhân gọi cấp cứu
o Hỗ trợ nhân viên điều phối đội cấp cứu
o Theo dõi tiến trình cấp cứu thời gian thực
o Đăng ký thông tin y tế khẩn cấp

-

Phạm vi nền tảng triển khai:
o Ứng dụng di động (Android): dành cho Bệnh nhân, Nhân viên y tế - là
những người phải di chuyển liên tục.
o Ứng dụng Web (Angular + ASP.NET): dành cho Trung tâm điều hành,
Bệnh viện – là những đối tượng làm công tác quản lý, điều phối.

1.3. Ý nghĩa thực tiễn
Nâng cao chất lượng đảm bảo sức khỏe cho người bệnh:
-

Bệnh nhân cấp cứu được phục vụ kịp thời, có phương tiện và công cụ chủ động
tiếp cận với dịch vụ cấp cứu. Được chủ động nắm bắt thông tin, tình hiện cấp
cứu hiện tại của bản thân và người thân.

-

Bảo vệ sự sống và an toàn của con người.

-

Cải thiện chất lượng cuộc sống (Thành phố an toàn – thành phố thông minh)
và điều kiện xã hội tốt hơn cho người dân.


-

Giúp giảm hoặc ngăn ngừa tổn thất kinh tế (Đảm bảo và duy trì cuộc sống cũng
như hoạt động của người dân).

Nâng cao hiệu quả công tác quản lý, điều hành, cấp cứu:
4


-

Nâng cao năng lực điều hành của Trung tâm cấp cứu, giúp nhà quản lý ra quyết

định nhanh, chính xác và hiệu quả gần như tức thì.
-

Giúp lực lượng cấp cứu ngoài viện nhất là lãnh đạo bệnh viện liên kết (có trạm

cấp cứu ngoại viện) nâng cao chỉ đạo cấp cứu trên địa bàn mình quản lý hoặc khu vực
gần đơn vị và cấp cứu đúng chuyên môn.
1.4. Kết quả dự kiến
-

Tìm hiểu các hoạt động, các quy trình nghiệp vụ chuyên môn trong công tác
cấp cứu y tế ngoại viện.

-

Nâng cao khả năng cứu chữa cho bệnh nhân so với quy trình hiện tại là kết quả
mong muốn nhất của đề tài và hệ thống.


-

Bệnh nhân khơng cịn phải thực hiện các bước YCCC phức tạp, mất thời gian
như trước.

-

Nhận được tín hiệu cấp cứu ngày lập tức đến từ Bệnh nhân, mang lại khả năng
ứng phó kịp thời trong những tình huống cấp thiết.

-

Thơng tin liên lạc giữa các bên được kết nối liên tục và nhanh chóng với độ
chính xác thời gian thực.

-

Lưu trữ và quản lý các thơng tin, áp dụng quy trình nghiệp vụ chuyên môn dễ
dàng hơn cho Trung tâm và các Nhân viên.

-

Hoàn thành các mục tiêu đã đề ra.

5


Chương 2. CÔNG NGHỆ SỬ DỤNG
2.1. Ứng dụng di động trên hệ điều hành Android

2.1.1.

Cơ bản về ứng dụng Android

Android là một hệ điều hành di động dựa trên một phiên bản tùy biến của Kernel
Linux và là một hệ điều hành mã nguồn mở. Android được thiết kế để chạy trên các
thiết bị cảm ứng như smartphone và tablet [3].
Ứng dụng Android là các chương trình được sử dụng trên hệ điều hành Android.
Các ứng dụng Android thuần túy được viết bằng các ngôn ngữ như Kotlin, Java và
C++. Ngồi ra có thể sử dụng các cơng nghệ Cross-platform như ReactNative, Flutter
để phát triển ứng dụng Android. Android SDK và Android Studio là một bộ công cụ
phát triển dùng để biên dịch mã nguồn, dữ liệu và tài nguyên để đóng gói thành
Android package có đi là .apk. Một file APK bao gồm tất cả nội dung của ứng dụng
Android và được sử dụng để cài đặt ứng dụng lên các thiết bị chạy Android.
Hệ thống Android hoạt động dựa trên ngun tắc quyền hạn ít nhất. Do đó, mỗi
một ứng dụng khi hoạt động sẽ chỉ có quyền truy cập vào các thành phần mà nó yêu
cầu để thực hiện cơng việc của nó. Điều này tạo ra một mơi trường an tồn khi mà
các ứng dụng khơng thể truy cập vào các thành phần khác của hệ thống mà khơng có
quyền. Tuy nhiên chúng ta vẫn sẽ có một số phương pháp để chia sẽ dữ liệu và sử
dụng các thành phần của hệ thống [4].
Thành phần ứng dụng (App Components) là các khối xây dựng cơ bản của một
ứng dụng Android. Mỗi một component sẽ là một điều khởi động cho phép hệ thống
hoặc người dùng có thể truy cập ứng dụng. Có một số loại components trong ứng
dụng Android như sau:
-

Activities: Là một điểm bắt đầu cho một hoạt động tương tác với phía người
dùng. Nó đại diện cho một màn hình với các giao diện người dùng.

-


Services: Là một điểm bắt đầu cho mục đích muốn giữ cho ứng dụng được hoạt
động ngầm (background) hoặc thông báo (foreground / notifications).

6


-

Broadcast receivers: Là một thành phần chuyên dùng để phân phối và phản hồi
các sự kiện có phạm vi tồn hệ thống.

-

Content providers: Là một thành phần cho phép chia sẽ dữ liệu trong ứng dụng,
dữ liệu SQLite, dữ liệu trển dĩa,... cho các ứng dụng khác.

Ba trong số bốn loại component (activities, service và broadcast receiver) là có thể
kích hoạt bằng một lời gọi bất đồng bộ gọi là Intent. Intent giúp liên kết các
component lại với nhau trong lúc runtime. Intent đưa ra các yêu cầu về thao tác cho
các component và quy định các component đang hoạt động cho ứng dụng nào.
2.1.2.

Sử dụng vị trí người dùng

Một trong những tính năng đặc biệt của ứng dụng di động đó là thơng tin về vị trí.
Người dùng có thể mang thiết bị của họ đến bất kỳ đâu và thơng những thơng tin vị
trí nhằm tăng trải nghiệm của người dùng. Các APIs về vị trí của Google Play service
sẽ hỗ trợ cho việc theo dõi vị trí, khu vực địa lý và nhận biết các hoạt động vị trí.
Để bảo vệ quyền riêng tư của người dùng, ứng dụng sử dụng các dịch vụ vị trí phải

yêu cầu quyền truy cập thơng tin vị trí. Khi u cầu về quyền hạn sử dụng, người
dùng sẽ quyết định họ có cho phép ứng dụng sử dụng các dịch vụ liên quan khơng.
Cho nên một kinh nghiệm đó là nên nêu rõ lý do vì sao sử dụng các dịch vụ này để
họ có thể cấp quyền cho ứng dụng [5].
Có hai loại truy cập và sử dụng các thơng tin về vị trí là background và foreground.
2.1.2.1.

Background location

Một ứng dụng có nhu cầu truy cập vị trị ở dạng background nếu như nó cần tính
năng chia sẽ hoặc truy cập thơng tin vị trí một cách liên tục:
-

Ứng dụng chia sẽ thơng tin vị trí trong gia đình.

-

Ứng dụng IoT điều khiển các thiết bị dựa trên vị trí của người dùng.

Ngồi ACCESS_COARSE_LOCATION và (hoặc) ACCESS_FINE_LOCATION
để sử dụng dịch vụ vị trí. Ở các phiên bản Android 10 trở lên, thì phải khai báo quyền
ACCESS_BACKGROUND_LOCATION ở file manifest [6].
7


Chú ý: Các thiết có hệ điều hành Android 8 trở lên thì khi chạy ứng dụng ở
background chỉ được phép truy cập và sử dụng một vài lần trong một giờ [7].
2.1.2.2.

Foreground location


Một ứng dụng có tính năng chia sẽ hoặc nhận thơng tin vị trí một vài lần có giới
hạn thì nên truy cập vị trí với foreground, ví dụ:
-

Các ứng dụng chỉ đường, hướng dẫn điều hướng di chuyển.

-

Các ứng dụng nhắn tin, chia sẽ thông tin vị trí hiện tại.

Hệ thống sẽ cân nhắc sử dụng vị trí ở dạng foreground trong một số tình huống sau:
-

Một activity thuộc về ứng dụng đang được hiển thị.

-

Một foreground service đang được vận hành.

2.2. Dịch vụ Google Maps Platform
2.2.1.

Giới thiệu về Google Maps Platform

GMP là một bộ gồm tập hợp các APIs và các SDKs cho phép các lập trình viên
nhúng Google Maps vào bên trong các ứng dụng di động, các trang web hoặc có thể
lấy dữ liệu từ Google Maps về. Có rất nhiều dịch vụ hữu ích được tích hợp trong
GMP liên quan đến việc sử dụng hệ thống thông tin địa lý. Tùy theo những gì mà
chúng ta cần mà có thể sử dụng một hoặc kết hợp nhiều APIs và SDKs dưới đây:

-

Maps: Cho phép hiển thị bản đồ dưới dạng hình ảnh hoặc dạng bản đồ tương
tác. Tùy biến bản đồ với những markers, lines, màu sắc, polygons và hình
ảnh,... Trong đó có rất nhiều APIs và SDKs như:
o Maps JavaScript API
o Maps SDK for Android
o Maps SDK for iOS
o Maps Static API
o Maps URLs

8


-

Routes: Giúp người dùng tìm ra đường đi tốt nhất từ điểm A đến điểm Z với sự
toàn diện của dữ liệu và thông tin giao thông theo thời gian thực. Gồm các tính
năng được cung cấp thành các API như:
o Directions: Chỉ đường dành cho các phương tiện công cộng, xe đạp, xe
hơi và đi bộ. Tính tồn thời gian di chuyển dựa trên giao thông theo thời
gian thực.
o Distance Matrix: Cung cấp thời gian và khoảng cách di chuyển cho một
hoặc nhiều địa điểm.

-

Places: Giúp người dùng khám phá ra các thông tin chi tiết của thế giới thực từ
hơn 200 triệu địa điểm thú vị trên bản đồ của Google Maps. Những tính năng
liên quan đến Place gồm: Tìm kiếm, xem thơng tin chi tiết, hình ảnh, tự động

điền thông tin,...

Trong phạm vi của ứng dụng, ở đây chúng ta sẽ sử dụng hai dịch vụ của GMP là
Maps và Routes.
2.2.2.

Một số ứng dụng có thể xây dựng

Từ những dịch vụ mà GMP cung cấp, chúng ta có thể xây dựng rất nhiều ứng dụng
hữu ích và mang lại nhiều ưu thế hơn so với các ứng dụng cạnh tranh khác:
-

Chia sẽ phương tiện di chuyển: Grab, GoViet, Be,... là các ứng dụng “xe ôm
công nghệ”. Việc tích hợp Google Maps trực tiếp vào trong ứng dụng sẽ giảm
q trình điều hướng khó chịu cho tài xế và giảm thời gian chờ cho khách hàng.

-

Gaming: Tạo ra các game nhập vai thế giới thực với hàng triệu mơ hình thực
thể 3D, với các dữ liệu ln ln được cập nhật trên bản đồ thế giới thực và
làm cho việc tích hợp trở nên liền mạch hơn với Unity. Ví dụ Pokemon Go.

-

Theo dõi hàng hóa: Cải thiện hiệu quả kinh doanh hơn bằng việc định vị
phương tiện và hàng hóa theo thời gian thực, trực quan hóa vị trí của hàng hóa
và q trình di chuyển của phương tiện trong các chuyến hàng phức tạp.

Còn rất nhiều ứng dụng cho phép xây dựng từ các dịch vụ của Google Maps. Quan
trọng là đều mang lại lợi ích cho các bên: Google cung cấp dịch vụ, bên cung cấp ứng

9


dụng và người sử dụng ứng dụng. Có thể đem lại lợi ích kinh tế nếu áp dụng tốt và
hiệu quả trong thực tế.
2.2.3.

Cách sử dụng và phát triển

GMP là một trong những dịch vụ con của GCP, vì vậy chúng ta cần phải đăng ký
GCP. Sử dụng tài khoản Google là chúng ta có thể đăng ký được GCP, tuy nhiên để
có thể sử dụng các dịch vụ tính phí như GMP thì cần phải tạo một tài khoản thanh
toán. Sử dụng các loại thẻ thanh toán quốc tế như thẻ Debit hoặc Credit của Visa hoặc
MasterCard.
Về phần chi phí sử dụng các API của GMP như sau:
-

Miễn phí Map SDK for Android

-

Đối với Maps Javascript API có giá mỗi 1000 request là $7

-

Directions và Directions Advanced của Routes lần lượt là $5 và $10 mỗi 1000 request.

-

Geocoding của Places là $5 mỗi 1000 request.


Tuy nhiên, GMP sẽ cho chúng ta miễn phí $200 mỗi tháng để sử dụng các dịch vụ.
Tức là nếu chúng ta sử dụng các có tính phí, mà vẫn nằm trong $200 miễn phí của
GMP thì khơng cần phải trả bất kỳ khoản phí nào thêm.
Sau khi tạo thành cơng tài khoản thanh tốn, chúng ta cần tạo một project trong
GCP. Project trong GCP là một đơn vị cơ bản dùng để quản lý các dịch vụ tài nguyên,
chi phí, các API và SDK được sử dụng. Các chi phí phát sinh trong quá trình sử dụng
của project sẽ được tính cho tài khoản thanh tốn được liên kết.
Tiếp đến chúng ta cần kích hoạt các API và SDK của GMP trong project. Và sau
đó tạo một API key để có thể sử dụng GMP trong các ứng dụng. Để tạo API key, từ
Google Cloud Console của project, và phần APIs & Services / Credentials và thêm
một Credentials mới.

10


2.3. ASP.NET Core
2.3.1.

Giới thiệu ASP.NET Core

Trước khi giới thiệu về ASP.NET, chúng ta cùng đi sơ qua về .NET. .NET là một
nền tảng dùng để phát triển, xây dựng nhiều loại phần mềm khác nhau. Nó miễn phí
và là mã nguồn mở. Với .NET, chúng ta có thể sử dụng nhiều ngơn ngữ, trình soạn
thảo, thư viện khác nhau để xây dựng web, ứng dụng di động, ứng dụng desktop,
game, IoT.
ASP.NET là một framework phát triển ứng dụng web mã nguồn mở, được tạo ra
bởi Microsoft, nhằm xây dựng ứng dụng web hoặc các dựng vụ web với .NET. Nó là
đa nền tảng và có thể chạy trên Window, Linux, macOS, Docker.
2.3.2.


Lý do lựa chọn ASP.NET

ASP.NET là một nền tảng (platform) mở rộng của .NET, nó bao gồm các cơng cụ
, thư viện đặc biệt dùng trong việc xây dựng ứng dụng web:
-

Hệ thống xác thực: bao gồm các thư viện, một database, các trang web
mẫu để xử lý thao tác đăng nhập, xác thực nhiều bước, đăng nhập từ các
bên thứ ba như Google, Facebook, Twitter,...

-

Backend code: Khi sử dụng ASP.NET thì các đoạn code ở backend như là
xử lý nghiệp vụ, truy cập dữ liệu được viết bằng C#, F# hoặc Visual
Basic. Với một hệ sinh thái gồ rất nhiều package và thư viện chúng ta có
thể dễ dàng phát triển và mở rộng ứng dụng.

-

ASP.NET có thể tích hợp với một số framework frontend phổ biến hiện
giờ như như Angular và React. Nó bao gồm các template đã được cấu
hình sẵn để kết hợp với ASP.NET.

-

ASP.NET cho phép chúng ta xây dựng nhiều loại ứng dụng web như là
web page, REST APIs, microservice và các hub kết nối realtime.

11



2.4. Angular frontend framework
2.4.1.

Giới thiệu về Angular

Angular là một nền tảng phát triển, được xây dựng dựa trên TypeScript. Và bởi vì
là một nền tảng cho nên nó bao gồm:
-

Một framework được thiết kế theo hướng thành phần (component-based)
để dễ dàng mở rộng ứng dụng web.

-

Một bộ các thư viện dễ dàng tích hợp với rất nhiều tính năng trong đó như
là định tuyến (routing), quản lý form nhập liệu, giao tiếp client-server,...

-

Một nhóm các cơng cụ cho developer giúp ích trong việc phát triển, kiểm
thử và triển khai ứng dụng.

Với Angular, chúng ta có thể đạt được nhiều lợi thế trong việc mở rộng ứng dụng.
Angular được thiết kế để chỉnh sửa, cập nhật dễ dàng nhất. Angular là một hệ sinh
thái gồm một nhóm đa dạng hơn 1.7 triệu lập trình viên, những người chuyên viết thư
viện và những người sáng tạo nội dung.
2.4.2.


Tại sao lựa chọn Angular

Một số tính năng nổi bật khiến chúng ta nên cân nhắc sử dụng Angular:
-

Tự động tạo mã nguồn: Angular có nhiều template cho những công việc
phổ biến như tạo routing, component, testing. Nó giúp chúng ta giảm thời
gian viết code bằng tay cho những mẫu có sẵn như thế.

-

Mã nguồn được chia thành các file theo từng chức năng: dễ dàng quản lý,
mở rộng, sửa lỗi vì Angular tổ chức theo dạng module và component. Mỗi
module và component cũng được tách thành các file sao cho phù hợp.

-

Template: thành phần UI của Angular được viết trong các file html, data
được truyền lên nhờ vào binding.

-

Cơng cụ dịng lệnh: với Angular CLI, nó sẽ cung cấp cho lập trình viên các
tool hỗ trợ việc build, thêm component, test và deploy.

12


-


Testing: cung cấp Karma cho unit-test các module, component. Hoặc tùy
chọn các end-to-end test như Cypress, Protractor,...

2.5. Dịch vụ Google Cloud Firebase
2.5.1.

Giới thiệu về Firebase

Firebase là một nền tảng phát triển phần mềm được phát triển bởi Firebase Inc và
được cung cấp bở Google từ năm 2014. Nền tảng này là một giải pháp Backend-asa-Service cho ứng dụng di động và ứng dụng web. Bao gồm các dịch vụ xây dựng,
kiểm thử và quản lý ứng dụng.
BaaS là một giải pháp cho phép loại bỏ sự cần thiết của việc tự quản lý cơ sở dữ
liệu backend và các phần cứng liên quan. Firebase được tin dùng và phổ biến vì nó
giúp các nhà phát triển có thể xây dựng các hệ thống kiểu Client-Server nhanh chóng,
ít tốn cơng sức và cũng như chi phí bỏ ra cho phép Server giảm đi đáng kể [8].
2.5.2.

Tính năng và lợi ích khi dùng Firebase

2.5.2.1.

Các chức năng chính của Firebase

a) Firebase Authentication
Hầu hết tất cả các ứng dụng đều cần phải định danh người dùng. Việc biết được
định danh người dùng sẽ giúp bảo mật được dữ liệu người dùng và cá nhân hóa các
trải nghiệm của người dùng trên tất cả thiết bị của họ.
Firebase Authentication cung cấp các dịch vụ backend, dễ dàng sử dụng các SDKs
và các thư viện UI để xác thực tài khoản. Firebase Authentication hỗ trợ các dạng xác
thực từ mật khẩu, số điện thoại, các nhà cung cấp xác thực bên thứ 3 như Google,

Facebook, Twitter,...
b) Firebase Realtime Database
Firebase Realtime Database là cơ sở dữ liệu được host trên nền tảng cloud. Dữ liệu
sẽ được lưu trữ theo dạng JSON và được đồng bộ theo thời gian thực khi client kết
nối. Khi xây dựng các ứng dụng đa nền tảng cho iOS, Android và Javascript, tất cả

13


các client chia sẽ chung một thể hiện của Realtime Database và tự động cập nhật mỗi
khi có dữ liệu mới.
Trong phạm vi của đồ án, chúng ta sẽ áp dụng Realtime Database vào dự án này.
c) Firebase Cloud Firestore
Cloud Firestore là một cơ sở dữ liệu rất linh hoạt và có khả năng mở rộng dành
cho phát triển ứng dụng di động, ứng dụng web và phát triển server. Giống như
Realtime Database, nó sẽ giữ cho dữ liệu được đồng bộ với các ứng dụng client theo
thời gian thực với các listener. Firestore hỗ trợ được các tình huống offline để đảm
bảo sẽ phản hồi với ứng dụng dù cho kết nối mạng có bị trễ hoặc khơng có kết nối.
d) Firebase Cloud Messaging
Sử dụng Firebase Cloud Messaging, chúng ta có thể gửi thơng báo đến ứng dụng
client giống như là có một thơng báo email mới hoặc thơng báo cập nhật dữ liệu.
Chúng ta có thể gửi tin nhắn thông báo để thúc đẩy và giữ chân người dùng. Cho
phép người dùng gửi tin nhắn miễn phí ngay lập tức với lượng payload lên đến 4KB.
2.5.2.2.

Lợi ích của Firebase

a) Xây dựng ứng dụng nhanh chóng
Với Firebase, lập trình viên có thể tiết kiệm thời gian cho việc xây dựng các ứng
dụng phía client. Khơng phải tốn nhân lực để quản lý hệ thống, cơ sở hạ tầng phía

backend. Firebase cũng hỗ trợ cho việc xây dựng các ứng dụng đa nền tảng như
mobile, web và cả game.
b) Miễn phí với một số tính năng
Khi bắt đầu, Firebase khơng u cầu phải trả phí cũng như khơng cần phải có thẻ
thanh tốn. Hầu hết các dịch vụ của Firebase đều miễn phí hoặc với một số lượng rất
lớn. Khi chúng ta cần sử dụng thêm khi đến giới hạn hoặc muốn sử dụng một dịch vụ
đặc biệt, chúng ta chỉ việc chi trả cho những gì chúng ta sẽ xài. Google gọi nó là Pay
as you go.

14


c) Tính linh hoạt và khả năng mở rộng
Ngồi việc sử dụng trực tiếp các dịch vụ của Firebase làm backend. Nhà phát triển
có thể tự tùy biến và kết hợp các dịch vụ đấy để xây dựng server của riêng mình.
Firebase cho phép kết hợp với một số cơng nghệ backend như Node.JS, Java, Python,
Go và C# để tùy biến việc quản lý backend.
d) Tài liệu hướng dẫn đầy đủ
Các tài liệu hướng dẫn sử dụng dịch vụ cũng như reference SDK rất là chi tiết. Các
trang hướng dẫn của Firebase sẽ giúp chúng ta tìm thấy các thơng tin cần thiết để tích
hợp vào các cơng nghệ đang hỗ trợ. Hơn thế nữa cịn có cả video hướng dẫn trên kênh
Youtube của Firebase.
2.5.3.

Cách sử dụng và phát triển

Tương tự như Google Map Platform, để sử dụng được Firebase, chúng ta cũng cần
có một project cho ứng dụng của chúng ta trong Firebase Console. Sau đó là đăng ký
ứng dụng mà chúng ta sẽ thêm vào cho Firebase. Chúng ta có thể thêm ứng dụng của
mình là Android, iOS hoặc Web và Firebase sẽ hướng dẫn chúng ta các bước để đăng

ký.
Để cài đặc các dependencies của Firebase đối với Android chúng ta cần thêm tập
tin google-services.json (được tải từ Firebase) vào thư mục app của project Android.
Cấu hình và thêm những dependencies cho Firebase vào trong hai tập tin build.gradle
ở thư mục root và app của project. Còn ở ứng dụng web thì chúng ta có thể sử dụng
các package manager hoặc CDN để cấu hình Firebase cho nó.

15


×