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

DHIS2教程

使用数据透视表应用创建记分卡

记分卡的定义: 在公共卫生环境中,如卫生部 在卫生部等公共卫生机构中,记分卡是一种有用的标准化方法。 记分卡提供了一种有用的标准化方法,可将相关指标合并到一个表格中。记分卡提供了 疫苗接种计划等卫生项目的整体表现,突出强调成功之处和需要改进之处。 疫苗接种计划等卫生项目的整体表现,突出成功之处、不足之处和需要改进的地方。 下面是一张典型的记分卡:

本教程说明了如何在DHIS2数据透视表中创建记分卡 表格应用。使用枢纽分析表有几个优点 创建一个记分卡,例如:

  • 您可以将计分卡保存在仪表板上并离线使用。

  • 您可以与其他DHIS2用户共享计分卡。

让我们开始吧\!

为记分卡创建图例

首先,我们将为记分卡创建一个三色的“交通灯”图例。 记分卡具有三种基本颜色,易于扫描且易于操作 理解。

  1. 打开**维护**应用项目。点击右上角的菜单 并从应用程序列表中选择维护。您也可以输入 在搜索字段中查找单词维护的首字母 该应用程序。

  2. 在维护应用程序中,向下滚动到页面底部 到**其他**部分。

  3. Go to Legend and click the +.

  4. 在**传奇管理**页面,滚动到页面底部 并通过点击蓝色+按钮来创建新的图例。

  5. 输入图例的名称(例如“ Traffic light”)作为起始值 以及字段中的最终值。您在此处输入的值取决于 您希望为记分卡设置的性能等级。

  6. 将**图例项数**更改为3以显示三种颜色 计分卡。要更改图例项的颜色,请点击蓝色+ 按钮,然后编辑 颜色。

在数据透视表应用中创建记分卡

  1. 从右上角的菜单中打开 Pivot Table 应用项目 仪表板。您还可以在中输入数据透视表的首字母 搜索字段。

  2. 转到左侧窗格中的**数据**,然后选择 列表中的**指标**。

  3. Select an Indicator group such as “ANC” in the second list.

  4. 使用箭头,选择要在其中查看的指标类型 您的计分卡。

  5. 点击 ** 更新**。该按钮位于页面顶部的菜单中。 工作区

  6. 转到 周期,选择要显示的周期 数据。在这个“交通灯”示例中,我们将使用相对时间段 部分。在**季度**中,选择**本季度**和**上季度**。 季度**。清除其他复选框,然后点击 更新

  7. 转到左侧窗格中的**组织单位**,然后点击 齿轮按钮旁边的箭头。

  8. 选择**选择级别**。

  9. 从列表中(齿轮按钮旁边)选择 地区。点击 更新

如您所见,记分卡在 工作区。现在该调整外观。

整理记分卡的布局和显示

  1. In the workspace, click Layout.

  2. 在**表格布局**中,将**组织单位**向下拖动至**行 尺寸**部分。

  3. Drag Data to the Column dimensions section.

  4. 在**列尺寸**窗格中,将**周期**拖到**数据**下面、 然后点击 更新

  5. In the workspace, click Options.

  6. Go to Data and clear all the checkboxes.

  7. 转到**样式** > 图例集,然后从列表中选择 您在维护应用中创建的图例。在这个例子中,我们 称之为交通信号灯。

  8. 转到**样式** > 图例显示样式,然后选择**背景 颜色**。

  9. 点击**更新**。

记分卡已准备好\!

保存并分享您的计分卡

  1. In the workspace, go to the Favorites menu.

  2. 点击**另存为**。输入您的记分卡名称。

  3. To share your Scorecard, select Favorites.

  4. 输入用户组名称,然后单击**保存**。您的 与仪表板共享的人可以查看记分卡。

使用TextPattern

DHIS2版本2.29中引入了TextPattern,作为一种定义 包含变量,生成的值和原始文本的模式 然后可以生成一个文本值。当前用例 TextPattern是为跟踪的实体自动生成的属性, 您要在其中生成例如基于特定ID的唯一ID的位置 模式。

本指南将涵盖与之相关的基本和高级主题 TextPattern,但主要侧重于如何定义TextPatterns 以及存在哪些限制和警告。

TextPattern语法

