3.1 Giới thiệu khái quát mạng xã hội sức khỏe
3.1.1 Giới thiệu mạng xã hội sức khỏe
Ta có thể thấy ngày nay mạng xã hội đã trở thành một phần trong cuộc sống thực của nhiều người. Mạng xã hội khơng phải bây giờ mới có, cách đây khoảng 10 năm chúng đã xuất hiện như : Friendster (2002), MySpace (2003), Orkut (2004), Facebook (2004).
Vậy mạng xã hội là gì?
Mạng xã hội là một tập các dịch vụ web kết nối các thành viên cùng sở thích trên Internet lại với nhau với nhiều mục đích, khơng phân biệt khơng gian và thời gian. Trên đó, họ có thể chia sẻ, trao đổi thông tin một cách dễ dàng và nắm bắt thông tin nhanh nhạy, tiện lợi. [Wikipedia]
Mạng xã hội sức khỏe (gọi tắt là mạng sức khỏe) cũng mang tính chất như một mạng xã hội bất kỳ, có chức năng chủ yếu là kết bạn và chia sẻ thông tin. Mạng sức khỏe là ứng dụng chủ yếu cho phép người dùng kết bạn, tìm kiếm, chia sẻ thơng tin về sức khỏe để phịng bệnh và có sức khỏe tốt hơn. Mang tính chất của một mạng xã hội, mọi người trong mạng có thể kết nối với nhau bởi các mối quan hệ như Friend, Family.. hay trong các nhóm khác nhau (do người dùng tự lập ra) để dễ dàng chia sẻ và theo dõi các vấn đề mình quan tâm.. Nội dung của các thơng tin về sức khỏe được chia sẻ có thể là các kinh nghiệm, các kết quả nghiên cứu (của bác sĩ, các nhà nghiên cứu).. về các loại bệnh, triệu chứng hay xét nghiệm, các loại thuốc, phác đồ điều trị…
Điểm lưu ý của mạng sức khỏe là mỗi thông tin mà người dùng chia sẻ với người khác phải đảm bảo là đúng như thực tế, không tự bịa thêm hay thay đổi. Vì dù đơn thuốc hay phác đồ điều trị đúng hay sai, có chữa khỏi bệnh hay khơng thì cũng ảnh hưởng tới kết quả của việc điều trị. Việc kiểm chứng độ đúng đắn của các thông tin là rất khó (có thể nói là khơng kiểm sốt được), vì thế điểm lưu ý trên hồn tồn là một lời khuyến cáo và nó phục vụ cho lợi ích của các đối tượng tham gia mạng sức khỏe này.
. Việc chọn cơ sở dữ liệu đồ thị để xây dựng ứng dụng thay vì cơ sở dữ liệu quan hệ vì những lý do sau : dữ liệu của mạng xã hội là dữ liệu kết nối và mang nhiều quan hệ bắc cầu. Các ví dụ về các tính chất của mạng xã hội như Friends of a Friend đã được nói rõ trong chương 2 Cơ sở dữ liệu đồ thị.
Ta có thể thấy sự phát triển nhanh chóng của mạng xã hội. Theo một bài báo viết, một năm trước Facebook có một tỉ người dùng. Và chỉ sau một năm thì con số lên tới 1.15 tỉ người dùng hàng tháng và hơn một nửa số đó hoạt động hàng ngày (khoảng 699 triệu người dùng). Hãy thử tưởng tượng nếu ta sử dụng cơ sở dữ liệu quan hệ thì việc mở rộng quy mơ khi có nhu cầu sẽ thế nào? Câu trả lời chắc chắn sẽ là khó khăn. Điều này dễ dàng thấy được vì kết cấu của csdl quan hệ rất chặt chẽ và khơng linh động. Có thể thấy sự phát triển của các mạng xã hội phải kèm theo sự thay đổi trong chính hệ thống đó, nó phải thay đổi theo xu hướng của người dùng sao cho thân thiện nhất, gần gũi nhất và dễ sử dụng nhất. Vì vậy, nếu dùng csdl quan hệ và thay đổi nhiều như thế này thì cái giá phải trả sẽ rất đắt. Ngược lại, csdl đồ thị chỉ gồm các nút, các thuộc tính và mối quan hệ lại mang lại khả năng mở rộng rất cao, khi thêm nút (hầu hết là thực thể) hay thêm các thuộc tính, mối quan hệ, nó khơng địi hỏi một điều kiện gì, khơng ràng buộc phải có quan hệ này quan hệ khác. Việc mở rộng hay thu hẹp quy mô đều rất linh động.
3.1.2 Các chức năng của mạng xã hội sức khỏe
Hệ thống gồm các chức năng phục vụ cho 2 nhóm đối tượng : khách (guest) và người dùng (user).
- Khách (guest) : là những người không cần đăng ký vào mạng sức khỏe và có thể thực hiện một số chức năng nhất định (nhưng khơng đầy đủ) mang tính chất tham quan, xem xét khía cạnh nào đó của mạng xã hội. Khách và các hoạt động của khách cũng không được quản lý bởi hệ thống. Khi đăng ký một tài khoản trong mạng thì khách trở thành người dùng.
- Người dùng (user) : là người đã đăng ký một tài khoản trong mạng sức khỏe và đăng nhập để thực hiện đầy đủ các chức năng của hệ thống. Các hoạt động trong mạng sức khỏe của người dùng được hệ thống ghi lại và quản lý.
3.1.2.1Quản lý định danh (quản lý người dùng)
Là chức năng cho phép người dùng thực hiện các công việc như đăng ký, đăng nhập, đăng xuất, tạo nhóm, hồn thiện hồ sơ cá nhân cơ bản.
- Đăng ký : để trở thành người dùng của mạng xã hội, khách phải tiến hành đăng ký một tài khoản. Khi đăng ký, bắt buộc phải điền một số thông tin cơ bản bao gồm : Họ và tên, ngày sinh, giới tính, địa chỉ email, tên tài khoản, mật khẩu.
- Đăng nhập : khi đã có một tài khoản của mạng, người dùng muốn tham gia vào mạng cần đăng nhập. Để thực hiện chức năng này, người dùng điền tên tài khoản và mật khẩu của mình và đăng nhập.
- Đăng xuất: khi người dùng tạm thời muốn thoát ra khỏi mạng xã hội, họ có thể đăng xuất để khơng thực hiện các chức năng của mạng nữa. Khi người dùng đăng xuất, các người dùng khác vẫn có thể thực hiện các chức năng có liên quan như gửi tin nhắn riêng .. và sẽ có thơng báo khi người đó đăng nhập trở lại.
- Quản lý hồ sơ cá nhân: khi đăng ký, người dùng đã thực hiện một phần việc quản lý hồ sơ cá nhân rồi. Tuy nhiên, quản lý ở đây bao gồm cả việc chỉnh sửa thông tin cá nhân. Và thơng tin cá nhân có thêm nơi làm việc hiện tại, vị trí trong cơng việc, địa chỉ (đất nước, thành phố..), mối quan tâm.
- Tạo nhóm : người dùng có thể tạo một nhóm (group) cụ thể về nội dung nào đó để những ai quan tâm thì tham gia và chia sẻ thơng tin trong nhóm.
3.1.2.2Quản lý liên lạc (Contact Management)
Quản lý việc kết nối người dùng với nhau. Người dùng có thể tạo/gửi yêu cầu , nhận yêu cầu (có thể đồng ý hoặc từ chối) đối với các thành viên khác. Người dùng có thể quyết định các quan hệ gia đình hay bạn bè bằng việc gửi yêu cầu kết bạn hay xác nhận là thành viên trong gia đình. Có thể theo dõi các thành viên khác thơng qua việc đọc trang cá nhân.
Quản lý mối quan hệ bạn bè
- Gửi yêu cầu kết bạn (FRIEND) : người dùng có thể gửi yêu cầu kết bạn tới bất cứ người nào trong mạng.
- Chấp nhận/từ chối yêu cầu kết bạn.
- Hủy bỏ mối quan hệ bạn bè : người dùng có thể hủy bỏ mối quan hệ bạn bè với một người hiện tại trong danh sách là bạn bè của mình.
Quản lý hoạt động trong Group
- Gửi lời mời vào Group : người dùng có thể mời người dùng khác tham gia vào một nhóm cụ thể nào đó để cùng nhau thảo luận về vấn đề mà nhóm quan tâm.
- Chấp nhận/từ chối lời mời
- Rời nhóm khi cảm thấy khơng hứng thú nữa.
Quản lý mối quan hệ gia đình
Quản lý ở đây có thể là gửi yêu cầu thiết lập mối quan hệ hoặc chỉnh sửa hoặc xóa mối quan hệ đó.
- Gửi yêu cầu thiết lập mối quan hệ gia đình (FAMILY) : người dùng có thể thiết lập mối quan hệ gia đình với người dùng khác và kèm theo đó là vị trí thiết lập. Các vị trí
trong mối quan hệ này bao gồm : ông, bà, bố, mẹ, anh, chị, em, vợ, chồng, con, cháu, chú, bác, cơ, dì, thím.
- Chấp nhận/từ chối u cầu - Chỉnh sửa mối quan hệ(vị trí) - Xóa mối quan hệ.
- Gửi tin nhắn riêng (Private message) : người dùng có thể gửi tin nhắn riêng tới bất kỳ người dùng nào khác.
- Nhận tin nhắn riêng: người dùng có thể nhận các tin nhắn riêng được gửi đến người khác.
- Nhận thơng báo: khi có người gửi tin nhắn riêng đến cho người dùng hoặc bình luận tại post mà người dùng đã post trước đó, hệ thống sẽ thơng báo để người dùng biết.
- Nhận thông tin từ bạn bè (get news feed): chức năng này cho phép người dùng cập nhật các thơng tin mới nhất từ bạn bè của mình hoặc các thơng tin của các nhóm mà mình tham gia theo thời gian.
- Xem trang thơng tin cá nhân của mình và người dùng khác: người dùng có thể xem thơng tin cá nhân của mình hoặc người khác trên trang của mình. Trên đó sẽ có các post và comment được hiển thị theo thứ tự thời gian. Các post trên trang cá nhân chỉ do đúng người dùng đó post. Khi muốn xem trang cá nhân của khác, người dùng có thể yêu cầu hệ thống truy vấn và hiển thị trang đó lên trang cá nhân của mình.
3.1.2.3Chia sẻ thơng tin( Share information)
Người dùng có thể quản lý việc chia sẻ thơng tin của mình thơng qua các thao tác chính : tạo, sửa và xóa chia sẻ. Các chia sẻ của người dùng gồm các dạng : comment, post/status. Ngoài ra, đánh giá một thông tin được chia sẻ cũng là một cách chia sẻ là thơng tin đó có ích hay khơng.
- Cập nhật trạng thái (Post status) : người dùng cập nhật trạng thái của mình qua các post ở trang cá nhân của mình. Người dùng có thể cập nhật trạng thái của mình với tùy đối tượng mà họ mong muốn. Có thể là với tất cả mọi người, có thể là chỉ với bạn bè hoặc một số người nhất định.
- Xóa trạng thái: người dùng có thể xóa trạng thái mình đã cập nhật trước đó.
- Bình luận (Comment): người dùng có thể bình luận vào các post của bạn bè hoặc các post trong nhóm mà người đó tham gia vào.
- Chèn liên kết (link): người dùng có thể chèn thêm liên kết để chia sẻ vào post hoặc comment.
- Đánh giá: người dùng có thể đánh giá một post, một comment hay một group để giúp người khác xác định thơng tin đó có ích và đáng tin hay khơng? Thang điểm đánh giá là 5.
3.1.2.4 Tìm kiếm (Search)
Cho phép người dùng tìm kiếm các thành viên khác cũng như các thơng tin về sức khỏe, chế độ điều trị, các loại bệnh.. Và nó được chia thành 2 loại tìm kiếm : tìm kiếm trực tiếp và tìm kiếm dựa theo mối quan hệ. Tìm kiếm trực tiếp là tìm trực tiếp theo từ khóa cho trước và khơng cần qua mối quan hệ gián tiếp nào, vd như : tên thành viên, tên bệnh… (hầu hết tìm theo định danh). Tìm kiếm dựa theo mối quan hệ : cho phép người dùng tự xác định câu truy vấn (nhưng vẫn phải theo form được gợi ý bởi hệ thống) tìm theo các mối quan hệ của thực thể; vd : tìm bạn của bạn của Nguyễn A hay tìm các user tham gia vào nhóm quan tâm đến bệnh X.. Phần xác định các câu truy vấn theo form của hệ thống, người dùng có thể xem thêm hướng dẫn. Ngồi ra, người dùng có thể tinh chỉnh các truy vấn bằng việc thay đổi các giá trị của các biến trong đó; vd như câu truy vấn : các user tham gia vào nhóm quan tâm đến bệnh X, có thể thay đổi “X” bằng một loại bệnh khác.
Tìm người dùng
- Tìm người dùng theo định danh (một phần hoặc tồn phần)
- Tìm người dùng theo mối quan hệ : bạn của bạn, chị gái của bạn.. : tìm người qua mối quan hệ bạn bè hoặc gia đình hoặc đồng nghiệp. Có thể như là tìm bạn của A (A là bạn của người tìm kiếm).
- Tìm các người dùng cùng tham gia vào một group.
- Tìm người dùng theo giá trị của thuộc tính của hồ sơ cá nhân. Ví dụ : tìm người dùng có cơng việc là giáo viên hay tìm người dùng sống ở Hà Nội…
- Tìm bạn chung .
Tìm nhóm
- Tìm nhóm theo định danh (một phần hoặc tồn phần) - Tìm nhóm mà bạn bè tham gia vào.
- Tìm nhóm qua đánh giá của người dùng : người dùng có thể tìm nhóm qua chỉ số đánh giá của những người khác.
3.2 Phân tích thiết kế3.2.1Biểu đồ Use case3.2.1Biểu đồ Use case 3.2.1Biểu đồ Use case
3.2.1.1Use case tổng quát
3.2.1.2Use case Identity Management (quản lý định danh)
Hình 3.2 Use case quản lý định danh
3.2.1.3Usecase Contact Management (quản lý liên lạc)
3.2.1.4Use case Share information (Chia sẻ thơng tin)
Hình 3.4 Use case chia sẻ thơng tin
3.2.1.5Use case Search (Tìm kiếm)
3.2.2Biểu đồ lớp
Hình 3.6 Biểu đồ lớp3.2.3Biểu đồ hoạt động3.2.3Biểu đồ hoạt động 3.2.3Biểu đồ hoạt động
3.2.3.1Chức năng quản lý định danh
3.2.3.2Chức năng quản lý liên lạc
Hình 3.8 Biểu đồ hoạt động : quản lý liên lạc (1)
Hình 3.10 Biểu đồ hoạt động : quản lý liên lạc (3) 3.2.3.3Chức năng chia sẻ thơng tin
Hình 3.11 Biểu đồ hoạt động: chia sẻ thơng tin (1)
Hình 3.13 Biểu đồ hoạt động : chia sẻ thơng tin (3)
Hình 3.14 Biểu đồ hoạt động : chia sẻ thơng tin (4) 3.2.3.4Chức năng tìm kiếm
3.2.4 Biểu đồ tuần tự
Hình 3.16 Biểu đồ tuần tự3.2.5 Các chức năng bên client3.2.5 Các chức năng bên client 3.2.5 Các chức năng bên client
1.ShowFormCheckLogin(): void
2.ShowPersonalPage(PersonalPage page): void 3.ShowFormRegister() : void
4.ShowFormCreateGroup() : void 5.ShowGroup() : void 6.ShowrProfile() : void 7.ShowFormAddFriend() : void 8.ShowFormRemoveFriend() : void 9.ShowRequestList() : void 10.ShowAcceptedReq() : void 11. ShowFormDeclineReq() : void 12. ShowFamily () : void 13. ShowFriendList () : void 14. ShowGroupMembers() : void 15. ShowNewsFeed() : void 16. ShowFormPostStatus() : void 17. ShowFormComment () : void 18. ShowRating () : void 19. ShowEmbeddedLink () : void 20. ShowNotification() : void 21. ShowFormToSendPM() : void 22. ShowInbox() : void 23. ShowFormSearchByID_G() : void 24. Show FormSearchByID_U() : void 25. ShowFormSearchByRls():void 26. ShowFormSearchByProfile():void 27. ShowFormSearchGroupsOfUser():void 28. ShowFormSearchMutualFriends() : void
3.2.6 Các chức năng bên server
1.CheckLogin(String username, String password) : int 2.GetPersonalPage(User userId) : PersonalPage
3.Register(User userId, Profile profile) : int
5.GetGroup(int groupId) : Group
6.UpdateProfile(User userId, Profile : profile) : int 7.AddFriend(User sender, User recipient) : int 8.RemoveFriend(User sender, User recipient) : int 9.GetRequestList() : String[]
10. AcceptReq(User sender, User recipient , String req) : int 11. DeclineReq(User sender, User recipient , String req) : int 12. UpdateFamily(User setup, Family member) : int
13. GetFriendList(User userId) : User[] 14. GetGroupMembers(Int GroupID) : User[] 15. GetNewsFeed(User userId) : void
16. PostStatus(User poster, Status status, User[] listShare, Time time) : int 17. Comment(User user, Status statusId, Comment comment, Time time) : int 18. Rating(User user, Status statusId, Comment commentId, int : rating) : int
19. EmbeddedLink(User userId, Status statusId, Comment commentId, Link link) : int 20. GetNotification(User userId, Notification : noti) : void
21. SendPM(User sender, User recipient, PM : pm) : int 22. GetInbox(User user) : PM[]
23. SearchByID(Int id) : Group 24. SearchByID(Int id) : User 25. SearchByRls(String rls) : String 26. SearchInProfile(String key) : User
27. SearchGroupsOfUser(User userId) : Group[] 28. SearchMutualFriends(User userId) : User[]
3.2.7 Máy hữu hạn trạng thái- Phía server- Phía server - Phía server
Hình 3.17 Máy hữu hạn trạng thái phía server
• Ghi chú : các action từ 1->28 tương ứng với các phương thức ở mục 3.2.6.
Hình 3.18 Máy hữu hạn trạng thái phía client
• Ghi chú : các action từ 1->28 tương ứng với các phương thức ở mục 3.2.5
3.2.8 Thiết kế giao thức
Để Client và Server giao tiếp được với nhau thì giữa chúng phải tồn tại giao thức mà cả hai bên đều hiểu được. Trong ứng dụng này ta sẽ thiết kế các giao thức RESTful để giao tiếp giữa client và server. Host được sử dụng là localhost, database được xử lý với hệ quản trị csdl đồ thị neo4j.
Một số giao thức : *Connect
Request GET http://localhost:port/path/index.jsp HTTP/1.1 Host: localhost:port Accept: application/index.jsp+xml Response HTTP/1.1 200 OK Date: date Cache-Control : public Content-Type: application/index.jsp+xml <index>
<link href= “http://localhost:port/path/index.jsp/request-for-reg” Type= “application/index.jsp+xml” />
<link href= “http://localhost:port/path/index.jsp/request-for-check-login” Type= “application/index.jsp+xml” />
… </index>
*Chú thích :
- localhost:port : ứng dụng sử dụng localhost và port tùy thuộc vào mỗi người viết. - path : đường dẫn dẫn tới file index.jsp
- Date: date : phụ thuộc vào mỗi lần response
- Request yêu cầu gửi trang index, trong trang index trả lại từ server có nhiều link dẫn tới các dịch vụ khác mà người dùng được cung cấp như register, login..
Vd : http://localhost:port/path/index.jsp/request-for-reg << đường dẫn này sẽ hiện ra các