Upload
tran-huy-nam
View
309
Download
7
Embed Size (px)
Citation preview
Vũ Huy Nhất – [email protected]
1
HƯỚNG DẪN SỬ DỤNG EPIDATA 3.1
1. Mục tiêu
Làm được việc khai báo và tạo check cho biến của bộ câu hỏi điều tra định
lượng.
2. Nhập đề
* Nhập số liệu từ phiếu/bộ câu hỏi điều tra vào máy tính là một giai đoạn của một quá
trình nghiên cứu. Vì vậy người thiết kế chương trình nhập liệu (Bao gồm khai báo và
tạo check cho các biến) phải hiểu nội dung nghiên cứu, các chỉ số của nghiên cứu và
dữ liệu phân tích (Gồm tệp số liệu, bản ghi, biến, kiểu dữ liệu) là như thế nào.
* Việc khai báo, tạo check cho các biến của bộ câu hỏi phải đảm báo yêu cầu sau:
- Với số liệu: Đảm bảo chính xác, đầy đủ, logic của thông tin.
- Với nhập liệu viên: Giao diện thân thiện (đẹp về hình thức, dễ hiểu về nội dung
trình bày), dễ nhập, nhanh chóng (loại bỏ các thao tác thừa).
*Giao diện và các file chính được tạo bởi Epidata
Tệp .QES
Tệp .REC
Tệp .CHK
- Khai báo bộ câu hỏi
(
).
-
.
- Là nguồn để sinh
tệp .REC
- Chứa dữ liệu
- Sinh ra từ tệp QES
- Chứa mã nguồn
thực thi các ràng buộc
nhằm hạn chế lỗi số liệu
- Luôn đi kèm với
một tệp REC tương ứng
3. Khai báo và tạo check cho biến
3.1 Khai báo các biến với Epidata
Bước 1: Xác định chuỗi định dạng cho các câu hỏi/mục thông tin trên phiếu điều
tra.
- Câu hỏi đó là nhiều lựa chọn hay một lựa chọn
Vũ Huy Nhất – [email protected]
2
- Nó là câu hỏi/mục thông tin dạng chữ (Text) hay dạng số (Numberic) hay
ngày/tháng/năm. Với kiểu dữ liệu dạng số hoặc dạng chữ xác định độ lớn của các ký
tự mà biến đó có thể nhận.
* Bảng: Các chuỗi định dạng dữ liệu hay dùng
Chuỗi định dạng Giải thích
<IDNUM> - Dạng số được EpiData sinh tự động khi nhập, giá trị của biến
này tương ứng số thứ tự của bản ghi bản ghi được nhập vào
chương trình.
# - Trường số: “numberic”
____ - Sử dụng khai báo cho dữ liệu dạng chữ hoặc số
- Độ rộng lớn nhất là 80 ký tự (Gạch dưới: _)
<A > - Trường chữ: “String”
- Chữ được viết hoa
- Sau “A” bấy nhiêu lần cách là bấy nhiêu ký tự
<dd/mm/yy> hoặc
<dd/mm/yyyy>
<Today-dmy>
- Khai báo ngày, tháng, năm
- Hiển thị theo ngày trên “đồng hồ máy tính” khi nhập liệu
Bước 2: Tạo một file .QES để khai báo và bộ cục giao diện nhập liệu.
hoặc
Ctrl + S hoặc để lưu tệp . QES trong ổ cứng máy tính.
Khai báo các thông tin của phiếu điều tra ở tệp QES. Bằng việc đánh máy tay nếu chỉ
có bản giấy của phiếu điều tra hoặc “copy – pase” nếu có bản điện tử của phiếu điều
tra.
Ở đây có một vài lưu ý:
Lưu ý thứ nhất: Do EpiData giới hạn khai báo với 1000 dòng, nếu mà phiếu điều tra
vượt quá giới hạn này chúng ta cần tách ra thành nhiều tệp nhập liệu cho từng phần
thông tin khác nhau. Còn việc liên kết các tệp dữ liệu này với nhau sẽ giới thiệu trong
phần check nhập liệu
Lưu ý thứ 2: Do EpiData không hỗ trợ chuẩn Unicode mà chỉ hỗ trợ chuẩn TCVN3
nên muốn hiện thị tiếng việt phải sử dụng font của TCVN3 khi khai báo (Font chữ có
“.vn….” ở đầu). Và lựa chọn lại Font TCVN3 hiển thị ở File/Options/Editor và
File/Options/Show data form
Vũ Huy Nhất – [email protected]
3
Lưu ý thứ 3: Thủ thuật “copy – pase”: Copy từ phiếu điều tra được thiết kế trên
Word Pase vào tệp QES Bố cục lại giao diện, từ khóa, xóa bỏ lưu ý chỉ dẫn/lưu
ý của phiếu điều tra Tên biến+kiểu dữ liệu+độ dài ký tự của biến.
Nếu phiếu điều tra trên word bố cục nằm trong bảng cứ copy all vào QES và sau khi
“tắt bật lại” thì sẽ mất bảng/table.
Nếu phiếu điều tra trên word ở sử dụng chuẩn unicode thì hãy sử dụng chức năng
chuyển chuẩn Unicode sang TCVN3 của chương trình gõ font tiếng việt Unikey để
chuyển. Với thao tác copy all thông tin trên word Lựa chọn theo bảng dưới
pase vào QES.
Lưu ý thứ 4: Đặt tên biến trùng với tên và số thứ tự của câu hỏi/đề mục trên phiếu
điều tra. Điều này giúp cho việc tiện theo dõi, phân tích, đối chiếu khi sửa số liệu sau 2
lần nhập và phân tích dữ liệu sau này.
3.2. Tạo file .REC để nhập liệu
Vũ Huy Nhất – [email protected]
4
3.3. Tạo file .CHK để tạo sự giàng buộc số liệu khi nhập liệu
3.3.1 Giao diện và tính năng
Vũ Huy Nhất – [email protected]
5
3.3.2 Một số dòng lệnh check hay dùng Bảng: Một số check hay dùng
Dòng lệnh Giải thích ý nghĩa Ví Dụ
BEFORE ENTRY - Trước khi nhập - Hàng dưới của nó phải hàm chứa một
điều kiện nào đó
BEFORE ENTRY <command> <command>
...
END
AFTER ENTRY - Sau khi nhập
- Hàng dưới của nó phải hàm chứa một
điều kiện nào đó
AFTER ENTRY
<command>
<command>
...
END
TOPOFSCREEN - Tạo trường nhập để gán giá trị sau khi
nhập cho biến khác.
HIDE/UNHIDE - Ẩn biến hoặc không ẩn biến khi có một
điều kiện nào đấy
-
IF ……..THEN
Các hàm điều kiện
AND Và/đồng
thời
OR Hoặc
<> Khác
> Lớn hơn
< Nhỏ hơn
+ Cộng
- Trừ
* Nhân
/ chia
HELP « thông báo muốn
hiển thị »
- Khi nhập giá trị nào đó vào muốn
“Thông báo hiện thị nào đó” vi dụ
- -Nhắc nhở khi nhập không đúng
Unhide/hide - Ẩn/hiện biến nào đấy
id
KEY UNIQUE 1
CONFIRMFIELD
END
- Khi nhập một mã số mà trùng với mã số
trước đó đã nhập rồi thì hiển thị thông
báo
3.3.3 Một số ví dụ thường gặp khi nhập liệu trên
Ví dụ 1:
VAR2
RANGE 1 3 Giá trị biến nhận trong khoảng từ 1 đến 3
MUSTENTER Bắt phải nhập
JUMPS Bước nhảy
1 VAR4 Khi Var1=1 chuyển tới VAR4
2 VAR5 Khi Var1=1 chuyển tới VAR5
3 VAR10 Khi Var1=1 chuyển tới VAR6
END
AFTER ENTRY
IF (VAR2=2) AND (VAR1=1) THEN
HELP "Xem lại: VAR1 không thể nhận giá trị 2 nếu biến F2=1" Hiển thị thông báo
GOTO VAR2 quay trở về biến VAR2
ENDIF
END
END
Vũ Huy Nhất – [email protected]
6
Vũ Huy Nhất – [email protected]
7
Ví dụ 2: Check hiện thông báo giá trị vừa được nhập là gì với Epidata
* Trên 1 file .rec
LABELBLOCK
LABEL label_sex
1 nam
2 Nu
END
END
Sex
COMMENT LEGAL USE label_sex Hiện chữ màu xanh bên cạnh giá trị vừa
nhập
TYPE COMMENT hiện giá trị cần nhập khi ấn F9
END
* Giá trị hiển thị có thể nằm trong một file .rec số liệu khác
Bien_hienthi
COMMENT LEGAL file_khac.rec
TYPE COMMENT
END
Vũ Huy Nhất – [email protected]
8
Check tính khoảng thời gian giữa 2 thời điểm
Bạn muốn tính khoảng thời gian giữa 2 thời điểm:[ d1 và d2 =Tổng bao nhiêu ngày (d6) =
bao nhiêu năm (d3) + lẻ bao nhiêu tháng(d4) + lẻ bao nhiêu ngày (d5)]
Dưới đây là dòng lệnh giúp bạn làm điều đó
File .CHK
d1
MUSTENTER
END
d2
MUSTENTER
AFTER ENTRY
if d2 < d1 then
help "Xem lai: d2 < d1 "
goto d2
endif
d3=integer((d2-d1)/365.25)
d4=integer(((d2-d1)/30.5)-(12*d3))
d5=d2-d1-integer(d4*30.5)-(365.25*d3)
d6=d2-d1
END
END
d3
noenter
end
d4
noenter
end
d5
noenter
end
d6
noenter
end
File .QES
d1 <dd/mm/yyyy>
d2 <dd/mm/yyyy>
d3 số năm chẵn ###
d4 số tháng lẻ ##
d5 số ngày lẻ ####
Days total:
d6 days ########
Vũ Huy Nhất – [email protected]
9
Check EpiData với biến danh mục
Lấy câu này làm hướng dẫn C109
Hiện nay bạn đang làm những nghề gì?
(Gợi ý trả lời: còn nghề gì khác không? Giải thích: Nghề tự do: lái xe ôm, bán nước,….
Việc bất hợp pháp: cờ bạc, bán ma túy,…
Không đọc các khả năng xảy ra, chỉ gợi ý và
khoanh vào tất cả các câu trả lời.
Làm ruộng 1
Nhân viên nhà nước 2
Nhân viên phục vụ 3
Nhõn viờn bán hàng 4
Chủ kinh doanh/buôn bán 5
Sinh viên 6
Nghề tự do 7
Việc bất hợp pháp 8
Hiện tại thất nghiệp 9
Khác (ghi rõ)……..……… 10
Bạn đang đứng trước một câu hỏi đa lựa chọn, ở đây là 10 lựa chọn khác nhau, lựa chọn
cuối cùng là khác(Ghi rõ). Công việc của bạn là thiết kế trên EpiData sao cho các dữ liệu
được nhập chính xác, đầy đủ và tiết kiệm công sức của nhập liệu viên.
Đứng trước câu hỏi này có 2 cách giải quyết cho bài toàn trên với số liệu ở dạng số
(numberic)
Hướng 1: Tạo một trường C109x chỉ nhập số thứ tự của từng lựa chọn và các biến (c109x1,
c109x2, c109x3,…,c109x10) sẽ nhận những giá trị tương ứng khi ta nhập. Và nếu chọn “10.
Khác” thì xuống biến c109x10x để ghi rõ lựa chọn khác, còn lựa chọn từ 1 đến 9 thì bỏ qua
biến c109x10x1 (Ghi rõ nghề khác).
Bước 1.1 Khai báo
Bạn vào khai báo câu hỏi này như sau:
Lưu ý: Nếu ta nới rộng khoảng giá trị của biến thêm 2 ký tự ( c109x @##) sẽ làm ta mất khả
nhiều công sức ENTER khi câu hỏi có lựa chọn nhỏ hơn 9 (tức 1 ký tự) vì chưa lấp đầy ký tự
nó sẽ không tự nhảy. Nên ở đây nếu câu hỏi có lựa chọn 10, ta sẽ gán cho nó là số “0” khi
nhập liệu.
Sau khi để tạo file nhập liệu trong cửa số nhập liệu sẽ hiện thị như
sau:
Vũ Huy Nhất – [email protected]
10
Bước 1.2 Check để nhập liệu
Khi vào trong ta sẽ sử dụng đoạn mã như sau để thực hiện các mục tiêu
trên.
Vũ Huy Nhất – [email protected]
11
Chi tiết như sau: c109x
TOPOFSCREEN
RANGE 0 9
AFTER ENTRY
IF c109x=. THEN
IF c109x10x = 1 THEN
UNHIDE c109x10x1
ELSE
HIDE c109x10x1
ENDIF
ELSE
IF c109x=1 THEN
IF c109x1 = 1 THEN
CLEAR c109x1
ELSE
c109x1=1
ENDIF
ENDIF
IF c109x=2 THEN
IF c109x2 = 1 THEN
CLEAR c109x2
ELSE
c109x2=1
ENDIF
ENDIF
IF c109x=3 THEN
IF c109x3 = 1 THEN
CLEAR c109x3
ELSE
c109x3=1
ENDIF
ENDIF
IF c109x=4 THEN
IF c109x4 = 1 THEN
CLEAR c109x4
ELSE
c109x4=1
ENDIF
ENDIF
IF c109x=5 THEN
Vũ Huy Nhất – [email protected]
12
IF c109x5 = 1 THEN
CLEAR c109x5
ELSE
c109x5=1
ENDIF
ENDIF
IF c109x=6 THEN
IF c109x6 = 1 THEN
CLEAR c109x6
ELSE
c109x6=1
ENDIF
ENDIF
IF c109x=7 THEN
IF c109x7 = 1 THEN
CLEAR c109x7
ELSE
c109x7=1
ENDIF
ENDIF
IF c109x=8 THEN
IF c109x8 = 1 THEN
CLEAR c109x8
ELSE
c109x8=1
ENDIF
ENDIF
IF c109x=9 THEN
IF c109x9 = 1 THEN
CLEAR c109x9
ELSE
c109x9=1
ENDIF
ENDIF
IF c109x=0 THEN
IF c109x10x = 1 THEN
CLEAR c109x10x
ELSE
c109x10x=1
ENDIF
ENDIF
CLEAR c109x
GOTO c109x
ENDIF
END
END
Tiếp theo: Bỏ qua không phải nhập giá cho các biến c109x1 …c109x10x, vì chúng đã nhận
giá trị khi nhập ở biến c109x
Vũ Huy Nhất – [email protected]
13
c109x1
NOENTER
END
c109x2
NOENTER
END
c109x3
NOENTER
END
c109x4
NOENTER
END
c109x5
NOENTER
END
c109x6
NOENTER
END
c109x7
NOENTER
END
c109x8
NOENTER
END
c109x9
NOENTER
END
c109x10x
NOENTER
END
Bước 1.3: Vào để xem thành quả
Hướng 2: Tạo ra 10 biến tương ứng với 10 lựa chọn, ta cứ lần lượt đến từng biến để nhập
giá trị (1-0). Tuy nhiên hướng này mình không khuyến cáo vì mất nhiều công sức và thời
gian của nhập liệu viên.
Hướng 3: Tạo 2 trường trữ (c109 và c109k), 1 trường để nhập các lựa chọn và một trường
nữa để nhập “Ghi rõ lựa chọn khác” khi có lựa chọn “10.Khác”. Tuy nhiên cái không này sợ
cậu không biết phân tích dữ liệu về sau với ký tự dạng chữ (chuỗi). Check như sau:
Hướng 3
BEFORE file
DEFINE A1 __
DEFINE A2 __
DEFINE A3 __
DEFINE A4 __
DEFINE A5 __
DEFINE A6 __
DEFINE A7 __
DEFINE A8 __
DEFINE A9 __
DEFINE A10 __
END
C109
Vũ Huy Nhất – [email protected]
14
AFTER ENTRY
LET A1=COPY(C109,1,1)
LET A2=COPY(C109,2,1)
LET A3=COPY(C109,3,1)
LET A4=COPY(C109,4,1)
LET A5=COPY(C109,5,1)
LET A6=COPY(C109,6,1)
LET A7=COPY(C109,7,1)
LET A8=COPY(C109,8,1)
LET A9=COPY(C109,9,1)
IF A1=“0” THEN
GOTO C109K
ENDIF
IF A2=“0” THEN
GOTO C109K
ENDIF
IF A3=“0” THEN
GOTO C109K
ENDIF
IF A4=“0” THEN
GOTO C109K
ENDIF
IF A5=“0” THEN
GOTO C109K
ENDIF
IF A6=“0” THEN
GOTO C109K
ENDIF
IF A7=“0” THEN
GOTO C109K
ENDIF
IF A8="9" THEN
GOTO C109K
ENDIF
IF A8="9" THEN
GOTO C109K
ENDIF
ELSE
GOTO c201
ENDIF
END
END
Lưu ý:
- Với câu hỏi nhiều lựa chọn thì hãy copy đoạn lệnh trên, và rename tên biến đi và xóa
bỏ những đoạn không cần thiết là được. Bằng cách làm trên word hoặc trên notepad
Sau đó copy đoạn lệnh đó vào
Vũ Huy Nhất – [email protected]
15
Check tạo liên kết giữa 2 file nhập liệu
Nếu bạn đứng trước bộ phiếu điều tra với: thông tin hộ gia đình và thông tin về các
thành viên trong hộ (ví dụ như thông tin về tình trạng dinh dưỡng của những đứa trẻ
trong hộ hay chi tiết các lần khám chữa bệnh của từng thành viên trong hộ…). Điều
mà bạn cần phải làm với EpiData là:
1. Thiết kế 2 form nhập liệu, một là form mang thông tin hộ gia đình (HGD.rec) và
một form mang thông tin thành viên trong hộ gia đình (THANHVIEN.rec)
2. Tạo check mỗi liên hệ giữa 2 form nhập liệu với nhau bởi biến mã hộ gia đình
(id_hgd), nghĩa là khi các thành viên trong hộ gia đình phải cùng mã hộ đó.
Những dòng lệnh dưới đây giúp bạn làm điều đó HGD.rec THANHVIEN.rec
id_hgd
KEY UNIQUE 1
END
id_hgd
KEY 1
AFTER ENTRY
vid_tinh = id_tinh
vid_huyen = id_huyen
vid_xa = id_xa
vngay_dt = ngay_dt
END
END
BEFORE FILE
* helper temporary variables
DEFINE vid_tinh ###### GLOBAL
DEFINE vid_huyen ###### GLOBAL
DEFINE vid_xa ###### GLOBAL
DEFINE vngay_dt
GLOBAL
END
Đến biến nào đấy (Vd: bienchuyen) mà
sau khi bạn nhập thì lâp tức đến
form THANHVIEN.REC để nhập thông
tin thành viên thì bạn check tại
biến này như sau.
Bienchuyen
AFTER ENTRY
vid_tinh = id_tinh
vid_huyen = id_huyen
vid_xa = id_xa
vngay_dt = ngay_dt
RELATE id_hgd THANHVIEN.REC
END
END
id_tinh
NOENTER
END
id_huyen
NOENTER
END
id_xa
NOENTER
END
ngay_dt
NOENTER
END
Vũ Huy Nhất – [email protected]
16
TÀI LIỆU THAM KHẢO
1. Phạm Việt Cường và cs, Tài liệu giảng dạy môn kỹ thuật máy tính – phần mềm
EpiData (2006), Đại học Y tế Công cộng.
2. http://www.epidata.dk