TextPattern是一系列* segments ,由“ +”连在一起 字符。细分具有特定的符号,在大多数情况下, 参数 format *,它允许对该值进行进一步操作。

表格文本格式段

分段符号 描述 参数(格式) 示例(区段 → 输入值 → 结果)
"纯文本" 纯文本段在所有生成值中保持不变。这种特殊文本段是通过在两个双引号之间包装文本来定义的。如果您的模式应包括破折号等分隔符号,则应使用"-"。
纯文本段还允许使用占位符文本。这意味着您可以指定纯文本段的部分内容为一组字符中的任意字符。目前有 4 个支持的特殊字符可以使用:
* \d (0-9)
* \x (a-z)
* \X (A-Z)
* \w (a-zA-Z0-9)
没有 "Hello world" → None → Hello world
"Hello \x\x" → "Hello you" → Hello you

"\d\d" → "123" → 123
CURRENT_DATE(format) 当前日期段将由服务器在生成时生成。如果您希望您的模式具有与上下文脱节的时间限制,这将非常有用。如果需要控制注入到模式中的日期,则不应使用此功能。 日期格式 当前日期(年) → 01-01-2018 → 2018
ORG_UNIT_CODE(format) 该分段表示与发电相关的组织单位代码。 文本格式 org_unit_code(...) → oslo → osl
随机(格式) 随机片段将被服务器根据格式随机生成的值取代。生成的段落与随机段落一样,其唯一性取决于格式的其他部分。这意味着,只要模式的其余部分不同,随机值就可以出现两次,也就是说,生成的文本作为一个整体将是唯一的。 生成格式 RANDOM(X####) → 无 → A1234
序列(格式) 根据服务器上的计数值,序列段将被一个数字取代。序列片段将从数值 1 开始,并根据格式对每个生成的数值进行计数,直到没有更多可用数值为止。与随机片段一样,唯一性也是基于模式的其他部分,因此模式的每个可能版本都会有自己的从 1 开始的顺序计数器。 生成格式 "A"+SEQUENTIAL(###) → None → A001
"A"-SEQUENTIAL(###) → None → A002

"B"-SEQUENTIAL(###) → None → B001

"B"-SEQUENTIAL(###) → None → B002

除纯文本外,大多数段都具有参数* format * 分割。下表列出了可用格式以及它们的格式 使用的示例符号和使用它们的示例符号。

表:参数格式

格式 描述
日期格式 这种格式直接基于 java 的 SimpleDateFormat,这意味着任何对 SimpleDateFormat 有效的模式都可以作为 TextPattern 中的日期格式。 CURRENT_DATE(dd-MM-yyyy) → 31-12-2018
CURRENT_DATE(MM-yyyy) → 12-2018
文本格式 文本格式允许进行一些基本的文本操作。将格式留空将返回未修改的值,但使用"^"、". "和"$",可以在返回值之前对其进行修改。每个". "代表一个字符,而"^"代表文本的开始,"$"代表文本的结束。使用格式时,输入值的长度必须至少与格式相同。 ORG_UNIT_CODE(....) → OSLO

ORG_UNIT_CODE(..) → OS

ORG_UNIT_CODE(..$) → LO

ORG_UNIT_CODE(^...$) → OSLO

^....$ 将要求输入值正好为 4 个字符。
生成格式 生成格式接受以下一个或多个字符的组合:#"、"X"、"x "和"*"。它们分别代表一个数字(0-9)、一个大写字母(A-Z)、一个小写字母(a-z)或上述任意字符(0-9,a-z,A-Z)。SEQUENTIAL 段只接受 "#",因为它只生成数字。格式中的字符数决定生成值的大小。换句话说,使用一个 "#"只能生成 10 个值(0-9),而使用 "###"则可以生成 1000 个值(000-999)。序列生成的值有前导零,因此生成值的长度总是与格式长度一致。 RANDOM(X###) → A123
RANDOM(****) → 1AbC

SEQUENTIAL(###) → 001

SEQUENTIAL(######) → 000001

有关格式的一些重要注意事项:

  • 日期格式用途非常广泛,但是请注意哪个日期或时间 您正在使用的组件。使用小于一天的组件(对于 即使可用,也不建议使用小时或秒)。

  • 文本格式可以标记输入的开始和结束 值,但实际上“ ^ ...”和“ ...”将给出完全相同的值 结果。您唯一想使用“ ^”的时间是 强制输入值的长度。例如,“ ^ .... $”将 接受OSLO,因为它的开始和结束之间是4个字符,但是 PARIS有5个字符,将被拒绝。

  • 当文本格式用于唯一值时,例如组织单位 代码,请确保格式不会破坏唯一性。 (例如:“ PARIS”和“ PANAMA CITY”的ORG _UNIT _CODE(..) 都返回PA,这意味着这两个组织单位将 现实份额产生的价值)

  • 生成格式是了解容量的主要方法 您的模式。确保格式足够长以覆盖更多内容 超出您所需的值。

要结束本教程的语法部分,这里有几个 例 TextPattern:

ORG_UNIT_CODE(...)+“-” + CURRENT_DATE(yyyyww)+“-” + SEQUENTIAL(#####)

此模式将有99999个可能的值(基于SEQUENTIAL。00000 从1)开始就从未使用过。另外,剩下的图案 每个产生价值的组织单位都会改变 (ORG _UNIT _CODE)和每周(CURRENT _DATE(yyyyww) 年和周)。这实际上意味着每个新的一周,每个组织 单位将具有可以使用的99999个新值。

“ ABC_” + RANDOM(****)

此模式的纯文本段不会对 模式的总容量,但是生成的段(RANDOM) 将允许14776336可能的值。原因是 * 可以是62个可用字符中的任何一个(0-9,a-z,A-Z)。 您可以在下面进一步了解有关了解模式容量的信息 本教程。

设计用于生成ID的TextPattern

TextPattern的一种用例是生成唯一的ID。在这个部分 我们将介绍与设计相关的准则和常见问题 用于ID的TextPatterns。

ID不得包含敏感信息或包含以下内容的信息: 组合可以识别一个人。 TextPattern当前不 支持使用此类值的细分受众群,但可能会在 未来。

以下列表突出显示了一些特定于TextPattern的内容 设计id的TextPattern时需要考虑的限制:

  • 确保电池的容量(可能值的数量) TextPattern涵盖了您的用例。最好有更多的价值 比需要的少。使用TextPattern跟踪实体属性 将需要在其中存在一个生成的细分 TextPattern。

  • TextPattern在整个系统中是唯一的,但仅适用于 使用它的对象。换句话说,如果您有一个追踪实体 TextPattern的属性,由多个Tracked实体使用(非 被误认为是跟踪的实体实例),生成的所有值 将使用该属性在所有跟踪的实体之间共享。这个 也表示如果您有两个跟踪的实体属性, 相同的TextPattern语法,每个属性都将能够生成 因为唯一性基于属性,所以彼此具有相同的值。

  • SEQUENTIAL段位于实施编号中,从 1,对每个值加1,然后依次递增直到没有更多值 可用。但是,实际上,您很可能最终会 用户生成和保留从未使用过的值时的差距,或者 如果用户发送的值中SEQUENTIAL段的值较高 值比服务器上记录的值大。

  • 当前的实现依赖于用户客户端发送 存储新值时,TextPattern中包含的值。那 表示生成正确的ID取决于用户,并且 用户客户端,以提供正确的数据。

了解TextPattern容量

设计TextPattern时要记住的最重要的事情是, 是容量-表示潜在值的总数a TextPattern可以产生。

在当前的TextPattern实现中,主要有三个 决定容量的因素:

  1. TextPattern中生成的段的容量

  2. CURRENT _DATE段的存在

  3. ORG _UNIT _CODE段的存在

日期段(如CURRENT _DATE)的存在将有效 分段每次更改时重置容量。根据日期 格式,它可以在任何地方更改,从每年到每天。 **重要提示:如果您的 日期格式不包含年份,格式将解析为相同 每年的价值。**这意味着已经使用了价值。例如, 如果您的TextPattern看起来像这样:

CURRENT_DATE(ww)+“-” + RANDOM(#)

这种模式每周最多为您提供10个唯一值,但是 一年后,CURRENT _DATE(ww)将与去年相同,并且您 将没有可用的新值。如果您改用“ yyyy-ww”,它将 每年,每周都独一无二。

组织单位代码将使您的价值观在每个不同的领域都独一无二 组织单位,这意味着您是否具有以下文本模式:

ORG_UNIT_CODE()+“-” + RANDOM(#)

此模式将为您提供10种不同的唯一值 组织单位。

计算生成段的容量

了解如何计算TextPattern的容量至关重要 设计TextPatterns时。生成的细分将是主要的 任何TextPattern的组件,以容量为单位,然后根据 存在ORG _UNIT _CODE或CURRENT _DATE时。

让我们从SEQUENTIAL段开始。格式中的每个“ \#”代表 一个0到9之间的数字。要计算总容量,请乘以 每个“ \#”的可能值的数量。由于总是10(0-9) 数学很简单:

SEQUENTIAL(#)= 10 = 10
序列(###)= 10 * 10 * 10 = 1000
SEQUENTIAL(#####)= 10 * 10 * 10 * 10 * 10 = 100000

由于服务器上的SEQUENTIAL计数器从1开始而不是0,因此实际 容量为999,但在大多数情况下并不重要。

一旦涉及到RANDOM,计算就会变得更多 复杂。与SEQUENTIAL类似,“ \#”具有10个可能的值, 另外,我们有“ X”和“ x”,每个都有26个可能的值,以及 “ *”可以是前面的任何一个,表示62(10 + 26 + 26) 可能的值。

要计算容量,您需要将每个字符 格式化并替换为可能的值数,然后相乘 它们都像我们在SEQUENTIAL中所做的一样:

RANDOM(#)= 10 = 10
随机(X)= 26 = 26
RANDOM(*)= 62 = 62

RANDOM(X ##)= 26 * 10 * 10 = 2600
随机(XXxx)= 26 * 26 * 26 * 26 = 456976

随机(***)= 62 * 62 * 62 = 238328

如您所见,数学运算有时会变得更加复杂,但是 按照此配方,您可以看到潜在值的数量。

随机细分以及为什么应避免使用

在TextPattern中使用随机段会产生隐藏的成本 长期运行,但这并不意味着您永远不要使用它。这个部分 将突出显示使用随机片段的问题,并建议何时 可能更适合使用它。

本节是由上一代的问题引起的 策略,您只有随机生成。过了一会儿,实例 使用此功能实际上将无法生成和保留新的 值,因为要花很长时间才能找到可用的值。这个 本节着眼于随机产生的一些问题 造成了这种情况。

产生随机值

在TextPattern中使用RANDOM段之前,应考虑 与使用RANDOM有关的以下问题:

  • 从具有RANDOM段的TextPattern生成值将是 比其他TextPatterns更复杂

基于TextPattern的元数据的数据输入

如前所述,当前唯一支持的元数据 TextPattern是跟踪的实体属性。在本节中,我们将 描述TextPattern数据输入的不同方式,特别是 用于跟踪的实体属性。

使用TextPattern验证值

默认情况下,使用以下命令将所有值发送到服务器以获取元数据 TextPattern,将被验证。如果需要,可以跳过验证,但是 在正常情况下,您应该始终验证输入。的 验证将基于您定义的TextPattern并将 尽可能严格:

  • 日期段必须与段中指定的格式匹配 参数

  • 纯文本段必须完全匹配

  • 文本段的值必须至少与格式字符串一样长。 如果同时存在“ ^”和“ $”,则该值必须与确切的值匹配 长度。

  • 生成的细分值必须与格式完全匹配,字符顺序为 字符。

使用服务器首先生成和保留值时,服务器 将在注入之前修改TextPattern中使用的值, 这意味着在 服务器。

对于TextPattern验证,最后一个例外是特殊情况: 如果在保留原始值之后更改了TextPattern 模式,根据新的,发送到服务器的值无效 如果已保留TextPattern,则仍将接受它。

TextPattern的不同数据输入流

客户端目前有2种方法可以存储TextPattern的值 元数据:

  1. 生成和保留值(应用程序应为您完成此操作)

  2. 存储自定义值

首选方式是生成并保留所需的值( 生成和保留的值数量由应用处理)。那 表示您每次查看和存储值时, 由服务器生成并保留,并且将是有效的。

在特定情况下,另一种方法可能会有用。用户将提供 值本身,只要提供的值对 TextPattern,他们可以放置任何想要的东西。注意事项 这样,您可能会使用别人保留的值 如果您有一个SEQUENTIAL细分,则不会更新计数器。