Nhóm câu hỏi (Grouping)
Các nhóm (groups) trong XLSForm cho phép bạn tổ chức các câu hỏi liên quan lại với nhau, cải thiện cấu trúc của bản khảo sát và nâng cao khả năng phân tích dữ liệu. rtSurvey hỗ trợ đầy đủ các nhóm XLSForm và mở rộng chức năng của chúng với các tính năng bổ sung.
Cấu trúc nhóm cơ bản
Để tạo một nhóm các câu hỏi, hãy sử dụng cú pháp begin_group và end_group:
| type | name | label |
|--------------|------------|------------------------------------------|
| begin_group | respondent | Thông tin người trả lời |
| text | name | Nhập tên người trả lời |
| text | position | Nhập chức vụ người trả lời |
| end_group | | |
Các điểm chính:
- Hàng
begin_groupyêu cầu phải cóname(tên) vàlabel(nhãn). - Hàng
end_groupkhông cần tên hoặc nhãn. - Các câu hỏi nằm giữa
begin_groupvàend_grouplà một phần của nhóm.
Hiển thị nhóm (Group Appearance)
rtSurvey hỗ trợ nhiều tùy chọn hiển thị (appearance) cho các nhóm:
field-list: Hiển thị nhiều câu hỏi trên cùng một màn hình.
| type | name | label | appearance | |--------------|------------|-----------|------------| | begin_group | respondent | Người trả lời| field-list | | text | name | Tên | | | text | position | Chức vụ | | | end_group | | | |grid: Tạo bố cục giống như bảng, nhỏ gọn cho các nhóm (dành riêng cho rtSurvey).
| type | name | label | appearance | |--------------|------------|-----------|------------| | begin_group | household | Hộ gia đình | grid | | text | member_name| Tên | | | integer | member_age | Tuổi | | | end_group | | | |collapsible: Tạo các nhóm có khả năng mở rộng/thu gọn (dành riêng cho rtSurvey).
| type | name | label | appearance | |--------------|------------|-----------|-------------| | begin_group | details | Chi tiết | collapsible | | text | address | Địa chỉ | | | text | phone | Điện thoại| | | end_group | | | |
Nhóm lồng nhau (Nested Groups)
Các nhóm có thể được lồng vào nhau để tạo ra các cấu trúc phức tạp hơn:
| type | name | label |
|--------------|------------|------------------------------------------|
| begin_group | hospital | Thông tin bệnh viện |
| text | hosp_name | Tên bệnh viện này là gì? |
| begin_group | medication | Sự sẵn có của thuốc |
| select_one y_n| hiv_meds | Bệnh viện này có thuốc HIV không? |
| end_group | | |
| end_group | | |
Lưu ý: Luôn luôn kết thúc nhóm được bắt đầu gần nhất trước để duy trì việc lồng nhau đúng cách.
Điều kiện hiển thị cho nhóm (Skip Logic)
Sử dụng cột relevant để triển khai skip logic cho toàn bộ nhóm:
| type | name | label | relevant |
|--------------|--------|----------------------------------------------|-----------------|
| integer | age | Bạn bao nhiêu tuổi? | |
| begin_group | child | Trẻ em | ${age} <= 5 |
| integer | muac | Ghi lại vòng cánh tay của trẻ (MUAC) | |
| select_one y_n| mrdt | Kết quả xét nghiệm nhanh của trẻ có dương tính không?| |
| end_group | | | |
Trong ví dụ này, nhóm child sẽ chỉ xuất hiện nếu tuổi của người trả lời từ 5 trở xuống.
Các phương pháp hay nhất khi sử dụng nhóm
- Sử dụng tên có ý nghĩa cho các nhóm để thuận tiện cho việc phân tích dữ liệu.
- Giữ các nhóm tập trung vào các câu hỏi có liên quan với nhau.
- Sử dụng nhóm lồng nhau một cách hợp lý để tránh cấu trúc quá phức tạp.
- Kiểm tra kỹ lưỡng
skip logickhi sử dụngrelevanttrên các nhóm. - Cân nhắc sử dụng
field-listcho các nhóm ngắn để giảm bớt việc cuộn trang. - Tận dụng bố cục
gridcủa rtSurvey để hiển thị nhỏ gọn các thông tin liên quan. - Sử dụng nhóm
collapsible(thu gọn) cho các biểu mẫu dài để cải thiện việc điều hướng.
Các tính năng dành riêng cho rtSurvey
- Grid Layout: Sử dụng appearance
gridđể hiển thị dạng bảng. - Collapsible Groups: Triển khai appearance
collapsiblecho các phần có thể mở rộng. - Custom Styling: Áp dụng CSS tùy chỉnh cho các nhóm để có thiết kế trực quan độc đáo.
- Hành vi nhóm động: Triển khai các
skip logicvà tính toán phức tạp bên trong các nhóm.
Hỗ trợ đa ngôn ngữ
rtSurvey hỗ trợ các nhóm đa ngôn ngữ. Sử dụng các cột dành riêng cho ngôn ngữ cho nhãn:
| type | name | label::English | label::Vietnamese |
|--------------|------------|----------------|-------------------|
| begin_group | personal | Personal Info | Thông tin cá nhân |
| text | name | Name | Tên |
| end_group | | | |
Lưu ý cho Ứng dụng di động
- Các nhóm sử dụng appearance
field-listsẽ được hiển thị trên một màn hình duy nhất trong ứng dụng di động. - Các nhóm
collapsiblecó thể cải thiện việc điều hướng trên màn hình nhỏ. - Bố cục
gridcó thể tự điều chỉnh để hiển thị tốt hơn trên thiết bị di động.
Các hạn chế đã biết
- Việc lồng các nhóm quá sâu có thể ảnh hưởng đến hiệu suất trên một số thiết bị.
- Một số tùy chọn phong cách nâng cao có thể không khả dụng cho các nhóm trong ứng dụng di động.
Khắc phục sự cố về nhóm
- Đảm bảo mỗi
begin_groupđều có mộtend_grouptương ứng. - Kiểm tra để đảm bảo tên nhóm là duy nhất trong biểu mẫu.
- Xác minh rằng
skip logictham chiếu đến đúng tên câu hỏi. - Kiểm tra kỹ các nhóm trên cả giao diện web và di động.