跳转至
For the complete DHIS2 documentation index, see llms.txt.

在维护应用中配置程序

关于程序

传统上,公共卫生信息系统一直在报告 整个健康计划中服务提供的汇总数据。这个 不允许您跟踪提供这些服务的人员。在 DHIS2,您可以分阶段定义自己的程序。这些程序是 “跟踪器”功能的重要部分,可让您跟踪 个人记录。您还可以跟踪其他“实体”,例如井或 保险。您可以创建两种类型的程序:

表:项目类型

计划类型 描述 使用实例
事件项目 单一事件 *无*登记计划(匿名计划或 SEWoR)

通过医疗系统跟踪匿名的个人事件。这些个人交易不附带任何个人或实体。

只有一个项目阶段。
记录健康病例,但不在系统中登记任何信息。

记录调查数据或监测线列表。
单级跟踪项目 单一事件 **注册计划 (SEWR)

一个实体(个人、商品等)与医疗系统的每一笔交易都会被跟踪

只有一个计划阶段。

一个被跟踪的实体实例 (TEI) 只能注册一次。
记录出生证明和死亡证明。
多阶段跟踪器计划 多事件*有*登记计划(MEWR)

一个实体(个人、商品等)与医疗系统的每笔交易都会被跟踪

有多个计划阶段。
母亲健康计划包括产前检查(2-4 次以上)、分娩、孕前保健检查等阶段。

要创建程序,必须首先配置几种类型的元数据 对象。您可以在**维护**应用中创建这些元数据对象。

表格维护项目中的项目元数据对象

