Nhập liệu nghiên cứu y học: Excel, EpiData hay REDCap, nhập liệu kép và luật kiểm tra khi nhập
Nên nhập liệu bằng Excel, EpiData hay REDCap? Nhập liệu kép là gì và có bắt buộc không? Bài so sánh ba công cụ theo 7 tiêu chí, liệt kê 7 loại luật kiểm tra khi nhập và làm một ví dụ nhập kép 10 phiếu có 2 chỗ lệch.
TS.BS. Vũ Duy Kiên

Mục lục
Bạn đã có phiếu thu thập và codebook. Giờ có 150 phiếu giấy xếp trên bàn, và việc tiếp theo là gõ chúng vào máy. Nhiều bạn mở Excel, gõ một mạch. Hai tuần sau mới thấy cột tuổi có số 520. Hoặc huyết áp tâm thu là 184 ở người mà phiếu ghi 148. Lúc đó bạn mới tự hỏi: lẽ ra nên dùng phần mềm nào, có cần nhập hai lần không, và đặt luật gì để máy chặn lỗi ngay khi gõ.
Bài này trả lời ba câu cho bạn, từng câu một. Một, chọn Excel, EpiData hay REDCap. Hai, nhập liệu kép là gì và có bắt buộc không. Ba, đặt luật kiểm tra khi nhập thế nào. Ví dụ giả định (không phải nghiên cứu thật) là nghiên cứu tuân thủ điều trị tăng huyết áp, cùng bối cảnh với bài bảng mã hóa biến.
Nhập liệu đứng ở đâu trong chuỗi
Nhập liệu là bước chuyển số liệu từ phiếu thu thập sang cơ sở dữ liệu. Phần mềm chỉ làm theo những luật bạn đã viết trong codebook: kiểu dữ liệu, khoảng hợp lý, mã thiếu. Bài này nói về trường hợp số liệu ghi trên phiếu giấy, hoặc trích từ hồ sơ bệnh án rồi mới nhập. Nếu bạn nhập thẳng vào thiết bị lúc thu thập thì không có bước chép từ phiếu. Khi đó phần nhập liệu kép không áp dụng cho bạn.
Ba công cụ, bảy tiêu chí
Bài chỉ so ba công cụ này cho bạn. Còn nhiều lựa chọn khác, ví dụ KoboToolbox.
Phiên bản tôi đã đối chiếu ngày 4/10/2026. Phần mềm hay cập nhật, nên bạn mở lại trang gốc trước khi dùng nhé:
- EpiData: trang tải ghi EpiData Manager 4.7.0 và EntryClient 4.7.0, phát hành 22/4/2024. Chạy trên Windows 64 bit, Mac OS X và Linux 64 bit. Bản cũ EpiData Entry 3.1 (2008) vẫn được cung cấp cho một số trường hợp đặc biệt [1].
- REDCap: trang chủ không nêu một số phiên bản chung, vì mỗi cơ sở tự vận hành hệ thống của mình [5]. Bạn hỏi người quản trị REDCap ở nơi bạn.
- Excel: tôi dẫn hướng dẫn của Microsoft, trong đó ảnh chụp lấy từ Excel 2016 [10]. Tên thẻ và nút có thể khác chút ở bản của bạn.
| Tiêu chí | Excel | EpiData | REDCap |
|---|---|---|---|
| 1. Giá và cách có được | Phần mềm trả phí của Microsoft. Nhiều cơ quan đã có bản quyền, bạn hỏi trước khi mua. | Miễn phí. Nhà phát triển là hiệp hội phi lợi nhuận, mong nhận đóng góp bằng công sức hoặc kinh phí [1]. | Miễn phí cho tổ chức phi lợi nhuận tham gia liên minh REDCap [5]. Mỗi cơ sở có hệ thống riêng; bạn thường xin tài khoản qua quản trị viên của nơi mình học hoặc làm [5, 7]. |
| 2. Chạy ở đâu | Trên máy của bạn. | Trên máy của bạn [1]. | Trình duyệt, trên máy chủ của cơ sở; trang chủ ghi có cả dùng online và offline [5]. |
| 3. Dựng form nhập | Bạn tự kẻ bảng: một cột một biến, một dòng một phiếu. | Trong Manager, người quản lý dự án vẽ form, đặt tên trường, nhãn giá trị. EntryClient chỉ dùng để nhập; người nhập không đổi được cấu trúc [4]. | Bạn dựng bằng Online Designer, hoặc viết “data dictionary” trong một bảng Excel rồi nạp vào [6]. |
| 4. Luật kiểm tra khi nhập | Data Validation: số nguyên, số thập phân, danh sách, ngày, giờ, độ dài chữ, công thức tự viết [10]. | Khoảng, giá trị hợp lệ, bắt buộc, nhảy câu, kiểm tra chéo giữa các trường [2, 4]. | Kiểu dữ liệu, giá trị nhỏ nhất và lớn nhất, bắt buộc, rẽ nhánh, quy tắc chất lượng dữ liệu [6, 9]. |
| 5. Nhập liệu kép | Không có chức năng sẵn trong trang hỗ trợ tôi đã xem. Bạn phải tự nhập hai sổ rồi so. | Có: “Prepare Double Entry” và “Validate Double Entry” [2, 3]. | Có module Double Data Entry; quản trị viên phải bật trước khi có dữ liệu [7, 8]. |
| 6. Phân quyền và dấu vết sửa | Không tự có; bạn dựa vào quy trình của mình (tên tệp theo phiên bản, giữ bản thô riêng, ghi nhật ký sửa). | Trang tải ghi Manager và EntryClient có kiểm soát quyền theo người dùng, mã hóa và ghi nhật ký [1]. | Có nhật ký ghi lại thao tác trên dữ liệu và quyền theo người dùng [7]. |
| 7. Xuất sang phần mềm phân tích | Bạn lưu thành tệp CSV hoặc tệp bảng tính rồi nạp vào phần mềm thống kê. | Lịch sử thay đổi của Manager có nhắc xuất sang SPSS, SAS [3]. | Trang chủ ghi xuất sang các phần mềm thống kê thông dụng [5]. |
Chọn công cụ nào
Đây là gợi ý của tôi, không phải quy tắc của nguồn nào:
| Hoàn cảnh | Hướng nên cân nhắc |
|---|---|
| Đề tài nhỏ, một người nhập, vài chục đến vài trăm phiếu, không ai kiểm toán dữ liệu | Excel, nhưng bạn làm có kỷ luật: Data Validation, khóa cấu trúc, tên tệp có phiên bản, sao lưu |
| Phiếu giấy nhiều, nhập trên máy bàn, muốn chặn lỗi mạnh và có nhập liệu kép ngay trong phần mềm | EpiData |
| Nhiều người nhập, nhiều cơ sở, cần biết ai sửa gì lúc nào, hoặc nơi bạn đã có sẵn hệ REDCap | REDCap |
Có một điểm tôi muốn nói thẳng với bạn về EpiData. Theo chính trang tải của EpiData, phần luật kiểm tra lập trình (lệnh chạy trước hoặc sau khi nhập một khối trường) vẫn cần bản cũ 3.1 [1]. Đề tài nhỏ như của bạn thường không cần đến mức đó.
Excel: dùng được, nhưng có hai bẫy
- Tự đổi kiểu dữ liệu. Với cài đặt mặc định, Excel đổi tên gen thành ngày hoặc số thập phân. Khoảng một phần năm số bài có bảng gen đính kèm bằng Excel chứa lỗi kiểu này [11] (tôi chỉ đọc tóm tắt). Bạn hãy đặt cột mã nghiên cứu ở dạng chữ để không mất số 0 đầu.
- Dán đè làm mất luật. Khi bạn dán từ ô khác vào, nó có thể mang theo hoặc xóa quy tắc kiểm tra của ô đích. Bạn nhớ thử trên sổ của mình.
Bảy loại luật kiểm tra khi nhập
Bảng dưới là các luật lấy từ chính codebook của ví dụ. Mỗi ô cho bạn biết tài liệu của từng bên có luật tương ứng. Cú pháp chi tiết thì bạn xem ở phần trợ giúp của phiên bản bạn dùng.
| Loại luật | Ví dụ từ codebook | Excel [10] | EpiData [2, 3, 4] | REDCap [6, 9] |
|---|---|---|---|---|
| 1. Kiểu dữ liệu | age_years phải là số nguyên; visit_date phải là ngày |
Whole number, Date | Kiểm tra kiểu và độ dài trường | Kiểu text validation: integer, number, date |
| 2. Khoảng giá trị | age_years 18 đến 100; sbp 60 đến 300 |
Whole number, between | Range, ví dụ 60-300 |
Giá trị nhỏ nhất, lớn nhất |
| 3. Giá trị hợp lệ | sex chỉ 1 hoặc 2; smoking chỉ 0, 1, 2 |
List (danh sách thả xuống) | Legal values, ví dụ 1,2 |
Dropdown, radio |
| 4. Bắt buộc nhập | study_id, visit_date, adherence |
Bỏ chọn “Ignore blank” | Must Enter | Required field |
| 5. Rẽ nhánh, nhảy câu | smoking = 0 thì bỏ qua smoking_years |
Không có sẵn | Jumps, ví dụ 0>diabetes |
Branching logic |
| 6. Mã không trùng | study_id mỗi người một mã |
Custom, công thức đếm số lần xuất hiện (cách của tôi) | KEY UNIQUE | Mã bản ghi là trường đầu tiên của form |
| 7. Logic liên biến | smoking_years không được lớn hơn age_years |
Custom, công thức so hai ô (cách của tôi) | Consistency check, kiểm tra chéo | Quy tắc trong Data Quality |
Cú pháp EpiData theo sổ tay bản 3.1 như sau. Khoảng thì bạn gõ 2-5. Giá trị hợp lệ gõ cách nhau dấu phẩy, như 4,6,8,10. Dùng cả hai thì khoảng đứng trước, như 2-6, 8. Nhảy câu gõ giá trị>tên trường, như 1>V23, 2>V40 [2]. Mã thiếu thêm vào như số 8 trong ví dụ đó. Bạn kiểm lại với 997, 998, 999 trên bản bạn dùng.
Mã thiếu và chặn hay cảnh báo
Ví dụ này dùng một quy ước, bạn cứ làm theo được. Câu Có/Không mã 0/1. Biến phân loại thiếu thì mã 97, 98, 99. Biến định lượng (tuổi, huyết áp…) thiếu thì mã 997, 998, 999. Các mã này nằm ngoài khoảng hợp lệ, nên luật khoảng viết là “trong khoảng hoặc một trong ba mã thiếu”. Như vậy mã thiếu không lẫn với một người 98 tuổi. Bạn ghi quy ước vào codebook. Trước khi phân tích, bạn chuyển các mã này thành giá trị thiếu (missing) của phần mềm. Đừng dùng 9999 hay ngày giả như 99/99/9999.
Với mỗi luật, bạn chọn để máy chặn hoặc cảnh báo. Chặn là máy không cho bạn lưu. Cảnh báo là máy báo nhưng vẫn cho bạn đi tiếp. Trong REDCap, theo Vanderbilt: sai kiểu dữ liệu thì không lưu. Khoảng nhỏ nhất, lớn nhất và trường bắt buộc chỉ cảnh báo [6]. Alberta cũng gọi kiểm tra khoảng là mềm [9] (bạn xác nhận lại ở hệ của mình). Excel cho bạn chọn Stop, Warning, Information [10]. EpiData EntryClient không cho bạn rời trường bắt buộc khi trống và không lưu bản ghi thiếu. Nhập sai thì nó tô màu trường và hiện gợi ý [4].
Nguyên tắc tôi dùng là thế này. Chặn điều không thể xảy ra, như tuổi 520 hay sex mã 7. Cảnh báo điều hiếm nhưng có thể thật, như tuổi 108 hay creatinine rất cao. Bạn đừng đặt khoảng theo “giá trị bình thường”, vì người bệnh nặng sẽ làm gián đoạn việc nhập [9]. Đã cảnh báo thì bạn phải có đường xử lý: xem phiếu gốc, xác nhận, giữ hoặc sửa, ghi nhật ký. Bạn không tự sửa 520 thành 120. Cũng đừng bắt buộc mọi trường, kẻo người nhập điền đại để đi tiếp.
Nhập liệu kép là gì
Nói đơn giản, nhập liệu kép (double data entry) là bạn nhờ hai người nhập độc lập cùng một bộ phiếu. Sau đó phần mềm hoặc người rà soát so hai bản. Chỗ nào lệch thì bạn quay lại phiếu giấy gốc để biết giá trị đúng. Bản chất của nó là kiểm tra việc chép từ phiếu vào máy có đúng không [12].
EpiData mô tả hai cách làm. Cách một: bạn cho hai người nhập vào hai tệp riêng rồi so sau. Cách hai: người thứ hai nhập trong chế độ nhập kép, nơi phần mềm so ngay với bản nhập đầu và báo khi khác [2].
Ví dụ: 10 phiếu, 2 chỗ lệch
Giả sử nghiên cứu tăng huyết áp có 150 phiếu. Để bạn dễ theo dõi, ta lấy 10 phiếu đầu và chỉ xét 5 biến: age_years, sex, sbp, n_bp_drugs, adherence. Hai người nhập độc lập. Trong bảng, ô có hai số là ô hai người nhập khác nhau (lần 1 / lần 2).
| study_id | age_years | sex | sbp | n_bp_drugs | adherence |
|---|---|---|---|---|---|
| BM001 | 54 | 2 | 138 | 2 | 1 |
| BM002 | 61 | 1 | 152 | 3 | 0 |
| BM003 | 47 | 2 | 126 | 1 | 1 |
| BM004 | 66 | 1 | 148 / 184 | 2 | 1 |
| BM005 | 72 | 2 | 160 | 3 | 0 |
| BM006 | 58 | 1 | 134 | 2 | 1 |
| BM007 | 63 | 2 | 142 | 3 / 2 | 1 |
| BM008 | 50 | 1 | 130 | 1 | 1 |
| BM009 | 69 | 2 | 156 | 2 | 0 |
| BM010 | 44 | 1 | 122 | 1 | 1 |
Phần mềm báo cho bạn 2 ô lệch trên 50 ô so sánh (10 phiếu nhân 5 biến). Giờ người rà soát mở phiếu giấy ra xem:
- BM004,
sbp: phiếu ghi 148. Lần 1 đúng. Lần 2 đảo hai chữ số thành 184. - BM007,
n_bp_drugs: phiếu ghi 2 (chữ viết tay dễ đọc nhầm là 3). Lần 2 đúng, lần 1 sai.
Từ ví dụ này, bạn rút ra ba điều.
- Cả hai lỗi đều lọt qua luật khoảng. 184 nằm trong 60 đến 300. Còn 2 hay 3 đều nằm trong 0 đến 10. Luật kiểm tra và nhập kép bắt hai loại lỗi khác nhau, nên cái này không thay được cái kia.
- Không có quy tắc “lần 1 luôn đúng”. Lần này một lỗi ở lần 1, một lỗi ở lần 2. Bạn phải quyết định dựa vào phiếu gốc, chứ không đoán. Vì vậy phiếu giấy phải còn truy cập được lúc rà soát.
- Mỗi chỗ sửa phải ghi lại: mã, biến, giá trị cũ, giá trị mới, lý do, ngày, người sửa. Đó là một dòng trong nhật ký làm sạch.
Tỷ lệ lệch trong ví dụ là 2 trên 50, tức 4% (tự tính). Con số này cao hơn nhiều tỷ lệ thật, để ví dụ có chỗ cho bạn học. Trong một đăng ký ghép thận ở Nhật, nhập một lần có 358 lỗi trên 104.720 ô, tức 0,34% mỗi ô [14]. Với 150 phiếu và 14 biến như codebook, bạn có 2.100 ô. Nhân với 0,34% được khoảng 7 ô sai (tự tính). Hai nghiên cứu này ở môi trường khác Việt Nam. Tỷ lệ ở đề tài của bạn có thể khác, tùy chữ viết tay, độ dài phiếu và người nhập.
Bắt được bao nhiêu, tốn bao nhiêu
- Ở Nhật, nhập kép bởi người khác phát hiện 88,3% lỗi nhập một lần. Cùng một người nhập lại chỉ phát hiện 69,0% [14]. Vì vậy người thứ hai nên là người khác.
- Trong thử nghiệm CAST, nhập kép giảm lỗi từ 22 xuống 15 trên 10.000 ô, nhưng chưa đạt ý nghĩa thống kê (P = 0,09). Thời gian nhập thì tăng 37%, khoảng 90 phút mỗi tháng mỗi trung tâm [13].
- Nhập kép sẽ không giúp bạn bắt được lỗi ngay trên phiếu giấy. Nó cũng không bắt được trường hợp hai người cùng đọc nhầm một chữ viết tay. Day và cộng sự nhấn mạnh rằng nó chỉ bảo đảm phiếu được chép đúng vào cơ sở dữ liệu. Muốn xem dữ liệu có hợp lý không, bạn cần phân tích khám phá, và bước đó luôn phải làm [12].
Nhập liệu kép có bắt buộc không
Tôi không tìm thấy quy định chung nào bắt buộc bạn phải nhập kép, cho mọi đề tài. Tôi đã tìm trong toàn văn hướng dẫn thực hành lâm sàng tốt ICH E6(R3) các cụm “double data entry”, “double entry”, “dual entry”, và không thấy cụm nào. Văn bản chỉ yêu cầu ghi lại việc nhập ban đầu và mọi thay đổi (mục 4.2.2), và thẩm định các kiểm tra nhập tự động (mục 4.3.4) [15]. Đó là hướng dẫn cho thử nghiệm lâm sàng. Còn quy định của trường, bệnh viện, hội đồng đạo đức hay nhà tài trợ ở Việt Nam: [CHƯA CÓ NGUỒN]. Bạn hãy đọc quy định nơi bạn nộp đề tài. Nhóm hỗ trợ REDCap của University of Alberta còn không khuyến nghị nhập kép. Họ nói nhiều nghiên cứu nhập thẳng vào hệ thống, nhập hai lần tốn kém, và nó chỉ bắt lỗi chép [9].
Cách tôi cân nhắc, bạn tham khảo nhé:
- Nên làm khi bạn nhập từ phiếu giấy, có người thứ hai độc lập, và biến đó quyết định kết luận.
- Làm một phần khi bạn ít nguồn lực. Bạn nhập kép biến then chốt (kết cục chính, phơi nhiễm chính, mã nghiên cứu), hoặc một mẫu ngẫu nhiên các phiếu. EpiData có tùy chọn dành cho nhập kép trên một mẫu [2]. REDCap thì không giới hạn theo biểu mẫu hay đối tượng [9].
Nhập liệu kép bằng từng công cụ
Excel. Tôi không thấy chức năng này trong hướng dẫn Microsoft đã xem. Cách dưới đây là đề xuất của tôi. Bạn dựng hai sổ cấu trúc y hệt, và hai người nhập độc lập. Rồi bạn sắp xếp theo study_id và so bằng công thức như =IF(Nhap1!C2=Nhap2!C2,"","LỆCH"). Cuối cùng bạn lọc ô LỆCH để tra phiếu giấy.
EpiData. Sổ tay bản 3.1 (đời cũ) mô tả hai cách [2]. Cách 1: bạn dùng Copy Structure (menu Tools) để tạo tệp rỗng. Hai người nhập hai tệp. Rồi bạn dùng Validate Duplicate Files (menu Document) với trường khóa để ghép bản ghi. Kết quả là báo cáo chỗ khác nhau. Cách 2: bạn chọn Tools, Prepare Double Entry Verification, rồi nhập lần hai ở Enter Data. Khi giá trị khác bản gốc, phần mềm cảnh báo và cho bạn chọn giữ giá trị mới, giá trị gốc hoặc sửa. Lịch sử thay đổi của Manager 4.x có “Prepare Double Entry” và “Validate Double Entry” [3]. Còn các bước trong bản 4.7: [CHƯA CÓ NGUỒN]; người viết kiểm lại.
REDCap. Theo Vanderbilt và University of Kansas [7, 8], cách làm như sau. Quản trị viên bật module Double Data Entry trước khi có dữ liệu. Họ gán người nhập số 1, số 2, còn lại là người rà soát. Hai người nhập tạo bản ghi cùng mã mà không thấy nhau (100--1, 100--2). Người rà soát dùng Data Comparison Tool để xem trường nào khác nhau. Sau khi đối chiếu phiếu gốc, họ Merge thành bản ghi 100. Cách này có giới hạn: không bắt đầu từ khảo sát, không áp dụng cho biểu mẫu lặp [8]. Alberta thêm rằng bạn không giới hạn được theo biểu mẫu hay đối tượng [9].
Hai lỗi hay gặp
- Gõ trước, đặt luật sau. Bạn cài luật từ codebook trước khi nhập.
- Tự sửa chỗ lệch bằng suy đoán, hoặc để người thứ hai nhìn bản nhập đầu. Mỗi chỗ lệch bạn phải tra phiếu gốc và ghi nhật ký.
Đã xong khi
Bước nhập liệu xong khi cơ sở dữ liệu chạy được, luật kiểm tra cài trước khi nhập, và bạn biết chỗ nào đã nhập kép. Bạn tự soát nhé:
- Bạn đã chọn công cụ và ghi lý do (số phiếu, số người nhập, cần dấu vết sửa không); đã ghi phiên bản và kiểm lại ở trang gốc của nhà sản xuất.
- Mỗi biến trong codebook của bạn có luật trong phần mềm: kiểu, khoảng, giá trị hợp lệ, bắt buộc hoặc không, rẽ nhánh khi cần; bạn đã quyết định luật nào chặn, luật nào cảnh báo.
-
study_idlà duy nhất; họ tên và số hồ sơ để ở danh sách riêng. - Bạn đã nhập thử 10 đến 20 phiếu, xuất sang phần mềm phân tích, kiểm tra nhãn, mã thiếu và kiểu dữ liệu.
- Bạn đã quyết định nhập kép toàn bộ, một phần hay không, ghi lý do; nếu có thì người thứ hai độc lập và còn phiếu gốc.
- Mỗi chỗ sửa có một dòng nhật ký (mã, biến, giá trị cũ, giá trị mới, lý do, ngày, người sửa); dữ liệu thô bạn giữ riêng, có sao lưu.
Nhớ ba điều là đủ
Thứ nhất, bạn chọn công cụ theo số phiếu, số người nhập và nhu cầu dấu vết sửa, không theo thói quen. Thứ hai, luật kiểm tra cài từ codebook trước khi nhập: chặn điều không thể xảy ra, cảnh báo điều hiếm. Thứ ba, nhập liệu kép bắt lỗi chép từ phiếu, không thay luật kiểm tra, và bạn cần quyết định có chủ ý.
Nếu bạn muốn thực hành từng bước trên phần mềm, tôi có khóa học về tạo bộ nhập liệu và quản lý số liệu, có phần EpiData. Bạn xem ở mục Khóa học.
Đọc tiếp
Trước bước này là phiếu thu thập số liệu và codebook. Bảng biến số nằm ở phần Phương pháp. Sau nhập liệu là làm sạch số liệu.


