如转载,请注明作者Medleaf及出处使用教程之快速入门篇(90分钟速成)第1节建立调查表文件我们为什么使用Epidata?因为Epidata是“免费的数据录入和数据管理软件”,另外最主要的,我想是因为它“简单易学、数据录入功能实用”等特点。关于这个软件的详查介绍,就不多说了,网上有很多。现在的Epidata中文版本是3.1,下载地址。OK,简单介绍一下,废话少说进入正题。一、建立调查表文件使用Epidata录入数据的第一步,是先建立数据库。这时我们需要先写一个后缀是.qes的“调查表文件”,如下图:图1-1建立调查表文件这个调查表怎么写呢?看下面的这个例子:说明:第1句中1、药物编号({DrugNum}):@####2、患者姓名缩写({Pname}):@_____3、就诊日期({date}):@yyyy/mm/dd4、门诊({outp})Y住院({inh})Y住院病案号({pn}):__________5、性别({sex}):#①男②女如转载,请注明作者Medleaf及出处“药物编号”只是起到提示作用,在由.qes文件生成数据库文件时不编译,就是说在数据库里面它还是显示“药物编号”;后面括号{}里的“DrugNum”,是字段名,当然这个字段(或者说变量)记录的就是药物编号了,用{}定义字段名是Epidata字段命名的一种方式(还有另一种,这里就不说了),当然如果不加的话也可以,Epidata会根据系统的设臵自动生成字段名(象这种:n1aa,n2,n3ae等等);再后面的@###:@表示一种对齐方式,先不用管它,后面会讲到;###是用来定义前面那个DrugNum字段的属性的,#代表一位数字,###就代表3位数字,也就是说药物编号最大也就能输入999了,不能再大了;总结第1句的含义:定义了一个字段“药物编号”,字段名是DrugNum,用于记录3位数字形式的数据。(刚开始有些费劲,呵呵,以后就越来越轻松了!)第2句:与第1句不同的是,患者姓名缩写肯定是字母了,这里用下横杠“_”来定义。下横杠“_”是用来定义字符串的,一个字母用一个“_”表示(如果是汉字,要占两个“_”)。这一句的含义就是:定义了一个字段“患者姓名缩写”,字段名是Pname,用于记录字符形式的数据。(以后就轻松了:-)第3句:yyyy/mm/dd是定义日期格式的字段的,写法是固定的,很简单吧?这一句将“就诊日期”的字段名设为“date”,字段属性设臵为4位年2位月和2位日形式的日期数据。第4句:Y代表另外一种格式的数据:布尔逻辑变量,它的值只能是Y或N(在录入时也可输入1或0,系统自动将其变成Y或N);对于一名患者,一般情况下只有门诊病人或住院病人两种情况,非此即彼,所以设臵为布尔逻辑变量。这一句的含义:定义门诊与住院两种情况,如果是住院病人,还要填写住院病案号。第5句:这句里面没有陌生的语句了,为什么还要写出来做例子呢。因为这是一种常用的做法。比方说我们要记录一个患者的病情严重程度,按标准分为四级,0无症状1轻2重3极其严重,那么就可写成第5句这种形式:严重程度({degree}):#0无症状1轻2重3极其严重这里面只有#是在数据库中需要编译的,其它都将显示为提示信息。这里实际上是用一位数字存储等级资料的信息。如果分级多,可以设成两位数字(即两个##)。当然,对于第5句中的“性别”,也可用第4句中那个布尔逻辑变量,写成这样:性别({sex}):Y男或者:如转载,请注明作者Medleaf及出处性别({sex}):Y女因为一般情况下性别也是非男即女(当然也不排除有人妖的可能,,所以也可写成:1男2女3其他,用#来定义)。事实上,上述例子,基本上把Epidata中的所有常用的变量类型都用上了。作为练习,把上面那5句拷贝到Epidata的编辑区,保存为.qes后缀的调查表文件,即建库文件,。第2节生成数据库文件二、生成数据库文件(.rec)文件把第1节中那5句COPY到epidata中,如下图:图2-1QES文件编辑窗口然后点击“生成REC文件”,如下图:图2-2由QES文件生成REC文件一般不用管它,你的.qes文件在什么位臵,就把.rec放到什么文件夹中,所以下面基本上都是一路“确定”下去了:如转载,请注明作者Medleaf及出处图2-3生成REC文件最后出来的这个文件标记,一般是不用设的(具体它有什么作用我还真没仔细研究过),最后一个“确定”点了以后,你的数据库文件(以.rec格式保存)就生成了。图2-4生成REC文件过程中的文件标记好啦,来看看我们的成果吧!点击Epidata工具栏中的“数据录入”菜单,选择“数据录入”菜单,如下图:图2-5打开数据库文件找到先前生成的那个sample.rec文件,然后打开,呈现在我们面前的就是数据录入的界面了:如转载,请注明作者Medleaf及出处图2-6数据录入界面第3节数据录入的控制(1)前两节我们了解了如何编写调查表文件,如何用这个文件生成数据库及数据录入界面的显示。这一节,我们看看数据录入的控制。问题提出:为什么需要“控制”?还是先前的那个例子,其中编号为4的那一行,有“门诊”“住院”和“住院病案号”三项,这三项中最多只有两项需要我们来录入数据,因为门诊和住院这两种情况是相斥的,一个病人如果是门诊病人,那就不是住院病人,病案号当然也没有了。所以,为了提高数据录入的效率,我们需要对录入过程进行控制:对于上面的这种情况,我们的预期控制效果是:在录完就诊日期后,光标到“门诊”项,这时,如果这个病人是门诊病人,那么我们录入1或者Y(因为这个变量是布尔型,其值只有1或Y,0或N,键入其它的值都是无效的)之后,光标不是到“住院”项,而是跳转到“性别”,因为门诊病人没有病案号。当然,对数据录入的控制还远不只这些,还包括字段允许值的设定、是否必须录入、是否允许重复数值等。1、药物编号({DrugNum}):@####2、患者姓名缩写({Pname}):@_____3、就诊日期({date}):@yyyy/mm/dd4、门诊({outp})Y住院({inh})Y住院病案号({pn}):__________5、性别({sex}):#①男②女如转载,请注明作者Medleaf及出处为了实现这些“控制”过程,我们需要建一个与.rec文件同名但后缀为.chk的文件。在启动epidata后,在工具栏上就能看到建立CHK文件的按钮。图3-1建立CHK文件选择我们先前生成的sample.rec文件:图3-2选择要建立CHK文件的数据库文件点击打开后,出现编写CHK文件的页面:图3-3CHK文件编辑器简单的解释一下:Epidata的CHK文件,命令有很多,这个编辑窗口,仅列出了比较常用的几个,其它更为复杂的功能,需要点击“编辑”按钮,以文本编辑方式打开CHK文件来编写CHK命令。这些命令的使用,大家可以参考《Epidata3.0使用手册》。如转载,请注明作者Medleaf及出处图3-4CHK文件编辑器的选项卡上图中对CHK选项卡中的5个项目作了简单的说明,下面逐一进行介绍:1、字段的允许数值范围与允许数值对应的CHK命令为:Range和Legal“控制”作用:在录入时,如果录入的数值不在这两个命令定义的允许数值(范围)内,系统将报错,需重新录入“合格”的数值。这是CHK文件中常用的两个命令,其作用稍有不同,Range限定的是字段数值的“允许范围”,比如我们可以键入“1-8”,代表该字段的数值是从1到8且连续的8个数值;而Legal则限定字段的允许数值,对上面这种情况,用Legal命令的话,我们需要键入“1,2,3,4,5,6,7,8”,如果实际情况是既有连续的数值,又有不连续的,那这两个命令可以一起用,比如键入“1-5,7,8”,表示这个字段共允许7个数值,包括1到5连续5个数,还有“7”和“8”这两个数。如果录入时输入了6,系统会报错,提示“非法录入”,同时还提示应该输入的允许数值(范围)。如下图:图3-5(Range和Legal这两个命令的作用就是这个)还记得上一个图中那个“编辑”按钮吗?我们点击它看看里面是什么:如转载,请注明作者Medleaf及出处图3-6CHK文件的“编辑”这是对当前字段的CHK命令进行文本方式的编辑(其实Epidata的文件基本都是文本格式,只不过文件的后缀不是.txt罢了)。在里面我们可以看到,一个合格的CHK命令是字段名加CHK命令,以END结尾。Range命令的用法是RANGE15(它定义了允许的数值范围是1到5)Legal的用法是:LEGAL78END(注意:很多CHK命令都以END结尾,比如这个LEGAL,但RANGE不需要)对于LEGAL命令,每个允许的数值要占一行。事实上,对于这两个命令,我们不需要以文本方式编辑,直接在图3-4中的选项卡中填上数值范围或数值就可以了(以英文“,”分隔每个单独的数值),而对于选项卡中没有的命令,我们必需用编辑文本自己编写。好了,这两个命令我们已经简单的了解了用法,下面我们看看跳转命令Jumps怎么用。如转载,请注明作者Medleaf及出处第4节数据录入的控制(2)2、跳转对应的CHK命令:Jumps“控制”作用:在录入时,如果录入的值符合条件,则跳转到条件中设定的字段处进行录入。这个一个很常用的CHK命令,格式也很简单,如下图:图4-1设臵跳转命令在上图中我们可以看到,如果在sample.chk那个选项卡中编辑Jumps命令的话,格式是:Ysex解释:如果录入的值等于Y则将跳转到字段sex。对于这个字段,由于是布尔型变量,录入0或者1,系统自动将其转换为N或Y,所以这个字段的Jumps命令中,条件取值是Y而不是1。如果进行文本格式的编辑(见上图中右下角的编辑窗口),Jumps的命令格式是:outp/这个是字段名JUMPS/Jumps命令开始Ysex/跳转条件,可以有多个,每个条件占1行END/Jumps命令结束END/outp字段的CHK命令结束上面这种情况,是一个跳转命令,如果有多个跳转怎么办?在CHK选项卡中设臵的话,是用英文的“,”分隔不同的跳转命令,如Ysex,Ninh。如转载,请注明作者Medleaf及出处这里有一个小窍门,在使用CHK选项卡的实际操作中,我们不必书写Jumps将要跳转到的字段名称,用鼠标就可以搞定:当在CHK编辑选项卡中Jumps的编辑框中,已经输入了“Y”之后,我们用鼠标点击数据录入界面(图3-7中黑色背景)中,我们需要跳转到的那个字段对应的输入框(黑色背景中的灰色输入框),比如我们点击“性别”后面那个输入框,则我们正在编辑的Jumps命令“Y”将成为“Ysex”,而不必我们手动输入了。以上介绍了Jumps命令的常用方法,其它的跳转条件暂不在这里介绍。3是否必需录入对应的CHK命令为:MUSTENTER“控制”作用:在录入时,如果设臵了MUSTENTER(默认是No,不设臵),则该字段必需录入数据,即不能为空(当然对与错它是不管的)。设臵见下图:图4-2MUSTENTER的设臵MUSTENTER的设臵非常简单,在CHK选项卡中,只有两个选项,第一个是“NO”,第二个是“YES”,上图中选择了“YES”。点击CHK选项卡下方“编辑”按钮,用文本方式打开该字段的CHK命令,我们可以看到这个命令的格式:Pname/字段名称M