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

计划规则培训员指南

在 CONFIG._ 中为 TB 创建规则

本指南是什么?

本指南是 DHIS2 学院培训师在 "计划规则 "课程中使用的支持文件。本课程采用标准的学院培训方法,包括

  1. 现场演示环节,由培训师演示并讲解如何创建程序规则,以及
  2. 实践课程,让学员通过练习创建程序规则。

本指南将帮助培训师准备现场演示课程。在 "现场演示步骤 "部分,详细介绍了所有演示步骤,并附有易于理解的解释和屏幕截图。请在准备现场演示课程时使用。

此外,还有一份《快速指南》,其中非常简短地列出了各个步骤,可作为演示过程中的查找指南或 "小抄",帮助培训师记住所有步骤和演示流程。

本节课的学习目标

本环节的总体目标是演示如何在 DHIS2 中为事件和跟踪计划创建计划规则。详细目标包括

  • 定义程序规则概念
  • 在 DHIS2 中使用变量、表达式和操作创建程序规则

时间要求

现场演示:1.5 小时

作业1 小时

背景

程序规则允许您在 Tracker Capture 和 Event Capture 应用程序中创建和控制用户界面的动态行为。程序规则提供了在 DHIS2 程序中配置动态行为的功能,这些动态行为通过跳过逻辑、警告和模式以及自动填写某些字段在纸质表格上实现。

准备工作{ #preparations }

决定如何开展课程。该指南让你交替介绍规则概念,然后与参与者一起创建规则。由于引入的新概念较多,而学员又希望立即学习复杂的规则,因此这个主题总是很成问题,因此衡量学员需要多少额外指导非常重要。您可以在演示系统中执行此操作,因为这两个程序都是为您配置的。

快速指南

  1. 使用结核病治疗卡计划创建计划规则
    1. 当疾病部位为肺部时,隐藏 EPTB 字段
    2. 测试规则

STOP - 让学员做学习指南中的练习 1

  1. 使用结核病治疗计划创建计划规则

    1. 如果性别为男性,则隐藏怀孕
    2. 测试规则

STOP - 让学员做学习指南中的练习 2

  1. 使用 TB 程序创建程序规则

    1. 如果重量为<=5 或 >= 140,则显示警告信息
    2. 测试规则

STOP - 让学员做学习指南中的练习 3

  1. 使用结核病治疗卡计划创建计划规则

    1. 在反馈中显示疾病部位
    2. 测试规则

STOP - 让学员做学习指南中的练习 4

  1. 使用结核病治疗卡计划创建计划规则

    1. 根据出生日期计算患者年龄
    2. 测试规则

STOP - 让学员做学习指南中的练习 4

计划规则参考{ #program-rules-reference }

实际上,要记住所有可能使用的规则运算符和操作是很困难的。您可能需要不时参考 文档,因为它是关于您可以使用的表达式、运算符和操作类型的有用资源。

现场演示逐步进行{ #live-demo-step-by-step }

为了创建程序规则,我们可以遵循以下一般准则:

  1. 构思您要创建的规则的逻辑
  2. 创建一个程序规则变量,指向将触发逻辑的数据元素/属性
  3. 创建新的程序规则
    1. 填写程序规则详细信息
      1. 选择程序
      2. 提供名称和说明
      3. 如果适用,指定优先级
  4. 输入程序规则表达式
    1. 请参阅 文档,查看可在表达式中使用的项目的许多示例,以及表达式的示例
  5. 定义程序规则操作
    1. 有关各项操作的更多详情,请参阅 文档
  6. 清除缓存并测试

规则 1 - 在第一个示例中,我们将为结核病计划创建一个计划规则,如果结核病未被归类为肺 外结核病,该规则将隐藏 "EPTB 位点 "数据元素。

** 您应在本次会议开始时仅在此处演示幻灯片 1-4:**

(https://docs.google.com/presentation/d/1igu8J5ybDOPHJnxMX6n5Ah2gHhL1Ri54v9lX4ZvZGSA/edit#slide=id.g3bdf14aaf4_0_0)

第 1 步 - 访问程序和属性应用程序{ #step-1-access-the-program-and-attribute-app }

登录空白实例并转到维护应用程序

点击程序

注意:要创建新的程序规则,可能需要先创建程序规则变量

步骤 2 - 创建程序规则变量{ #step-2-create-the-program-rule-variable }

您可以使用幻灯片 6-7 解释变量的概念

(https://docs.google.com/presentation/d/1igu8J5ybDOPHJnxMX6n5Ah2gHhL1Ri54v9lX4ZvZGSA/edit#slide=id.g3bdf14aaf4_0_0)

要创建新的程序规则变量,需要先创建程序规则变量

点击程序规则变量并添加

  • 使用选项集代码:当变量使用选项集时,可以选择在创建程序规则表达式时是否使用选项集代码而不是值。使用代码通常很有用,因为它比数值更不易改变。不过,如果要显示某种反馈信息,则可能不想使用代码。
  • 源类型: 源类型决定了如何为源字段填充值。最新信息请参阅 文档

大多数情况下,您会使用 "当前事件中的数据元素 "或 "跟踪实体属性",但其他字段也有用途。我们可以在其他示例中进一步解释。

第 3 步 - 创建程序规则{ #step-3-create-the-program-rule }

要创建新的程序规则,请单击程序规则并添加("+"**符号)

输入计划规则细节

暂时不用担心优先级问题。这将在其他培训/课程中涉及。

输入程序规则表达式

您可以参考幻灯片 8 和 9,了解表达式和运算符: (https://docs.google.com/presentation/d/1igu8J5ybDOPHJnxMX6n5Ah2gHhL1Ri54v9lX4ZvZGSA/edit#slide=id.g3bdf14aaf4_0_0)

** 创建表达式 #{TBDiseaseSite_current} == '' || #{TBDiseaseSite_current} == 'Pulmonary'**

回想一下文档中的运算符,它们现在出现在最下面一行,并快速复习一下这些运算符的含义。 您将使用一个包含**等于**和**或**逻辑运算符的表达式。

创建操作(EBTB 站点数据元素上的 "隐藏字段")

**在这一阶段,再次解释可采取的各种行动。

完整的操作列表可参见 文档

然后点击 COMMIT 保存。保存程序规则后再继续

步骤 3 - 测试程序规则{ #step-3-test-the-program-rule }

您可能需要清除缓存或在隐身模式下重新加载,这样规则才能正常运行。

转到跟踪器捕获,以显示规则的运行情况

注册一个新人

**我们可以立即看到该规则正在发挥作用,因为没有疾病部位的值,而且 EPTB 病例部位数据元素被隐藏。

选择 "肺 "会产生相同的结果

只有当我们选择 "肺外 "时,才会出现 EPTB 病灶数据元素。这是该规则的预期操作。

请注意,如果您选择的是 EPTB 站点

不过,请返回并将结核病网站更改为肺部疾病网站。

您将收到一条错误信息,提示 EPTB 位点值已被删除。这里的逻辑是,除非疾病部位是肺外,否则 EPTB 位点值是隐藏的,因此不能在其中输入相关值。

STOP - 让学员做学习指南中的练习 1{ #stop-have-the-participants-perform-exercise-1-in-the-learners-guide }

规则 2 - 使用 TB 程序{ #rule-2-create-a-program-rule-to-hide-pregnant-if-gender-is-male-using-the-tb-program } 创建一条程序规则,如果性别为男性,则隐藏怀孕信息。

**从维护应用程序 ⇒ 程序**访问程序规则

登录空白实例并转到维护应用程序

点击程序

添加新的程序规则变量

创建程序规则

如果性别为男性,则隐藏怀孕

输入程序规则详细信息。

在表达式中,我们使用了已创建的性别选项

与参与者一起测试规则

如有需要,清除缓存,然后转到跟踪器捕获以测试规则

如果性别为男性,应隐瞒怀孕情况

它应该显示

STOP - 让学员做学习指南中的练习 2{ #stop-have-the-participants-perform-exercise-2-in-the-learners-guide }

规则 3 - 为结核病治疗卡创建另一条程序规则,当体重超出范围时显示警告信息{ #rule-3-create-another-program-rule-for-the-tb-treatment-card-which-displays-a-warning-message-when-weight-is-out-of-range }

**从维护应用程序 ⇒ 程序**访问程序规则

登录空白实例并转到维护应用程序

点击程序

添加新的程序规则变量

重量,当前事件中的数据元素,重量(千克)

创建程序规则{ #create-the-program-rule }

提供计划规则细节

在表达式中,我们将几个原则结合起来,通过使用自定义函数、"AND "和 "OR "逻辑运算符以及括号来定义权重值的极端范围,从而创建我们的输出。由于权重是一个数值,我们可以应用类似于验证规则的逻辑来确定哪些值超出了我们的范围。请务必向学员解释您所做的一切(为什么括号对于规则元素的分组很重要,为什么我们要在这里使用某些逻辑运算符)。

提供程序规则行动*

像以前一样测试程序规则

使用浏览器缓存清理程序清除浏览器缓存

"全部选择" -> 清除

当重量值超出您定义的范围时,它会显示一条警告信息。

如果重量在您定义的范围内,或者重量数据元素没有值,则不会出现警告信息。

STOP - 让学员做学习指南中的练习 3{ #stop-have-the-participants-perform-exercise-3-in-the-learners-guide }

规则 4 - 使用结核病治疗卡创建程序规则。

在反馈部件中显示疾病网站

**从维护应用程序 ⇒ 程序**访问程序规则

登录空白实例并转到维护应用程序

点击程序

添加新的程序规则变量

我们希望无论在跟踪捕获的哪个阶段都能看到疾病部位。疾病部位只在初始阶段捕获,因此我们希望引用它来在 widget 中显示必要的信息。这个例子说明我们可以使用与目前不同的源字段。

创建新规则

创建并解释表达式。我们将使用名为 d2:hasValue 的函数来检查数据元素是否有任何值

确定行动

对于操作,我们将显示在反馈 widget 中收集到的值。

测试规则。必要时清除缓存

STOP - 让学员做学习指南中的练习 4{ #stop-have-the-participants-perform-exercise-4-in-the-learners-guide }

规则 5 - 为结核病治疗卡创建另一条程序规则,根据出生日期分配年龄{ #rule-5-create-another-program-rule-for-the-tb-treatment-card-to-assign-age-based-on-the-date-of-birth }

**从维护应用程序 ⇒ 程序**访问程序规则

登录空白实例并转到维护应用程序

点击程序

添加新的程序规则变量

程序规则变量 "出生日期 "的源类型为 "跟踪实体属性 "

创建程序规则

提供计划规则细节

在表达式中,我们将使用数值函数。您可以让学员参阅文档,查看用户可用的自定义函数的完整列表,因为这里不会详细介绍其他函数。这只是为了让学员了解这些函数的功能。

提供程序规则行动*

像以前一样测试程序规则

使用浏览器缓存清理程序清除浏览器缓存

"全部选择" -> 清除

注册新实体并输入出生日期

输入出生日期后,将计算年龄

STOP - 让学员做学习指南中的练习 5{ #stop-have-the-participants-perform-exercise-5-in-the-learners-guide }