CSV元数据导入 { #webapi_csv_metadata_import } 描述 可用功能
事件项目 无需注册即可记录单个事件的项目 创建、编辑、共享、删除、显示详情和翻译
追踪项目 记录单个或多个事件并进行注册的项目 创建、编辑、共享、删除、显示详情和翻译
计划指标 基于跟踪实体的数据元素和属性的表达式,用于根据公式计算数值。 创建、编辑、克隆、共享、删除、显示详情和翻译
计划规则 允许您在**跟踪捕捉**和**事件捕捉**应用项目中创建和控制用户界面的动态行为。 创建、编辑、克隆、删除、显示详情和翻译
项目规则变量 用于创建项目规则表达式的变量。 创建、编辑、克隆、删除、显示详情和翻译
关系类型 定义被跟踪实体 A 和被跟踪实体 B 之间的关系,例如母亲和孩子。 创建、编辑、克隆、共享、删除、显示详情和翻译
追踪实体类型 可通过系统追踪的实体类型。从人到商品都可以,例如药品或人。

一个项目必须有一个被跟踪实体。要将一个被跟踪实体实例加入一个项目,实体的被跟踪实体和项目的被跟踪实体必须相同。



指定的项目必须只有一个跟踪实体。只有与项目跟踪实体相同的跟踪实体才能注册该项目。
创建、编辑、克隆、共享、删除、显示详情和翻译
跟踪实体属性 用于注册被跟踪实体的额外信息。

项目之间可以共享。
创建、编辑、克隆、共享、删除、显示详情和翻译
程序 项目由项目阶段组成。 创建、编辑、共享、删除、分配给组织单位、显示详细信息和翻译
程序阶段 计划阶段定义了每个阶段应采取的行动。 创建、编辑、共享、更改排序、删除、显示详情和翻译
计划指标组 一组计划指标 创建、编辑、克隆、共享、删除、显示详情和翻译
指示符 验证规则基于一个表达式,该表达式定义了数据元素值之间的关系。 创建、编辑、克隆、共享、删除、显示详情和翻译
计划通知 自动信息提醒

设置提醒,在预定预约前和错过访问后自动发送到已注册的跟踪实体实例。
创建、编辑和删除
计划阶段通知 自动消息提醒

设置提醒,当一个程序阶段完成时,或在到期日期之前或之后自动发送。
创建、编辑和删除

在维护应用程序中配置事件程序

关于活动计划

*没有*注册程序的单个事件称为事件程序。 您可以在**维护**应用中对其进行配置。活动节目可以有 三种类型的数据输入形式:

表格:活动计划数据输入表格类型

表格类型 描述
基础 列出属于项目的所有数据元素。您可以更改数据元素的顺序。
删除源指标,增加目标指标 分节将数据元素分组。然后,您可以安排各部分的顺序,创建所需的数据输入表单布局。
定制 将数据输入表单定义为 HTML 页面。

注意

-如果自定义表单和部分表单都属于 现在。

-如果未定义自定义或部分表格,则基本表格为 使用。

-Android应用程序仅支持部分表格。

您可以为活动项目创建*项目通知*。通知 通知可通过内部 DHIS2 消息系统发送、 电子邮件或短信(SMS)发送。您可以使用项目通知 例如,在预定约会前 10 天向被跟踪实体发送自动提醒。 自动提醒。您可以使用项目的被跟踪实体 属性(例如姓名)和项目参数(例如 注册日期)来创建通知模板。在 **参数**字段中,你可以找到可用的跟踪实体属性和计划参数列表。 属性和计划参数的列表。

工作流程:创建事件程序

  1. 输入事件程序详细信息。

  2. 分配数据元素。

  3. 创建数据输入表单:基本部分**或**自定义

  4. 将程序分配给组织单位。

  5. 创建程序通知。

创建或编辑事件程序

输入活动计划详细信息

  1. 打开 Maintenance 应用项目并单击 Program > Program

  2. 单击添加按钮,然后在弹出菜单中选择**事件程序**。

  3. 输入程序详细信息,然后单击下一步。

    字段
    名称 程序名称。
    数据捕获应用程序中该程序使用的颜色。
    Icon 数据捕获应用程序中该程序使用的图标。
    简短名称 程序的简短名称。在分析应用程序中,简短名称将用作默认图表或表格标题。
    程序的详细说明。
    版本 程序的版本。例如,当人们在安卓系统中离线收集数据时,就需要使用该版本。当他们上网同步元数据时,应获得程序的最新版本。
    类别组合 要使用的类别组合。默认设置为**无**。
    如果您选择的类别组合不是 "无",则可以输入零或正数。这样,您就可以在类别选项结束日期后的指定天数内,为类别选项输入本程序的数据。
    数据审批工作流程 要使用的数据审批工作流程。默认设置为 无值
    ** 已完成事件有效期** 定义可编辑已完成事件的天数。这意味着,当事件已完成且指定的有效天数已过,事件将被锁定。

    如果将 "已完成事件失效天数 "设置为 10 天,则事件会在完成日期后十天锁定。在此日期之后,您就不能再编辑该事件了。
    失效期类型

    失效天数
    失效天数定义了事件在上一周期结束后多少天内可以编辑。周期类型由到期周期类型定义。这意味着,当上一周期结束日期后已过指定的失效天数时,该周期的事件将被锁定。

    如果将有效期类型设为 "每月",有效期天数设为 "10",月份为 10 月,那么在 11 月 10 日之后就不能添加或编辑 10 月的事件了。
    选择复选框可在该程序的事件完成后阻止输入表单。

    这意味着在您将状态重置为未完成之前,不能更改报名表中的数据。
    地物类型 设置程序是否捕捉地理特征类型。
    - 无 ** 不采集任何内容。
    - Polygon 捕获一个区域。对于单个事件程序,该区域将是代表被捕捉事件的区域。对于跟踪程序,该区域将代表注册区域。
    - 捕获**点** 一个点/坐标。对于单一事件程序,点将代表被捕获的事件。对于跟踪程序,点将代表注册。
    设置服务器和客户端验证要求。

    无论采用哪种验证策略,数据类型验证都会执行。例如,整数字段永远不会存储文本。
    - 完成时*** 此选项将强制要求在完成事件时固定所需字段和错误信息,但事件可以在不通过这些验证要求的情况下保存到服务器。由于传统原因,这始终是跟踪程序的验证策略,其中事件中的每个数据值都会在输入数据时存储到服务器。
    - 在更新和插入时*** 无论完成状态如何,在将事件保存到服务器时,该选项都会强制执行所需的字段验证。使用该选项时,如果未通过验证,则不能存储任何事件。
    选择复选框可预先生成唯一的事件 ID 号。
    ** 自定义报告日期标签** 输入报告日期的描述。

    该描述将显示在案例输入表单中。
  4. 点击下一步。

分配数据元素

  1. 点击**分配数据元素**。

  2. 在可用项目列表中,双击要删除的数据元素。 想要分配给事件程序。

  3. (可选)为每个数据元素添加其他设置:

    设置 说明
    ** 强制** 在完成事件之前,必须在数据输入表中填写此数据元素的值。
    Allow provided elsewhere 指定此数据元素的值是否来自其他设施,而不是输入此数据的设施。
    ** 显示在报告中** 将此数据元素的值显示在无注册数据输入功能的单个事件中。
    允许用户为日期数据元素选择未来日期。
    移动呈现类型 可用于为移动设备选择不同的呈现类型。可用选项因数据元素的值类型而异。例如,对于数值,您可以选择 "默认"、"值"、"滑块"、"线性比例 "和 "旋转器"。
    Desktop 渲染类型 警告:尚未实施。

    可用于为桌面(即网络界面)选择不同的呈现类型。可用选项因数据元素的值类型而异。例如,对于数值,您可以选择 "默认"、"值"、"滑块"、"线性比例 "和 "旋转器"。
  4. 点击下一步。

创建数据输入表单

数据输入表单决定了数据元素在**事件捕捉**应用中向用户显示的方式。 数据输入表单决定了数据元素在**事件捕捉**应用程序中显示给用户的方式。

  1. 点击**创建数据输入表单**。

  2. 点击**基本**,部分**或**自定义

  3. 要创建**基本**数据输入表单:拖放数据 元素按您想要的顺序排列。

  4. 要创建**部分**数据输入表单,请执行以下操作:

    1. 点击添加按钮,然后输入部分的名称,说明和 桌面设备和移动设备的渲染类型。

    2. 单击该部分,使其以黑线突出显示。

    3. 通过单击数据旁边的加号来添加数据元素 元素的名称。

    4. 重复上述步骤,直到获得所需的所有部分。

    5. 更改部分顺序:单击选项菜单,然后拖动 部分到您想要的地方。

  5. 要创建** Custom 数据条目,请执行以下操作:使用WYSIWYG编辑器 创建一个完全定制的表单。如果您选择**来源,则您 可以直接将HTML代码粘贴到编辑区域中。你也可以 插入图像,例如标志或徽标。

  6. 点击下一步。

访问

访问选项决定谁可以捕获程序数据或查看/编辑数据 程序的元数据。程序可以与组织单位共享, 另外,主程序和任何程序阶段的访问选项 可以通过**共享对话框**进行配置。访问选项是 在**访问权限**标签中可用。

分配组织单位:

  1. 在组织树中,双击您的组织单位 想要添加到程序中。

    您可以通过展开目录树来在树中找到组织单位 分支(单击箭头符号),或通过搜索 名称。所选组织单位显示为橙色。

更改角色和访问权限:

  1. 向下滚动到**角色和访问权限**部分。

    第一行显示主程序的访问选项,每个 下一行显示一个程序阶段的选项。程序 带有警告图标(感叹号)的阶段包含访问选项 偏离主程序,这意味着它们可以通过 不同的用户组合。

  2. 单击任一行,将显示**共享对话框**。

  3. 相应地修改访问选项。请参阅有关 共享对话框以获取详细信息。

  4. 点击**应用**按钮。

  5. 对每个程序/程序阶段重复该过程。您也可以复制 从主程序到子程序的所有访问选项:

    1. 选择您想要具有类似访问权限的程序阶段 切换复选框,将其作为主程序 程序阶段的右侧。您也可以选择 **选择全部**程序阶段,**取消选择全部**程序阶段 或根据访问选项**选择类似**阶段,以 主程序。默认情况下会切换相似的阶段。

    2. 点击**应用于选定阶段**

创建程序通知

  1. 创建您要发送的消息:

    1. 点击**发送什么?**。

    2. 输入一个**名称**。

    3. 创建**主题模板**:双击中的参数 **模板变量**字段将其添加到您的主题。

      Note

      The subject is not included in text messages.

    4. 创建**消息模板**:双击参数 **模板变量**列表中的名称以将它们添加到您的 信息。

      亲爱的A {w75KJ2mc4zz}:您现在已注册V {program _name}。

  2. 定义*何时*要发送消息:

    1. 单击**什么时候发送?**。

    2. 选择一个**通知触发器**。

      通知触发器 说明
      计划阶段完成 计划阶段完成时发送计划阶段通知
      计划天数(到期日) 在到期日之前或之后 XX 天发送项目阶段通知

      您需要输入将发送通知的计划日期之前或之后的天数。
  3. 定义要将消息发送给的*谁*:

    1. 点击 **发送给谁?

    2. 选择**通知**。

      通知接收人 说明
      通过电子邮件或短信接收项目通知。

      要接收节目通知,收件人必须有电子邮件地址或电话号码属性。
      组织单位联系人 通过电子邮件或短信接收项目通知。

      要接收项目通知,接收组织单位必须有注册联系人,并带有电子邮件地址和电话号码。
      组织单位的用户 所有注册到所选组织单位的用户通过内部 DHIS2 消息系统接收节目通知。
      用户组 所选用户组的所有成员通过 DHIS2 内部邮件系统接收节目通知。
      计划 待定
    3. 单击 保存

  4. 重复上述步骤,创建所需的所有程序通知。

  5. 点击**保存**。

注意

您可以在 Data 中配置何时发送程序通知 管理**应用程序 > **日程安排 > 程序通知 调度程序

  • 单击 立即运行 立即发送程序通知。

  • 选择一个时间并点击**开始**来安排节目 要在特定时间发送的通知 时间。

参考信息:程序通知参数

表:项目通知中使用的项目通知参数

通知类型 变量名称 变量代码
程序 当前日期 V{current_date}
自注册日期起的天数 V{days_since_enrollment_date}
注册日期 V{enrollment_date}
事件日期 V{incident_date}
组织单位名称 V{org_unit_name}
计划名称 V{program_name}
程序阶段 当前日期 V{current_date}
预产期后的天数 V{days_since_due_date}
距到期日的天数 V{days_until_due_date}
到期日 V{due_date}
组织单位名称 V{org_unit_name}
计划名称 V{program_name}
节目阶段名称 V{program_stage_name}
事件状态 V{event_status}

在维护应用程序中配置跟踪器程序

关于跟踪器程序

*具有*注册的单个或多个事件程序。程序必须指定一个被查明的实体。只有与程序被查到的身份相同的被查实体才能加入被查明的实体 程序。程序需要您在。**维护**应用程序中创建的各种类型的元数据。

工作流程:创建一个跟踪程序

  1. 输入跟踪器程序的详细信息。

  2. 输入注册详细信息。

  3. 分配属性并创建**部分**或**自定义**注册表格。

  4. 创建程序阶段。

  5. 配置访问权限,并分配给组织单位。

  6. 创建程序和程序阶段通知。

创建或编辑Tracker程序

  1. 打开 Maintenance 应用项目并单击 Program > Program

  2. 单击添加按钮并在弹出菜单中选择**随访项目**。

输入程序详细信息

领域 描述
名称 项目名称。
颜色 该项目在 Tracker 捕捉中使用的颜色。
图标 该项目在 Tracker 采集器中使用的图标
简称 项目的简称。在分析应用项目中,该简称将用作默认的图表或表格标题。
描述 计划的详细说明。
版本 项目的版本。例如,当人们在安卓系统中离线收集数据时就会用到。当他们上网同步元数据时,就会得到项目的最新版本。
** 跟踪实体类型** 您要使用的跟踪实体类型。一个项目只能有一种跟踪实体类型。
类别组合 要使用的类别组合。默认设置为**无**。
类别选项结束日期后的开放日 如果您选择的类别组合不是 "无",则可以输入零或正数。这样,您就可以在类别选项结束日期后的指定天数内输入该类别选项的数据。
显示首页列表 选择复选框可显示 Tracker Capture 中的跟踪实体实例列表。如果未选择,则将显示 "搜索"。
第一阶段出现在注册页面 选择复选框可显示第一个计划阶段和注册(报名)。
访问级别 选择项目的访问级别。
完成活动的有效期 定义可编辑已完成事件的天数。这意味着,当事件完成且指定的有效天数已过,事件将被锁定。

如果将 "已完成事件失效天数 "设置为 "10",则事件会在完成日期后十天锁定。在此日期之后,您就不能再编辑该事件了。
有效期类型

有效期天数
有效期天数定义了事件在上一周期结束后多少天内可以编辑。周期类型由到期周期类型定义。这意味着,当上一周期结束日期后已过指定的到期天数时,该周期的事件将被锁定。

如果将有效期类型设置为 "每月",有效期天数设置为 "10",月份为 10 月,那么在 11 月 10 日之后就无法添加或编辑 10 月的事件了。
搜索所需的最少属性数 指定需要填写的跟踪实体属性数量,以便在项目中搜索跟踪实体。
搜索中返回的被跟踪实体的最大数量 指定允许与捕获范围外搜索匹配的跟踪实体的最大数量。此设置可用于强制用户以更有针对性的方式进行搜索,并缩小搜索结果的范围,而不是允许用户在捕获范围外进行搜索并看到大量结果。输入 0 表示无限制。更多信息 [此处](.../developer/web-api/tracker.md#tracked-entities-collection-limits)。
#### 输入注册详细信息{ #enter_enrollment_details }
领域 描述
允许未来的注册日期 如果要允许被跟踪的实体实例在未来某个日期注册该计划,请选择复选框。
允许未来事件日期 如果要允许项目中的事件日期为未来日期,请选择复选框。
只能注册一次(每个被跟踪实体实例的生命周期) 如果希望被跟踪实体只能在计划中注册一次,请选择复选框。例如,在儿童疫苗接种或死后检查项目中,多次注册被跟踪实体是没有意义的。
显示事件日期 此设置允许您在被跟踪实体注册项目时显示或隐藏事件日期字段。
自定义事件日期标签 输入事件日期的描述

例如:

在针对 1 岁以下儿童的免疫接种计划中,事件发生日期是儿童的生日。

在孕产妇计划中,事件发生日期是最后一次月经的日期。
自定义注册日期标签 被跟踪实体加入计划的日期
自定义标签:
- 注册
- 事件
- 计划阶段
- 后续
- 注册单位
- 关系
- 注释
- 跟踪实体属性
这些自定义标签将在特定项目层面上取代某些 DHIS2 应用项目中的这些术语。需要注意的是,该配置不区分单数和复数,因此标签应考虑到这一点。目前,只有 DHIS2 Android 应用项目使用这些自定义标签。
忽略逾期事件 当被跟踪的实体注册到计划中时,就会创建与计划阶段相对应的事件。如果选择此复选框,系统将不会生成逾期事件。
功能类型 设置程序是否捕捉地理特征类型。
None: 不捕获任何内容。
多边形:**捕捉一个区域。对于单个事件程序,该区域将是代表被捕捉事件的区域。对于跟踪程序,该区域将代表注册的区域。
** 点:
采集一个点/坐标。对于单一事件程序,点将代表被捕获的事件。对于跟踪程序,点将代表注册。
相关计划 选择与您要创建的项目相关的跟踪项目,例如 ANC 和儿童项目。

分配跟踪的实体属性。

  1. 在**可用项目跟踪实体属性**列表中,双击 您要分配给程序的属性。

  2. (可选)对于每个分配的属性,添加其他设置:

设置 描述
在列表中显示 在 Tracker 捕捉的被跟踪实体实例列表中显示该属性的值。
** 必须** 必须在数据输入表中填写该属性的值,然后才能完成事件。
未来日期 允许用户为日期属性选择未来的某个日期。
移动呈现类型 可用于为移动设备选择不同的呈现类型。根据属性值类型的不同,可用选项也不同。例如,对于数值,可以选择 "默认"、"值"、"滑块"、"线性比例 "和 "旋转器"。
桌面渲染类型 警告:尚未实施。

可用于为桌面(即网络界面)选择不同的呈现类型。根据属性值类型的不同,可用选项也不同。例如,对于数值,可以选择 "默认"、"值"、"滑块"、"线性比例 "和 "旋转器"。
  1. 创建注册表

注册表单定义了如何在使用中的应用(例如Android和Tracker Capture)中向用户显示属性。

1. 点击**创建注册表格**。

2. 点击**部分**或**自定义**。

3. 创建**部分**表格:

    1. 点击添加按钮,然后为台式机和移动设备输入版块的名称,说明和渲染类型。
    2. 单击该部分,使其以黑色边框突出显示。
    3. 通过单击要添加的数据元素名称旁边的加号来添加数据元素。
    4. 重复上述步骤,直到获得所需的所有部分。
        要更改节的顺序:单击选项菜单,然后将节拖动到所需的位置。

4. 创建** Custom **注册表:使用WYSIWYG编辑器创建一个完全定制的表单。如果选择“源”,则可以将HTML代码直接粘贴到编辑区域中。您还可以插入图像,例如标志或徽标。

5. 单击添加阶段。

创建程序阶段

一个程序由程序阶段组成。程序阶段定义哪个 每个阶段都应采取行动。

注意

在保存程序之前,不会保存对程序阶段的更改。

  1. 单击加号创建一个程序阶段。
  2. 输入程序阶段详细信息:
    1. 输入一个**名称**。
    2. (可选)选择将要使用的**颜色**和**图标** 由数据捕获应用确定此程序阶段。
    3. 输入**说明**。
    4. 从开始**起的计划天数**字段中输入所需的天数:该计划阶段的第一个事件将安排在注册日期或事件日期之后的这么多天,具体取决于配置。如果在**注册详情**中配置了**显示事件日期,系统将使用事件日期作为起始日期。如果在**计划阶段详情**中配置了**根据注册日期**基因事件,系统将使用注册日期作为起始日期。
  3. 输入可重复的程序阶段详细信息。
    1. Specify if the program stage is Repeatable or not.
    2. Select a Period type.
    3. 清除**完成后显示生成事件框**,如果您 不想显示*创建新事件框*以创建新事件 在您单击事件的*完成*后,可重复该阶段 以数据输入形式显示的阶段。该字段由 默认。
    4. 输入 标准间隔天数。该值将是可重复阶段中最后一个事件与下一个事件预定日期之间的建议间隔。
    5. (可选)选择**默认下一个计划日期**。这将显示**日期**类型的指定数据元素列表。如果选择了某个元素,Tracker 客户端就会将其作为默认计划日期。项目规则可使用该数据元素动态安排事件之间的时间间隔。
  4. 输入表格详细信息
选项 行动
自动生成事件 清除复选框,以防止在实体注册计划时自动创建该计划阶段的事件。
注册后打开数据输入表 选择复选框,以便在实体注册该计划后立即自动打开该阶段的事件。
报告使用日期 如果您选择了**注册后打开数据输入表**复选框,请同时选择**报告日期: 事件日期**或注册日期
这是已自动打开的事件的报告日期。

如果**使用的报告日期**被选为这两个日期之一("事件日期"/"注册日期"),则在仪表板中,事件的 "报告日期 "将被设置为这两个日期之一。
用户分配事件 选择复选框可启用项目阶段的用户分配。

这意味着在 Tracker 捕捉中将会有一个用户列表,事件可以分配给这些用户。
填写完成后封锁报名表 选择复选框可在此阶段的事件完成后阻止输入表单。

这意味着在将状态重置为未完成之前,不能更改输入表中的数据。
阶段完成后要求用户完成项目 选择复选框可触发弹出窗口,询问用户是否要创建下一阶段的事件。
阶段完成后要求用户创建新事件 选择复选框可触发弹出窗口,询问用户是否希望在本阶段的一个事件完成后创建本阶段的新事件。

只有选择了**可重复**,此属性才会激活。
按注册日期生成事件 选中它可以根据注册日期从该程序的程序阶段自动生成事件的到期日期。如果未选中,则基于事件日期生成截止日期。
隐藏到期日期 选择复选框可隐藏事件的到期日期。
功能类型 设置程序是否捕捉地理特征类型。
None: 不捕获任何内容。
多边形:**捕捉一个区域。对于单个事件程序,该区域将是代表被捕捉事件的区域。对于跟踪程序,该区域将代表注册的区域。
** 点:
采集一个点/坐标。对于单一事件程序,点将代表被捕获的事件。对于跟踪程序,点将代表注册。
预先生成事件 UID 选择复选框可预先生成唯一的事件 ID 编号。
自定义报告日期标签 输入报告日期的描述。

该说明将显示在数据输入表格中。
自定义到期日标签 输入到期日期的描述。
** 自定义标签:
- **项目阶段

- 事件
这些自定义标签将在特定项目层面上取代某些 DHIS2 应用项目中的这些术语。需要注意的是,该配置不区分单数和复数,因此标签应考虑到这一点。目前,只有 DHIS2 Android 应用项目使用这些自定义标签。
  1. 将数据元素分配给程序阶段:

    1. 在**可用数据元素**列表中,双击 您要分配给程序阶段的数据元素。

    2. 对于每个分配的数据元素,查看属性。您可以 选择:

选项 行动
必修 该数据元素的值必须在完成事件前填写到数据输入表中。
** 允许在其他地方提供** 说明该数据元素的值是否来自其他机构,而非输入该数据的机构。
在报告中显示 将此数据元素的值显示在无注册数据输入功能的单个事件中。
未来日期 允许为日期数据元素选择未来日期。
同步跳转 运行数据同步工作时,允许跳过数据元素。
移动呈现类型 可用于为移动设备选择不同的呈现类型。根据属性值类型的不同,可用选项也不同。例如,对于数值,可以选择 "默认"、"值"、"滑块"、"线性比例 "和 "旋转器"。
桌面渲染类型 警告:尚未实施。

可用于为桌面(即网络界面)选择不同的呈现类型。根据属性值类型的不同,可用选项也不同。例如,对于数值,可以选择 "默认"、"值"、"滑块"、"线性比例 "和 "旋转器"。
  1. 创建程序阶段的数据输入表单

    数据输入表单决定如何将数据元素显示为 跟踪捕捉**应用中的用户。

  2. 点击**创建数据输入表单**。

  3. 点击**基本**,部分**或**自定义

  4. 要创建**基本**数据输入表单:拖放数据 元素按您想要的顺序排列。

  5. 要创建**部分**数据输入表单,请执行以下操作:

    1. 点击添加按钮,然后输入部分的名称,说明和 桌面设备和移动设备的渲染类型。

    2. 单击该部分,使其以黑色边框突出显示。

    3. 通过单击数据旁边的加号来添加数据元素 元素的名称。

    4. 重复上述步骤,直到获得所需的所有部分。

    5. 更改部分顺序:单击选项菜单,然后拖动 部分到您想要的地方。

  6. 要创建** Custom 数据条目,请执行以下操作:使用WYSIWYG编辑器 创建一个完全定制的表单。如果您选择**来源,则您 可以直接将HTML代码粘贴到编辑区域中。你也可以 插入图像,例如标志或徽标。

  7. 单击添加阶段。

访问

访问选项决定谁可以捕获程序数据或查看/编辑数据 程序的元数据。程序可以与组织单位共享, 另外,主程序和任何程序阶段的访问选项 可以通过**共享对话框**进行配置。访问选项是 在**访问权限**标签中可用。

分配组织单位:

  1. 在组织树中,双击您的组织单位 想要添加到程序中。

    您可以通过展开目录树来在树中找到组织单位 分支(单击箭头符号),或通过搜索 名称。所选组织单位显示为橙色。

更改角色和访问权限:

  1. 向下滚动到**角色和访问权限**部分。

    第一行显示主程序的访问选项,每个 下一行显示一个程序阶段的选项。程序 带有警告图标(感叹号)的阶段包含访问选项 偏离主程序,这意味着它们可以通过 不同的用户组合。

  2. 单击任一行,将显示**共享对话框**。

  3. 相应地修改访问选项。请参阅有关 共享对话框以获取详细信息。

  4. 点击**应用**按钮。

  5. 对每个程序/程序阶段重复该过程。您也可以复制 从主程序到子程序的所有访问选项:

    1. 选择您想要具有类似访问权限的程序阶段 切换复选框,将其作为主程序 程序阶段的右侧。您也可以选择 **选择全部**程序阶段,**取消选择全部**程序阶段 或根据访问选项**选择类似**阶段,以 主程序。默认情况下会切换相似的阶段。

    2. 点击**应用于选定阶段**

创建程序通知

您可以通过注册和创建程序的程序通知 他们的计划阶段。通知通过内部发送 DHIS2邮件系统,通过电子邮件或文本消息(SMS)。您可以 使用程序通知,例如,将自动提醒发送给 预定约会前10天跟踪的实体。您使用 程序的跟踪实体属性(例如名字)和程序 参数(例如注册日期)以创建通知 模板。

  1. 打开**维护**应用项目,点击**项目,然后点击 通知**。

    所选程序的现有程序通知列表 打开。如果该程序没有任何程序通知,则 列表为空。

  2. Click on add button and select Program notification.

  3. 输入一个**名称**。

  4. 创建**主题模板**。

    双击**参数**字段中的参数进行添加 对你的主题。

    Note

    The subject is not included in text messages.

  5. 创建**消息模板**。

    双击**参数**字段中的参数名称以添加 他们到您的消息。

    亲爱的A {w75KJ2mc4zz}:您现在已注册V {program _name}。

  6. 在 "何时发送 "** 字段中,选择应触发 "何时发送 "的内容。 通知。

    | 触发器 | 说明 | 注意 | 触发器 |---|---|---| | 项目注册 | 当 TEI 注册项目时,将发送项目通知。| - | | TEI 计划完成时,将发送计划通知。 | 计划天数(事件日期) | 在事件日期之前或之后的 XX 天发送计划通知 | 您需要输入将发送通知的计划日期之前或之后的天数。| | 计划发送天数(注册日期) | 计划通知将在注册日期前后 XX 天发送 | 您需要输入将发送通知的计划日期前后的天数。| | 项目规则 | 通知将因项目规则执行而触发。| 要成功触发通知,必须具备 ProgramRuleActionType.SENDMESSAGE 的项目规则。|

  7. 在 "发送对象 "** 字段中,选择应向谁发送邮件。 程序通知。

    收件人类型 | 说明 | 备注 | 收件人类型 | 说明 | 备注 |---|---|---| | 通过电子邮件或短信接收项目通知。| 要接收节目通知,收件人必须有电子邮件地址或电话号码属性。| | 组织单位联系人 | 通过电子邮件或短信接收项目通知。| 要接收项目通知,接收组织单位必须有注册联系人,并带有电子邮件地址和电话号码。| | 组织单位的用户:| 所有注册到所选组织单位的用户都会通过内部 DHIS2 消息系统接收计划通知。| - | | 用户组: | 所选用户组的所有成员都会通过 DHIS2 内部邮件系统接收节目通知。 | Limit To Hierarchy(限制到层次结构) | 仅向属于层次结构中任何一个组织单位的用户发送通知。| 此选项仅在用户组被选为收件人时可用。| | 仅向上级组织单位的用户发送通知。| 此选项只有在用户组被选为收件人时可用。| | 项目属性(Program Attribute) | TrackedEntityAttribute 也可以被选为收件人。| 该参数只有在 TrackedEntityAttribute 值类型为 PHONE_NUMBER/EMAIL 时才有效。|

  8. 点击**保存**。

创建程序阶段通知

  1. 打开**维护**应用项目,点击**项目,然后点击 通知**。

    所选项目的现有程序阶段通知的列表 程序阶段打开。如果程序阶段没有任何程序 阶段通知,列表为空。

  2. 点击添加按钮,然后选择**程序阶段通知**。

  3. 点击**添加新**。

  4. 输入一个**名称**。

  5. 创建**主题模板**。

    双击**参数**字段中的参数名称以添加 他们对你的主题。

    Note

    The subject is not included in text messages.

  6. 创建**消息模板**。

    双击**参数**字段中的参数名称以添加 他们到您的消息。

    亲爱的A {w75KJ2mc4zz},欢迎前来预约 V {due _date}。

  7. 在 "何时发送 "** 字段中,选择应触发 "何时发送 "** 的内容。 通知。

    | 触发器 | 说明 | 注意 | 触发器 |---|---|---| | 计划阶段完成 | 计划阶段完成时发送计划阶段通知 | 计划天数(到期日) | 项目阶段通知在到期日之前或之后的 XX 天发送 | 您需要输入要发送通知的计划日期之前或之后的天数。| | 项目规则 | 执行项目规则后将触发通知。| 要成功触发通知,必须有项目规则(ProgramRuleActionType.SENDMESSAGE)。|

    1.允许多次发送通知 1.

    如果需要多次发送通知,可使用此标记。例如,在可重复的项目阶段,只要该阶段重复,就会发送相同的通知。
    
  8. 在**接受者**字段中,选择应接受计划的人员 阶段通知。您可以选择:

    收件人类型 | 说明 | 备注 | 收件人类型 | 说明 | 备注 |---|---|---| | 通过电子邮件或短信接收节目通知。| 要接收节目阶段通知,收件人必须有电子邮件地址或电话号码属性。| | 组织单位联系人 | 通过电子邮件或短信接收节目通知。| 要接收项目阶段通知,接收方组织单位必须有注册联系人,并带有电子邮件地址和电话号码。

    系统会选择与事件发生地相同的组织单位。| | 组织单位的用户:| 所有注册到所选组织单位的用户都会通过内部 DHIS2 消息系统接收计划通知。| - | | 用户组: | 所选用户组的所有成员都会通过 DHIS2 内部邮件系统接收节目通知。 | Limit To Hierarchy(限制到层次结构) | 仅向属于层次结构中任何一个组织单位的用户发送通知。| - | | 仅限上级组织单位 | 仅向属于上级组织单位的用户发送通知。| - | | 数据元素 | 可选择与 ProgramStage 相关联的数据元素作为收件人。| 数据元素只有在值类型为 PHONE_NUMBER/EMAIL 时才有效。| | 与 ProgramInstance/Enrollment 关联的 Tracked Entity Attribute(跟踪实体属性)可被选为收件人。| 属性只有在值类型为 PHONE_NUMBER/EMAIL 时才有效。| | 网络钩子是自动发送到在网络钩子 URL 字段中配置的外部 URL 的 HTTP 消息。通知模板变量将作为 HTTP 请求中的键值对发送。| - |

  9. 点击**保存**。

参考信息:程序通知参数

表:项目通知中使用的项目通知参数

通知类型 变量名称 变量代码
程序 当前日期 V{current_date}
自注册日期起的天数 V{days_since_enrollment_date}
注册日期 V{enrollment_date}
事件日期 V{incident_date}
组织单位名称 V{org_unit_name}
计划名称 V{program_name}
程序阶段 当前日期 V{current_date}
预产期后的天数 V{days_since_due_date}
距到期日的天数 V{days_until_due_date}
到期日 V{due_date}
组织单位名称 V{org_unit_name}
计划名称 V{program_name}
节目阶段名称 V{program_stage_name}
活动组织单位 V{event_org_unit_id}
报名组织单位 V{enrollment_org_unit_id}
计划阶段 ID V{program_stage_id}
项目 ID V{program_id}
计划实例 ID/注册 ID V{enrollment_id}
被跟踪实体 ID V{tracked_entity_id}
活动/执行日期 V{event_date}

配置程序指示器

关于计划指标

程序指示符是基于数据元素和属性的表达式 跟踪实体的数量,可用于基于 式。计划指标包括汇总类型,分析 类型,表达式和过滤器。

根据分配的汇总类型评估计划指标, 表达式和过滤器。评估顺序为:

    • filter *将过滤成为 评估/汇总例程。
    • expression *将针对每个事件进行评估。
  1. 所有评估的表达式值将根据以下条件进行*统计* 程序指示器的聚合类型。

表:计划指标组成部分

计划规则部分 描述
聚集类型 汇总类型决定了计划指标的汇总方式。可使用以下汇总类型:
* 平均值
* 平均值(数字)
* 平均值(数字,分解)
* 平均值(组织单位层次结构中的总和)
* 平均值(数字总和)
* 平均值(数字总和,分解)
* 平均值(是/否)
* 计数
* 自定义
"自定义 "聚合类型允许您在表达式中在线指定聚合类型。所有其他聚合类型都应用于整个表达式。
使用 "自定义 "聚合类型可能会导致上述评估顺序出现异常,在这种情况下,可以对表达式的各个部分进行评估和聚合,而不是在聚合之前对整个表达式进行评估。
* 默认值
* 最大值
* 最小值
* 无
* 标准偏差
* 总和
* 方差
分析类型 可用的分析类型有 eventenrollment

分析类型定义了计划指标是根据事件计算还是根据计划注册人数计算。这对可以进行哪种类型的计算有影响。
* 事件意味着数据源中的每个事件都是独立的一行。这适用于执行计数和求和等聚合运算。
* 注册意味着数据源将单个注册的所有事件合并在同一行。这样就可以进行计算,比较一个计划注册中不同计划阶段的事件数据。
组织单位字段 确定将哪个组织单位分配给程序指示值。

对于活动计划(无注册),选项如下:
* 事件组织单位(默认):事件发生地
* 分配给程序的值类型为组织单位(如有)的任何数据元素

对于跟踪程序(有注册)和分析类型 Enrollment ,选项如下:
注册组织单位:被跟踪实体实例创建的地方
* 注册组织单位(默认):被跟踪实体实例注册此计划的地方
* 开始时的所有者组织单位:被跟踪实体实例在报告期开始时的所有者
* 结束时的所有者组织单位:被跟踪实体实例在报告期结束时的所有者

对于跟踪程序(带注册)和分析类型 Event 的选项有: * 事件组织单位(默认):被跟踪实体实例在报告期开始时的所有者 * 结束时的所有者组织单位:被跟踪实体实例在报告期结束时的所有者
* 事件组织单位(默认):事件发生地
* 分配给程序的组织单位值类型的任何数据元素(如有)
* 注册组织单位:被跟踪实体实例创建地
* 注册组织单位:被跟踪实体实例注册此程序地
* 开始时的所有者组织单位:报告期开始时被跟踪实体实例的所有者
* 结束时的所有者组织单位:报告期结束时被跟踪实体实例的所有者
分析时段界限 定义计划指标计算的边界。边界决定了哪些事件或注册人数会被包含在汇总中,并始终与汇总报告期的开始和结束相对应。创建计划指标时,会根据分析类型预选默认边界。
* 对于*事件*分析类型,默认边界将被配置为包含事件日期在报告期开始之后和报告期结束之前的任何事件。
* 对于*注册*分析类型,默认边界将包含所有注册日期在报告期开始之后、报告期结束之前的注册。此外,默认的注册计划指标会评估所有计划阶段的最新事件,无论日期如何。

可以更改上下限,以包括相对于报告期更长或更短的时间段,或删除其中一个界限--实际上是返回某个时间段之前或之后的所有数据。还可以添加更多的限制条件,例如,使注册计划指标只包括截至给定时间点的事件数据。
* 边界目标:可以是*事件日期*、事件日期注册日期*或*自定义。指定边界限制的内容。

自定义*用于使边界以日期数据元素、跟踪实体属性或项目阶段的事件存在为目标。这是通过表单上的自定义表达式实现的:
- 日期类型数据元素:#{programStageUid.dataElementUid}.
#{A03MvHHogjR.a3kGcGDCuk6}
- 日期类型的跟踪实体属性:#{attributeUid}.
A{GPkGfbmArby}
- 在特定项目阶段存在一个事件:PS_EVENTDATE:programStageUid。
PS_EVENTDATE:A03MvHHogjR
此边界目标仅适用于分析类型注册
* 分析周期边界类型:定义边界是结束边界 - 以 "之前...... "开始,还是开始边界 - 以 "之后...... "开始。还定义了边界是与总体报告期的结束有关,还是与总体报告期的开始有关。
* 按金额抵消期间:在某些情况下,例如队列分析,在运行数据透视和报告时,边界应相对于总体报告期进行偏移。按金额偏移周期用于在时间上将当前边界后移(负值)或前移(正值)。金额和期间类型将共同决定偏移量的大小。例如,在制作一个简单的 1 年入学队列计划指标时,可以用"-1 "和 "年 "来抵消计划指标的每个边界
* 期间类型:见上文。可以是任何时期,如 *Weekly
Quarterly
以目标取代源 表达式定义了指标的计算方式。表达式可包含对各种实体的引用,在计算指标时,这些实体将被相关值替代:
* 数据元素:数据元素:将被替换为进行计算的时间段和组织单位的数据元素值。指计划阶段和数据元素。
* 属性:将用计算所针对的个人/被跟踪实体的属性值代替。
* 变量:将被替换为与程序相关的特殊值,包括事件发生日期和个人注册日期、当前日期和表达式中的值计数,以及计算所针对的时间段和组织单位。
* 常数:将用常数的值替代。

表达式是数学表达式,也可以包含运算符。

对于单一事件程序和分析类型为*事件*的跟踪程序,表达式将按*每个事件*进行评估,然后根据其聚合类型进行聚合。

对于分析类型为 "注册*"的跟踪程序,表达式将按 "每次注册*"进行评估,然后根据其聚合类型进行聚合。
过滤 筛选器应用于事件,并筛选用于计算指标的数据源。也就是说,过滤器应用于指标表达式求值前的事件集。该过滤器必须为 "true "或 "false"。过滤器应用于每个事件。如果过滤器返回值为 "true",则该事件将包含在后面的表达式评估中,否则将被忽略。与表达式类似,过滤器也可以包含对数据元素、属性和常量的引用。

此外,项目指示符过滤器还可以使用逻辑运算符。这些运算符可用于形成逻辑表达式,最终评估结果为真或假。例如,您可以断言多个数据元素必须是一个特定值,或者特定属性的数值必须小于或大于一个常量。

在**维护**应用项目中,您可以管理以下项目指示器 对象:

CSV元数据导入 { #webapi_csv_metadata_import } 可用功能
计划指标 创建、编辑、克隆、共享、删除、显示详情和翻译
计划指标组 创建、编辑、克隆、共享、删除、显示详情和翻译

创建或编辑程序指示器

注意

程序指示器完全属于一个程序。

  1. 打开** Maintenance 应用程序,然后单击 Indicator ** > ** Program 指示符**。

  2. 点击添加按钮。

  3. Select a Program and enter:

    • 名称

    • 简称

    • 颜色

    • 图标

    • 描述

    • Select number of Decimals in data output.
  4. Select an Aggregation type.

  5. 如果要**以表格显示**,请选择一个。

  6. Assign one or multiple **Legend**s.

  7. (可选)输入汇总数据的** Category选项组合 出口**。

  8. (可选)输入汇总的**属性选项组合 数据导出**。

  9. 创建表达式。

    1. 点击**编辑表达式**。

    2. 根据数学运算符和 属性,变量和常量在右侧列出。

  10. 创建过滤器。

    1. 点击**编辑过滤器**。

    2. 根据数学运算符和 属性,变量和常量在右侧列出。

  11. 点击**保存**。

创建或编辑程序指示器组

  1. 打开** Maintenance 应用程序,然后单击 Indicator ** > ** Program 指标组**。

  2. 点击添加按钮。

  3. Enter Name and Code.

  4. 在可用程序指示符列表中,双击 您要分配给组的程序指示器。

  5. 点击**保存**。

参考信息:每种值类型的表达式和过滤器示例

下表显示了如何编写表达式和过滤器的示例 对于不同的数据元素和属性值类型:

表格每个值类型的表达式和过滤器示例

价值类型 语法示例
整数

负整数

正整数或零整数

正整数

数字

百分比
数值字段,可作为表达式或在筛选器中用于聚合:
#{mCXR7u4kNBW.K0A4BauXJDl}>= 3
是/否

仅是
布尔字段。是 "转换为数字 1,"否 "转换为数字 0。可用作表达式的聚合或过滤器:
#{mCXR7u4kNBW.Popa3BauXJss} == 1.
文本

长文本

电话

电子邮件
文本字段。可在筛选器中检查是否相等:
#{mCXR7u4kNBW.L8K4BauIKsl} == 'LiteralValue'
日期

年龄
日期字段。与 d2:daysBetween 函数结合使用时最有用,该函数可生成可聚合为表达式或在过滤器中使用的数字:
d2:daysBetween(#{mCXR7u4kNBW.JKJKBausssl},V{enrollment_date}) >100
也可以直接检查过滤器中的相等性:
#{mCXR7u4kNBW.JKJKBausssl} == '2011-10-28'

参考信息:在程序指示器表达式和过滤器中使用的函数,变量和运算符

包含属性,数据元素和常量的表达式 看起来像这样:

(A {GPkGfbmArby} +#{mCXR7u4kNBW.NFkjsNiQ9PH})* C {bCqvfPR02Im}

使用自定义聚合类型的表达式,因此可以使用 内联聚合类型看起来像 这个:

(sum(#{mCXR7u4kNBW.K0A4BauXJDl} *#{mCXR7u4kNBW.NFkjsNiQ9PH})/ sum(#{mCXR7u4kNBW.NFkjsNiQ9PH})))* 100

注意在表达式内部如何使用“ sum”聚合运算符 本身。

在项目指示表达式或过滤器中添加注释{ #adding-comments-in-program-indicator-expression-or-filter }

单行和多行注释均支持统一语法

d2:hasValue(#{mCXR7u4kNBW.NFkjsNiQ9PH}) /* 此处为注释 */

d2:hasValue(#{mCXR7u4kNBW.NFkjsNiQ9PH}) && /* this is 
评论 */
d2:daysBetween(V{enrollment_date},PS_EVENTDATE:mCXR7u4kNBW)

程序指示符表达式或过滤器中使用的函数

程序指示符表达式和过滤器支持以下范围 职能。这些函数可以应用于数据元素和属性:

表格在项目指示表达式或过滤器中使用的函数

功能 size 描述
d2:hasValue (对象) 如果数据元素/属性有值,则返回 true。可用于筛选器,以区分数字 0 和无值,以及区分 "是/否 "字段的明确 "否 "和无选择。
d2:minutesBetween (日期时间,日期时间) 生成 "日期和时间 "类型的两个数据元素/属性之间的分钟数。当第一个参数 datetime 在第二个参数 datetime 之前时,数字为正数,反之则为负数。静态日期时间格式为 "yyyy-MM-dd hh:mm"。任何参数都可以用 PS_EVENTDATE:(programStageUid)替换,以比较给定项目阶段的最新事件日期。
d2:daysBetween (日期,日期) 计算两个日期类型数据元素/属性之间的天数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。任何参数都可以用 PS_EVENTDATE:(programStageUid)替换,以比较给定项目阶段的最新事件日期。
d2:星期之间 (日期,日期) 计算两个日期类型的数据元素/属性之间的整周数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。任何参数都可以用 PS_EVENTDATE:(programStageUid)替换,以比较给定项目阶段的最新事件日期。
d2:monthsBetween (日期,日期) 计算两个日期类型数据元素/属性之间的整月数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。任何参数都可以用 PS_EVENTDATE:(programStageUid)替换,以比较给定项目阶段的最新事件日期。
d2:年之间 (日期,日期) 生成两个日期类型数据元素/属性之间的整年数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。任何参数都可以用 PS_EVENTDATE:(programStageUid)替换,以比较给定项目阶段的最新事件日期。
d2:condition (布尔-expr、true-expr、false-expr)。 计算布尔表达式,如果为真则返回真表达式值,如果为假则返回假表达式值。条件表达式必须加引号。 true-expr 和 false-expr 参数必须遵循任何项目指示符表达式(包括函数)的规则。
d2:zing (表情) 如果表达式为负值,则返回零,否则返回表达式值。表达式必须遵循任何项目指示表达式(包括函数)的规则。
d2:oizp (表情) 如果表达式为 0 或正,则返回 1,否则返回 0。表达式必须遵循任何项目指示表达式(包括函数)的规则。
d2:zpvc (对象,[,对象......]) 返回给定对象参数中数字零和正值的数量。可以提供任意数量的参数。
d2:relationshipCount ([relationshipTypeUid]) 计算与注册或事件相关的给定类型的关系数。如果没有给出类型,则计算所有类型。
d2:计数 (dataElement) 仅对注册计划指标有用。统计在注册过程中为给定计划阶段和数据元素收集的数据值的数量。参数数据元素用 #{programStage.dataElement} 语法提供。
d2:countIfValue (dataElement, value) 仅对注册计划指标有用。统计在注册过程中,与给定计划阶段和数据元素的给定字面值相匹配的数据值的数量。参数数据元素使用 #{programStage.dataElement} 语法提供。该值可以是硬编码文本或数字,例如 "No_anemia"(如果只计算包含该文本的值,则为 "No_anemia")。
d2:countIfCondition (数据元素,条件) 仅对注册计划指标有用。统计在注册过程中,符合给定计划阶段和数据元素的给定条件标准的数据值的数量。参数数据元素使用 #{programStage.dataElement} 语法提供。条件以单引号表达,例如"<10",表示只计算小于 10 的值。
如果 (布尔-expr、true-expr、false-expr)。 评估布尔表达式,如果为 true,则返回 true 表达式的值;如果为 false,则返回 false 表达式的值。除了布尔表达式不加引号外,该函数与 d2:condition 函数相同。
(expr1 in expression [, expression ...]) 如果 expr1 等于以下任何表达式,则返回 true,否则返回 false。
一片空白 (对象) 如果对象值丢失(空),则返回 true,否则返回 false。
isNotNull (对象) 如果对象值未丢失(非空),则返回 true,否则返回 false。
firstNonNull (对象 [, 对象 ...]) 返回第一个未丢失(非空)对象的值。可提供任意数量的参数。任何参数也可以是数字或字符串字面形式,如果前面所有对象都有缺失值,则将返回该值。
最伟大的 (表达式 [, 表达式 ...]) 返回所给表达式的最大(最高)值。可提供任意数量的参数。每个表达式必须遵循任何项目指示表达式(包括函数)的规则。
最小 (表达式 [, 表达式 ...]) 返回给定表达式中最小(最低)的值。可提供任意数量的参数。每个表达式必须遵循任何项目指示表达式(包括函数)的规则。
登录 (表达式[, 基数]) 返回数字表达式的自然对数(以 e 为底数)。如果第二个参数是整数,则返回以整数为底数的对数。
log10 (表情) 返回数字表达式的公共对数(以 10 为底)。

使用“ hasValue”函数的过滤器如下所示:

d2:hasValue(#{mCXR7u4kNBW.NFkjsNiQ9PH})

使用“ relationshipCount(relationshipTypeUid)”函数的过滤器如下所示:

d2:relationshipCount('KLkjshoQ90U')

使用 "is( x in y, z ) "函数的过滤器看起来像这样:

is(#{oahc9ooVema} in 'New', 'Relapse')

使用“ zing”和“ oizp”函数的表达式如下所示:

d2:zing(A {GPkGfbmArby})+ d2:oizp(#{mCXR7u4kNBW.NFkjsNiQ9PH}))

使用“ daysBetween”函数的表达式如下所示:

d2:daysBetween(#{mCXR7u4kNBW.k8ja2Aif1Ae},'2015-06-01')

使用“ yearBetween”函数将程序阶段“ mCXR7u4kNBW”的最新事件与注册日期进行比较的表达式如下所示:

d2:daysBetween(V {enrollment_date},PS_EVENTDATE:mCXR7u4kNBW)

使用“条件”函数的表达式如下所示:

d2:condition('#{mCXR7u4kNBW.NFkjsNiQ9PH}> 100',150,50)

使用“ countIfValue”函数的表达式仅计算收集值10的次数,如下所示:

d2:countIfValue(#{mCXR7u4kNBW.NFkjsNiQ9PH}),10)

使用“ zpvc”函数的表达式如下所示:

d2:zpvc(A {GPkGfbmArby}),#{mCXR7u4kNBW.NFkjsNiQ9PH}),4,-1)

使用“ if”和“ isnull”函数的表达式如下所示:

if(isNull(A {GPkGfbmArby}),10,20)

使用“ firstNonNull”函数的表达式如下所示:

firstNonNull(A {GPkGfbmArby}),#{mCXR7u4kNBW.NFkjsNiQ9PH},44)

使用“最大”函数的表达式如下所示:

最好的(#{mCXR7u4kNBW.k8ja2Aif1Ae},#{mCXR7u4kNBW.NFkjsNiQ9PH},1)

程序指示符表达式或过滤器中使用的变量

程序指示符表达式和过滤器支持以下范围 变量:

表格在项目指示表达式或过滤器中使用的变量

变量 描述
event_date 事件或报名中最后一个事件发生的日期。
creation_date 在系统中创建事件或注册的日期。
due_date 事件到期的日期。
sync_date 事件或注册最后一次与Android应用程序同步的日期。
incident_date 事件发生的日期。
enrollment_date 跟踪的实体实例在程序中注册的日期。
enrollment_status 可用于包含或排除某些状态下的注册。

在计算整个孕期的血红蛋白改善/恶化情况时,可能只考虑已完成的登记。如果未过滤掉未完成的登记,这些登记将代表半成品的产前检查随访,最终的改善/恶化情况尚未确定。
current_date 当前日期。
value_count 事件的表达式部分中非空值的数量。
zero_pos_value_count 事件的表达式部分中的正数值。
event_count 事件计数(与筛选器结合使用)。项目指标的聚合类型必须是 COUNT。
enrollment_count 注册人数计数(与筛选器结合使用)。计划指标的汇总类型必须是 COUNT。
tei_count 跟踪实体实例的计数(与筛选器结合使用时非常有用)。项目指标的聚合类型必须是 COUNT。
org_unit_count 组织单位计数(与筛选器结合使用)。计划指标的汇总类型必须是 COUNT。
program_stage_name 可在筛选器中使用,以便在跟踪项目的筛选器中只包含某些项目阶段。使用项目阶段的名称:
V{program_stage_name} == 'ANC first visit'
program_stage_id 可在筛选器中使用,以便在跟踪项目的筛选器中只包含某些项目阶段。使用项目阶段的唯一标识符:
V{program_stage_id} == 'YPSSfbmAtt1'
分析周期开始 可在筛选器或表达式中使用,用于比较任何日期与每个报告期的第一个日期。
d2:daysBetween(#{WZbXY0S00lP.w4ky6EkVahL}, V{analytics_period_start})
分析周期结束 可以在过滤器或表达式中使用,以将任何日期与每个报告期间的最后一个包含日期进行比较。
event_status 可用于比较事件状态的过滤器或表达式。
v{event_status} == 'completed'
completed_date 包含事件的完成日期。如果事件尚未完成,则 "completed_date "不包含任何内容。

使用“ Analytics(分析)期末”变量的过滤器仅包含 拥有LMP的女性 三个月:

d2:daysBetween(#{WZbXY0S00lP.w4ky6EkVahL},V {analytics_period_end})<= 84

使用“值计数”变量的表达式看起来像 这个:

(#{A03MvHHogjR.a3kGcGDCukuk6} +#{A03MvHHogjR.wQLfBvPrXqq})/ V {value_count}

使用“ event _date”和“ incident _date”变量的表达式 看起来像这样:

d2:daysBetween(V {incident_date},V {event_date})

操作员要在程序指示器过滤器中使用

表:在项目指示器过滤器中使用的运算符

所需值 描述
逻辑与
逻辑或
== /api/analytics/events/query/IpHINAT79UW?stage=A03MvHHogjR&startDate=2016-03-01
&endDate=2016-12-31&dimension=ou:O6uvpzGd5pu&dimension=UXz7xuGCEhU:GT:2000
!= /api/analytics/events/query/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
&dimension=ou:O6uvpzGd5pu&dimension=qrur9Dvnyt5&desc=EVENTDATE&asc=qrur9Dvnyt5
< 字符串、布尔值、整数、浮点、集合(检查大小)、日期
<= Filter by AGE is not null
> 字符串、布尔值、整数、浮点、集合(检查大小)、日期
>= 您可以使用以下方法过滤多个特定年龄的“年龄”数据元素
像这样的 IN 运算符:

这些运算符可用于形成逻辑表达式,最终 评估为真或假。例如,您可以断言 多个数据元素必须是一个特定的值,或者那个特定的 属性的数值必须小于或大于常数。

同时使用属性和数据元素的过滤器如下所示:

A {cejWyOfXge6} =='Female'和#{A03MvHHogjR.a3kGcGDCuk6} <= 2

提示

DHIS2正在使用JEXL库来评估表达式 支持超出此范围的其他语法 文档。请参阅[项目首页中的参考 页面](http://commons.apache.org/proper/commons-jexl/reference/syntax.html) 了解如何创建更复杂的表达式

配置程序规则

关于计划规则

程序规则允许您创建和控制**跟踪捕获**和**事件捕获**应用程序用户界面的动态行为。 跟踪捕捉**和事件捕捉**应用程序的用户界面。 在数据输入过程中,每次显示用户界面和每次输入数据元素时,都会对程序规则表达式进行评估。 在数据输入过程中,每次显示用户界面和每次更改数据元素时,都会对程序规则表达式进行评估。 更改数据元素时,都会对程序规则表达式进行评估。当用户在**记录仪中输入值时,大多数类型的操作会立即生效。 大多数类型的操作会在用户在 Tracker CaptureEvent Capture 应用程序中输入值时立即生效。 应用程序。

表:计划规则组成部分

计划规则部分 描述
Table: Reserved values 每个项目规则都包含一个或多个动作。当表达式为真时,这些行为将在用户界面中触发。如果表达式为真,则会立即应用操作;如果表达式不再为真,则会恢复操作。操作有多种类型,您可以在一个项目规则中包含多个操作。
项目规则表达式 每个项目规则都有一个表达式,如果表达式求值为 "true",则该表达式决定是否触发项目规则的操作。如果表达式为 true,项目规则生效,操作将被执行。如果表达式为假,则项目规则不再生效,操作也不再应用。

您可以使用标准数学运算符、自定义函数、用户定义的静态值和项目规则变量创建表达式。项目规则变量代表属性和数据元素值,将作为表达式的一部分进行评估。
项目规则变量 项目规则变量可让你在项目规则表达式中包含数据值和属性值。通常情况下,在创建项目规则之前,你必须创建一个或多个项目规则变量。这是因为项目规则表达式通常至少包含一个数据元素或属性值,这样才有意义。

项目规则变量在项目中的所有规则之间共享。当你为同一个项目创建多个项目规则时,这些规则将共享同一个项目规则变量库。

在**维护**应用项目中,您可以管理以下项目规则 对象:

CSV元数据导入 { #webapi_csv_metadata_import } 可用功能
计划规则 创建、编辑、克隆、删除、显示详情和翻译
项目规则变量 创建、编辑、克隆、共享、删除、显示详情和翻译

工作流程

  1. 在** Maintenance **应用程序中,如果需要,请创建程序规则变量 需要。

  2. In the Maintenance app, create the program rule:

    1. 输入程序规则详细信息。

    2. 创建程序规则表达式。

    3. 定义程序规则操作。

  3. 在**跟踪捕捉**或**事件捕捉**应用项目中,验证 程序规则的行为符合预期。

创建或编辑程序规则变量

  1. 打开**维护**应用项目,点击**项目** (> 项目规则 变量

  2. 点击添加按钮。

  3. 选择**项目**并输入**名称**

    请注意,项目名称不得包含以下任何排除的关键字: - 和 - 或 - 不是

  4. Select if you want to Use code for option set.

    仅当数据元素或已跟踪时,此选项才有效 实体属性连接到选项集。如果不选择 此选项时,程序规则变量将填充 选项集的名称。如果选择该选项,则程序规则 变量将使用选项集的代码填充。

  5. 选择**来源类型**,然后输入所需信息。

    根据来源类型,您必须选择例如 程序阶段****数据元素**或**跟踪实体属性

    源类型确定程序规则变量的方式 填充一个值。

    | 来源类型 |---|---| | 该源类型的工作方式与**当前程序中最新事件的数据元素**相同,只是它只评估一个程序阶段的值。

    在多个程序阶段使用同一数据元素的程序规则中,如果规则需要评估某一特定阶段的最新数据值,这种源类型就非常有用。

    为了知道哪个事件是最新的,需要使用报告日期(事件日期)。如果有多个报告日期相同的事件,系统会选择事件中创建时间属性最晚的那个。 ** 当前程序中最新事件的数据元素** | 当程序规则变量需要反映数据元素的最新已知值时,无论用户当前打开的是哪个事件,都会使用这种源类型。

    在**跟踪捕获**和**事件捕获**应用程序中,这种源类型的填充方式略有不同:

    跟踪捕获:程序规则变量将使用在注册中为给定数据元素收集的最新数据值填充。

    事件捕获:程序规则变量将以当前事件数据填充。
    未来日期比当前或过去日期 "新"。

    要知道哪个事件是最新的,需要使用报告日期(事件日期)。如果有多个事件的报告日期相同,系统会选择事件中创建时间属性最晚的那个。 ** 当前事件中的数据元素** | 使用此源类型的程序规则变量将包含用户当前打开的同一事件中的数据值。

    这是最常用的源类型,尤其适用于跳过逻辑(隐藏操作)和警告/错误规则。| ** 上一事件的数据元素** | 使用此源类型的程序规则变量将包含上一事件中指定数据元素的值。只对旧事件进行评估,不包括用户当前打开的事件。

    这种源类型通常用于在注册过程中只收集一次数据元素,并在后续事件中隐藏的情况。

    另一个用例是制定验证输入的规则,在这种情况下,从一个事件到下一个事件之间存在着预期的递进关系--规则可以评估前一个值是否较高/较低,如果输入了意外值,则会发出警告。| | 这种源类型的程序规则变量不直接与任何表单数据相连,而是通过其他程序规则的 指定**操作来填充。

    该变量将用于进行初步计算、**ASSIGN
    程序规则操作和赋值,该值可被其他程序规则使用,从而使表达式更简单、更易于维护。

    这些变量不会被持久化,只会在程序规则执行期间保留在内存中。任何将数据值分配给初步计算值的程序规则,通常也会分配一个**优先级**,以确保初步计算在消耗计算值的规则之前完成。| | 使用当前注册的指定跟踪实体属性填充程序规则变量。

    使用这种源类型创建程序规则,以评估注册时输入的数据值。

    在创建将事件中的数据与注册时输入的数据进行比较的程序规则时,这种源类型也很有用。

    此源类型仅用于跟踪程序(具有注册功能的程序)。|

  6. 点击**保存**。

创建或编辑程序规则

注意

程序规则完全属于一个程序。

  1. 打开** Maintenance 应用程序,然后单击 Program ** > ** Program 规则**。

  2. 点击添加按钮。

  3. 输入程序规则详细信息。这些字段未显示给 最终用户,它们仅适用于程序管理员。

    • 程序

    • 仅适用于计划阶段的触发规则

      如果选择了程序阶段,则该程序规则将仅对所选程序阶段运行, 而不是针对程序中的每个程序阶段运行。

    • 名称

    • 描述

    • 优先

      假设您的程序中有16条程序规则。您 使用以下优先级配置程序规则 设置:

      • 程序规则A的优先级1

      • 计划规则B-K的优先级2

      • 程序规则L-P没有优先级

      结果:系统运行以下程序规则 订购:

      1. 计划规则A

      2. 程序规则B-K(您无法在其中找到或配置 系统运行这些程序规则的顺序)

      3. 程序规则L-P。

  4. 单击 输入项目规则表达式,创建项目规则 借助变量,函数和运算符进行表达。

  5. 单击**定义项目规则操作**并创建操作 当表达式为真时执行。

    1. 单击添加按钮,选择**行动**,然后输入 需要的信息。

      根据操作类型,您必须执行不同的操作 设置类型。对于某些操作类型,还必须输入 自由文本或创建表达式。

      | 操作类型 | 必要设置 | 说明 | 操作类型 | 必要设置 | 说明 |---|---|---| | 赋值 | 要赋值的数据元素

      要赋值的跟踪实体属性

      要赋值的程序规则变量

      要评估和赋值的表达式 | 用于帮助用户计算和填写数据输入表单中的字段。我们的想法是,用户不必填写系统可以计算的值,例如体重指数。

      字段赋值后,用户可以看到该值,但无法编辑。

      注意:要为跟踪实体属性赋值,用户需要打开跟踪实体配置文件部件,以触发规则。

      来自免疫库存卡 i Zambia 的示例:疫苗库存出库余额数据元素是根据入库余额数据元素减去消耗和损耗数据元素计算得出的。

      高级用法:配置 "赋值 "以完成部分计算,然后将计算结果赋值给程序规则变量。这就是 "计算值 "程序规则变量的作用。| | 显示文本 | 显示部件

      静态文本

      在静态文本后评估并显示的表达式 | 用于显示非错误或警告的信息,例如向用户反馈。您也可以使用此操作向用户显示重要信息,例如病人的过敏症。| | 显示键/值对 | 显示部件

      键标签

      要评估并显示为值的表达式 | 用于显示非错误或警告的信息。

      例如:计算怀孕周数和天数,并以临床医生习惯的格式显示。计算基于之前记录的数据。| | 完成时出错 | 旁边显示错误的数据元素

      旁边显示错误的跟踪实体属性

      静态文本

      在静态文本后评估和显示的表达式 | 在表单中出现必须严格遵守的交叉一致性时使用。此操作会阻止用户继续操作,直到错误得到解决。

      此操作不同于常规的**显示错误**,因为在用户尝试实际完成表单之前,错误不会显示。

      如果您没有选择数据元素或跟踪实体属性来显示旁边的错误,请确保您编写了全面的错误信息,以帮助用户修复错误。| | 隐藏字段 | 要隐藏的数据元素

      要隐藏的跟踪实体属性

      空白字段的自定义信息 | 当你想向用户隐藏一个字段时使用。

      空白字段的自定义信息 允许您定义一条显示给用户的自定义信息,以防用户输入或选择值后,程序规则隐藏并空白字段。

      如果隐藏字段操作隐藏了包含数值的字段,则该字段始终会被删除。如果未定义消息,则将显示标准消息提醒用户。| | 隐藏部分 | 要隐藏的程序阶段部分 | 用于向用户隐藏程序阶段中的某个部分。 | | 防止向阶段添加新事件 | 用户无法添加新事件的程序阶段 | 当您不希望用户再向程序阶段添加任何事件时使用。现有事件不会被隐藏。| ** 使字段成为必填字段** | 使数据元素成为必填字段

      使跟踪实体属性成为必填属性 | 当您想使数据元素或跟踪实体属性成为必填字段,以便在保存表单前必须填写时使用。| | 显示错误 | 在旁边显示错误的数据元素

      在旁边显示错误的跟踪实体属性

      静态文本

      在静态文本后评估和显示的表达式 | 在有必须严格遵守的规则时使用。显示错误操作会阻止用户继续操作,直到错误得到解决。

      除非用户在输入数据时出错,否则只有在确定所评估的表达式永远不会为真的情况下,才能使用这种严格的验证。

      当表达式为真并触发操作时,必须定义一条显示给用户的消息。

      您可以选择将错误链接到哪个数据元素或跟踪实体属性。这将有助于用户修复错误。

      如果涉及多个数据元素或属性,请选择用户最可能需要更改的数据元素或属性。| | 显示警告 | 在旁边显示警告的数据元素

      在旁边显示警告的跟踪实体属性

      静态文本

      在静态文本后评估并显示的表达式 | 用于向用户发出有关输入数据的警告,但同时允许用户保存并继续。

      您可以使用警告帮助用户避免输入数据中的错误,同时允许用户有意识地忽略警告并保存超出预设期望的值。

      静态文本**定义了当表达式为真并触发操作时向用户显示的信息。

      您可以选择将错误链接到哪个数据元素或跟踪实体属性。这将有助于用户修复错误。

      如果涉及多个数据元素或属性,请选择用户最可能需要更改的数据元素或属性。| | **完成时的警告
      | 在旁边显示警告的数据元素

      在旁边显示警告的跟踪实体属性

      静态文本

      在静态文本后评估和显示的表达式 | 用于在用户试图完成不一致的数据时发出警告,但同时允许用户继续。警告会在用户填写表格时显示在对话框中。

      静态文本 定义了表达式为真并触发操作时向用户显示的信息。此字段为必填字段。

      您可以选择将错误链接到哪个数据元素或跟踪实体属性。这将有助于用户修复错误。

      如果您没有选择显示错误的数据元素或跟踪实体属性,请确保您编写了全面的错误信息,以帮助用户修复错误。| | 发送消息 | 要发送的消息模板 | 发送消息会根据提供的消息模板触发通知。此操作将立即执行。信息模板将被解析,变量将被替换为实际值。| | 计划消息 | 要发送的消息模板

      数据字段包含用于评估通知发送日期的表达式。如果该表达式的结果不是 Date,那么结果将被丢弃,通知也不会被安排。 | 计划消息将按照数据字段中表达式提供的日期安排通知。表达式示例如下
      d2:addDays( '2018-04-20', '2' )
      将对消息模板进行解析,并用实际值替换变量。| | 隐藏选项 | 要隐藏选项的数据元素

      要隐藏选项的跟踪实体属性

      应隐藏的选项 | 用于有选择地隐藏给定数据元素/跟踪实体属性中选项集的单个选项。

      与**显示选项组**结合使用时,隐藏选项**优先。| ** 隐藏选项组 | ** 隐藏选项组的数据元素**

      ** 隐藏选项组的跟踪实体属性**

      ** 应隐藏的选项组** | 用于隐藏给定选项组和数据元素/跟踪实体属性中的所有选项。

      与**显示选项组**结合使用时,隐藏选项组**优先。| | **显示选项组 | 显示选项组的数据元素

      显示选项组的跟踪实体属性

      应显示的选项组 | 用于在给定的数据元素/跟踪实体属性中只显示给定选项组中的选项。显示一个选项组隐含地隐藏了不属于该组的所有选项。|

    2. 点击**保存**。

    可选)重复上述步骤添加更多操作。

  6. 点击**保存**。

示例:程序规则

注意

您可以在演示服务器上查看所有示例: https://play.dhis2.org/dev/dhis-web-maintenance/#/list/programSection/programRule

本示例说明如何配置程序规则 怀孕的周数和天数,并将结果显示在 临床医生用来查看的格式。计算基于 先前记录 数据。

  1. ** Data **字段中的完整表达式:

    d2:concatenate(d2:weeksBetween(#{lmp},V {current_date}),'+',
    d2:modulus(d2:daysBetween(#{lmp},V {current_date}),7))
    

本例演示了如何配置项目规则,以便在**跟踪器捕获**中的 "反馈 "部件中显示文本。 反馈窗口小部件中显示文本。 应用项目中显示文本。

本例演示了如何配置程序规则,使其始终在 Tracker Capture 应用程序的 "反馈 "部件中显示特定数据。 在**跟踪捕获**应用程序的反馈窗口小部件中始终显示某些数据。当您想确保重要数据 当您想确保重要数据(例如 药物过敏等重要数据时 可见。

通过使用“分配值”类型的程序规则,您可以计算 “访问时的胎龄”值并将其填写在数据输入表单中。您 配置程序规则以基于以下条件计算“访问时的胎龄” 在“ LMP日期”或“超声估计到期 日期”。

参考信息:程序规则表达式中使用的运算符和函数

提示

您可以相互嵌套函数,并使用子表达式来嵌套 形成更复杂的条件。一个产生妊娠的例子 周龄,根据最近的月经日期:

d2:floor(d2:daysBetween(#{lastMenstrualDate},V {event_date})/ 7)

提示

源类型将确定d2:函数调用的方式 评估(源域)参数。

示例:其中\#{hemoglobinCurrent}设置为源类型** Data 当前事件中的元素**。以下函数调用带有评估 是否在当前事件中输入了血红蛋白。

d2:hasValue('hemoglobinCurrent')

示例:其中\#{hemoglobin}设置为源类型**数据元素 来自当前程序中的最新事件**。以下功能 致电以评估是否存在血红蛋白值 注册中的任何事件。

d2:hasValue('hemoglobin')

示例:其中\#{hemoglobinPrevious}设置为源类型** Data 先前事件中的元素**。下面的函数调用 评估是否存在血红蛋白值 当前事件之前的事件。

d2:hasValue('hemoglobinPrevious')

表:项目规则表达式中可能使用的运算符

所需值 描述
+ 将数字相加
-- 数字相减
可识别 两个数字相乘
/ 两个数字相除
% 两个数的模数
&& 逻辑 AND。只有当左右两边的表达式为真时才为真。左右两边的表达式可以是 yes/no、仅 yes 或括号中的子表达式。
> 左数大于右数
>= 左数大于或等于右数
< 左数小于右数
<= 左数小于或等于右数。
== 左侧等于右侧。支持数字、文本、是/否和仅是。
!= 左侧不等于右侧。支持数字、文本、是/否和仅是。
! 否定下面的值。可用于 "是/否"、仅 "是 "或括号中的子表达式。
() 括号用于分组子表达式。

表格在项目规则表达式中使用的自定义函数

功能 size 描述
d2:ceil (数量) 将输入参数**向上舍入**到最接近的整数。
示例:
d2:ceil(#{hemoglobinValue})
d2:楼层 (数量) 将输入参数向下舍入到最接近的整数。
举例说明妇女怀孕的周数。请注意,子表达式 #{gestationalAgeDays}/7 在 floor 函数执行之前已经求值:
d2:floor(#{gestationalAgeDays}/7)
d2:圆 (数字[,小数]) 将输入参数舍入为最接近的整数。可以提供可选的第二个参数,指定数字四舍五入后的小数位数。
示例:d2:round(1.25, 1) = 1.3
d2:模数 (数字,数字) 将第一个参数除以第二个参数,得出模数。
举例说明妇女当前孕周的天数:
d2:modulus(#{gestationalAgeDays},7)
d2:zing (数量) 如果值是负数,则将数字类型的参数评估为零,否则为值本身。
d2:oizp (数量) 如果值为零或正数,则将类型为number的参数评估为1,否则为零。
d2:串联 (对象,[,对象,对象,......]) 根据输入参数生成串联字符串。支持任意数量的参数。主要用于未来的操作类型,例如使用 d2:concatenate('weeks','+','gestationalageDays')显示孕周。
d2:daysBetween (日期,日期) 计算第一个和第二个参数之间的天数。当第一个参数日期早于第二个参数日期时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。
例如,根据末次月经日期和当前事件日期计算妇女的胎龄(天数):
d2:daysBetween(#{lastMenstrualDate},V{event_date})
d2:星期之间 (日期,日期) 计算第一个和第二个参数之间的整周数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。
d2:monthsBetween (日期,日期) 计算第一个和第二个参数之间的整月数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。
d2:年之间 (日期,日期) 生成第一个和第二个参数之间的年数。当第一个参数日期在第二个参数日期之前时,数字为正数,反之则为负数。静态日期格式为 "yyyy-MM-dd"。
d2:addDays (日期、编号) 以第一个参数日期为基础,加上第二个参数的天数,得出一个日期。
根据末次月经计算怀孕预产期的示例:
d2:addDays(#{lastMenstrualDate},'283')
d2:计数 (源字段) 计算参数中源字段输入值的个数。源字段参数是程序中定义的一个源字段的名称--见示例
示例用法 #{previousPregnancyOutcome} 是可重复程序阶段 "前次怀孕 "中的一个源字段:
d2:count('previousPregnancyOutcome')`。
d2:countIfValue (源字段,文本) 计算为第一个参数中的源字段输入的匹配值的个数。只计算与第二个参数匹配的次数。源字段参数是项目中定义的一个源字段的名称--见示例。
使用示例 #{previousPregnancyOutcome} 是可重复项目阶段 "前次怀孕 "中的一个源字段。下面的函数将得出以流产告终的前次怀孕次数:
d2:countIfValue('previousPregnancyOutcome','Abortion')
d2:countIfZeroPos (源字段) 计算参数中源字段输入的零值或正值的个数。源字段参数是程序中定义的一个源字段的名称--见示例。
使用示例 #{fundalHeightDiscrepancy} 是程序中的一个源字段,可以是正值或负值。下面的函数将产生正数出现的次数:
d2:countIfZeroPos('fundalHeightDiscrepancy')`。
d2:hasValue (源字段) 如果参数源字段包含值,则返回值为 true;如果没有输入值,则返回值为 false。
使用示例,查找源字段 #{currentPregnancyOutcome} 是否已填写:
d2:hasValue('currentPregnancyOutcome')d2:hasValue('currentPregnancyOutcome')
d2:zpvc (对象,[,对象,对象,......]) 返回给定对象参数中数字零和正值的数量。可以提供任意数量的参数。
d2:validatePattern (文本,regex-模式) 如果输入文本与提供的正则表达式模式完全匹配,则评估为 true。正则表达式需要转义。
示例表达式,如果数字不在模式 9999/99/9 上则触发操作,
!d2:validatePattern(A{nrc},'\\d{6}\/\\d{2}\/\\d')
示例表达式,如果地址不包含字母或空格,则触发操作,然后是空格,然后是数字:
!d2:validatePattern(A{registrationAddress},'[\\w ]+ \\d+')
示例,如果名称包含任何数字则触发操作:
!d2:validatePattern(A{name},'[^\\d]*')
示例表达式,如果手机号码包含非法号码序列 555:
d2:validatePattern(A{mobile} ,'.*555.*')
d2:左 (文本,字符数) 计算文本的左侧部分,从第一个字符开始计算。
文本可以使用引号,也可以通过变量求值:
d2:left(#{variableWithText}, 3)
d2:对 (文本,字符数) 计算文本的右侧部分,从最后一个字符开始计算。
文本可以使用引号,也可以通过变量求值:
d2:right(#{variableWithText}, 2)`
d2:子字符串 (文本,起始字符串,终止字符串) 计算字符串中由起始和结束字符数指定的部分。
示例表达式:
d2:substring(#{variableWithText}, 1, 3) 如果上例中的 #{variableWithText} 是 "ABCD",那么求值结果就是 "BC"。
d2:分割 (文本、分隔符、元素序号) 用分隔符分割文本,保留第 n 个元素(0 为第一个)。
文本可以使用引号,也可以通过变量求值,但分隔符必须使用引号:
d2:split(#{variableWithText}, '-', 1)
注意:不支持逗号分隔符(,)。
d2:长度 (文本) 查找字符串的长度。
示例:
d2:length(#{variableWithText})
d2:inOrgUnitGroup (文本) 评估当前组织单位是否在参数组中。参数可以用 ID 或组织单位组代码定义。在事件中触发规则时,当前组织单位将是事件组织单位;在 TEI 注册表中触发规则时,当前组织单位将是注册组织单位。
表达式示例:
d2:inOrgUnitGroup('HIGH_RISK_FACILITY')
d2:hasUserRole (用户角色) 如果当前用户具有此角色,则返回 true,否则返回 false
Example expression:
d2:hasUserRole('UYXOT4A3ASA')
d2:zScoreWFA 年龄指标的 Z 值权重 根据 WHO 年龄别体重指标提供的数据计算 z 分数。 e 根据重量值在 -3.5 到 3.5 之间变化。
表达式示例:
d2:zScoreWFA( 年龄、体重、性别 )
性别 > 默认情况下,性别被视为女性。以下任何代码都可用于>表示男性: 'Male', 'MALE', 'male', 'ma', 'm', 'M', 0, false
d2:zScoreHFA 年龄指标的 Z 值身高 根据世卫组织身高-年龄指标提供的数据计算 Z 值。根据身高值的不同,其值在-3.5 到 3.5 之间变化。
示例表达式:
d2:zScoreHFA( ageInMonths, height, gender )
d2:zScoreWFH 身高 Z 值体重指标 根据世界卫生组织体重身长指标和体重身高指标得出的数据计算 Z 值。女孩使用的数据见 此处,男孩使用的数据见 此处。根据体重值的不同,其值在-3.5 到 3.5 之间变化。
表达式示例:
d2:zScoreWFH( height, weight, gender )
d2:minValue 获取所提供项目的最小值 函数获取所提供的数据元素在整个注册过程中的最小值。
示例表达式:
d2:minValue( 'blood-pressure' )
d2:maxValue 获取所提供项目的最大值 函数获取所提供数据元素在整个注册过程中的最大值。
表达式示例:
d2:maxValue( 'blood-pressure' )
d2:lastEventDate 获取输入数据的最后事件日期 获取在项目阶段的上一个事件中输入基础数据元素时的事件日期
d2:extractDataMatrixValue 根据应用项目标识符获取 GS1 值 给定一个使用 gs1 数据矩阵标准格式化的字段值和一个来自 GS1 应用程序标识符的字符串键。该函数查找并返回链接到提供的键的值。
示例表达式:
d2:extractDataMatrixValue( 'gtin', A{GS1 Value} )

表:数据矩阵代码

人工智能 数据标题 描述 固定长度
00 SSCC SSCC(系列装运集装箱代码) 20
01 GTIN 全球贸易项目编号 16
02 内容 物流单位所含贸易物品的 GTIN 16
10 LOT_NUMBER 批次或批号 变量
11 PROD_DATE 生产日期(YYMMDD) 8
12 DUE_DATE 到期日(YYMMDD) 8
13 PACK_DATE 包装日期(YYMMDD) 8
15 BEST_BEFORE_DATE 最佳食用日期(YYMMDD) 8
16 SELL_BY 出售日期(YYMMDD) 8
17 EXP_DATE 有效期(YYMMDD) 8
20 变体 内部产品变体 4
21 SERIAL_NUMBER 序列号 变量
22 CPV 消费品变体 变量
235 TPX 第三方控制的全球贸易项目编号(GTIN)序列化扩展(TPX) 变量
240 附加标识 制造商指定的其他产品标识 变量
241 客户零件编号 客户零件编号 变量
242 变量编号 按订单生产的变体编号 变量
243 PCN 包装组件编号 变量
250 SECONDARY_SERIAL 辅助序列号 变量
251 参考源 引用源实体 变量
253 GDTI 全球文件类型标识符 变量
254 gln_extension_component GLN 扩展组件 变量
255 GCN 全球优惠券编号 (GCN) 变量
30 VAR_COUNT 变量计数 变量
310* NET_WEIGHT_KG 净重,公斤(可变计量贸易项目 变量
311* LENGTH_M 长度或第一个维度,米(可变措施贸易项目) 变量
312* WIDTH_M 宽度、直径或第二个维度,米(可变测量贸易项目) 变量
313* HEIGHT_M 深度、厚度、高度或第三维度,米(可变措施贸易项目) 变量
314* 区域_M2 面积,平方米(可变计量贸易项目) 变量
315* NET_VOLUME_L 净容量,升(可变计量贸易项目) 变量
316* 净容积_M3 净容积,立方米(可变计量贸易项目) 变量
320* NET_WEIGHT_LB 净重,磅(可变计量贸易项目) 变量
321* LENGTH_I 长度或第一个尺寸,英寸(可变测量贸易项目) 变量
322* 长度_F 长度或第一维度,英尺(可变措施贸易项目) 变量
323* LENGTH_Y 长度或第一个维度,码(可变措施贸易项目) 变量
324* 宽度_I 宽度、直径或第二个尺寸,英寸(可变测量贸易项目) 变量
325* 宽度_F 宽度、直径或第二个维度,英尺(可变测量贸易项目) 变量
326* 宽度_Y 宽度、直径或第二个维度,码(可变测量贸易项目) 变量
327* 高度_I 深度、厚度、高度或第三维度,英寸(可变措施贸易项目) 变量
328* 高度_F 深度、厚度、高度或第三维度,英尺(可变措施贸易项目) 变量
329* 高度_Y 深度、厚度、高度或第三维度,码(可变测量贸易项目) 变量
330* 总重量 逻辑重量(公斤 变量
331* LENGTH_M_LOG 长度或第一个维度,米 变量
332* WIDTH_M_LOG 宽度、直径或第二个维度,米 变量
333* HEIGHT_M_LOG 深度、厚度、高度或第三维度,米 变量
334* 区域_M2_LOG 面积(平方米 变量
335* VOLUME_L_LOG 物流容量(升 变量
336* VOLUME_M3_LOG 物流体积,立方米 变量
337* KG_PER_M2 每平方米公斤数 变量
340* 总重磅 物流重量(磅 变量
341* LENGTH_I_LOG 长度或第一个尺寸,英寸 变量
342* LENGTH_F_LOG 长度或第一个尺寸,英尺 变量
343* LENGTH_Y_LOG 长度或第一个尺寸,码 变量
344* WIDTH_I_LOG 宽度、直径或第二个尺寸,英寸 变量
345* WIDTH_F_LOG 宽度、直径或第二个尺寸,英尺 变量
346* WIDTH_Y_LOG 宽度、直径或第二个尺寸,码 变量
347* HEIGHT_I_LOG 深度、厚度、高度或第三个维度,英寸 变量
348* HEIGHT_F_LOG 深度、厚度、高度或第三维度,英尺 变量
349* HEIGHT_Y_LOG 深度、厚度、高度或三维码数 变量
350* AREA_I2 面积,平方英寸(可变计量贸易项目) 变量
351* 区域_F2 面积,平方英尺(可变计量贸易项目) 变量
352* 区域_Y2 面积,平方码(可变计量贸易项目) 变量
353* AREA_I2_LOG 面积(平方英寸 变量
354* 区域_F2_日志 面积(平方英尺 变量
355* 区域_Y2_日志 面积(平方码 变量
356* NET_WEIGHT_T 净重,金衡盎司(可变计量贸易项目) 变量
357* NET_VOLUME_OZ 净重(或体积),盎司(可变计量贸易项目) 变量
360* NET_VOLUME_Q 净容量,夸脱(可变计量贸易项目) 变量
361* NET_VOLUME_G 净容量,美国加仑(可变计量贸易项目) 变量
362* VOLUME_Q_LOG 物流容量(夸脱 变量
363* VOLUME_G_LOG 物流量,加仑 美国 变量
364* 音量_I3 净容积,立方英寸(可变计量贸易项目) 变量
365* 音量_F3 净容积,立方英尺(可变计量贸易项目) 变量
366* VOLUME_Y3 净容积,立方码(可变计量贸易项目) 变量
367* VOLUME_I3_LOG 物流体积,立方英寸 变量
368* VOLUME_F3_LOG 物流体积(立方英尺 变量
369* VOLUME_Y3_LOG 物流体积(立方码 变量
37 COUNT 物流单位中包含的贸易物品或贸易物品件数 变量
390* 金额 适用的应付金额或票面价值,当地货币 变量
391* 金额_ISO 使用 ISO 货币代码的适用应付金额 变量
392* 价格 应付适用金额,单一货币区(可变计量贸易项目) 变量
393* 价格_ISO 使用 ISO 货币代码的适用应付金额(可变计量贸易项目) 变量
394* PRCNT_OFF 优惠券的折扣百分比 变量
395* PRICE_UOM 每个计量单位单一货币区域的应付金额(可变计量贸易项目) N4+N6
400 ORDER_NUMBER 客户订购单编号 变量
401 GINC 全球托运识别码 (GINC) 变量
403 路线 路由代码 变量
410 发往全球位置 发货至/交货至全球位置编号 (GLN) 变量
411 BILL_TO_LOC 账单至/发票至全球位置编号 (GLN) 变量
412 PURCHASED_FROM 从全球位置编号 (GLN) 购买 变量
413 SHIP_FOR_LOG 发货人/交货人 - 转发至全球位置编号 (GLN) 变量
414 LOC_NUMBER 物理位置的标识 - 全球位置编号 (GLN) 变量
415 PAY_TO 发票方的全球位置编号 (GLN) 变量
416 PROD_SERV_LOC 生产或服务地点的全球位置编号 (GLN) 变量
417 派对 缔约方全球位置编号 (GLN) 变量
420 SHIP_TO_POST 发运至/交付至单一邮政当局内的邮政编码 变量
421 发往邮政信箱 寄往/送往带有 ISO 国家代码的邮政编码 变量
422 起源 贸易项目的原产国 变量
423 国家初始进程 初始处理国 变量
424 COUNTRY_PROCESS 加工国家 变量
425 国家拆卸 拆卸国家 变量
426 国家全进程 覆盖整个流程链的国家 变量
427 原属分区 原产地分区 变量
4300 SHIP_TO_COMP 发货地/交货地公司名称 变量
4301 SHIP_TO_NAME 发货地/交货地联系方式 变量
4302 SHIP_TO_ADD1 发货地/交货地地址第 1 行 变量
4303 SHIP_TO_ADD2 发货地/交货地地址第 2 行 变量
4304 SHIP_TO_SUB 发货至/送货至郊区 变量
4305 SHIP_TO_LOCALITY 发货地/交货地 变量
4306 SHIP_TO_REG 发货地/交货地区域 变量
4307 SHIP_TO_COUNTRY 发货地/交货地国家代码 变量
4308 SHIP_TO_PHONE 发货地/交货地电话号码 变量
4310 RTN_TO_COMP 返回公司名称 变量
4311 RTN_TO_NAME 返回联系方式 变量
4312 RTN_TO_ADD1 返回地址行 1 变量
4313 RTN_TO_ADD2 返回地址第 2 行 变量
4314 RTN_TO_SUB 返回郊区 变量
4315 rtn_too_locality 返回当地 变量
4316 RTN_TO_REG 返回区域 变量
4317 RTN_TO_COUNTRY 返回国家代码 变量
4318 RTN_TO_POST 返回邮政编码 变量
4319 RTN_TO_PHONE 返回电话号码 变量
4320 srv_description 服务代码说明 变量
4321 DANGEROUS_GOODS 危险品标志 变量
4322 AUTH_LEAV 离开的权力 变量
4323 SIG_REQUIRED 需要签名的旗帜 变量
4324 NBEF_DEL_DT 交货日期前不得 变量
4325 NAFT_DEL_DT 交货日期之后 变量
4326 REL_DATE 发布日期 变量
7001 NSN 北约库存编号(NSN) 变量
7002 MEAT_CUT 联合国/欧洲经委会肉类胴体和切块分类 变量
7003 EXP_TIME 到期日期和时间 变量
7004 活动能量 活性效力 变量
7005 CATCH_AREA 捕捉区 变量
7006 首次冻结日期 首次冻结日期 变量
7007 HARVEST_DATE 收获日期 变量
7008 AQUATIC_SPECIES 渔业物种 变量
7009 渔具类型 渔具类型 变量
7010 PROD_METHID 生产方式 变量
7020 REFURB_LOT 翻新地块编号 变量
7021 FUNC_STAT 功能状态 变量
7022 REV_STAT 修订情况 变量
7023 GIAI_ASSEMBLY 组件的全球个人资产识别码 (GIAI) 变量
703* 处理器编号 带有 ISO 国家代码的处理器数量 变量
7040 UIC_EXT 带有扩展项 1 和进口商索引的 GS1 UIC 变量
710 NHRN_PZN 国家医疗报销编号(NHRN) - 德国 PZN 变量
711 NHRN_CIP 国家医疗报销编号 (NHRN) - 法国 CIP 变量
712 NHRN_CN 国家医疗报销编号(NHRN) - 西班牙 CN 变量
713 NHRN_DRN 国家医疗报销编号(NHRN) - 巴西 DRN 变量
714 NHRN_AIM 国家医疗报销编号(NHRN) - 葡萄牙 AIM 变量
723* CERT_NUMBER 认证参考 变量
7240 项目 协议 ID 变量
8001 尺寸 轧辊产品(宽度、长度、辊芯直径、方向、拼接) 变量
8002 CMT_NUMBER 蜂窝移动电话标识符 变量
8003 GRAI 全球可回收资产识别码(GRAI) 变量
8004 GIAI 全球个人资产识别码(GIAI) 变量
8005 PRICE_PER_UNIT 每计量单位价格 变量
8006 ITIP 单件贸易物品的识别(ITIP) 变量
8007 国际银行帐户 国际银行帐号 (IBAN) 变量
8008 PROD_TIME 生产日期和时间 变量
8009 OPTSEN 光学可读传感器指示器 变量
8010 CPID 组件/部件标识符 (CPID) 变量
8011 CPID_SERIAL 部件/零件识别码序列号 (CPID SERIAL) 变量
8012 版本 软件版本 变量
8013 全球监测网 全球型号编号 (GMN) 变量
8017 GSRN_PROVIDER 全球服务关系编号 (GSRN),用于识别提供服务的组织与服务提供商之间的关系 变量
8018 GSRN_RECIPIENT 全球服务关系编号 (GSRN),用于识别提供服务的组织与接受服务者之间的关系 变量
8019 SRIN 服务关系实例编号 (SRIN) 变量
8020 参考编号 付款单参考编号 变量
8026 ITIP_CONTENT 物流单位所含贸易项目(ITIP)件数的识别 变量
8110 COUPON_USA 在北美使用的优惠券代码标识 变量
8111 分数 优惠券的积分 变量
8121 正价优惠券_美国 在北美使用的无纸优惠券代码标识 变量
8200 产品网址 扩展包装 URL 变量
90 内部协议 贸易伙伴之间共同商定的信息 变量
91 公司内部_1 公司内部信息 变量
92 公司内部 2 公司内部信息 变量
93 公司内部3 公司内部信息 变量
94 公司内部 4 公司内部信息 变量
95 公司内部 5 公司内部信息 变量
96 公司内部 6 公司内部信息 变量
97 公司内部 7 公司内部信息 变量
98 公司内部 8 公司内部信息 变量
99 公司内部 9 公司内部信息 变量

表格项目规则表达式中使用的标准变量

变量 类型 描述
V {current_date} 日期 包含执行规则时的当前日期。
示例表达式:
d2:daysBetween(#{symptomDate},V{current_date}) < 0
V {event_date} 日期 包含当前事件执行的事件日期。规则作为注册表格的一部分执行时将没有值。
V {event_status} (字符串) 包含当前事件或注册的状态。
检查状态的表达式示例如下
v{event_status} == 'completed'
V{due_date} 日期 执行规则时,此变量将包含当前日期。注意:这意味着该规则可能会在不同时间产生不同的结果,即使没有其他改变。
V {event_count} (数量) 包含注册中的事件总数。
V{enrollment_date} 日期 包含当前注册的注册日期。对于单个事件程序将没有值。
V{incident_date} 日期 包含当前注册的事件日期。对于单个事件程序将没有值。
V{enrollment_id} (字符串) 当前注册的通用标识符字符串(UID)。对于单一活动项目,该字符串没有值。
V {event_id} (字符串) 当前事件上下文的通用标识符字符串(UID)。在作为注册表的一部分执行该规则时,该值将不存在。
V {orgunit_code} (字符串) 包含与当前注册相关联的组织单位的代码。对于单个事件项目,将使用当前事件 orgunit 的代码。
检查orgunit 代码是否以 WB_ 开头的表达式示例:
d2:left(V{orgunit_code},3) == 'WB_'
V {environment} (字符串) 包含代表规则的当前运行时环境的代码。可能的值为“ WebClient”,“ AndroidClient”和“ Server”。当程序规则仅应在一种或多种客户端类型中运行时可以使用。
V {program_stage_id} (字符串) 包含触发规则的当前程序阶段的ID。这可用于在特定程序阶段运行规则,或避免在某些阶段执行。在TEI注册表单中执行规则时,变量将为空。
V {program_stage_name} (字符串) 包含触发规则的当前程序阶段的名称。这可用于在特定程序阶段运行规则,或避免在某些阶段执行。在TEI注册表单中执行规则时,变量将为空。
V{completed_date} (字符串) 此变量包含触发此规则的事件的完成日期。如果事件尚未完成,则"completed_date"不包含任何内容。

配置关系类型

关于关系类型

关系表示跟踪器模型中两个实体之间的链接。关系被视为DHIS2中的数据,并且基于关系类型,类似于被跟踪实体实例基于被跟踪实体类型的方式。

关系始终包括两个实体,并且这些实体可以包括“跟踪的实体实例”,“注册”和“事件”,以及这些的任意组合。请注意,当前应用程序中并非所有这些组合都可用。

另外,关系可以定义为单向或双向。当前唯一的功能差异是这些功能需要不同级别的创建权限。单向关系要求用户对“从”实体具有数据写访问权限,而对“至”实体具有数据读访问权限,而双向关系则要求双方都具有数据写访问权限。

有关配置以及 "从约束 "和 "至约束 "含义的更多信息,请参阅 关系模型

创建或编辑关系类型

  1. 打开** Maintenance 应用程序,然后单击 Program ** > ** Relationship 类型**。

  2. 点击添加按钮。

  3. Type a Name of the relationship type.

  4. (可选)分配**代码**。

  5. (Optional) Provide a Description of the relationship.

  6. (可选)选择关系是否应为双向

  7. 提供**从发起实体看到的关系名称**。这是关系的名称,将显示在关系“左侧”的数据输入应用项目中。例如。在母子关系中,这可能是“母亲”。

  8. (可选)提供**从接收实体看到的关系名称**。这是关系的名称,将显示在“数据输入”应用程序中关系的“右侧”。例如。在母子关系中,这可能是“母亲”。

  9. 选择 "从约束"。这将限制关系中可以包含的实体类型。关系模型。选择 "来自约束 "后,您可以选择哪些属性或数据元素应显示在 Tracker Capture 和 Capture 的 "来自约束 "关系窗口部件中。列表将根据约束而有所不同:

    • 选择 "跟踪实体实例 "时,仅选择跟踪实体类型,在配置的跟踪实体类型属性中进行选择
    • 选择 "跟踪实体实例",然后选择跟踪实体类型和项目时,在为跟踪实体类型和项目配置的属性中进行选择
    • 选择 "在计划中注册 "时,在为计划配置的属性中进行选择
    • 选择 "项目或项目阶段中的事件 "时,在为该事件项目或项目阶段配置的数据元素中进行选择
  10. 选择 "对象约束"。这将限制关系中可以包含的实体类型。关系模型。为 "至约束 "重复选择关系 widget 中应显示的属性或数据元素。

  11. 点击**保存**。

配置跟踪的实体类型

关于跟踪的实体类型

跟踪的实体是可以通过 系统。它可以是从人到商品的任何东西,例如 药还是一个人。

一个程序必须有一个跟踪的实体。注册被跟踪实体 实例到程序中,被跟踪的实体类型和被跟踪的 程序的实体类型必须相同。

跟踪的实体属性用于为 跟踪的实体。跟踪的实体属性可以在之间共享 程式。

创建或编辑跟踪的实体属性

  1. 打开**维护**应用项目,点击**项目** (> 跟踪 实体属性

  2. 点击添加按钮。

  3. In the Name field, type the tracked entity attribute name.

  4. (Optional) Type a Short name.

  5. (Optional) Type a Form name.

  6. (可选)在 Code 字段中,分配一个代码。

  7. (可选)输入**说明**。

  8. (可选)在**字段掩码**字段中,您可以键入一个模板,用于提供 属性正确格式提示。**注:到目前为止,该功能仅在 DHIS2 Android 捕捉应用程序中实现,尚未在捕捉和跟踪器捕捉网络应用程序中实现。 以下是可在遮罩中使用的特殊字符。特殊字符与给定类型的一个字符完全匹配。

性格匹配
\ d 数字
\ x 小写字母
\ X 大写字母
\ w 任何字母数字字符

例如,该模式可用于在数据元素的输入字段中根据需要显示连字符。例如“ d d d- d d d- d d d, 每三位数显示一个连字符。

  1. 选择**选项集**。

  2. 在**值类型**字段中,选择"...... "的数据类型。 跟踪的实体属性将记录。

    表:值类型

    值类型
    年龄 日期显示为日历部件,或通过输入年数、月数和/或日数,根据当前日期计算日期值。日期将保存在后台。
    坐标 以十进制度为单位指定经度和纬度的点坐标。所有坐标都应以"-19.23 , 56.42 "格式指定,经度和纬度之间用逗号隔开。
    日期 日期在数据输入中显示为日历部件。
    日期和时间 DATETIME 数据元素的组合。
    电子邮件 有效的电子邮件地址。
    文件 可以存储外部文件(如文档和照片)的文件资源。
    可存储照片的文件资源。

    FILE 数据元素不同,IMAGE 数据元素可在表单中直接显示上传的图片。
    整数 任何整数(正数和负数),包括零。
    字母 单个字母。
    长文本 文本值。渲染为文本区域,表格中没有长度限制。
    负整数 任何小于(但不包括)零的整数。
    数字 任何带小数点的实数值。不支持千位分隔符和科学记数法。
    百分比 0 到 100 之间的整数。
    电话号码 电话号码。
    正整数 任何大于(但不包括)0 的整数。
    0 的正整数 包括 0 在内的任何正整数。
    组织单位 以层次树 widget 呈现的组织单位。

    如果用户指定了 "搜索组织单位",则将显示这些组织单位,而不是指定的组织单位。
    单位间隔 任何大于等于 0 且小于等于 1 的实数。
    文本 文本值。每个值允许的最大字符数为 50,000。
    时间 时间以 HH:mm 格式存储。

    HH 是介于 0 和 23 之间的数字

    mm 是介于 00 和 59 之间的数字。
    跟踪器关联
    用户名 DHIS2 用户。显示为带有用户列表和搜索栏的对话框。用户需要有 "查看用户 "权限才能使用该数据类型。
    布尔值,在数据输入时显示为下拉列表。
    仅是 真值,在数据录入中显示为复选框。
  3. Select an Aggregation type.

    表格聚合运算符

    聚合操作符 说明
    平均 将期间和组织单位两个维度的值进行平均。
    Average (sum in organisation unit hierarchy) 平均(组织单位层次中的和) 期间维度中数据值的平均值,组织单位维度中的和。
    计数 数据值的计数。
    数据值的最小值。
    数据值的最大值。
    None 在任何维度中都不执行聚合。
    Sum 期间和组织单位维度中数据值的总和。
    标准偏差 数据值的标准偏差(基于人口)。
    数据值的方差(基于人口)。
  4. 选择 "唯一",以指定被跟踪实体的值 属性是唯一的。

    唯一设置有两个选项:

    • 整个系统:被跟踪实体属性的值 可以重复使用属于其他跟踪实体的值 属性。但是此跟踪实体属性中的值必须 不重复。

      选择 自动生成,允许自动生成 跟踪实体的属性值。当生成设置 被选中时,用于指定图案的可选字段也被选中 显示。此字段应包含基于 TextPattern语法。当值自动生成时, 对于整个系统,此属性将是唯一的。看到 TextPattern部分以获取有关其工作原理的更多信息。

    • 组织单位:被跟踪实体的值 属性不得在同一单位部门中重复。

  5. 选择 "继承**"可登记一个新实体,以便与一个 可用实体,所有继承实体的实体属性值 将预先填写在注册表中。

  6. (Optional) Select Confidential.

    仅当您配置了以下功能的加密时,此选项才可用 系统。

  7. (Optional) Select Display in list without program.

  8. (可选)分配一个或多个**传奇**。

  9. 点击**保存**。

创建或编辑跟踪的实体类型

  1. 打开**维护**应用项目,点击**项目** (> 跟踪 实体类型

  2. 点击添加按钮或一个已经存在的**已跟踪实体 类型**。

  3. Type a Name of the tracked entity.

  4. (可选)选择一个**颜色**和一个**图标**,这些颜色和图标将用于 数据捕获应用程序以识别此跟踪的实体类型。

  5. (Optional) Enter a Description of the tracked entity.

  6. (可选)输入**所需的最少数量的属性 搜索**。这指定了需要设置的属性数量 填写以便能够搜索此**跟踪的实体 在*全局搜索*中键入**。请参阅 [配置 搜索](../ search / search.xml#configure_search)了解更多信息。

  7. (可选)输入**要跟踪的实体的最大数量。 在搜索中返回**。这指定了跟踪实体的数量 在捕获范围外搜索时将返回的内容。请参阅 配置 搜索 获取更多信息。

  8. (可选)添加 跟踪实体类型属性。用于 配置搜索,请参阅[配置 搜索](configure_search)了解更多信息。

  9. (Optional) Enter an Alternative name of the tracked entity.

  10. 点击**保存**。

可以为用户提供搜索组织单位,从而可以 在数据捕获之外搜索跟踪的实体实例 组织单位。

搜索可以在程序的上下文中进行,也可以在 跟踪实体类型的上下文。为用户提供以下选择 在程序上下文中搜索,有必要进行配置 可以搜索哪个程序跟踪的实体属性。为了给 用户可以选择在跟踪的实体类型的上下文中进行搜索, 您将必须配置哪个跟踪实体类型属性 是可搜索的。

配置搜索跟踪器程序

为了能够使用程序进行搜索,您必须制作一些 程序属性可搜索。唯一的程序属性将始终是 可搜索的。

  1. 打开**维护应用项目**,点击**项目**

  2. 打开或创建跟踪项目

  3. Go to Attributes

  4. 如果没有属性,请添加一个

  5. 将属性设置为可搜索

可搜索的程序属性将分配给搜索组。

  • 唯一组。每个唯一程序属性一组。独特 属性不能与程序中的其他程序属性组合 搜索。搜索结果只能是0或1个跟踪实体 实例。

  • 非唯一组。该组包含所有非唯一程序 属性,并可以在一个属性中组合多个属性 搜索。

作为**程序详细信息**配置的一部分,可以为程序搜索设置两个限制。 程序详细信息**配置的一部分。

  • 搜索所需的最少属性数量:此属性 定义必须输入多少个非唯一属性 才能执行搜索。
  • 返回跟踪实体的最大数量:该属性定义了 搜索时,必须限制允许用户获得的匹配跟踪实体的数量,以便 他们的搜索标准。如果匹配记录的数量大于此设置,它们将不会 返回。然后,用户必须提供更具体的搜索条件,以减少搜索结果的数量。 的匹配记录,然后才会返回。关于限制的更多信息 here.

    NOTE

    This maximum is only applied to search results outside the users capture org unit. Within the capture scope, the user can see any number of results.

配置搜索以跟踪实体类型

注意

TET =跟踪的实体类型

为了能够在没有项目的情况下进行搜索,您必须做一些 TET属性可搜索。唯一的TET属性将始终是 可搜索的。

  1. Open Tracked entity type app

  2. 打开一个跟踪实体类型

  3. 如果TET没有属性,请添加一个

  4. 将属性设置为可搜索

可搜索的TET属性将分配给搜索组。

  • 唯一组。每个唯一的TET属性一组。独特属性 不能与搜索中的其他TET属性结合使用。结果 来自搜索的只能是0或1个跟踪的实体实例。

  • 非唯一组。该组包含所有非唯一的TET属性 并可以在搜索中组合多个属性。

可以为TET搜索设置两个限制

  • 搜索所需的最少属性数量:此属性 定义必须输入多少个非唯一属性 才能执行搜索。
  • 返回的跟踪实体类型的最大数量:此属性通过限制允许用户为其搜索条件获取的匹配跟踪实体类型的数量,定义搜索的特定程度。如果匹配的记录数大于此最大值,则不会返回它们。在返回匹配记录之前,用户必须提供更具体的搜索条件,以减少匹配记录的数量。

    NOTE

    This maximum is only applied to search results outside the users capture org unit. Within the capture scope, the user can see any number of results.

为用户配置搜索组织单位

能够搜索用户数据以外的其他组织单位 捕获组织单位,则必须为用户分配搜索 组织单位。给用户一个搜索组织单位也将 授予其在该组织单位所有子级中进行搜索的权限。

  1. 开启**使用者应用程式**

  2. 点击一个用户

  3. 打开**分配搜索组织单位**

  4. 选择组织单位

  5. 点击**保存**

克隆元数据对象

克隆数据元素或其他对象可以在创建时节省时间 许多相似的对象。

  1. 打开**维护**应用项目,找到元数据对象类型 你想克隆。

  2. 在对象列表中,单击选项菜单并选择**克隆**。

  3. 修改所需的选项。

  4. 点击**保存**。

删除元数据对象

注意

您只能在以下情况下删除数据元素和其他数据元素对象: 没有数据与数据元素本身关联。

警告

从系统删除的所有数据集都将不可避免地丢失。所有 数据输入表格,以及可能已经制定的部分表格 也将被删除。确保您已经备份了您的 数据库,然后删除任何数据集,以防您需要还原它 在某个时间点。

  1. 打开**维护**应用项目,找到元数据对象类型 您要删除。

  2. 在对象列表中,单击选项菜单并选择**删除**。

  3. 点击**确认**。

更改元数据对象的共享设置

您可以为元数据对象分配不同的共享设置,例如 示例组织单位和跟踪的实体属性。这些分享 设置可控制哪些用户和用户组可以查看或编辑 元数据对象。

一些元数据对象还允许您更改共享设置 对象的数据输入。这些附加设置控制谁可以 使用元数据查看或在表单字段中输入数据。

注意

默认设置是所有人(公共访问权限)都可以找到, 查看和编辑元数据对象。

  1. 打开**维护**应用项目,找到元数据对象类型 您要修改。

  2. 在对象列表中,单击右键菜单并选择 共享 设置

  3. (可选)添加用户或用户组:搜索一个或多个用户 分组并选择它。用户或用户组已添加到列表中。

  4. 更改要修改的访问组的共享设置。

    • 可以编辑和查看:访问组可以查看和编辑 目的。

    • 只能查看:访问组可以查看对象。

    • 禁止访问(仅适用于**公共访问**):公众 将无法访问该对象。

  5. 更改您要访问的访问组的数据共享设置 修改。

    • 可以捕获数据:访问组可以查看和捕获数据 为对象。

    • 可以查看数据:访问组可以查看以下数据: 目的。

    • 无访问权限:访问组将无法访问以下数据: 物体。

  6. 点击**关闭**。

显示元数据对象的详细信息

  1. 打开**维护**应用项目,找到元数据对象类型 您想查看。

  2. 在对象列表中,点击选项菜单并选择 显示 细节

翻译元数据对象

DHIS2提供了用于翻译数据库内容的功能, 示例数据元素,数据元素组,指标,指标组 或组织单位。您可以将这些元素转换为任意数量的 语言环境。地区代表特定的地理,政治或 文化区。

提示

要激活翻译,请打开 System Settings 应用项目,单击 > **外观**并选择一种语言。

  1. 打开**维护**应用项目,找到元数据对象类型 您要翻译。

  2. 在对象列表中,单击选项菜单并选择**翻译**。

    Tip

    If you want to translate an organisation unit level, click directly on the Translate icon next to each list item.

  3. 选择一个语言环境。

  4. 输入**名称**、简称**和**说明

  5. 点击**保存**。