本系统是一个在线问卷调查/数据管理系统,是基于Web网页的形式提供在线访问功能的。系统提供了问卷/表单定制设计管理、问卷/任务发布管理,问卷/表单数据的在线数据录入/填报、问卷数据在线管理和统计、问卷系统功能和数据的权限管理。
系统完全基于Web(网页)设计,功能完善的问卷表单设计器,达到所见即所得的良好用户体验;可重用的问卷组件、模板让繁琐重复的问卷设计变得轻松简单。针对在实际应用中每次调查会涉及多个调查问卷的实际需要,开创性的提出了调查任务管理的功能:调查任务包含了每次调查的全部调查问卷及其数据。
系统适应于多级、每级多用户的实际应用场景,提供了基于角色的访问控制(RBAC)权限控制,系统为每个调查任务的所有调查问卷及其他辅助功能都提供了唯一的登录、访问地址。
此外,在系统中还提供了共享数据字典的管理功能,如针对地区编码、民族等国家标准化数据,可以在系统中预先建立统一的数据字典,并且由专人维护数据。普通用户在定制问卷时只需要使用系统内预置的数据字典,从而有效地保证了问卷数据对标准的兼容,同时极大的减少了问卷定制用户在问卷内维护数据字典的工作量。
针对标准字典每年可能更新的情况,系统提供了数据视图(版本)的功能。在用户定制问卷时,可以选择问卷绑定于具体的数据字典,也可以选择绑定到某一个数据视图。当用户将数据绑定某一个数据视图时,可以在调查任务的发布时指定和某一具体数据字典绑定。如未在调查任务时绑定,则默认使用系统级的数据视图绑定。系统默认的数据视图绑定可以由系统管理员随时指定。
为适应于专业调查问卷中的跳转等复杂的逻辑控制,在系统中内置了专门用于数据校验、跳转、隐藏/显示等逻辑控制的脚本,该脚本的设计基于业内流行的Epidata软件(http://www.epidata.dk/)内置的脚本,针对Web系统的特点进行了扩展和增强。更多信息请参见文后具体章节。
系统不仅提供了在线的数据录入界面,还提供了适用于台式计算机和笔记本同时兼容Windows/Linux等多种操作系统的离线数据录入程序,针对安卓智能手机和平板也提供了相应的离线录入应用。利用离线录入工具,问卷录入用户可以在联网的情况下先将调查任务的问卷下载到本地计算机和移动设备上,在离线的情况下进行数据的录入,在连线的情况下完成数据的上传。更多信息请参见文后具体章节。
信息技术对调查问卷/流行病学调查的影响和价值日益凸显,系统作为公共卫生信息化的产物,适用于公共卫生领域的各项业务,如现场流行病学调查、卫生应急监测、快速风险评估调查、疾病监测、现况调查和队列研究等。在系统中针对中国的公共卫生调查的特点,针对性的提供了地区控件、地图坐标等控件,并且提供了对中国疾病预防控制系统(直报系统)兼容的地区编码、统计局发布的地区编码等标准的兼容实现。
系统采用HTML5、Javascript、CSS等标准和技术构建,用户可以使用当前的任意一种支持HTML5的主流浏览器(IE11+/Edge,火狐(Firefox)浏览器,谷歌(Chrome)浏览器、360浏览器等)访问软件部署的地址即可访问系统,操作相关功能。系统基于成熟、免费的开源技术和产品构建,软件的构建和发布符合J2EE工业标准。系统使用到的主要第三方开源产品:
使用本系统进行问卷调查紧紧围绕着四个步骤:设计 –> 发布 –> 录入 –> 统计。典型的操作流程下图所示,问卷设计用户登录系统设计问卷模板,将设计好的模板生成调查问卷并将问卷发布为调查任务,在调查任务管理界面内为调查任务分配用户,数据录入用户登录系统录入问卷,调查完成后统计问卷结果,或者导出结果进行其他的深入的分析。
在本章节中按照功能相关性将分为调查问卷设计和管理、调查任务发布和管理、问卷数据录入、问卷结果统计和管理四个部分来分别进行介绍操作。
请注意:本系统可以进行界面样式及其他标示信息的定制化修改和部署,因此下文中的界面以系统默认的界面为主进行介绍;如用户使用的系统使用了不同的界面样式风格时,界面显示样式会有所同不同,但是基本的操作方式一致。
本系统作为一个专业的调查问卷系统,为用户提供了功能完善的在线问卷设计器。由于用户在日常设计的调查问卷之间在内容和逻辑上存在较多的关联和相似之处,系统为用户提供了组件管理、调查问卷模板管理和调查问卷管理等功能。
系统的登录入口分为问卷定制平台的登录入口和调查任务的登录入口,其中问卷定制平台的登录入口的是固定的,而调查任务的登录入口则要根据调查任务的ID或者域名设定来确定。
要登录问卷定制平台,使用支持HTML5的主流浏览器输入网址并打开,其中问卷定制平台网址的常见的形式为http://server/dap/ 或http://server/dap/t/shell/login。其中server是系统部署的服务器域名或IP地址。如系统部署时设置了服务器支持https访问,请使用https打开网址并登录。例如:
在打开的界面中输入用户名和密码,并且输入验证码,然后点击登录。如果没有账号,也可以点击下方的注册新账号,填写信息注册并等待系统管理员审核后登录。
用户登录到调查问卷定制平台后,默认打开的是调查任务发布管理主菜单,点击左侧的“问卷模板管理”项,然后点击“浏览调查问卷模板”,在打开的调查问卷模板列表数据后面的编辑按钮即可编辑此模板,也可以点击“新建调查问卷模板”菜单打开调查问卷模板的编辑界面。
需要注意:在系统的某些样式风格下,系统默认打开的是调查任务管理主界面。此时需要点击顶部工具条上【定制管理】菜单,将菜单区切换到问卷定制主菜单,如下图所示:
如果用户经常从事某专业领域的相关调查,通常情况下每次使用的调查问卷在前一次调查问卷的基础上做一些调整即可。在本系统中,调查问卷模板即是解决此类问题的手段。例如去年为某种用途调查设计了问卷模板,根据模板生成了当年的调查问卷,今年调查时增加了新的调查项目,只需修改模板后生成今年新的调查问卷即可。
与最终用于调查的问卷不同,用户随时都可以对调查问卷模板进行修改。
用户在进行调查问卷模板设计时,主要操作在调查问卷模板设计界面进行,如下图所示。调查问卷模板设计界面主要可分为三部分:
将用户界面切换到问卷定制主菜单,然后点击左侧菜单树中【新建调查问卷模板】,系统打开调查问卷模板设计界面。如果用户通过点击调查问卷模板设计界面中右上角的【保存】按钮将当前设计的调查问卷模板的最新状态保存到系统中。
将用户界面切换到问卷定制主菜单,然后点击左侧菜单树中【浏览调查问卷模板】,系统打开调查问卷模板浏览界面。
在调查问卷浏览界面中,通过点击列表中每条模板中右侧的【菜单】区域中的【修改】按钮,用户可以打开此调查问卷模板的编辑界面。
在调查问卷浏览界面中,用户可以上方的查询区域中输入查询条件,然后点击【查询】按钮来对列表中的数据进行筛选过滤。用户可以通过点击数据列表的标题栏对列表中的数据以顺序或逆序排序。
在调查问卷浏览界面中,通过点击列表中每条模板中右侧的【菜单】区域中的【删除】按钮,用户可以从系统中删除指定的调查问卷模板,如果模板属性未标识为“逻辑删除”则该操作彻底删除数据库中的信息。
在用户执行【新建调查问卷模板】或者【修改调查问卷模板】操作后,在调查问卷设计界面中的属性设置区域中默认显示的调查问卷模板的属性。用户可以修改属性的值以设置调查问卷模板的各项属性。
在调查问卷设计界面中,左键点击调查问卷预览区中的当前设计问卷的标题栏,右侧属性设置区域即显示此调查问卷模板的属性。用户可以修改属性的值以设置调查问卷模板的各项属性。通常情况下,用户需要编辑模板名和模板编号。模板主要属性如下表所示:
属性 | 属性说明 |
---|---|
模板编号 | 该模板在数据库内部生成的数据库表的名字,请使用字母开头且只能包含字母、数字和下划线,最长40字符。请不要使用order\from等数据库的关键字。 |
模板名 | 模板的名字,如果生成调查问卷时未指定名字,则问卷的名字为“问卷模板”。 |
模板描述 | 对模板的说明性描述。 |
主键名 | 主键的显示名。系统将为每个模板自动生成一个主键,这个属性是确定该主键字段的显示名。 |
主键可查询 | 在数据浏览界面,显示将主键作为过滤条件 |
逻辑删除 | 删除的数据可以使用适当的工具或方法恢复出来。 |
允许的操作 | 在调查任务中,可以对该问卷进行的操作,包括新建、修改、删除、查看,打印、浏览和审核。 |
记录操作痕迹 | 在数据库中记录填写数据的用户ID、用户名和填写时间。 |
共享 | 是否将该模板共享给其他用户,只有共享的模板才能被其他用户看到和使用。 |
脚本 | 为模板设定整个调查问卷级别的用于逻辑校验和数据跳转的脚本。 (1)快捷设定:控制数据的重复录入。 (2)编辑脚本:添加脚本语句,实现问卷的质量控制。此处为问卷级别的脚本。 注意:“快捷设定”的设置会自动清空“编辑脚本”的脚本语句。如需将二者结合使用,请先设置“快捷设定”,然后在此基础上“编辑脚本”。 |
组合查询 | 在数据浏览界面,显示将组合查询条件作为过滤条件。点击“添加”按钮添加过滤条件,并选择过滤字段名。目前系统仅支持日期控件和地区编码控件的组合条件设置。 |
展示规则 | 针对每条数据在列表中的展示样式设置条件性的设定。当满足【行匹配规则】指定的条件要求时,该条数据则在列表中显示设定样式。行匹配规则是一个返回true/false的脚本表达式。行匹配规则可以为空,为空时则为所有数据的默认显示规则。 |
调查问卷由多个控件通过一定的关系组合而成。调查问卷的设计工作主要是对调查问卷的控件进行调整,主要操作包含添加、修改删除问卷内的控件,调整控件间的布局,设置控件的展示样式等。
按照能否包含其他控件作为其子控件,控件可以分为容器控件和非容器控件。在调查问卷设计时,如果在调查问卷中选中了容器控件,则新加的控件将作为该容器控件的子控件添加到调查问卷中。容器控件包括:矩阵容器,单行容器,多行容器,字表容器。
按照是否要保存数据录入用户的录入结果,控件可以分为数据控件和非数据控件。非数据控件只做辅助调查问卷的展示之用,不能在脚本中为辅助控件执行赋值等操作。
单击控件列表中的任一控件按钮,将为该调查问卷模板添加一个相应的新控件,控件的添加采用流式布局,具体的控件添加规则如下:
需要注意,单选和多选控件在选中了其中某一选项时,再添加一个单选或多选控件将会与该控件进行绑定为一个。
在控件预览区域中,可以直接鼠标单击某一个具体控件,则可以直接选中该控件。被选中的控件在问卷预览区域中显示为蓝色区域,并且在右侧的属性设置区域会显示该选中控件的属性。用户可以通过编辑属性设置区域中的属性的值来达到定制的目的。完成属性的修改,最新的属性的值作用在当前问卷模板上并且在问卷预览区域中显示为最新的状态。
当选中了某个控件时,可以点击属性设置区域中上方的【选中父容器按钮】,将选中该控件的容器控件。对于矩阵容器、多行容器来说,其经常用于辅助进行问卷的布局操作,本身并不在问卷中显示出来,因此需要通过这种方式进行选中。
选中的控件在问卷预览区域中显示蓝色矩形区域。如果当前选中的控件是容器控件,则在包含其子控件在内的所有控件都是显示为蓝色矩形区域。
当选中了某个控件时,可以点击属性设置区域中上方的【删除按钮】,将会从当前调查问卷模板中删除此选中的控件。
如果选中的控件为容器控件,则其所有的子控件也将被从调查问卷模板中删除。
在上图中蓝色区域表示当前选中的控件,红色底纹表示在当前问卷内有与其字段编码重复的控件,红色区域所示为控件相关操作按钮,依次为:
在问卷模板设计器中,支持鼠标的拖拽操作。用户在控件上按下鼠标左键并且将鼠标滑动到目标区域上再释放鼠标时,如果目标控件不是容器控件,被拖拽的控件将会被移动到目标控件的后面;如果目标控件是容器控件,则被拖拽的控件将会附加到目标控件中。如果被拖拽的控件时容器控件,则其所有子控件都会随该控件一起移动。
在执行鼠标拖拽操作时,按照键盘CTRL键不放,则除去上段所描述的操作外,被拖拽的控件并不会在原来的位置移除。实际的操作是复制了一份被拖拽的控件到目标处释放。需要注意,由于在一个调查内任意数据控件的ID不能重复,因此执行此操作后需要额外修改复制出的控件的属性。
在问卷模板设计界面中,当前支持复制和粘贴操作。在选中了控件,在问卷预览区域按下CTRL+C键,被选中的控件的定义被复制到系统剪切板中。再按下CTRL+V键,会将系统剪切板中的控件的定义插入到当前选中的控件处。需要注意,由于在一个调查内任意数据控件的ID不能重复,因此执行此操作后需要额外修改复制出的控件的属性。
在问卷模板设计界面中,按下CTRL+Z键,问卷模板将回滚最近一次对调查问卷模板结构的修改。
需要注意,由于受浏览器的限制,系统只支持回滚对调查问卷模板结构操作,即只有对调查问卷模板执行了插入了新的控件、删除了已有的控件、对控件的位置进行了调整的操作才能被回滚。对问卷属性和控件属性的修改不会被回滚,拖拽和粘贴操作带来的修改可以被回滚。
在本段中列出系统中所有的比较常用的控件通用属性;需要注意并不是所有的控件都有这些属性;另外,即便有些控件拥有以下属性,但是在添加到容器控件内则会隐藏部分属性。更多信息请参见本文参考部分。
属性 | 属性说明 |
---|---|
字段编号 | 该模板在数据库内部生成的数据库表的名字,请使用字母开头且只能包含字母、数字和下划线,最长40字符。请不要使用order\from等数据库的关键字。 在脚本中可以直接操作此属性。 |
显示名 | 控件显示的名字,填写问卷时字段显示的名字和导出excel的列名等。 |
样式 | 设置控件在列表、录入表单等处的字体大小、颜色等样式 |
显示文本 | 在默认的问卷布局中,在数据录入左侧显示该控件的显示名。如果不勾选则直接显示为数据录入控件并不在左侧显示控件的显示名。 |
值可以空 | 是否必填,不勾选为必填字段 |
查询字段 | 如勾选,则在数据管理界面在此控件作为数据过滤条件。 |
是否列表字段 | 是否在列表列出,勾选为列出 |
列表宽度 | 如在数据列表中列出,则列表显示的宽度。支持录入百分比,如”10%”,如不带百分比则默认单位为像素。 |
值唯一 | 勾选则不允许重复录入。 |
允许编辑 | 不勾选则控件为不可编辑状态 |
前置文本 | 在数据录入控件的前方显示的提示信息 |
后置文本 | 在数据录入控件的后方显示的提示信息 |
字典 | 该控件使用的数据字典,可以使用系统内预置的数据字典,也可以选取问卷内的设置好的问卷字典,也可以自行为该控件定义数据字典。 |
联动项目 | 为机构编码控件指定管理的地区控件的编号。 |
提示信息 | 在录入调查问卷数据时,当用户将鼠标防止到控件上时,系统弹出的提示信息。如果用户未设定,则默认提示控件名称。 |
脚本 | (1)快捷设定:控制数据的重复录入。 (2)编辑脚本:添加脚本语句,实现问卷的质量控制。此处为控件级别的脚本。 注意:“快捷设定”的设置会自动清空“编辑脚本”的脚本语句。如需将二者结合使用,请先设置“快捷设定”,然后在此基础上“编辑脚本”。 |
如果该控件被设置为受权限控制的控件,且该用户被指定了所属机构,则该框将默认显示为用户的所属机构,否则用户可以主动选择。默认情况下该控件的【受权限控制】属性为选中状态。如果该用户为直报用户且控件的【受权限控制】属性为选中状态,该控件显示为不可编辑状态,用户不能选择其他控件。
机构编码有一个重要的属性【显示模式】。显示模式有两个选项:
用户在录入数据时,可以通过点击【选择】按钮打开地图选择界面,如所示。在地图打开后,可以通过双击地图或者滚动滚轮来进行地图的缩放操作;要选中某处地点时,可以地图上单击鼠标左键,则下图中展示的红色椭圆型标记会移动到用户选择的地点,并且地图会以此地点居中显示。用户选中完成后,需要点击地图中间上部的【确定】按钮,关闭地图并且传回选中地点的坐标。要清空已经选择的地图坐标,可以通过点击【清空】按钮执行清空。可以在地图界面左下角输入地名从而快速定位到坐标。
表间关联控件:用于关联两个调查问卷进行关联输入。此控件有两种模式:
通过表间关联控件录入的数据,且选择关联类型是关联表且关联关系是一对一时,在空间上默认显示的内容是如下规则寻找:如果关联的表单里有字段编号是以”dname”结尾的控件,默认显示它的值;如果关联的表单里有字段编号是以”name”结尾的控件,默认显示它的值;如果关联的表单里有字段编号是以”name”结尾的控件,默认显示它的值。
在使用矩阵容器进行问卷设计时,子控件按照从左到右,从上到下的方式一次填充到矩阵容器的表格中。矩阵容器默认为显示行名和列名,可以设置其不显示行名和列名。可以往矩阵容器中放入文本标签控件以实现更复杂的文字显示效果。矩阵容器内可以嵌入其他容器控件从而实现更复杂的布局效果。
点击【列名】右面的【添加】按钮,可以新增一行显示。如果设置不显示列名,列的显示名项可以为空。列表宽度为该列显示的宽度,值可以为百分比或者绝对值,为数值时单位为像素。点击每列后面的【删除】按钮可以删除该列。行操作与列操作类似。
在进行数据录入时,可以点击标题行右边的【添加】按钮新增一行数据。可以点击行后面的【删除】按钮删除指定行的数据。
在导出excel时,子表的数据会单独生成一个csv文件。
在“浏览调查问卷模板”界面,可以看到自己建立的问卷模板和其他人共享的问卷模板。点击“查看”按钮可以查看模板内容。用户只能修改自己建立的模板。点击“从此新建”可在其他人共享的问卷模板基础上创建一份新的模板。如需修改,点击“修改”按钮。
点击“预览”按钮可以查看问卷的实际运行效果。在调查问卷模板设计器中,为问卷指定的脚本都不会执行;而在问卷预览时,所有的脚本执行和问卷最终发布时一样运行,如跳转、数值范围等命令。
在本系统中,支持Epidata软件中采用的CHK脚本,并且适应于web的特性,做了一些调整和增强。
限于篇幅的原因,我们在这里假设用户具有epidata CHK脚本编辑的经验。如有用户需要了解,推荐阅读epidata软件的帮助文件,或者《EpiData3.0使用手册》(2004北京大学公共卫生学院吕筠版)。详细信息请参见本文脚本索引部分。
在问卷的属性设置区或者控件的属性设置区(非数据控件不能设置脚本),会显示脚本设置功能。
问卷的脚本可分为问卷级和控件级两类,在调查问卷和子表控件的属性编辑区中编辑的脚本即是问卷级脚本,控件级基本即在控件的属性编辑区域中点开编辑脚本设置的脚本。问卷级脚本的执行是填写问卷之前或数据保存之前。控件级脚本的执行是在鼠标选中该控件或离开该控件时。
问卷级脚本的编辑是在问卷模板的属性设置中,点击“编辑脚本”即可进行脚本语句的编辑。控件级脚本的编辑是在控件的属性设置中,点击“编辑脚本”即可进行脚本语句的编辑。
在脚本编辑器中,可以点击上方的快捷命令,系统会自动在脚本编辑器中加入选中的命令的模板,用户按照模板修改其中的内容即可。在编辑脚本,按下ALT键,系统自动会弹出当前的脚本的提示。
需要注意:如果使用“快捷设定”按钮,则将原脚本清除。编写脚本尽量简洁。问卷中脚本语句有字符限制,在3000个字符以内。
在本系统中完全支持epidata软件的CHK脚本的表示式,支持绝大多数函数,支持BEFRORE/AFTER ENTRY、BEFORE/AFTER RECORD等事件。
在本系统中,对epidata软件的脚本命令兼容做了尽可能大的支持,主要可分为两种情况:
在本系统中,适应于在web系统的特性和实际应用中需要,在原有的epidata CHK脚本的兼容支持外,还自定义了一些增强的命令和函数等:
自定义函数:
自定义命令:
HIDEROWS
1 FIELD_1
2 FIELD_2
4 WRITE
END
在问卷脚本中时,使用方式如下:
ASSERT FIELD_1, FIELD_1=1,” FIELD_1需要等于1”
当控件FIELD_1的值不等于1提示FIELD_1需要等于1,并且系统会跳转到控件FIELD_1。命令的第三部分是返回true/false表达式。
在控件级脚本时,如在FIELD_1字段上,可以直接编写
ASSERT FIELD_1=1,” FIELD_1需要等于1”
效果和上文中的问卷级脚本类似。
注释行必须以/字符开始。以/字符开始的行在执行脚本时将被忽略。例如:
JUMPS /跳转
1 FIELD_1
2 FIELD_2
3 FIELD_3
END
设置一个命令块,其中的命令是在当前变量录入完毕后和/或光标移到另一个变量时执行。AFTER ENTRY是一个块命令,必须以END 结束。如果命令出现在变量块中,即使没有放在AFTER ENTRY块中,这些命令仍被视作AFTER ENTRY块命令。例如以下两段脚本,执行结果相同,当光标离开当前字段时,如果FIELD_1为0,则跳转至FIELD_2。
AFTER ENTRY
IF FIELD_1=0 THEN
GOTO FIELD_2
ENDIF
END
设置一个命令块,其中的命令是在保存一条新的或者修改了的记录前执行。AFTER RECORD 命令通常用在问卷级脚本中,检查数据是否录入正确。如果在AFTER RECORD 命令块中执行GOTO 命令,那么当前记录将不被保存。
在下面的例子中,如果FIELD_1为“1”且FIELD_2为空,则程序会自动跳出一个警告框,光标移到FIELD_2变量上,该记录暂不被保存。
AFTER RECORD
IF (FIELD_1=1) AND (FIELD_2="") THEN
HELP "题2不能为空"
GOTO FIELD_2
EXIT
ENDIF
END
设置一个命令块,其中的命令是在当前变量激活,但尚未录入时执行。
在下面的例子中,当光标移至当前字段,开始执行BEFORE ENTRY命令块中的语句。如果FIELD_1为2,则光标直接跳转至字段FIELD_2。
BEFORE ENTRY
IF FIELD_1=2 THEN
GOTO FIELD_2
ENDIF
END
设置一个命令块,其中的命令是在一条新纪录开始,但尚未录入任何数据时执行。通常用在问卷级脚本中。下面的例子中,当开始录入一条新纪录时,先执行BEFORE RECORD命令块中的语句,将当前日期赋给字段FIELD_1。
BEFORE RECORD
LET FIELD_1=TODAY
END
停止执行并离开一个命令块。使用EXIT,可以使程序不必继续执行后面长长的命令。例如下面的命令块,当FIELD_1为1且FIELD_2为空时,弹出一个提示框,程序终止,不在继续运行后面的命令。
AFTER RECORD
IF (FIELD_1=1) AND (FIELD_2="") THEN
HELP "题2不能为空"
EXIT
…
ENDIF
END
令光标移到指定的变量上去。
GOTO FIELD_3 /跳转至FIELD_3
GOTO WRITE /跳转至“保存”按钮,终止数据录入
使用该命令可以自动弹出一个消息框,消息框的内容由问卷定制人员自行指定。点击消息框的“确认”按钮继续数据的录入。有4种不同类型的消息框:信息(information)框、警告(warnings)框、确认(confirmation)框和错误(error)框。如果没有指定消息框的类型,程序会按照信息框来显示。指定消息框的类型,无需写类型的全称,只用第一个字母表示即可(例如,“C”表示确认框)。在消息文本中,插入“\n”可以使其后面的文字另起一行显示。消息框举例如下:
HELP “This is the information text” /信息框
HELP “This is a \n two-line warning box” TYPE=WARNING /警告框
HELP “This is also a warning box” TYPE=W /警告框
HELP “Please confirm” TYPE=CONFIRMATION /确认框
HELP “You made an error!” TYPE=ERROR /错误框
IF…THEN命令块必须以ENDIF结束。IF…THEN命令的结构是:
IF < condition expression > THEN /如果条件表达式为真
< commands to execute if expression is true > /则执行命令
ENDIF
或者是:
IF < condition expression > THEN /如果条件表达式为真
< commands to execute if expression is true > /则执行此部分命令
ELSE /否则执行下面的命令
< commands to execute if expression is false >
ENDIF
IF…THEN命令块中,条件表达式必须有布尔逻辑结果(即“真”或“假”),条件表达式可以包含几个部分,之间用AND或OR连接,每部分必须用圆括号括起来。例如:IF (FIELD_1=1) AND (FIELD_2=””) THEN…ENDIF。执行的命令可以写成几行,其中也可以包含其他的IF…THEN命令(即嵌套的IF语句),如下面的例子。
AFTER ENTRY
IF FIELD_1=1 THEN
IF FIELD_2=2 THEN
GOTO FIELD_3
ELSE
GOTO FIELD_4
ENDIF
ENDIF
END
有条件地跳转到其他变量上。JUMPS是一个块命令,必须以END结束。在JUMPS和END之间,需要指定:(1)当前变量可能录入的数值;(2)与数值对应跳转的目标变量名。
使用方法如下面的例子,如果当前变量为“1”,则跳转至字段FIELD_1;如果当前变量为“2”,则跳转至FIELD_2;如果当前变量为“3”,则跳转至最后一个变量;如果当前变量为“4”,则跳转至“保存”按钮,终止数据录入。
JUMPS
1 FIELD_1
2 FIELD_2
3 END
4 WRITE
END
令某个变量等于某个数值或某个计算的结果。使用方法如下:
LET FIELD_1=1 /返回“1”
LET FIELD_2=FIELD_1 /返回“1”
LET FIELD_3=TODAY /返回当前日期,如“11/28/2012”
LET FIELD_4=((15/2)>4) /返回“true”
LET FIELD_5=((15/2)<4) /返回“false”
保证当前变量必须录入。在控件级脚本中使用。在提交数据时对当前变量进行校验,如果为空则弹出提示框提示该值不能为空。控件属性中可以定义该控件是否“值可以空”,故不建议使用MUSTENTER。
为变量定义一组允许录入的数值。此脚本也可以在控件的属性“快捷设定”中设置。脚本例如:
RANGE -5 5 /将值类型定义为整数,则允许录入-5到5之间的数值
RANGE 1.0 10.0 /将值类型定义为小数,则允许录入1.0到10.0之间的数值
RANGE 11/01/2012 11/30/2012
如果在问卷级脚本中设置REPEAT,则在新的记录中,程序自动复制前一条记录的内容到当前记录;如果在控件级脚本中设置REPEAT,则在新的记录中,仅复制前一条记录中该控件的内容。此脚本也可以在问卷或控件的属性“快捷设定”中设置。
调查问卷则是指将问卷模板发布为调查任务后,供数据录入用户进行数据录入时使用的问卷实例。系统中的调查问卷是由调查问卷模板在某一时刻生成的。调查问卷生成之后,调查问卷本身不能再进行修改,并且与生成它的调查问卷模板之间也再也没有直接的关系。即修改调查问卷模板,由该模板生成的调查问卷都不会再发生任何变化。系统没有提供直接修改问卷的方法。若要对调查问卷进行修改,则需要先修改模板,再通过模板生成一份新的问卷。
调查问卷可以是基于问卷模板生成,也可以是EpiData模板直接导入系统。实际中,使用问卷模板生成调查问卷应用较多。
“新建调查问卷”是指基于问卷模板生成调查问卷。在“定制管理”下拉列表选中“新建调查问卷”。系统切换到新建问卷界面,点击模板ID的“选择”按钮,弹出问卷模板列表,选择需要生成问卷的模板。保存后再进入浏览调查问卷界面,看到新生成的问卷已经在列表中。
在“调查问卷管理”菜单中选中“导入EpiData问卷”,如下图所示。在右侧窗口出现“调查问卷导入”界面,填写好调查问卷名和调查问卷描述,直接点击“选择”按钮选择本地的EpiData文件(系统当前仅支持导入一个REC文件和CHK文件),并确认是否将该问卷共享给其他人,然后点击保存按钮,即可创建新的调查问卷。在“浏览调查问卷”界面可以看到问卷类型为“EpiData问卷”。
只能将epidata问卷导入为调查问卷,而不能导入为可编辑的调查问卷模板。
在“浏览调查问卷”界面,点击“导入”按钮,即可进入“调查问卷导入”(XML文件)的界面。填写好调查问卷名和调查问卷描述,直接点击“选择”按钮选择本地的问卷文件(XML文件),并确认是否将该问卷共享给其他人,然后点击保存按钮,即可创建新的调查问卷。此处导入的XML文件可以从数据库或服务器中导出。更多信息请参见本文档参考部分。
用户可以将在调查问卷中经常使用具有关联性的一组变量以组件的形式保存下来,下次在需要使用此组变量时直接引用这个组件即可快速完成这组变量的设计。这部分的功能特性将在组件管理模块中详细介绍。
举个例子来讲,如果用户经常设计与人相关的调查问卷,那么可以将常用的人口学信息:姓名、性别、年龄、出生日期、身份证号码等信息设计为个人信息的组件,并可在组件内直接设置好身份证号码和出生日期、性别、年龄之间的逻辑校验关系。在设计问卷时,直接插入此组件到问卷中,可帮助用户省略了重复设计的巨大的工作量。
组件设计界面和调查问卷设计界面类似,可以使用系统所有的支持的控件进行组件的设计,也可以加入数据校验和显示操作的脚本。组件设计效果如图 46。
和调查问卷模板设计界面不同的是,在组件设计界面,组件的属性只有【组件名】、【组件描述】和【是否共享】三项。
组件设计好之后,在组件设计界面或者调查问卷模板设计界面的左上角,点击左上角【组件】按钮,即可弹出组件选择界面。选择需要插入的组件,点击后面的【选择】按钮,即可将选中的组件插入到当前问卷模板或者组件。
需要注意,由于组件内的各个控件的编号和名称都是固定的,因此如果需要在当前调查问卷模板内插入多个组件,请注意修改各个插入的控件的字段编号及其关联的脚本。对插入后的控件进行修改并不会修改原组件。
调查问卷设计完成之后,需要将调查问卷发布,最终的数据录入用户才能登录系统并且录入数据。支持在一次调查中发布多个调查问卷,所有的调查问卷都共享同一组用户和权限设置控制。一次调查对应于系统中的一个调查任务。每个调查任务都有一个独立的网址入口,以防止最终用户登录到错误的调查任务中。
在问卷设计定制模块,在调查任务管理主菜单中,单击【新建调查任务】菜单项,右边工作区显示新建调查任务界面.
在新建调查任务界面,主要属性描述如下:
一般情况下,推荐使用【单独用户】。
设置完任务属性后,点击保存,则任务创建完毕。在“浏览调查任务”界面可看到新建的任务。对于权限控制为【单独用户】的调查任务,创建此任务的用户为管理员,默认拥有所有权限。在未建立其他用户之前,只有此用户可以登录访问此调查任务。
在调查任务管理主菜单中,单击【浏览调查任务】菜单项,右边工作区显示调查任务浏览界面。可在此界面上对调查任务执行修改、删除、打开、导入、导出等操作。
在调查任务浏览界面,用户只能浏览自己创建发布的调查任务,也就是说调查任务只能被他的创建者浏览到。
在“浏览调查任务”界面的“操作”栏,可以对调查任务进行管理,包括修改、查看、删除等。这里主要介绍“修改”操作。在“浏览调查任务”界面点击“修改”按钮,即可打开任务修改界面,如所示。常见的修改主要有修改任务结束日期、问卷升级和替换等。
调查任务内的调查任务一般放置在【数据采集】菜单下,如果需要使用其他的名称,请在调查任务的【问卷分组】中填入所需要的菜单项名称。
升级问卷是用调整后的问卷替换旧的问卷,升级过程中会将旧的数据转换到新的问卷中来。升级问卷注意事项:
替换问卷是用新的问卷替代掉旧的问卷,并且清除掉旧的问卷数据。如果在被升级的问卷和旧问卷存在不兼容的情况,请使用替换问卷功能。替换问卷注意事项:
替换问卷后,需要对用户组权限进行相应修改。
只有在修改界面才能设置欢迎页类型,欢迎页设置,问卷字典绑定等功能。
调查问卷成功发布以后,系统即成功建立了一个调查任务。系统会为调查任务分配一个全局唯一的ID,同时根据这个ID,用户可以直接打开这个调查任务的登录界面。在调查任务列表处的调查任务上点击“打开”按钮,新打开的页面的网址即是此调查任务的专用访问地址。
直接在浏览器中输入调查任务的登录网址即可打开调查任务的登录界面,在登录界面中,会显示用户创建调查任务时指定的调查任务的名字。需要注意,如果允许匿名用户登录,则系统会默认无需登录直接以匿名用户登录到调查任务中,如需要切换为其他用户,请先点击右上角的退出登录按钮后再以其他用户登录。
调查任务的管理一般包含对调查任务信息的修改,为调查任务的数据录入建立用户,为数据录入用户分配权限,为用户定制报表等。其中调查任务信息的修改请上面的章节,为用户定制报表请参见数据统计章节。
在本系统中,采用了基于角色的访问控制(RBAC)来实现对用户的管理和授权。因此在本章节中主要介绍如何管理用户并且为用户授权。
创建调查任务的用户打开调查任务的网址后,直接使用其在调查问卷定制管理模块的账号和密码登录,即可登录成为此调查任务的管理员。
初始情况下,只有调查任务的管理创建者能访问并登录此调查任务。其需要先登录到调查任务中,创建用户和权限,或者审核用户祖册的账号,然后其他用户才能登录到此调查任务,进行数据录入、统计分析等操作。
调查任务创建之后,除了系统内置的用户(调查任务创建用户和匿名用户),系统内不存在任何其他用户。因此一般来说需要调查任务登录进调查任务创建数据录入账号并且为其授权,则数据录入账号才能登录进入调查任务进行数据录入。
点击【用户管理】菜单中的【新建用户】菜单,系统界面打开新建用户菜单,如下图所示。
如果不允许用户浏览其他机构的数据,请勾选【机构直报用户】。
如果需要为用户授予多个权限,请多次点击【用户分组关系】的右侧的【添加】按钮,再分别点击【选择】按钮选择需要授予的权限。
如果需要大量创建用户,使用新建用户功能一个一个的创建用户将是一个非常巨大的工作量,因此系统提供了批量创建用户的功能。系统支持按照地区编码和机构编码创建用户。
点击【批量创建用户】菜单,系统打开批量创建用户的界面,如下图所示。
如果在创建用户类型中选择【地区】,系统将创建用户名为地区编码的账号,否则使用地区编码和机构编码为每一个编码创建一个账号。
在级别中勾选上的级别的地区编码才会被创建账号。
在用户账号生成规则指定用于生成用户登录账号的模式,用{0}表示当前用户生成用户的地区编码或机构编码。如输入lr{0}yh,且四川省的地区编码为51000000,则生成的四川省省级用户的登录名为lr51000000yh。
用户名生成规则中指定用于生成用户显示名的模式,用{0}表示当前用户生成用户的地区名称或机构名称。如输入“{0}用户”,则生成的四川省省级用户的显示名为“四川省用户”。
在初始密码中设置的密码为会赋予每一个创建的用户作为其初始密码。在用户分组关系中所有选中的用户组权限会被赋予每一个创建的用户作为其用户授权。
系统支持用户自主注册调查任务账号,系统管理员审核通过授予用户登录的用户管理模式。
在用调查任务登录界面,点击【注册】按钮,系统打开服务条款显示界面,用户点击同意服务条款后打开用户信息注册界面后,用户填写注册信息保存后即完成用户信息注册。
调查任务管理员登录进入调查任务管理界面后,点击【浏览审核注册用户】,即可打开已经注册的用户的浏览界面,点击【生成用户】按钮,进入用户生成界面,如下图所示。
在注册用户生成界面,系统会装载用户在注册时填写的信息,调查任务管理可以对信息进行修改,并且对其完成授权后点击【保存】按钮即可生成账号。
在本系统中,采用了基于角色的访问控制(RBAC)来实现对用户的管理和授权。用户组对应于基于角色的访问控制模型中的角色的概念,代表一类用于所拥有的权限的集合。
权限分为两部分,一是控制对功能的访问,如新建、浏览、删除等。一是对数据访问范围的限制,比如省级用户只能访问其辖区范围内的数据,或者对病种设置为受权限控制以后,用户只能浏览查看被授予访问的病种的数据。
点击【新建用户组】菜单,系统进入用户组新建界面,如所示。
各个属性描述:
用户组名:名称
用户组描述:关于用户组的描述性文字
允许的操作:设定对于每个调查问卷的功能的访问控制。
应用程序:下拉选择问卷内的所有调查问卷的名称,包含用户管理和报表等内置的应用程序
操作:选定的应用内受权限控制的功能集合,勾选了表示允许用户使用此功能。需要注意,对于编辑、删除、查看等功能来说,其依赖与浏览功能,需要授予浏览功能才能让用户对数据进行编辑和删除等操作。
用户数据隔离:用户控制用户对浏览到的数据的功能访问控制,此选项只有在设计调查问卷模板时在问卷模板属性处勾选了【记录操作痕迹】才生效,包含三个选项:
数据权限授予:用于处理在问卷设置为授权控制的字段的权限的授权。地区编码控件默认只允许访问用户辖区内的数据;机构编码控件默认只允许直报用户访问本机构的数据,其他控件的则需要授权才能访问,否则不允许访问。
点击【浏览用户组】,系统打开用户组的浏览界面,如下图所示。
需要注意,由于面向的是问卷调查的数据处理,因此系统的所有的用户组是所有用户可以访问的。这和传统的基于角色的访问控制模型是有区别的。
调查问卷发布完成之后,需要调查人员将收集的调查问卷结果录入对应问卷,或者请被调查人员直接填写问卷。本章节介绍录入调查问卷数据的相关操作和问题。
需要注意,对任意的调查任务,系统都支持登录调查任务录入数据和直接填写问卷这两种数据填报方式。调查任务的创建者可根据被调查者等实际因素考虑采用任意一种数据录入方式,或者同时采用两种录入方式。
在实际的应用过程中,由于受被调查者的能力或者其他约束,或者受调查实施的环境(网络、计算机等)等因素的影响,被调查者往往难以直接填写问卷。如果某个调查任务的数据需要经常用户登录进行录入或者编辑,推荐采用用户登录调查任务进行录入调查问卷数据的方式。
调查问卷成功发布以后,系统即成功建立了一个调查任务。系统会为调查任务分配一个全局唯一的ID,同时根据这个ID或者使用用户创建任务指定的短网址,用户可以直接打开这个调查任务的登录界面。
调查任务登录网址的一般的形式为http://[SERVER]/dap/t/[TASKID],其中SERVER是指系统发布的服务器的域名或者IP,如http://www.dapyun.com/dap/task/1。调查任务的管理员任何获取调查任务的登录网址请参见相应的章节。
如果在创建调查任务时允许匿名用户,则初次打开时即以匿名用户登录。如果用户需要以其他用户登录,请先点击右上角的【退出系统】按钮,重新使用其他账号进行登录。
如下图所示,用户登录系统后,在主菜单区域默认打开【数据采集】主菜单,或用户设定的主菜单项目。在右侧工作区默认打开系统讨论区。
如果调查任务的创建者在创建调查任务时指定了多个【问卷分组】,系统默认打开第一个问卷分组菜单。用户如果要访问其他分组菜单,请在具体问卷分组菜单按钮上单击鼠标左键。
系统定制出来的默认的录入调查问卷的菜单名为“新建”加上调查问卷的名称,用户直接单击问卷菜单区的新建菜单名称,即可在右侧的工作区中打开数据录入界面。
调查任务的创建者应在调查任务的操作手册中注明数据填报要求,以便数据录入用户在填报调查问卷时知晓每个问卷字段的业务含义。调查问卷的设计者也可以在设计调查问卷时,在调查问卷模板的对应的控件的【提示信息】属性中填入对应的提示信息。
系统定制出来的默认的浏览调查问卷数据的菜单名为“浏览”加上调查问卷的名称,用户直接单击问卷菜单区的浏览菜单名称,即可在右侧的工作区中打开数据浏览界面,如图 64所示例。
浏览界面一般可分成两部分:
在设计调查问卷模板时,在问卷属性中指定的组合查询就是出现在查询区域的前面,如图中左上角红色框处所示。用户可以点击左侧的下拉选择控件以切换查询条件作用的字段。
是否选择控件在查询条件区显示为下拉选择框,主要是用于帮助用户处理查询全部数据的情况,如图中右上角红色框处所示。
在数据列表的标头上单击鼠标可实现按照指定字典进行排序,可重复单击实现顺序、逆序排序的切换。对应于不同的排序规则,系统显示不同的图标以供用户认知。
在数据列表区才用了分页显示数据的方式,系统默认按照每20条数据显示为以屏,称为一页。用户可以通过数据分页工具栏对数据进行浏览,也可以通过指定更精确的查询条件进行精确的查找。
在数据列表的最下方,是数据分页工具栏。数据分页工具栏中显示的信息依次为当前页数、总页数和总数据记录数。点击【导出excel】按钮,系统会将符合查询条件的全部数据以压缩文件的方式下载给用户。点击【<<】按钮显示第一页数据,点击【<】按钮显示前一页数据,点击【>】按钮显示下一页数据,单击【>>】按钮显示最后一页数据。
随着网络的发展和普通民众的IT知识的增长,越来越多的人能够熟练地使用计算机。因此对于计算机比较熟练地被调查者,可以将调查问卷的录入地址发给他们,由被调查者直接录入,从而减少代录数据带来的误差。
与此同时,随着互联网的发展,我们需要经常需要面对网络上的未知的用户发布调查问卷,对于这种需求,只能是将问卷数据录入的网址发布出去。本章节将介绍将某个问卷的数据录入功能发布成网址的方式。
调查任务的每一个调查问卷的每一个操作的功能都是可以直接输入网址访问的。功能直接访问的网址满足是如下格式:http://[SERVER]/dap/form/[TASKID]/[APPID]/[TEMPLATE]_add
。其中SERVER是服务器部署的地址或者IP,TASKID时调查任务编写的编号,APPID时问卷发布的ID(从调查任务浏览界面点击【导出excel】按钮,在导出的压缩包里打开“调查任务所属问卷”里的ID字段),TEMPLATE时设计调查问卷模板时指定的【模板编号】。
调查问卷的录入功能的网址也可以不用自己拼装而直接获得。调查任务创建用户可以登录调查任务,打开对应的数据录入主菜单,将鼠标放置到录入功能的菜单项上,系统将弹出包含直接访问网址的提示信息,
在某些显示样式下,如果用户需要复制功能放置地址,可以通过快捷键获得:
对于通过URL地址直接录入数据方式,系统支持一个额外的参数:single=true/false。当设置single的值为true时,当用户录入完一条数据后,系统将提示用户用户只能录入一条数据,否则将提示用户是否录入下一条数据。网址对大小写敏感,请注意参数之前的问号。网址带参数示例:
http://localhost/dap/form/3/1/SURVEY__add?single=true
在某些页面样式下,用户也可以直接单击二维码按钮,系统会直接弹出当前访问界面的二维码供用户扫码访问:
被调查者使用直接录入网址完成第一条的数据的填报后,如果该问卷允许用户录入多条数据,系统将弹出对话框询问用户是否录入下一条数据,点击【确定】按钮开始录入下一条,点击【取消】将进入编辑当前数据的界面,如所示:
被调查者使用直接录入网址完成第一条的数据的填报后,如果该问卷只允许用户录入一条数据,则系统提示数据已经成功保存并将关闭此窗口,然后【保存】按钮将禁用。如下图所示:
用户可以通过系统公告栏就调查任务相关的问题进行讨论。
用户点击右上角的【讨论区】即可进入系统讨论列表界面。在列表中只列出最近30天的用户发表的主题,如下图所示。
点击讨论区右上角的【发表新主题】界面,可以打开发表新主题界面,如下图所示。需要注意,只有调查任务的创建者才能设置【置顶截止日期】和【不允许回复】。设置了【置顶截止日期】,该主题将一直显示在讨论区的最前面;勾选了【不允许回复】,则只有调查任务的创建者能够回复该主题。用户填写完【标题】和内容之后,直接点【发表新主题】按钮即可发布一条新的讨论。
在讨论主题的浏览界面,在对应的主题后面点击【回复】按钮,系统将打开主题回复界面,如图 70所示。在回复区的前面将列出所有的回复,用户录入完回复内容后点击【回复】按钮即可完成主题回复,点击【返回】按钮即可返回主题列表。
在系统讨论区的上方,如果存在系统公告,则会显示一个黄色的上下滚动显示的区域。当显示到某个公告时,用户如需要了解详细信息,可直接单击打开详细信息的介绍。系统公告浏览效果下图所示。
系统公告的维护由系统管理员在问卷定制管理平台的【系统管理】主菜单项中维护管理。
对于批量创建的用户,他们的密码都是一样的,因此在用户登录时需要用户修改密码。修改密码的功能在调查任务【系统管理】主菜单项中。
点击【修改密码】菜单,系统打开修改密码界面,如下图所示,用户可以修改其显示名、密码和联系信息。修改密码是,用户先在密码的文本框内输入新的密码,然后在【重复新的密码】里填入新的密码即可。用户的创建者也可以对用户的密码进行重置修改。
系统默认登录一次的最长有效期为30分钟。如果用户在登录30分钟后长时间未操作,则用户的登录将失效。
对于一些特别复杂的调查表,如果用户填写的时间超过了30分钟,则在用户填写完成后点击保存按钮保存数据时,用户的登录已经失效。系统对这种场景做了优化,将弹出系统登录框,提示用户重新登录。一旦用户重新登录成功,则用户的数据也会被成功保存到系统中。
在本系统中,提供了对调查任务中的数据的实时查看和汇总的功能。实时数据的浏览查看通过数据浏览功能实现,而数据的统计分析汇总功能则是使用了类似于调查问卷的先定制后使用的方式进行。
在本系统中, 统计分析汇总功能操作可以分成两部分,即统计分析的定制和统计分析结果的查看功能。由于统计分析的定制功能是设置在调查任务里的,只能由调查任务的管理用户操作;而统计分析结果的查看功能则是可由普通用户操作的。因此本文将数据统计的定制和查看功能单独成为一章介绍。
统计分析的定制和结果查看功能都是包含在具体的调查任务里的,因此用户要使用统计分析的定制和结果查看功能时,都需要先登录统计分析菜单。
需要注意,如果用户在创建调查任务时未选择调查权限管理类型,则【统计分析】菜单项不会出现。
在统计分析菜单界面中,第一部分是统计报表定制的菜单,包含新建、修改、删除、浏览报表等。第2部分则是具体统计分析报表的菜单,只有用户获得授权的统计报表或者是用户设计的报表才能在此处显示出来。
在统计分析菜单中,点击【新建简单报表】,即可打开报表定制界面,如下图所示。
在统计报表定制界面,各属性说明如下:
报表名:报表的名称,用户显示在授权和报表功能处
类型:统计结果展现形式,可多选。
业务规则:列出了本调查任务内所有的可用于统计的数据规则。其格式时:[调查分组]调查问卷名称_调查问卷模板名称,便于用户准确识别在哪个调查问卷上进行统计。
查询条件:列出了选中的调查问卷中的所有的可用于查询条件的控件。只有在控件的属性中包含【查询字段】属性的控件才会出现在此处。和勾选了【查询字段】类似,在此处勾选了的字段会作为统计报表的查询字段出现在统计报表数据的查看界面。
数据值:用于计算统计值的设置。
分组列:用于纵向或者横向展开的数值设定,对应不同的字段有不同的分组规则:
数据约束:分用户授权的数据权限类似,用户统计报表的默认数据约束,这里可以设置任意的字段作为约束。
统计报表的属性的在统计报表结果的展示页面的位置如下图所示。
点击【浏览简单报表】菜单,可以打开浏览简单报表的列表界面。在列表界面了列出了本调查任务用户定制的全部报表。除去修改、查看、删除等功能外,还提供了一个【预览】功能。点击预览功能,即可打开该简单报表的实际运行界面,以便用户在设计时查看实际的运行效果。
完成简单报表的定制功能之后,最终用户还不能运行查看定制好的报表。用户需要获得简单报表的授权才能在报表功能处列出此报表的菜单。
在用户组管理处管理统计报表的授权时,应用程序项目应该选择【统计分析】项,在操作处会列出该调查任务中所有的简单报表名称,如下图所示。
如果用户已经获得某调查问卷的授权,则用户可以直接在统计分析菜单下点击具体的统计分析的菜单项,直接会在工作区打开统计数据的查看界面。
统计数据的查看界面和数据列表的界面类似,页面的上部是统计数据过滤条件区域,这是由报表定制用户在设计统计报表时指定的,用户可以在其中编辑数据过滤条件,然后【查询】按钮即可应用查询条件进行数据分析汇总。数据列表下面是结果展示区域。界面示例下图所示。
在统计分析功能处,系统预置了一个数据表对比的功能,用于辅助用户完成双录入核查等情况下的两个调查问卷数据之间的比对工作,界面示例如下图所示。
本部分包含系统各个模块和功能的详细使用说明。本部分的内容仅供用户在实际操作时参考使用。如需要介绍系统的操作流程和操作步骤,请阅读本文档简明操作部分。
本章节包含适用于调查文件定制管理和具体调查任务内的数据录入、系统管理等系统模块的通用性信息介绍。
本系统的主要功能都是通过用户使用浏览器访问系统具体功能从而为用户提供服务,并保存用户提交的数据。因此系统的兼容性主要是介绍能够准确的使用系统的各个功能的浏览器的软件名称及其版本。
本系统主要功能都是在Windows 平台进行开发,并且在安卓、IOS等移动操作系统进行了少量的验证性测试,因此如无特殊的声明,系统的兼容性都是指在Windows 操作系统之上的浏览器的兼容性。对于在Windows 平台上兼容的浏览器,理论上对其Linux、Unix、Mac OS 等其他操作系统发行版本是支持的,但是由于成本等因素我们未进行验证。
本系统在开发时主要使用谷歌公司Chrome 浏览器(俗称谷歌浏览器,详细信息请参见http://www.google.cn/intl/zh-CN/chrome/)和微软的Internet Explorer浏览器(简称IE 浏览器),在发布时会使用Mozilla Firefox 浏览器(俗称火狐浏览器,详细信息请参见http://www.firefox.com.cn/)进行验证测试。当遇到用户报告的在苹果公司Safari浏览器使用的Bug,我们会尝试修改。
在用户使用本系统时,我们推荐使用谷歌浏览器版本64 以上,或者使用IE浏览器版本10以上。用户可以使用IE 浏览器版本11 及其以上版本以及谷歌浏览器、火狐浏览器和Safari 浏览器的最近版本访问系统。使用最新版本的浏览器访问系统,将获得更快的操作速度,并且获得最大的系统兼容性和稳定性。
对于当前的各种机遇上述浏览器进行二次开发的浏览器软件,如搜狗浏览器、QQ 浏览器等,我们未进行功能验证。请用户尽量使用上面章节中介绍的浏览器进行功能操作。本系统提供的功能我们都尽量确保用户在安卓和IOS 等移动操作系统上使用系统自带浏览器可以操作。对于其他的浏览器,我们未做功能测试和验证。
本系统在调查问卷布局实现上采用的是自动适应浏览器所在计算机的分辨率的算法实现,因此理论上本系统支持所有的主流的分辨,但是本系统的功能测试主要在1920x1080 以及1440x900 等分辨率下进行测试。
在使用本系统进行调查问卷的设计时,推荐使用1920x1080及以上的大分辨率的计算机进行操作。使用大分辨率的计算机进行调查问卷的设计时,用户将获得更好的界面的操作性和用户体验。
用户完成调查问卷设计后,请在调查问卷发布的目标用户的主流分辨率上进行预览并且进行调整,以便数据录入用户获得最好的数据录入体验。在大分辨率下设计的调查问卷,在小分辨率的计算机会遇到原本一行内的控件折行显示等问题。
本系统主要通过HTTP 协议对外提供基于网页的功能服务,因此在任何支持HTTP 协议的IP 网络上都可以正常访问本系统所提供的各项功能。
用户在操作系统时,应使用快速、稳定的网络链接。特别是在进行文件上传、数据导入等大数据量的操作时,网络的时断时续将可能导致数据上传等操作彻底不可用。
系统支持使用http和https访问,如需要使用https访问,则需要系统在部署时额外部署https访问时的证书等。
在本章节中,控件是指在系统中的用于用户在操作某项数据时的界面操作对象。在本系统中,任何控件都具有两个形态:编辑状态和显示状态。其中在调查问卷的查看和数据列表功能中,控件都是以显示状态输出;而在数据录入和编辑状态下,控件处于编辑状态。这里的所说的操作方法如无特殊说明,都是指数据处于编辑状态下,用户录入和或者修改数据时的操作方法。
在系统中,文本框控件可用于用户录入字符串、数字、密码等信息。在录入数据时,用户可以通过鼠标点击或者键盘导航等方式使目标文本框控件处理获得输入聚焦的状态,然后可以通过敲击键盘或者通过粘贴等方式录入数据。
用户使用文本框录入密码信息时,或者该字段是保密字段且用户不是该条记录的创建者时,用户录入的信息将不会显示在文本框控件中,而是以星号(*,随操作系统的不同而不同)的方式显示。用户在设计问卷时如果在该控件的【文本行数】属性中输入了大于1 的数值,则该控件将显示为多行显示状态,并且所占的行数同用户在【文本行数】属性中指定的数值。默认情况下,该控件所占的宽度同用户在设计问卷时指定的【字段长度】属性。但当指定的【字段长度】属性大于60 时,将最大以60 的宽度显示。当该控件被用于子表控件内时,无论用户指定的【字段长度】属性的值为多大,该控件都是将占满系统为其分配的显示宽度。
当该控件用户字符串的录入,并且作为查询条件时,用户可以输入特殊字符以达到模糊匹配的效果。其中星号(*)表示匹配任意长度的任意字符,问号(?)表示匹配一个任意字符。如11*表示匹配任意以11 开始的字符串,11?表示匹配任意一个以11 开头的长度为3 的字符串。
当该控件被用于数字类型的数据录入时,用户则只能录入数字和小数点。如果用户在设当该控件被用于数字类型的数据录入时,用户则只能录入数字和小数点。如果用户在设计问卷时为该控件指定了格式,当用户录入数据后该控件失去焦点时,如果用户录入的数据不符合要求,系统将提示错误并将使该控件重新获得焦点。
当该控件在问卷设计时【数据类型】属性值为“是否(布尔型)”时,用户只有录入1或者Y 或者true 时其值存储为逻辑真值,否则为逻辑假值。
当该控件在问卷设计时【数据类型】属性值为“日期”时,用户可以按照“yyyy-MM-dd”的格式接受用户录入日期,用户也可以直接只录入数值,系统会对用户的录入结果执行格式化。
在用户调查问卷时,用户可以为文本框控件指定一个实现了“文本框查询录入”数据视图的数据字典。当该控件指定了数据字典后,用户在数据录入界面可以先输入模糊匹配字符串然后按下回车键或者F9 键,系统将列出符合查询条件的字典内的数据项,如下图所示。
用户可以用鼠标点击选中录入,或者通过键盘的上下光标选择然后按下回车键进行选中。如果该控件指定了数据字典,当用户录入的值在数据字典中不存在时系统将报告错误,如下图所示。
如果需要自动生成编码,则在“自编码格式”中输入编码模式即可,编码模式为支持静态内容和动态内容,其中动态内容以大括号{}包含起来,支持三类动态内容:
如常见的编码是 “国{yyyymmdd}{####}”,则生成的编码为 国202002020001.
日期录入控件用于帮助用户录入或者使用日历选择录入包含年月日的日期的控件。日期录入控件一般由两部分组成:可以输入日期的文本框和弹出日期选择的按钮。
一般需要为日期录入控件指定日期显示的格式,在中国一般使用yyyy-MM-dd 的格式。其中yyyy 表示4 位数的公元年数,MM 表示从01 到12 的2 位的月份,dd 则表示从01 到最大31 年的月内日期,短横线(-)是日期的分段符,也可以使反斜杠(/)分隔符。用户可以定制问卷自定义日期,如年月、年月日、年月日时、年月日时分、年月日时分秒等。
用户可以在前面的文本框里直接录入日期:可以按照指定的格式录入日期,如输入2012-12-11;也可以不输入段分隔符而直接输入数字表示的日期,如20121211,系统会自动按照指定的格式格式化成对应的显示方式。如果用户以纯数字的方式录入日期且未完全录入日期时,系统会默认以当前日期补充完用户未录入的部分。如用户设定以年月日格式录入日期,则当用户录入完2011 时,系统会自动将数据格式化成2011+当前日期。
用户也可以通过点击文本框后面▼按钮弹出日历选择框来根据日历选择日期录入。在弹出的日期选择框中,点击【<】按钮日历框将加载前一个月的日历;点击【>】按钮日历框将加载后一个月的日历。点击【清空】按钮日历框将自动隐藏并且清空文本框中已有的数据。点击【今天】按钮,系统将将今天的日期填入到日期录入控件中并且隐藏日历框;点击【关闭】按钮系统将直接隐藏日历选择框。用户可以通过日历框中上部的年和月的下拉框快速定位到对应的年份和月份。
下拉选择控件用于在较小的屏幕范围内从指定的标准数据字典内选择一项作为输入值。下拉选择控件保存的值时用户在数据字典内指定的存储字段,而在界面上显示则是用在数据字典内指定显示字段。
默认情况下,下拉选择控件的输入值为空,用户可以通过点击下拉选择控件弹出选项来进行选择。如果当用户已经选择某项数据要进行清空数据时,请点击控件在弹出的选项中选中第一项空白项即可清空录入的数据。
默认清空下,下拉选择占用的屏幕控件宽度为数据字典内最大的显示项的字符宽度。下拉选择最小占用宽度不会小于40 像素。
下拉选择控件可以和一个系统级别的固定值的数据字典进行绑定,也可以和问卷内的包含的固定值的数据字典绑定。当和固定字典绑定时,控件内的选项是固定不变的。在问卷定制时,可以将控件的【联动项目】属性设置为问卷内的一个多项选择控件或者列表选择控件的编号,则当被指定的控件的选择项发生变化时,该下拉控件内的选项也会随之发生变化。
是否选择控件用于录入逻辑真值和假值的录入,主要可用户只有两种状态的变量的录入。是否选择控件默认初始的值为逻辑假,因此即使在用户未点击输入的情况下调用ISBLANK 函数也是回返回逻辑假值(False)。
默认情况下,是否选择控件选中和未选中状态下查看状态显示的值为是、否。可以通过在调查问卷定制界面下在其【数据字典】属性中选择一个特定的数据字典由于输出特定的字符。逻辑真值的表示可以用数字1 或者字符串“Y”或者true 作为其保存值,逻辑假值可以用数字0 或者字符串“N”或者false 作为其保存值。例如在【数据字典】选择为自定义字典时,自定义字典可以通过下列值让其输出为特殊的显示名称。
在脚本中为是否选择控件赋值时,可以使用数字1 或者字符串“Y”或者true 设置其处于选中状态,用数字0 或者字符串“N”或者false 设置其为未选中状态。例如对于字段编号为FIELD_YN 的是否选择可以使用以下脚本设置其处于选中状态:
FIELD_YN=TRUE
多项选择控件用于在特定数据字典下选择多项字典值的数据录入控件。选中项的值之间用逗号连接并且保存起来。
可以通过在定制调查问卷时设置【每行选项数】属性设置其输出格式。当【每行选项数】属性的值为1,控件每输出一个选项即换行。
多项选择控件可以和一个系统级别的固定值的数据字典进行绑定,也可以和问卷内的包含的固定值的数据字典绑定。当和固定字典绑定时,控件内的选项是固定不变的。在问卷定制时,可以将控件的【联动项目】属性设置为问卷内的一个多项选择控件或者列表选择控件的编号,则当被指定的控件的选择项发生变化时,该多项控件内的选项也会随之发生变化。如果在数据字典中的某项的保存值为空时,则该选项只做为文本显示界面上。
多项选择控件支持在每个选项上关联显示其他控件,如上图所示。可以通过点击具体选项,使选项处于选中状态,然后在选择添加新的控件,则新添加的控件则和该选项进行关联,并且显示在选项后面。每个选项只能关联显示一个控件,如果需要关联显示多个控件,请使用容器类控件作为其关联控件,然后将其他控件加入到容器控件中。
单项选择控件用于在特定数据字典下选择多项字典值的数据录入控件。选中项的值之间用逗号连接并且保存起来。
在单项选择控件的选项上单击鼠标即可选中此选项。此时如果其他选项处于选中状态,则会取消其他选项的选中状态。如果在已经选中的选项上单击,则该选中的选项的状态会被取消。
可以通过在定制调查问卷时设置【每行选项数】属性设置其输出格式。当【每行选项数】属性的值为1,控件每输出一个选项即换行。
单项选择控件可以和一个系统级别的固定值的数据字典进行绑定,也可以和问卷内的包含的固定值的数据字典绑定。当和固定字典绑定时,控件内的选项是固定不变的。在问卷定制时,可以将控件的【联动项目】属性设置为问卷内的一个多项选择控件或者列表选择控件的编号,则当被指定的控件的选择项发生变化时,该单项选择控件内的选项也会随之发生变化。如果在数据字典中的某项的保存值为空时,则该选项只作为文本显示界面上。
单项选择控件支持在每个选项上关联显示其他控件,如所示。可以通过点击具体选项,使选项处于选中状态,然后在选择添加新的控件,则新添加的控件则和该选项进行关联,并且显示在选项后面。每个选项只能关联显示一个控件,如果需要关联显示多个控件,请使用容器类控件作为其关联控件,然后将其他控件加入到容器控件中。
列表选择控件用于在特定数据字典下选中多个选项的数据录入,并可对选中的选项进行排序。列表选择控件也可以用于仅仅对数据进行排序,可以通过在定制问卷时不勾选【选项选择】属性即可。右边列表框中选项会作为控件的值被保存起来。
列表选择控件的左边的列表框显示未选中的选项,右边列表框为选中的选项,并且各个选项处于排序状态。在列表选择控件处于排序模式下,列表选择控件仅仅显示右边的选择框和排序按钮。列表控件中各个按钮的功能和操作如下:
列表选择控件可以和一个系统级别的固定值的数据字典进行绑定,也可以和问卷内的包含的固定值的数据字典绑定。当和固定字典绑定时,控件内的选项是固定不变的。在问卷定制式,可以将控件的【联动项目】属性设置为问卷内的一个多项选择控件或者列表选择控件的编号,则当被指定的控件的选择项发生变化时,该多项控件内的选项也会随之发生变化。
列表选择控件默认占用较大的显示空间,因此在定制调查问卷时,需要用户手工的设定的控件的显示的大小。可以通过设置【宽度】、【高度】属性设置大小,值可以为百分比,表示占用父控件的显示的范围的百分比,如50%。也可以使纯数字,单位为像素。
文件上传控件用于用户上传一个文件,文件名被保存到控件的值中。其他用户可以直接下载上传的文件。
文件上传控件的文件在数据保存之前被上传到服务器上。如果文件上传失败,则数据保存失败。如果文件上传成功但是数据保存失败,则文件传到服务器上并且无法直接下载或者删除。
文件上传控件采用原生的HTML 上传技术实现,不依赖Flash 或者其他第三方技术实现,因此在移动设备上也能很好的工作。在指定上传文件时,点击【选择】按钮即可打开文件选择框。由于操作系统和浏览器的实现差异,请尽量点击【选择】按钮的左上角以免操作失败。
如果要情况文件上传控件的值,请点击【清空】按钮清空。如果文件已经上传,清空按钮只是接触上传文件和当前数据的关联,上传的文件并不会被删除。
上传的文件默认存放在系统部署的根目录下的/WEB-INF/uploaded/目录下,文件存放路径为年月日/时间戳+随机数+原始文件名 如:20131009/1381330019666.501574.test.zip。
地区编码控件用于支持对中国疾病预防控制中心发布的8 位地区编码或者国家统计局发布的12 位地区编码的数据的录入。在使用地区编码时,如果控件未指定字典,控件则使用调查任务内指定的地区编码试图绑定的字典。
默认情况下,地区编码控件使用中国的8 位地区编码的数据视图,当用户在定制调查问卷时【数据字典】属性中选择第一项效果相同。如果要使用国家统计局发布的12 位区划编码视图,请在定制调查问卷时【数据字典】属性中选择第2 项【国家统计局区划编码】。除此之外,在【数据字典】属性中还列出了系统内内置的所有符合【地区编码】和【国家统计局区划编码】数据视图的全部的数据字典。用户一旦选中了某个数据字典,则该控件将一直使用此字典,而无论在调查任务或者系统中地区编码数据视图绑定的是哪个数据字典。
在用户定制符合【地区编码】的数据字典,还可以为地区编码的结构指定编码形式。编码形式可以有两种方式,一是全数字的组合,每个数字依次表示每段(每级)的编码的长度,如果标准的中国疾病预防控制中心发布的8 位地区编码的编码格式为2222。在此模式下,用00 表示为上级编码在此级缺少的值,如省级编码在市级的编码则为00。还有一种模式则是用小数点和数字的组合形式,每个数字仍然是依次表示每段(每级)的编码的长度,但是和第一种模式不同的是如果高级的编码在低级的段上值可以为空,且每段之间用小数点分隔。如编码格式为2.2.2,则可能存在的编码为11、11.11、和11.11.11。
地区编码控件默认和用户本身的地区编码绑定,默认显示为用户本身所在的地区编码级别。如果设置地区编码控件为【受权限控制】,则在用户默认只能查看用户所在地区内的全部数据。受权限控制的地区编码控件无需授权用户即可查看其辖区内的全部数据,如果需要进行特殊的控制才需要在数据授权处进行特殊的授权控制。
地区编码控件在录入时默认显示用户本身的地区,可以通过“上级”和“下级”按钮对地区选择进行导航选择。当在地区编码的下拉框中选中第一项时,可以通过点击“上级”按钮让下拉选择框内加载其上级地区内的所有编码。当在地区编码的下拉框中选中第一项时,可以通过点击“上级”按钮让下拉选择框内加载其上级地区内的所有编码。当在地区编码的下拉框中选中非第一项时,可以通过点击“下级”按钮让下拉选择框内加载其选中的地区及其下级地区的所有编码。
机构编码用于中国疾病预防控制中心发布的标准的9 位的机构编码的数据的录入。该控件必须和使用了标准的中国的8 位地区编码的地区编码控件配合使用。
必须在【联动项目】属性内输入与之关联的地区编码控件的字段编号。在录入数据时,在指定的地区编码控件发生变化时,该机构编码构建列出的机构列表会随之发生变化。
如果该控件被设置为受权限控制的控件,且该用户被指定了所属机构,则该框将默认显示为用户的所属机构,否则用户可以主动选择。默认情况下该控件的【受权限控制】属性为选中状态。如果该用户机构直报用户且控件的【受权限控制】属性为选中状态,该控件显示为不可编辑状态,用户不能选择其他控件。
机构编码有一个重要的属性【显示模式】。显示模式有两个选项:
地图坐标控件用于打开在线地图让用户选中具体点后记录其选中地点的经纬度坐标值。在离线录入应用中,用户可以直接录入经纬度值,或者使用系统的自动定位功能获取当前位置的经纬度值录入。
可以为地图坐标控件指定一个绑定的地区编码控件。当绑定了一个地区编码控件后,在用户新录入数据时,打开的地图界面会自动打开选中的地区编码的中心点附近。如果用户的浏览器支持HTML5 的获取坐标的新特性,在新录入数据时,程序会尝试主动获取当前用户的坐标并在地图中打开。
在定制问卷时,需要为地图控件选择所使用的在线地图服务的提供商,默认谷歌地图。推荐中国用户使用百度地图或者搜狗地图,非中国用户推荐使用谷歌地图。
用户在录入数据时,可以通过点击【选择】按钮打开地图选择界面,如所示。在地图打开后,可以通过双击地图或者数遍滚轮来进行地图的缩放操作;要选中某处地点时,可以地图上单击鼠标左键,则如中展示的红色椭圆型标记会移动到用户选择的地点,并且地图会以此地点居中显示。用户选中完成后,需要点击地图中间上部的【确定】按钮,关闭地图并且传回选中地点的坐标。要情况已经选择的地图坐标,可以通过点击【清空】按钮执行清空。
在数据录入时,值存储的方式采用逗号分隔的经纬度坐标值。需要注意,由于国家政策要求等原因,所获取的经纬度值和选中地点的实际经纬度具有一定的差异,请按照您选择的地图供应商进行修正。此差异不影响在地图中的回显坐标值。
数据选择控件一般用于在当前调查表中关联的第三方调查表的数据。在问卷定制时,使用【表间关联控件】并且【关联实现类型】属性选择关联表时,最终生成的就是数据关联控件。在调查问卷定制管理模块中,组件的选择、调查问卷选择等功能都是使用的数据选择控件。
由于当前离线录入工具的实现限制,数据选择控件只能在在线录入平台上使用。用户在定制需要使用离线录入工具的问卷,请勿使用此控件。
可以通过点击选择按钮弹出目标数据选择界面,然后点击列表中记录后面的【选择】按钮进行选择。如要清空现有数据,点击【清空】按钮即可清空。用户需要具有打开的列表的调查问卷的浏览权限才能正确浏览数据,否则提示权限错误。用户只能目标调查问卷的浏览数据权限范围内的数据。
子表容器用于向当前问卷加入一个和当前记录是一对多关系的子表。使用子表控件时,其所有的子控件都在一行内展示。
操作子表控件时,通过点击标题栏上的【添加】按钮可以新加一行数据。通过点击每行
数据后面的【删除】按钮则可以删除当前的行。
在导出excel 时,子表控件会单独生成一个csv 文件,并且通过调查表的数据ID 和主表的数据保持关联。导出excel 时,只会导出主表数据关联的子表数据。
在子表控件使用脚本时, 应使用和调查问卷一样的脚本, 即子表控件只支持BEFORE/AFTER RECORD 事件,不支持BEFORE/AFTER ENTRY 事件。在子表控件的控件上使用脚本时,如果需要访问和操作该子表内的其他控件,脚本获得时和脚本执行的行内同行的数据。在子表控件内可以访问和操作主调查表的控件。
富文本编辑器时一个在线所见即所得的格式化文本编辑器,主要用于一段经过格式化的文本的录入。在讨论区、系统公告栏、文本标签控件的文字的输入时都可以使用。
在富文本编辑器内,可以设置文本的字体、大小、颜色和对齐方式等,也可以上传并显示图片和flash,或者显示外部图片和flash。
在本系统中,支持对调查问卷和控件一级编写脚本。脚本录入时在脚本编辑器里进行的。本编辑器不仅提供脚本字符的录入,供提供对录入的脚本的以不同的颜色的功能。
脚本编辑器有两种编辑模式:
样式编辑器用于设置调查问卷或者控件的显示的样式。样式编辑器采用所见即所得的方式提供设置问卷样式的编辑功能。对于每个调查问卷或者控件,对于其在数据编辑界面、查询界面、列表界面等实用场所的不同,系统提供了多种主题的编辑方式。
通常情况下,样式编辑器提供了如下的样式主题,其作用范围及意义如下所示:
针对每个主题,每个按钮的功能依次为:
除此之外,最下方的“橡皮擦”按钮提供清除当前问卷或者模板的所有样式设置的功能。
除去在调查问卷设计界面中支持CTRL+C、CTRL+V、CTRL+Z 键用于复制、粘贴、回复操作,在调查问卷数据录入界面,还支持一系列的键盘事件,并且提供根据键盘事件跳转到上一个或者下一个控件的键盘事件导航。
需要注意,要是键盘事件生效,必须保证一个控件处于获得焦点的状态。
在数据录入界面,支持下列键:
键盘导航是指用户在录入数据时,通过按下某个键使输入焦点从当前控件跳转到下一个控件或者上一个控件。在文本框、日期录入等控件中,当数据录入到当前控件指定的长度后,系统将自动跳转到下个控件。当系统当前支持如下的键盘按键导航。
通常情况下,系统支持如下的键盘导航:
跳转到下一个控件:回车键、Tab 键(制表键)、下光标键、右光标键
跳转到上一个控件:ALT+回车键、左光标键、上光标键
由于各个控件输入数据及实现的要求,下列控件在处理键盘导航事件时存在以下例外:
在系统中,所有的数据列表都时分页显示的,每页显示20 条数据,用户可以通过数据列表下方的分页浏览工具栏进行页面导航浏览操作。
在分页浏览工具栏中,第一个按钮【导出excel】是将数据整个列表的数据导出成数据文件供用户下载。数据文件是一个zip 压缩文件,调查问卷的数据会调查问卷的名字作为文件名保存在一个csv 文件中。如果调查问卷存在子表(见子表控件),则每个子表的数据也会保存在以子表名称为文件名的csv 文件中。子表数据和调查问卷主表数据通过调查问卷的数据主键关联。子表数据只包含当前导出调查问卷主表数据关联的数据。
在导出的csv 文件中,调查问卷的所有的控件的信息都会被导出。控件的显示名作为列名称。如果该控件绑定了数据字典(如多选、单选、地区编码、机构编码等控件),在列出输出的数据字典里指定的保存值,同时在csv 文件的最后会议两个$符号包裹控件显示名称的列,里面输出的是数据字典里显示的值。如果用户在定制问卷时勾选了追踪用户操作,则csv 文件还会包含数据新建时间、最后修改时间等信息。在分页浏览工具栏中,【<<】按钮让当前列表跳转到第一页。【<】按钮让当前列表向前跳转一页。【>】按钮使当前列表跳转到下一页。【>>】按钮使当前列表跳转到最后一页。文字信息显示的依次为当前页数/总页数(总记录行数)。
列表中的数据项是由用户在定制问卷时指定的。如果在定制问卷时,控件属性中的【列表字段】被勾选了,则该控件会作为列表的一列出现。
本章节中列出的信息为所有的调查任务(包含调查问卷定制管理模块)中的都会用到的
功能。公告栏等操作请参见本文操作教程的相关章节。
在录入或者操作管理调查任务之前,都需要先登录到调查任务。在浏览器里输入调查任务网址之后,首先打开的是调查任务的用户登录界面,在登录界面需要注意调查任务的名称。
用户在用户名文本框中输入登录用户名,在密码框中输入用户密码,在验证码框里输入验证码,然后点击【登录按钮】即可执行登录。如果登录成功,则界面跳转用户主菜单。登录失败则返回登录界面。
在用户登录界面,点击【注册】按钮,系统将跳转到系统服务条款确认界面。请仔细阅读服务条款,如果同意继续请点击【已阅读并同意】按钮,系统跳转到用户信息注册界面。
请仔细填写各项信息,然后点击【申请注册】按钮提交注册申请。请注意填写电子邮箱信息。如果用户填写了电子邮箱信息,则当用户注册被审核通过后,系统将发送邮件到此电子邮箱中通知用户。
用户提交申请后,调查任务的管理员用户可以到用户管理的浏览审核注册信息功能处审核注册信息。
在调查任务主菜单界面,上部窗口时调查任务信息窗口,显示的有调查任务的名称,当前登录用户的信息。在上部窗口的下部是分组菜单工具栏,列出调查任务内的各个功能的分组。用户可以再发布调查任务时设定。
在调查任务主菜单界面左边窗口时当前调查任务分组内的菜单窗口。用户点击分组菜单工具栏上的分组菜单项后,菜单窗口将显示对应的具体的菜单项。在菜单项上点击鼠标,在右边的工作区窗口将显示对应的操作界面。
点击分组菜单工具栏右边的【讨论区】按钮,工作区窗口将显示讨论区讨论列表。点击【退出系统】按钮,用户将退出当前登录。
用户管理功能在【系统管理】功能分组中。其包含以下入口菜单:
用户信息界面的属性如下:
用户只能修改、删除自己创建的用户。
对于其他管理用户创建的用户,用户为其增加、修改其增加的授权。
批量创建用户界面的属性如下:
如果需要生成的用户已经存在,则此操作只会将此次新增的用户分组关系附加到旧用户上。
已经审核通过的注册信息不显示在列表中,但是会在导出excel 时导出。
系统实现了类似于基于角色的权限权限管理模型,用户组即对应于模型中角色对象。用户组管理功能在【系统管理】功能分组中。其包含以下入口菜单:
一个用户可以拥有多个用户组,多个用户组之间的关系式或的关系,即用户拥有所有用户组指定的功能权限的全集,所有数据权限指定的合集。
用户组信息界面的属性如下:
用户组名:名字
用户组描述:描述信息
共享级别:默认用户创建后对其他用户不可见,但是勾选了此处够将向用户管理
辖区内的其他的指定级别的用户开放此用户组信息。
允许的操作:允许用户操作的功能.
应用程序:选择调查任务内的发布的问卷和管理模块
操作:指定的应用程序内的可控制的操作列表,允许操作则勾选即可
用户数据隔离:如果该问卷启用了“追踪操作”特性,可在此处选择:
数据权限授权:对受权限控制的字段的数据权限进行授权:需要注意,默认情况下地区编码和机构编码都是按照用户访问辖区内的数据来控制,用户不需要特殊控制。
应用程序:选择调查任务内的发布的问卷和管理模块
数据表字段:选定的调查问卷内授权控制的字段列表,选择一个
权限授权:授权的值。允许使用“操作符.值”的方式设置复杂的数据查询逻辑,支持的操作符有 “>”,“<”,“LIKE”,“=”等,如 LIKE.11*表示所有以11 开头的数据。同时可以使”${expression}”方式的脚本,脚本内可以操作用户、问卷、和调查表信息
用户只能修改和删除自己创建的用户组。用户可以浏览到别的用户共享出来的用户组。
系统内支持简单的报表定制功能,遵循的原则还是专业人员设计报表,其他用户直接查看定制出的报表查看结果。设计出的报表都是根据当前系统内的数据实时计算出的结果。除用户自己定制出的报表外,设计出的报表需要额外的授权才能访问。
简单报表定制功能在【系统管理】功能分组中。其包含以下入口菜单:
用户只能修改和删除自己设计的报表,但是可以查看别人设计的报表。用户在查看报表时,直报查看到在自己的数据权限范围内的数据。
简单报表信息界面的属性如下:
报表名:报表的名字,同时也是报表菜单项的名字
业务规则:当前调查任务的所有调查问卷主表的名字,需要选择一个用户进行统计的调
查表。
查询条件:选定的调查表里用于数据查询过滤的字段。
数值列:作为报表的统计项的定义:
列名:统计指标的显示名
字段:用以计算的调查问卷的字段(变量)
计算方法:
只计算机唯一值:如果数值已经出现过则不再参与计算
分组列:用于展开的选项的定义:
列名:显示的名字
字段:用于分组的字段。在调查问卷中所有单项选择、下拉选择、地区编码、机构编码、时间/日期都可以作为分组列,各类型字段展开规则:
展开方向:
数据约束:除去用户的数据权限外,作用于此报表结果计算上的额外的数据约束。数据约束的定义同数据权限定义
用户只能修改和删除自己设计的报表,但是可以查看别人设计的报表。
所有用户可以查看的报表都在【统计分析】菜单分组中的【统计分析】菜单下。用户直接点击简单报表的名称即可在右边工作区打开报表结果查看界面。
报表结果查看界面的上方时查询条件区域,显示用户在设计问卷时勾选的查询字段。需要注意所有数据类型是数字和日期的数据都可以按范围查询。查询区域的下方则是结果显示区域,用户可以点击【导出excel】按钮导出报表结果。
为支持传统的双录入核查等功能,系统内置了一个数据表对比的功能,界面下图所示:
查询条件区各个字段的意义及作用如下:
数据列表中各个字段的意义如下:
为实现双录入核查,请在发布调查任务时将同一个调查问卷发布到不同【问卷分组】,以便在进行数据核查时方便区分调查表。
本章节介绍系统自动的调查问卷定制管理模块的功能。
定制管理主要包含组件的设计、调查问卷模板的设计以及调查问卷的管理功能。
调查问卷管理提供了根据调查问卷模板生成调查问卷、导入epidata 文件生成调查问卷以及浏览调查问卷的功能。
导入epidata 问卷只支持一次导入一个rec 文件,不支持Epidata 的RELATE 命令带来的多个rec 文件关联的情况。并且每个Rec 文件只支持导入其直接关联的CHK 文件,不知道INCLUDE 的关联命令。CHK 脚本的支持情况请参见脚本模块的说明。
导入epidata 问卷界面属性:
从调查问卷模板中选中一个模板并且将其创建成调查问卷。用户只能使用调查问卷发布到调查任务中。
新建调查问卷界面属性:
用户可以浏览自己创建和的和别人共享出来的调查问卷。用户只能删除自己创建的调查问卷。
数据操作按钮:
页面打开后,请先点击左上角的问卷名称前面的单选框,系统会在下面显示出选中的表单。比表单样子会表单所有控件都显示的样子,并不会触发命令从而影响布局。如果使用表
间关联控件并且关联类型为主子表,一个调查问卷中可能包含多个表单。
待表单显示完成并确认无误后,请点击右上角的【打印】按钮直接打印。如果需要设置打印样式,请修改浏览器的打印设置。
在此处可以新增、修改、删除、浏览调查问卷模板,并且可以在别的用户共享出来的调查问卷模板的基础上对其进行修改并且保存为自己的调查问卷模板。
点击【新建调查问卷模板】,打开调查问卷模板的设计界面。
调查问卷的设计的详细请参见问卷设计的相关说明章节。
用户可以浏览自己创建和的和别人共享出来的调查问卷模板。用户只能删除自己创建的调查问卷模板。
问卷模板操作按钮:
用户可以新建、修改、删除、浏览组件。
点击【新建组件】,打开组件的设计界面。
调查问卷的设计的详细请参见问卷设计的相关说明章节。
用户只能修改、删除自己创建的组件,可以浏览和使用别人共享出来的组件。
点击【导出】按钮,可以组件的定义导出为xml。导出的文件可以通过列表上方的【导入】按钮导入。
发布管理主要包含对调查任务的发布、修改等调查任务相关的管理功能。
调查任务的管理功能主要用户使用已经创建好的调查问卷发布成调查任务。用户可以为调查任务指定用户和权限管理模型等。
调查任务名:名字,显示于登录界面和主菜单上
任务短网址:此调查任务的特定的URL路径。
描述:文字性描述
权限管理:指定调查任务所使用的权限及用户管理模式。值可以为空,为空时用户可以直接访问调查问卷并且使用所有功能。
系统内置(共享用户):创建的调查任务和问卷定制管理模块共享用户,但是使用此调查任务需要额外授权。注意:用户创建此调查任务,但是不是此调查任务的调查任务管理员。
系统内置(单独用户):使用问卷定制管理模块相同的管理模型,但是需要重新建立用户。创建此调查任务的用户是此调查任务的调查任务管理员,可以直接登录到调查任务里进行用户管理等工作。
启用匿名用户:【权限管理】选择为【系统内置(单独用户)】时可见。如果启用匿名用户,则所有未登录的用户都默认以系统建立的【匿名用户】账号登录系统。调查任务管理员可以通过对【匿名用户】账户的权限管理来控制未登录系统的用户的权限:
注册用户自动审核: 在【权限管理】选择【单独用户】时此选项可用。勾选之后用户在注册用户之后,无需系统管理员审核即可自动创建新用户,并为新用户关联到用户组【自动审核用户用户组】。
任务开始日期:如果输入了日期,则小于此日期此调查任务不可访问。
任务借宿日期:如果输入了日期,则大于此日期此调查任务不可访问。
操作手册:如上传了操作手册文件,调查任务用户可以在调查任务里主菜单上下载。
调查任务所属问卷:调查任务里包含的调查问卷
在调查任务的主界面显示为不同的主菜单项。默认为数据采集。
视图映射:设置调查任务的数据视图映射,如果不设置,即使用系统默认的数据视图映射,即问卷定制管理模块的数据视图设置。
用户只能浏览自己发布的调查任务。
点击【打开调查任务】按钮,用户可以打开调查任务的登录界面。用户可以将此网址发布给需要登录的用户。
点击【修改】按钮,进入调查任务的修改界面,用户可以修改调查任务的基本信息,或者升级、替换调查问卷。
点击【导入数据】按钮,打开调查任务的数据导入界面。点击【导出】按钮可以将调查任务的问卷和数据都导出为一个文件,再在其他地方进行导入操作。导出文件里不包含用户和授权信息。
点击页面上部的【导入】按钮,可以导入一个调查任务的文件为一个新的调查任务。
在修改基本信息界面中只能修改调查任务名、描述、启用匿名用户、任务开始日期、任务结束日期、操作手册、问卷分组和视图映射等项。
页面样式:可以指定调查任务使用某个预置的显示样式。
调查数据ID 起始值:填入一个数字,则调查任务中所有的调查问卷的新建的数据的ID
将以此值开始。此功能为每个调查任务的部署设立分段ID。
变更通知:当问卷内的数据发生变化时,系统会发送一个通知给此联系信息(当前仅支持电子邮件通知)。
欢迎页类型:登录进调查任务后默认显示的页面:
在每个调查问卷ID 上点击【升级问卷】或【替换问卷】按钮,系统将打开升级/替换问卷界面。
升级和替换问卷操作类似,都是使用新的问卷替换掉调查问卷中的旧的问卷。升级问卷功能会尝试将旧的数据转到新的调查问卷中,这要求新的问卷在数据定义上必须和旧的问卷一致。比如不能出现旧问卷中字段可以为空并且在已有数据中也有空值存在;或者新加了一个必填字段等情况。
将调查任务内的某个问卷给任务内的某个问卷的某个空间做数据字典使用。
界面属性:
数据文件:必须是在调查任务浏览界面处使用导出功能导出的文件。
导入数据:如果勾选了则会将数据文件中的数据(如果有)导入。
数据文件必须是在调查任务浏览界面处使用导出功能导出的文件。
和其他调查任务不同的是,在问卷定制管理模块中,系统管理多出了数据试图管理、系统字段管理和系统公告管理三个功能。
数据试图管理可以浏览系统里所有的数据试图及其默认的映射的数据字典,并且修改数据试图默认映射的数据字典。
问卷定制管理模块只能使用默认的数据视图映射。调查任务可以自行设定特殊的数据视图映射,如果未设定则使用系统默认的数据试图映射,即问卷定制管理模块的数据试图映射。
系统默认支持三个数据视图,其中地区编码控件支持使用地区编码和国家统计局区划代
码,机构编码控件支持使用机构编码视图。
除此之外,在设计数据字典时还有一个数据视图叫【文本框查询录入】。此视图无固定结构且不需要映射设置,所有不在此列出。
点击【修改】进入修改数据试图映射界面。
修改数据试图映射界面会列出数据试图的具体的字段定义,所有有实现了此数据试图的数据字典都必须实现相同字段编码和名称以及数据类型的字段。
用户可以修改【默认数据字典项】,此处只列出了实现了此数据视图的数据字典,然后点击保存即可完成修改操作。
对于地区编码和国家统计局区划代码数据视图,中心点坐标(geocenter)字段是可选
的字段,其值为逗号分隔的经纬度值。对于机构编码数据试图,机构级别(orglevel)目前
仅支持国家级、省级、市级、县级和乡级五种单位级别,编码值依次为0、1、2、3、4。
数据字典主要用户标准化数据的统一管理。系统管理员可以将性别、名族、地区编码等标准化数据以数据字典的形式预先维护好,即省去了问卷定制用户的自行维护这些数据的麻烦,同时也避免了各个问卷之间由于数据字典的不同而带来的数据不兼容的问题。
数据字典管理提供了新建、修改、删除、浏览、管理数据字典数据、导入数据等功能。
点击【新建数据字典】,打开数据字典的设计界面。
调查问卷的设计的详细请参见问卷设计的相关说明章节。
用户只能修改、删除自己创建的数据字典。
点击修改按钮可以打开问卷设计界面,用户可以修改数据字典的结构定义。需要注意,如果修改了数据字典,则以前建立的数据将会被清空。
点击【导出】按钮可以导出数据字典的定义文件为xml 文件。
点击【编辑数据】按钮,可以打开数据字典的数据列表界面。在数据字典的数据列表界面,点击【新增】按钮可以加入新数据,也可以修改、删除、导出数据字典的数据。
数据导入功能支持导入csv 文件或者zip 压缩的csv 文件。在zip 文件里的csv 文件文件名必须为数据字典的名称。建议使用数据字典的列表上的【导出excel】功能导出文件,然后将数据写入对应的列,然后再将此文件上传导入。
如果勾选了【是否清空原有数据】,则导入前会将以前的数据清空。
在公告区的上方有系统公告的浏览区。系统公告的发布和管理是在此功能处提供的。
用户可以在公告上提交相关文件供用户下载。
如果填写了【有效截止日期】,则当当前日期大于此日期后,公告栏即不再显示此公告。
用户可以浏览所有公告,包含已经失效的公告。
模板编号:模板的编号,用于在数据库创建表和脚本里访问使用
模板名:模板额显示名
模板描述:文字性描述
主键名:主键的显示名
主键可查询:勾选则在列表界面出现主键的查询条件
分页录入:是否启用分页式录入。如果启用用分页式录入,则在数据录入时,调查表的每一行都显示为单独的一页,用户可以通过上一页、下一页按钮进行页面之间的导航。定制用户也可以通过在页面以脚本控制跳转到某控件,则该控件所在的页会自动显示出来。如果用户需要在一行内显示多行内容,可以使用多行容器、矩阵容器等容器类控件。
样式:问卷级的样式设置。默认显示基础设置,可以通过后面的小方框按钮展开全部设置。
文本列宽:设置调查问卷数据录入界面名称列的宽度,可以使百分比,也是数字(单位为像素)。默认宽度为25%。
数据列表样式设置:设置数据在列表时额外的样式设置,以第一条起作用的规则为主。
文本行高:调查问卷录入界面中每行的高度,可以为百分比,表示和默认数值之间的关系。也可以为数字,单位为像素。默认为30。
逻辑删除:如果勾选则用户在删除数据时并非直接删除数据,而将其状态设置为已删除状态。默认列表查询时不可见,但导出excel 时可以导出。
查询删除状态:【逻辑删除】属性勾选时可见,如果勾选则在查询条件区增加一个对查询状态的查询。
允许的操作:对当前调查问卷的数据支持的操作:新建、修改、删除、查看、浏览、审核、导出、打印、暂存,勾选则该功能在调查问卷中可见
新建功能名:【允许的操作】属性中【新建】项勾选时可见,可以使用逗号分隔的字符串创建多个修改功能,同时配合脚本完成简单的流程操作。
修改功能名:【允许的操作】属性中【修改】项勾选时可见,可以使用逗号分隔的字符串创建多个修改功能,同时配合脚本完成简单的流程操作。
删除功能名:【允许的操作】属性中【删除】项勾选时可见
查看功能名:【允许的操作】属性中【查看】项勾选时可见,可以使用逗号分隔的字符串创建多个修改功能,同时配合脚本完成简单的流程操作。
查询功能名:【允许的操作】属性中【查询】项勾选时可见
审核功能名:【允许的操作】属性中【审核】项勾选时可见,可以使用逗号分隔的字符串创建多个修改功能,同时配合脚本完成简单的流程操作。
上报功能名: 【允许的操作】属性中【上报】项勾选时可见,上报功能是指根据指定的字段的值新增或者编辑数据,如根据字典是用户和日期,则默认以用户和当天日期进行判断,如果上报过则修改已经存在的数据。
上报依据字段:上报功能中数据的确认字段的字段编号,多个编号之间以英文逗号分隔,可以使用user$id指代填报数据的用户的ID,user$name指代填报的数据的用户的名称
查询审核状态:勾选则可以再列表的查询区中增加对审核状态的查询
记录操作痕迹:勾选时则会增加新建用户ID、新建用户名、新建时间、最后更新用户id,最后更新用户名、最后更新时间等字段;如果启用了审核功能,则会增加审核用户id,审核用户名、审核时间等字段;如果启用了逻辑删除功能,则会增加删除用户id,删除用户名、删除时间等字段。这些字段都会在用户操作数据自动填充,并且在导出excel 时导出。
查询操作时间:【记录操作痕迹】勾选时可见。如果勾选在查询条件区增加【记录操作痕迹】勾选时各个时间的查询。
共享:是否可以让他人可见。其他人只能查看或者以此新建一个调查问卷模板,不能修改此调查问卷模板。
脚本:问卷级的脚本
组合查询:当前支持对地区编码和日期录入控件的将多个控件组合成一个查询条件的组合选择式查询。
唯一性限制:
字典编号:模板的编号,用于在数据库创建表和脚本里访问使用
字典名:显示名
字典描述:文字性描述
主键名:主键的显示名
主键可查询: 是否在列表界面增加对主键的查询条件
数据视图:当前数据字典支持的数据试图:
查询字段:数据视图选择为文本框查询录入时可见。指定用户输入的查询条件用户哪些字段的查询。
编码规则:当数据试图选择为地区编码时可见。编码形式可以有两种方式,
存储字段:保存在调查表中的值的字段
显示字段:查看和导出excel 时显示的值的字段
共享:是否可以让他人可见。其他人只能查看或者以此新建一个数据字典,不能修改数据字典。
此处列出的是所有属性的参考。需要注意,当控件出现在容器类控件的内部时,其某些属性可能不可见,编辑其值也不产生任何作用。
当控件作为调查表的直接子控件,或者作为多行容器的子控件时,在控件的左侧会显示出控件的名称。该名称是一个文本标签控件,其编号为控件的控件编号加上”$NAME”。举例来说,如果想要隐藏掉Field_1 名称,可以使用HIDE Field_1$NAME 的命令。
如果在控件的属性中设置了前置文本或者后置文本,在最终生成的问卷中会为前置文本和后置文本创建一个文本标签控件(前置文本的文本标签控件的控件编号为控件的控件编号加上”$PREFIX”,后置文本的文本标签控件的控件编号为控件的控件编号加上”$SUFFIX”),并且使用单行容器将控件本身和生成的文本标签封装在一起(单行容器的控件编号为控件的控件编号加上”$BLOCK”)。在使用HIDE 等命令操作控件时,需要根据实际的需要指定实际的控件编号。例如当控件Field_1 的有前置文本或者后置文本时,想要隐藏掉Field_1 及其相关的所有内容,需要使用 HIDE Field_1$BLOCK 这个命令。
此处列出所有控件不包含在公共属性中的特性属性及其作用。
文本标签的【显示名】属性编辑框时富文本编辑器。
文本标签在脚本中只可用于控制显示状态,不能用于获取值。
数据类型:文本框内可以输入的数据的类型
小数位数:数据类型为小数时可见。小数点后数字的位数。
文本行数:数据类型为自由文本时可见,如果输入值大于1 则显示为多行文本框控件。
格式:数据类型为自由文本时可见。通过正则表达式的形式约束字符串的格式。可以在系统字典类的TEXT_FORMAT 字典里新增选项。
保密字段:如果勾选了,则只有数据录入者和调查任务管理员可以查看已经录入的数据里此字段的值。
自编码格式:自动生成编码的编码模式,编码模式为支持静态内容和动态内容,其中动态内容以大括号{}包含起来,支持三类动态内容:
如常见的编码是 “国{yyyymmdd}{####}”,则生成的编码为 国202002020001.
格式:日期显示的格式。在中国一般使用yyyy-MM-dd 的格式。其中yyyy 表示4 位数
公元年数,MM 表示从01 到12 的2 位的月份,dd 则表示从01 到最大31 年的月内日期。
联动项目:可以输入当前问卷多选控件或者列表选择控件的字段编号。则被指定的控件的选中项左为此控件的数据字典。
联动项目:可以输入当前问卷多选控件或者列表选择控件的字段编号。则被指定的控件的选中项左为此控件的数据字典。
联动项目:可以输入当前问卷多选控件或者列表选择控件的字段编号。则被指定的控件的选中项左为此控件的数据字典。
无特殊属性。
无特殊属性。
数据字典处只列出系统内所有实现了地区编码数据视图的数据字典。
数据字典:处只列出系统内所有实现了机构编码数据视图的数据字典。
显示模式:机构编码控件和地区编码控件关联显示的方式。
联动项目:必须是问卷内地区编码控件的字段编号。
通过表间关联控件录入的数据,且选择关联类型是关联表且关联关系是一对一时,在空间上默认显示的内容是如下规则寻找:如果关联的表单里有字段编号是以”dname”结尾的控件,默认显示它的值;如果关联的表单里有字段编号是以”name”结尾的控件,默认显示它的值;如果关联的表单里有字段编号是以”name”结尾的控件,默认显示它的值。
无边框:勾选时则在调查问卷内该矩阵容器的不显示边框
显示列名:是否输出列名。
列名:通过此子表控件的行数指定矩阵容器显示多少列
显示行名:是否输出行名
行名:过此子表控件的行数指定矩阵容器显示多少行
列表宽度:整个矩阵控件显示的宽度。可以为百分比,表示其占父控件显示高度的百分比;或者输入纯数字,单位为像素。
无特殊属性。
无特殊属性。
在系统中中,为了兼容Epidata 软件生成的Rec 文件和Chk 文件,在Epidata 软件的Chk 脚本的基础之上,适应Web 系统的特性,提供了一套兼容chk 脚本的脚本引擎。用户可以像在Epidata 软件中编辑chk 脚本一样,在系统中为调查表和控件设置各个脚本。脚本的录入和编辑请参见问卷定制的相关章节。
本章将介绍脚本的技术信息,并且列出脚本支持的所有特性。
在系统中,除去系统内置的特殊变量外,脚本的编写是不区分大小写的。
在本章节中,一般以Field_开头的都是假定在脚本代码所在的调查问卷里定义好的一个特定类型的控件。{字段}表示这个一个调查问卷内存在的字段编号,{表达式}表示一个值表达式。
在定制调查问卷时编写的,在数据录入用户在录入数据时被解释执行的。因此在定制问卷时编写的脚本并不能看到实际的效果,需要通过预览来验证在实际运行时调查问卷结合脚本执行的实际效果。
通常来说,脚本也是一门简化的编程语言。在流行病学动态数据采集平台中编写脚本之前,最好先掌握以下几个基本概念。
在系统中的脚本引擎中,每个变量(控件的数据)都是类型的,比如在设计文本框控件时,可以选择文本框控件内保存的数据的类型。在系统中的脚本引擎中,只有以下四种数据类型:
在Epidata 软件中,将日期作为小数处理,将其换算为自1899 年12 月31 日以来的天数。在系统的脚本引擎中为了和Epidata 的脚本保持兼容,对日期类型也做类似的处理。
各个数据类型的值是可以相互转换的,在下面函数部分会有专门的类型转换函数的介绍。
8.1.2. 命令
系统脚本引擎中,每个起作用的代码块都作为一个命令的形式存在的。通常情况下,一个标准的代码块是以命令名开头,后面跟以参数和子命令,如:
LET Field_1=1
在这个代码块中,命令是LET。LET 命令式为变量复制的作用,通常是可以省略的。这个代码块的意义是给变量赋值为整数1。
有一个类型的命令的代码行数超过了一行,则需要以END 作为代码块的结束。如:
JUMPS
1 Field_1
2 Field_2
END
表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。摘自:http://baike.baidu.com/view/420676.htm
系统中的脚本引擎中的表达式是用操作符将各个变量相连并且计算出某个结果的脚本。例如:
Field_1+Field_2
一个变量本身也可以算作是表达式。例如对于LET 命令来说,为变量赋的值可以一般是一个表达式计算后的结果,也可以使一个一个变量。如:
LET Field_1=1
LET Field_1=Field_2+Field_3
函数是指在系统内给定某些输入给出一个特定的计算结果的规则定义。函数可以用在表达式里,或者本身就是作为一个表达式。
函数的调用一般是函数名+前括号+逗号分隔的参数列表+后括号。如:
ISBLANK(Field_1)
POS(Field_1,”a”)
操作符是指将变量以某个计算机规则进行计算的表达。在系统支持三类操作符:
每个在调查问卷中定义的数据控件在脚本中都是可操作的对象,称之为变量。除去用户定义的变量外,还有一些系统内置的变量。
对于BEFROE/AFTER RECORD/ENTRY 命令,也可以称之为调查问卷/控件的BEFORE/AFTER事件。写在其中的代码只有在该事件发生时才会执行。
在系统存在两类的名,一类是声明式命令,这类命令式需要编写在BEFROE/AFTERRECORD/ENTRY 代码块之外的;一类是操作类命令,是需要结合IF 等条件判定并且需要编写在BEFROE/AFTER RECORD/ENTRY 代码块内部的。如果操作类命令没有编写在BEFROE/AFTERRECORD/ENTRY 代码块内,系统会自动将其移到AFTER RECORD/ENTRY 事件内执行。
为指定的子表控件添加一行数据。编写方式:
ADDRECORD {子表控件ID}
例:
ADDRECORD SUB_DATATABLE
或者根据某个控件的数据字典,逐条添加对应的数据,后两个控件id为可选:
ADDRECORD {子表控件ID} LABEL {字典控件ID} {存值控件ID} {存名控件ID}
ADDRECORD 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
用于在提交调查问卷记录验证数据是否符合校验要求。此命令有根据使用的地方不同有两种编写方式:
在提交数据时,当表达式计算的结果返回逻辑的假值时,系统将显示命令中指定的提示信息,并且将焦点跳转到{字段}指定的控件上,或者代码所在的控件。例如:
写在调查问卷的代码里:
ASSERT Field_1,Field_1>10,” Field_1 必须大于10”
写在控件的代码里:
ASSERT Field_1>10,” Field_1 必须大于10”
ASSERT 命令不能写在BEFROE/AFTER RECORD/ENTRY 代码块中。
和Epidata 的实现类似,在系统中AUTOJUMP 是让输入焦点自动跳转到其他控件上。编写方式:
AUTOJUMP {字段}
除去字段编号,AUTOJUMP 命令后还可以跟一些特定的参数:
例:
AUTOJUMP Field_1
AUTOJUMP WRITE
当此命令编写在脚本上时,在进入问卷数据录入界面时,输入焦点自动跳转到指定的字段上。
AUTOJUMP 命令不能写在BEFROE/AFTER RECORD/ENTRY 代码块中。
在计算机上发出一声(需浏览器支持)。BEEP 有三种类型的声音可选:
BEEP命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
清空变量的值。编写方式:
CLEAR {字段}
例:
CLEAR Field_1
CLAER 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
此命令将一个字符串(可包含一个或更多变量的值)拷贝到系统剪贴板上(需浏览器支持)。用户可以将拷贝的内容其它应用程序中。需要注意,由于浏览器的限制,此命令只支持在IE 和Firefox中调用。编写方式:
COPYTOCLIPBOARD ”{提示消息}”
拷贝的文本需要用双引号括起来。需要在消息文本中的变量前加个\@。例:
COPYTOCLIPBOARD “Field_1 的值为\@Field_1”
COPYTOCLIPBOARD 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
DEFINE 命令可以用于定义新的、临时变量。这些临时变量可以用来保留计算过程中的中间值。与此有关的信息请参见Epidata 帮助文件对此命令的介绍。
用DEFINE 定义的变量名最多16 个字符。临时变量不会被保存在数据库中。在关联的数据库中,相同的DEFINE 可以用在几个CHECK 文件中。重复的DEFINE 命令会被忽略。例如:
DEFINE MyTempVar ####
DEFINE varSurname <A > CUMULATIVE
DEFINE tempDate <yyyy-mm-dd>
DEFINE varCity GLOBAL
禁止某个控件录入,使控件处于不可录入的状态。编写方式:
DISABLE {字段}
DISABLE 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
和DISABLE 命令相反,启用某个控件录入,使控件处于可录入状态。编写方式:
ENABLE {字段}
ENABLE 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
停止执行并离开一个命令块(例如,AFTER ENTRY 命令块)。使用EXIT,可以使程序不必再继续执行IF…THEN-ELSE 中EXIT 后面长长的命令。例:
AFTER ENTRY
IF Field_1=1 then
Exit
Endif
Field_1 = Field_2+ Field_3
END
使输入焦点跳转到某个控件。编写方式:
GOTO {字段}
除去字段编号,GOTO 命令后还可以跟一些特定的参数:
例:
GOTO Field_1
GOTO WRITE
GOTO 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
此命令显示一个对话框,用户指定显示的字符串(可包含一个或更多变量的值)。编写方式:
HELP ”{提示消息}”
文本消息需要用引号括起来。需要在消息文本中的变量前加个\@。例:
HELP “Field_1 的值为\@Field_1”
HELP 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
隐藏指定的控件。编写方式:
HIDE {字段}
例:
HIDE Field_1
HIDE 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
隐藏指定的控件所在行,通常情况下包含控件的名称和控件本身。如果使用了单行容器,则使用此命令可以隐藏整个单行容器的内容。编写方式:
HIDEROW {字段}
例:
HIDEROW Field_1
HIDEROW 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
和Epidata 软件中JUMPS 命令类似,使用此命令可以声明当控件的各个取值时隐藏掉不用录入的控件所在的行。在命令中,在值对应的是控件的值是这个值时需要显示的行,而其他在脚本中提及但是不在此行中的控件的行则被隐藏。值后面空格之后跟控件编号。值对应的控件可以多个,多个之间以都好分割。编写方式:
HIDEROWS
{值1} {控件1},{控件2}
{值2} {控件3},{控件4}
END
例:
HIDEROWS
1 Field_1
2 Field_2
3 Field_3
END
这个命令表示在当前脚本的控件在取值为1 的时候显示Field_1 所在的行,隐藏Field_2和Field_3 所在的行; 取值为2 的时候显示Field_2 所在的行,隐藏Field_1 和Field_3 所在的行;取值为3 的时候显示Field_3 所在的行,隐藏Field_1 和Field _2 所在的行。
HIDEROWS 命令只能写在控件(不包含子表控件)的BEFROE/AFTER RECORD/ENTRY 代码之外。
和HIDEROWS 命令类似,使用此命令可以声明当控件的各个取值时隐藏掉不用录入的控件。在命令中,在值对应的是控件的值是这个值时需要显示控件,而其他在脚本中提及但是不在此行中的控件则被隐藏。值后面空格之后跟控件编号。值对应的控件可以多个,多个之间以都好分割。编写方式:
HIDES
{值1} {控件1},{控件2}
{值2} {控件3},{控件4}
END
例:
HIDES
1 Field_1
2 Field_2
3 Field_3
END
这个命令表示在当前脚本的控件在取值为1 的时候显示Field_1,隐藏Field_2 和Field_3;取值为2 的时候显示Field_2,隐藏Field_1 和Field_3;取值为3 的时候显示Field_3,隐藏Field_1 和Field _2。
HIDES 命令只能写在控件(不包含子表控件)的BEFROE/AFTER RECORD/ENTRY 代码之外。
IF…THEN 命令用于在某个条件下执行某些命令。他的写法是:
IF {表达式} THEN
{命令1}
ENDIF
或者是:
IF {表达式} THEN
{命令1}
ELSE
{命令2}
ENDIF
在命令中的表达式的计算结果应该为逻辑值(Boolean),即真或者假。当表达式的结果返回真值时,执行命令1 中的一连串的命令,否则执行命令2。例:
IF field1>10 THEN
GOTO field10
ENDIF
IF (Cos(field1)*Sin(field1)<0.3) AND (field2<>0) THEN
IF field2<field3 THEN
HELP “Something is wrong.”
Exit
ENDIF
ELSE
Field4=Tan(field1)
GOTO field23
ENDIF
IF…THEN 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
声明当控件的值为某个值的时候输入焦点跳转到某个控件。JUMPS 是一个块命令,必须以END 结束。编写方式:
JUMPS
{值1} {控件1}
{值2} {控件2}
END
例:
HIDEROWS
1 Field_1
2 Field_2
3 Field_3
END
当控件取值为1 时跳转到Field_1;取值为2 时跳转到Field_2;取值为1 时跳转到Field_3。JUMPS 命令只能写在控件(不包含子表控件)的BEFROE/AFTER RECORD/ENTRY 代码之外。
令某个变量等于某个数值或某个计算的结果,或者等于用DEFINE 定义的变量。LET 命令可以省略,直接书写后面的表达式即可。编写方式:
LET {控件}={表达式}
例:
LET Field_1=Field_2 + Field_3
或者
Field_1=Field_2 + Field_3
LET 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
为控件定义值范围,定义的值类型需要和控件的值的类型一直。编写方式:
RANGE –5 5
允许录入-5 到5 间的数值,包括-5 和5。
RANGE 命令只能写在控件(不包含子表控件)的BEFROE/AFTER RECORD/ENTRY 代码之外。
从子表控件中删除一行数据。两种编写方式:
REMOVERECORD{子表控件ID} {数据行的位置}
当此命令处于子表控件的子控件上时,可以不用写第二个参数,而以用户当时编辑的行作为需要删除的行。例:
REMOVERECORD SUB_DATATABLE 1
或
REMOVERECORD SUB_DATATABLE /此写法只能用于子表控件的子控件上
REMOVERECORD 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
在输入下个记录的时候自动填入上次的记录的值。需要注意,由于web 系统的限制,
此命令默认仅仅在连续录入的时候生效。当页面跳转到其他调查问卷再跳转回来的时候,所有的值都不起作用。编写方式:直接写下REPEAT 即可;
当指定以系统最后填写的值为默认值,请使用 REPEAT SYSTEM.而以用户最后录入的值为参考值,请使用REPEAT USER.如:
REPEAT
REPEAT USER
REPEAT SYSTEM
REPEAT 命令只能写在控件(含子表控件)和问卷的BEFROE/AFTER RECORD/ENTRY 代码之外。当REPEAT 命令作用于子表控件和问卷上时候,则所有子表中的或者问卷中的控件的值都会被自动填入。
和HIDE 命令相反,显示指定的控件。编写方式:
UNHIDE {字段}
例:
UNHIDE Field_1
UNHIDE 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
和HIDEROW 相反,显示指定的控件所在行,通常情况下包含控件的名称和控件本身。如果使用了单行容器,则使用此命令可以隐藏整个单行容器的内容。编写方式:
UNHIDEROW {字段}
例:
UNHIDEROW Field_1
UNHIDEROW 命令需要写在BEFROE/AFTER RECORD/ENTRY 代码块中。
下列Epidata 命令的支持仅仅用于对Epidata 软件的支持。下列命令可以存在于脚本中,但是可能不会发生任何作用:
在系统脚本中支持的函数和Epidata 软件中支持的函数基本一致,但是在Epidata 函数的基础上增加了一些自定义的函数。
计算x 的绝对值。x 可以是整数或小数。例如:
ABS(4)=4, ABS(-4)=4
计算x 的反正切。在下面的例子中,同样,用Sin、Cos 和Tan 计算其它三角函数。例如:
Tan(x)=Sin(x)/Cos(x)
ArcSin(x)=ArcTan(x/sqrt(1-sqr(x)))
ArcCos(x)=ArcTan(sqrt(1-sqr(x))/x)
计算角x(弧度)的余弦。
计算e 的x 次幂,e 是自然对数的底。
将x 转换为小数。如果FIELD1 等于“Q34.3”,则下列函数的结果为34.3。
Float(copy(field1,2,4))
x 是一个小数类型变量,该函数将得到x 的小数部分,即:
Frac(x)=x-Int(x)
x 是一个小数型变量,该函数将得到x 的整数部分。但是,即使它只含x 的整数部分,该结果仍然属于小数数值。
该函数将一个字符串(其中含有数字)转换成一个整数。如果FIELD1 等于“41”,那么下列函数的结果为41。
Integer(copy(FIELD1,2,2))
计算小数型变量x 的自然对数。
表示圆周率π,即圆周长度与圆的直径长度之比,近似等于3.1415926535897932385。
计算某值(base)的任意次幂(exponent)。该值(base)必须大于0。
如果a≥b 且a≤c,则返回“Y”(是)。b 和c 可以是数字或数值型变量的变量名。如果结果变量被设置为整数,例如:
LET Teenager=Range(age, 13, 19)
将小数四舍五入转换为整数型数值。例如,下列函数的结果为3。
v2=round(2.5)
计算角x(弧度)的正弦。
计算x 的平方。
计算x 的平方根。
将指定的这些变量的数值加起来。时间变量、IDNUM 变量和其它非字符串型变量都可以计算。例如:Sum(V1,V2,”V10-V20”)。记住用双引号把范围值括起来。
该函数截去小数的小数点后的部分,保留整数部分。例如,下列函数的结果为2。参见
Round( )。
v2=trunc(2.5)
将字符串S 中的所有字符都转换为大写字母。该转换会影响ANSI 字符集中的所有字符。
将字符串S 中的所有字符都转换为小写字母。该转换会影响ANSI 字符集中的所有字符。
返回字符串中的某个子串。S 是一个字符型表达式。Index 和Count 是整数。Copy(S: 字符串, Index, Count: Integer)可以返回一个字符串,其中含有Count 个字符,从字符串S 的Index位置开始。如果Index 比S 的长度大,则该函数只能返回一个空的字符串。如果Count 指定的字符数超过了实际有的,则该函数只能返回从Index 开始到结尾的字符。例如,下列函数的结果为“short”。
SHORT=copy(“My short sentence”, 4, 5)
该函数将在一个字符串(S)中查找某个子串(Substr)。S 和Substr 都是字符型。Pos(Substr:字符串; S: 字符串)是在S 中找Substr,然后返回一个整数值,这个值就是Substr 的第一个字符在S 中的位置。Pos(Substr: 字符串; S: 字符串)。如果没有找到Substr,函数返回数值0。
例如:下列函数的结果为4。
position=pos(“short”, “My short sentence”)
得出字符串S 占用的字符数。例如,下列函数的结果为11。
length(“This string”)
将x 转换为字符串。如果FIELD1 是一个整数变量,等于41,则下列函数
的结果为“sb41”。参见INTEGER 函数,可将字符串转换为数字。
”sb”+String(FIELD1)
函数的结果是字符串S 的声索引编码。请参见Epidata 中的相关说明。
在系统脚本中和EpiData 类似,将日期作为小数处理,将其换算为自1899 年12 月31 日以来的天数。这么处理日期使与日期有关的计算非常方便。例如,计算两个日期之间相差的天数,用简单的减法即可实现。
参数有3 个:日、月和年,返回的日期就是由这三个参数组成。该函数得到的结果是日期格式还是整数,取决于指定的变量的类型。
得到日期D 的日(即,1~31 中的一个数)。
得到一个数字,代表指定日期是星期几。例如,下列函数的结果为4,表示该日为周四。
注意,这里对应的编码是:周一=1,……,周日=7。
DayOfWeek(“22/02/2001”)
得到日期D 的月份(即,1~12 中的一个数)。
得到当前日期。例:
LET D1=Now
LET T1=Num2Time(Now)。
将一个0~1 的数转换为小数##.##,其中,整数部分表示小时,从0~24;小数部分表示分钟,从.00~.59。
如果F 是一个小数,表示时间,从0.00~23.59,那么Time2Num 函数会将这个时间转
换为一个0 ~ 1 的数。例如:
Time2Num(12.00)=0.50
Time2Num(0.00)=0
Time2Num(24.00)=1.00
Time2Num(9.30)=0.40。
给出当天的日期。该函数得到的是日期格式还是整数,取决于指定的变量的类型。
得到指定日期距离当年1 月1 日的周数。例如:
WeekNum(now)
得到日期D 的年数(4 位数)
如果某个变量没有录入,则认为是“真”;如果变量中含有数据,则认为是“假”。例:
IF ISBLANK(Field_1) THEN …
此函数用在流行病学动态数据采集平台中用在调查问卷主表上时返回值恒定为1,TABLE 参数为子表控件的编号是返回的是当前记录中该子表控件的数据的条数。
返回指定的多选控件或者列表选择控件选中的项的数量值。
判断指定的多选控件或者列表选择控件的选中项中是否包含V1,V2 等项。V1,V2 时数据字典的保存值,可以为一个,也可以为多个值。例:
IF ISSELECTED(Field_1,”1”) THEN
IF ISSELECTED(Field_1,”1”,”2”,”3”) THEN
下列epidata 的函数在系统脚本中不被支持,无论调用的参数是什么,其返回值都是固定的。
系统脚本中支持的操作符和Epidata 软件中支持的操作一致。
运算符 | 运算 | 数据类型 | 结果类型 |
---|---|---|---|
\^ | 指数 | 整数 | 小数 |
小数 | 小数 | ||
+ | 加法 | 整数 | 整数 |
小数 | 小数 | ||
字符串 | 字符串 | ||
- | 减法 | 整数 | 整数 |
* | 乘法 | 整数 | 整数 |
小数 | 小数 | ||
/ | 除法 | 整数 | 整数 |
小数 | 小数 | ||
div | 整数除法 | 整数 | 整数 |
mod | 整数除法取余 | 整数 | 整数 |
运算符 | 运算 | 数据类型 | 结果类型 |
---|---|---|---|
not | 否 | 逻辑值 | 逻辑值 |
and | 和/并且 | 逻辑值 | 逻辑值 |
or | 或 | 逻辑值 | 逻辑值 |
xor | 异或 | 逻辑值 | 逻辑值 |
注意,not 操作符后面只跟一个操作对象。如
IF not (Field_1 = 1) then
{命令}
ENDIF
关系运算符用于两个空间的值之间进行比较,返回逻辑值。值比较最好是两个比较的值的类型一致,比如整数对整数的比较。如果两个比较的值类型不一致,将转换成同一类型后再比较。
运算符 | 运算 | 结果类型 |
---|---|---|
= | 等于 | 逻辑值 |
<> | 不等于 | 逻辑值 |
< | 小于 | 逻辑值 |
> | 大于 | 逻辑值 |
<= | 小于等于 | 逻辑值 |
>= | 大于等于 | 逻辑值 |
在脚本中通过,我们有一些已经内置的变量,用户在编写脚本时可以直接范围而无需先声明。
使用help 命令中,返回保存在这两个变量中。请参见Epidata 中的相关说明。
通过以下变量可以直接放回用户相关的信息。需要注意,下列变量需要区分大小写:
通过以下变量可以直接其他相关的信息。需要注意,下列变量需要区分大小写: