Hệ thống đánh giá dựa trên chuẩn WHO Child Growth Standards 2006 (0–5 tuổi) và WHO Growth Reference 2007 (5–19 tuổi)
WHO 2006 là tiêu chuẩn toàn cầu được phát triển từ nghiên cứu đa quốc gia với:
Với trẻ từ 5 đến dưới 19 tuổi, hệ thống dùng WHO Growth Reference 2007 — bộ tham chiếu WHO công bố cho lứa tuổi học đường, nối tiếp liền mạch với chuẩn 2006 tại mốc 5 tuổi. Lứa tuổi này chỉ đánh giá chiều cao theo tuổi, BMI theo tuổi và cân nặng theo tuổi (chỉ tới 10 tuổi); WHO không có chuẩn cân nặng theo chiều cao cho trẻ trên 5 tuổi.
Với trẻ 0–5 tuổi, hệ thống đánh giá 4 chỉ số theo chuẩn WHO Child Growth Standards 2006 bằng phương pháp LMS (Lambda-Mu-Sigma):
Chuẩn WHO được chọn tự động theo tuổi của trẻ tại ngày cân đo, tính từ ngày sinh:
Không có chuẩn WHO trẻ em áp dụng. Phiếu vẫn được lưu nhưng các chỉ số hiển thị "Chưa có dữ liệu".
Mốc chuyển là 731 ngày (đúng như WHO Anthro), không phải "24 tháng" làm tròn. Bảng WHO có tham số cho từng 0,1 cm; chiều cao lẻ hơn 0,1 cm được nội suy tuyến tính giữa 2 mốc 0,1 cm liền kề.
Phương pháp LMS (Lambda-Mu-Sigma) được phát triển bởi Cole & Green (1992) để xử lý phân phối không chuẩn trong dữ liệu tăng trưởng trẻ em:
// app/Services/WHO2006ZScoreService.php public static function zPlain(float $x, float $l, float $m, float $s): ?float { if ($x <= 0 || $m <= 0 || $s <= 0) return null; return abs($l) < 1e-7 ? log($x / $m) / $s : ((($x / $m) ** $l) - 1) / ($l * $s); }
anthro (0–5 tuổi) và anthroplus (5–19 tuổi)// app/Services/WHO2006ZScoreService.php — trẻ 0-5 tuổi $ngay = ageInDaysBetween($ngaySinh, $ngayCan); // số ngày tuổi $lms = lmsByDay('wfa', $gioi, $ngay); // tra đúng ngày, không nội suy $z = zAdjusted($canNang, $lms['L'], $lms['M'], $lms['S']); // Cân nặng theo chiều dài / chiều cao: chọn bảng theo mốc 731 ngày $bang = $ngay < 731 ? 'wfl' : 'wfh'; $lms = lmsByLenHei($bang, $gioi, $chieuCao); // nội suy trên lưới 0,1 cm // app/Services/WHO2007ZScoreService.php — trẻ 5-19 tuổi $lms = lmsInterpolated('bmi', $gioi, $thangTuoi); // nội suy giữa 2 tháng
Ở hai đầu phân phối, đường cong LMS không còn mô tả tốt số liệu thực. WHO quy định: với cân nặng theo tuổi, BMI theo tuổi và cân nặng theo chiều dài/cao, khi Z vượt ±3 thì tính lại theo khoảng cách tuyến tính tới mốc ±3SD:
SDk = M × (1 + L × S × k)^(1/L). Chiều cao theo tuổi không hiệu chỉnh.
| Khoảng Z-Score | Mã phân loại | Kết luận hiển thị | Màu |
|---|---|---|---|
| Z > +3SD | obese |
Trẻ béo phì | 🔴 Đỏ |
| +2SD < Z ≤ +3SD | overweight |
Trẻ thừa cân | 🟠 Cam |
| -2SD ≤ Z ≤ +2SD | normal |
Trẻ bình thường | 🟢 Xanh |
| -3SD ≤ Z < -2SD | underweight_moderate |
Trẻ suy dinh dưỡng thể nhẹ cân, mức độ vừa | 🟠 Cam |
| Z < -3SD | underweight_severe |
Trẻ suy dinh dưỡng thể nhẹ cân, mức độ nặng | 🔴 Đỏ |
| Khoảng Z-Score | Mã phân loại | Kết luận hiển thị | Màu |
|---|---|---|---|
| Z > +3SD | above_3sd |
Trẻ cao bất thường | 🔵 Xanh dương |
| +2SD < Z ≤ +3SD | above_2sd |
Trẻ cao hơn bình thường | 🔵 Xanh ngọc |
| -2SD ≤ Z ≤ +2SD | normal |
Trẻ bình thường | 🟢 Xanh |
| -3SD ≤ Z < -2SD | stunted_moderate |
Trẻ suy dinh dưỡng thể thấp còi, mức độ vừa | 🟠 Cam |
| Z < -3SD | stunted_severe |
Trẻ suy dinh dưỡng thể thấp còi, mức độ nặng | 🔴 Đỏ |
| Khoảng Z-Score | Mã phân loại | Kết luận hiển thị | Màu |
|---|---|---|---|
| Z > +3SD | obese |
Trẻ béo phì | 🔴 Đỏ |
| +2SD < Z ≤ +3SD | overweight |
Trẻ thừa cân | 🟠 Cam |
| -2SD ≤ Z ≤ +2SD | normal |
Trẻ bình thường | 🟢 Xanh |
| -3SD ≤ Z < -2SD | wasted_moderate |
Trẻ suy dinh dưỡng thể gầy còm, mức độ vừa | 🟠 Cam |
| Z < -3SD | wasted_severe |
Trẻ suy dinh dưỡng thể gầy còm, mức độ nặng | 🔴 Đỏ |
| Khoảng Z-Score | Mã phân loại | Kết luận hiển thị | Màu |
|---|---|---|---|
| Z > +3SD | above_3sd |
Cao vượt trội | 🔵 Xanh dương |
| +2SD < Z ≤ +3SD | above_2sd |
Cao hơn bình thường | 🔵 Xanh ngọc |
| -2SD ≤ Z ≤ +2SD | normal |
Chiều cao bình thường | 🟢 Xanh |
| -3SD ≤ Z < -2SD | stunted_moderate |
Thấp còi | 🟠 Cam |
| Z < -3SD | stunted_severe |
Thấp còi, mức độ nặng | 🔴 Đỏ |
| Khoảng Z-Score | Mã phân loại | Kết luận hiển thị | Màu |
|---|---|---|---|
| Z > +2SD | obese |
Béo phì | 🔴 Đỏ |
| +1SD < Z ≤ +2SD | overweight |
Thừa cân | 🟠 Cam |
| -2SD ≤ Z ≤ +1SD | normal |
Bình thường | 🟢 Xanh |
| -3SD ≤ Z < -2SD | wasted_moderate |
Gầy còm | 🟠 Cam |
| Z < -3SD | wasted_severe |
Gầy còm, mức độ nặng | 🔴 Đỏ |
| Khoảng Z-Score | Mã phân loại | Kết luận hiển thị | Màu |
|---|---|---|---|
| Z ≥ -2SD | normal |
Cân nặng theo tuổi bình thường | 🟢 Xanh |
| -3SD ≤ Z < -2SD | underweight_moderate |
Nhẹ cân | 🟠 Cam |
| Z < -3SD | underweight_severe |
Nhẹ cân, mức độ nặng | 🔴 Đỏ |
// Lúc lưu phiếu (WebController::form_post) — tính MỘT lần rồi lưu vào phiếu if (WHO2006ZScoreService::isInRange($ageInDays)) { $history->applyWho2006Snapshot(); // 0-5 tuổi: LMS tra theo NGÀY tuổi } elseif (WHO2007ZScoreService::isInRange($ageInMonths)) { $history->applyWho2007Snapshot(); // 5-19 tuổi: WHO Reference 2007 } $history->save(); // ghi z_hfa, z_wfa, z_bmi, z_wfh, who_standard, z_engine // Mọi trang (kết quả, bản in, danh sách, thống kê, Excel) chỉ ĐỌC lại snapshot, // không tính lại — sửa engine về sau không làm thay đổi phiếu đã lập $kq = $history->check_weight_for_age_auto(); // [result, text, color, zscore, ...] $tt = $history->get_nutrition_status_auto(); // tình trạng dinh dưỡng tổng hợp
$history->check_weight_for_age_auto() → W/A$history->check_height_for_age_auto() → H/A$history->check_bmi_for_age_auto() → BMI/A$history->check_weight_for_height_auto() → W/H (tự chọn WFL/WFH theo mốc 731 ngày)$history->ketQuaChiSo() → các chỉ số có chuẩn cho lứa tuổifloat, làm tròn 2 chữ sốzscore/who2006, zscore/who2007)Kết luận tổng hợp được xác định bằng cách xét lần lượt từ trên xuống, gặp điều kiện đầu tiên thỏa mãn thì dừng. Trong mỗi dòng "< -2SD", nếu chỉ số tương ứng < -3SD thì kết luận thêm chữ "nặng" và tô đỏ.
| Thứ tự xét | Điều kiện | Kết luận | Màu |
|---|---|---|---|
| 1 | Thiếu một trong ba chỉ số W/A, H/A, W/H | Chưa có đủ dữ liệu | ⚪ Xám |
| 2 | H/A < -2SD VÀ W/H < -2SD | Suy dinh dưỡng phối hợp | 🔴 Đỏ |
| 3 | W/H < -2SD | Suy dinh dưỡng gầy còm (nặng) | 🟠 Cam / 🔴 Đỏ nếu < -3SD |
| 4 | H/A < -2SD | Suy dinh dưỡng thấp còi (nặng) | 🟠 Cam / 🔴 Đỏ nếu < -3SD |
| 5 | W/A < -2SD | Suy dinh dưỡng nhẹ cân (nặng) | 🟠 Cam / 🔴 Đỏ nếu < -3SD |
| 6 | W/A > +3SD HOẶC W/H > +3SD | Béo phì | 🔴 Đỏ |
| 7 | W/A > +2SD HOẶC W/H > +2SD | Thừa cân | 🟠 Cam |
| 8 | H/A > +2SD | Trẻ bình thường, và có chỉ số vượt tiêu chuẩn | 🔵 Xanh ngọc |
| 9 | Còn lại (cả 3 chỉ số bình thường) | Bình thường | 🟢 Xanh |
BMI theo tuổi được hiển thị và phân loại riêng nhưng không tham gia kết luận tổng hợp của trẻ 0–5 tuổi.
| Thứ tự xét | Điều kiện | Kết luận | Màu |
|---|---|---|---|
| 1 | Thiếu cả BMI/A và H/A | Chưa có đủ dữ liệu | ⚪ Xám |
| 2 | H/A < -2SD VÀ BMI/A < -2SD | Suy dinh dưỡng phối hợp | 🔴 Đỏ |
| 3 | BMI/A < -2SD | Suy dinh dưỡng gầy còm (nặng) | 🟠 Cam / 🔴 Đỏ nếu < -3SD |
| 4 | H/A < -2SD | Suy dinh dưỡng thấp còi (nặng) | 🟠 Cam / 🔴 Đỏ nếu < -3SD |
| 5 | BMI/A > +2SD | Béo phì | 🔴 Đỏ |
| 6 | BMI/A > +1SD | Thừa cân | 🟠 Cam |
| 7 | H/A > +2SD | Bình thường, chiều cao vượt chuẩn | 🔵 Xanh ngọc |
| 8 | Thiếu một trong hai chỉ số | Chưa có đủ dữ liệu | ⚪ Xám |
| 9 | Còn lại | Bình thường | 🟢 Xanh |
Cân nặng theo tuổi (tới 10 tuổi) được hiển thị để tham khảo nhưng không dùng cho kết luận tổng hợp — đúng khuyến cáo của WHO.
| Chỉ số | Bảng tra | L | M | S | Z-Score | Phân loại |
|---|---|---|---|---|---|---|
| Cân nặng/tuổi | wfa, ngày 639 | -0,2814 | 10,8521 kg | 0,12335 | -2,69 | Nhẹ cân, mức độ vừa |
| Chiều cao/tuổi | hfa, ngày 639 | 1 | 83,6595 cm | 0,03665 | -2,82 | Thấp còi, mức độ vừa |
| Cân nặng/chiều dài | wfl, 75,0 cm | -0,3833 | 9,1490 kg | 0,09005 | -1,68 | Bình thường |
| BMI/tuổi (14,04) | bmi, ngày 639 | -0,5536 | 15,5281 | 0,08594 | -1,20 | Bình thường |
BMI được tính với độ chính xác đầy đủ (7,9 ÷ 0,75² = 14,044…), không làm tròn trước khi tính Z-score.
| Chỉ số | Z-Score | Kết luận |
|---|---|---|
| W/A | -2.69 | SDD nhẹ cân vừa |
| H/A | -2.82 | SDD thấp còi vừa |
| W/H | -1.68 | Bình thường |
who2006_lms — 13.366 dòng; W/A, H/A, BMI/A theo từng ngày (0–1.826), WFL 45–110 cm và WFH 65–120 cm theo từng 0,1 cmwho_zscore_lms (chuẩn who2007) — 798 dòng theo từng thánganthro / anthroplus của WHO, lưu tại thư mục zscore/php artisan who:import-2006, php artisan who:import-2007