1.epidata 如何自动计算年龄,BMI?
>qes代码:
epidata tips
{rsdate} 调查日期:<yyyy/mm/dd>
{birthdate} 出生日期:<yyyy/mm/dd>
{age} 年龄:##
{height} 身高:#.## m
{weight} 体重:###.# kg
{bmi} BMI:##.## kg/m2
>chk代码:
age
BEFORE ENTRY
age=year(rsdate)-year(birthdate)
END
END
bmi
BEFORE ENTRY
bmi=weight/height^2
END
END
>录入效果
2.crf表中,常出现伴随病史、既往用药史等涉及到多条记录的变量,但每个个体出现的记录数不同时,如空余较多,需要多次回车,如何实现自动跳转,提高录入效率?
例如:在进行本次调查之前,受试者是否存在任何疾病?(记录已经结束的疾病,当前疾病转至伴随疾病史)
序号 | 疾病名称 | 结束日期 |
1 | a | 2024/10/24 |
2 | b | 2024/10/24 |
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 |
>qes代码:
既往病史
{qt} 既往病史记录数: ##
疾病名称 结束日期
{a1} ____________________ {b1} <yyyy/mm/dd>
{a2} ____________________ {b2} <yyyy/mm/dd>
{a3} ____________________ {b3} <yyyy/mm/dd>
{a4} ____________________ {b4} <yyyy/mm/dd>
{a5} ____________________ {b5} <yyyy/mm/dd>
{a6} ____________________ {b6} <yyyy/mm/dd>
{a7} ____________________ {b7} <yyyy/mm/dd>
{a8} ____________________ {b8} <yyyy/mm/dd>
{a9} ____________________ {b9} <yyyy/mm/dd>
{a10} ____________________ {b10} <yyyy/mm/dd>
{next} 下一题:#
>chk代码:
qt
RANGE 0 10
JUMPS
0 next
END
MUSTENTER
END
b1
AFTER ENTRY
IF (qt=1) THEN
GOTO next
ENDIF
END
END
b2
AFTER ENTRY
IF (qt=2) THEN
GOTO next
ENDIF
END
END
b3
AFTER ENTRY
IF (qt=3) THEN
GOTO next
ENDIF
END
END
b4
AFTER ENTRY
IF (qt=4) THEN
GOTO next
ENDIF
END
END
b5
AFTER ENTRY
IF (qt=5) THEN
GOTO next
ENDIF
END
END
b6
AFTER ENTRY
IF (qt=6) THEN
GOTO next
ENDIF
END
END
b7
AFTER ENTRY
IF (qt=7) THEN
GOTO next
ENDIF
END
END
b8
AFTER ENTRY
IF (qt=8) THEN
GOTO next
ENDIF
END
END
b9
AFTER ENTRY
IF (qt=9) THEN
GOTO next
ENDIF
END
END
>录入效果
3.epidata跳转中,有一种情况是,无论输入什么,无条件跳转至另外一个变量。例如下面变量v1b中5和6,不管输入什么都需要跳转至next。实现该功能,有2个方法,1)autojump,跳转会在离开该变量时执行。令autojump后面可以使用end和write,如下。2)goto,需要在after entry后面使用。详细情况参考下面qes和chk代码。
AUTOJUMP [name of field to jump to]
AUTOJUMP END
AUTOJUMP WRITE
AUTOJUMP SKIPNEXTFIELD
*使用 AUTOJUMP SKIPNEXTFIELD 命令,当完成当前变量的录入后,
*程序会越过下一个变量,直接跳转到其后的变量。
>qes代码:
{v1} 是否进行实验室复核: # 1=是 2=否
{v1a} 如是,请注明实验室名称: ____________________
{v1b} 镜检复核结果:#
1=阴性
2=间日疟
3=恶性疟
4=三日疟
5=卵形疟 ({test} 请注明:____________________)
6=混合感染({v1b1} 请注明: ____________________)
7=其他({v1b2} 请注明: ____________________)
{next} 下一题: #
>chk代码:
v1
LEGAL
1
2
END
JUMPS
2 next
END
MUSTENTER
END
v1b
RANGE 1 7
JUMPS
1 next
2 next
3 next
4 next
6 v1b1
7 v1b2
END
MUSTENTER
END
test
AFTER ENTRY
GOTO next
END
END
v1b1
AUTOJUMP NEXT
END