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

本教程说明了如何在DHIS2数据透视表中创建记分卡 表格应用。使用枢纽分析表有几个优点 创建一个记分卡,例如:
-
您可以将计分卡保存在仪表板上并离线使用。
-
您可以与其他DHIS2用户共享计分卡。
让我们开始吧\!
为记分卡创建图例¶
首先,我们将为记分卡创建一个三色的“交通灯”图例。 记分卡具有三种基本颜色,易于扫描且易于操作 理解。
-
打开**维护**应用项目。点击右上角的菜单 并从应用项目列表中选择维护。您也可以输入 在搜索字段中查找单词维护的首字母 该应用项目。

-
在维护应用项目中,向下滚动到页面底部 到**其他**部分。
-
Go to Legend and click the +.

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

-
输入图例的名称(例如“ Traffic light”)作为起始值 以及字段中的最终值。您在此处输入的值取决于 您希望为记分卡设置的性能等级。
-
将**图例项数**更改为3以显示三种颜色 计分卡。要更改图例项的颜色,请点击蓝色+ 按钮,然后编辑 颜色。

在数据透视表应用中创建记分卡¶
-
从屏幕右上角的菜单中打开**透视表**应用项目。 仪表板。您还可以在中输入数据透视表的首字母 搜索字段。
-
转到左侧窗格中的**数据**,然后选择 列表中的**指标**。
-
Select an Indicator group such as “ANC” in the second list.
-
使用箭头,选择要在其中查看的指标类型 您的计分卡。

-
点击 更新。该按钮位于页面顶部的菜单中。 工作区
-
转到 周期,选择要显示的周期 数据。在这个“交通灯”示例中,我们将使用相对时间段 部分。在**季度**中,选择**本季度**和**上季度**。 季度**。清除其他复选框,然后点击 更新。

-
转到左侧窗格中的**组织单位**,然后点击 齿轮按钮旁边的箭头。
-
选择**选择级别**。

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

如您所见,记分卡在 工作区。现在该调整外观。
整理记分卡的布局和显示¶
-
In the workspace, click Layout.

-
在**表格布局**中,将**组织单位**向下拖动到**行 尺寸**部分。
-
Drag Data to the Column dimensions section.
-
在**列尺寸**窗格中,将**周期**拖到**数据**下面、 然后点击 更新。
-
In the workspace, click Options.

-
Go to Data and clear all the checkboxes.
-
转到**样式** > 图例集,然后从列表中选择 您在维护应用中创建的图例。在这个例子中,我们 称之为交通信号灯。
-
转到**样式** > 图例显示样式,然后选择**背景 颜色**。
-
点击**更新**。
记分卡已准备好\!

保存并分享您的计分卡¶
-
In the workspace, go to the Favorites menu.
-
点击**另存为**。输入您的记分卡名称。
-
To share your Scorecard, select Favorites.
-
输入用户组名称,然后单击**保存**。您的 与仪表板共享的人可以查看记分卡。
使用TextPattern¶
DHIS2版本2.29中引入了TextPattern,作为一种定义 包含变量,生成的值和原始文本的模式 然后可以生成一个文本值。当前用例 TextPattern是为跟踪的实体自动生成的属性, 您要在其中生成例如基于特定ID的唯一ID的位置 模式。
本指南将涵盖与之相关的基本和高级主题 TextPattern,但主要侧重于如何定义TextPatterns 以及存在哪些限制和警告。
TextPattern语法¶
TextPattern是一系列* segments ,由“ +”连在一起 字符。细分具有特定的符号,在大多数情况下, 参数 format *,它允许对该值进行进一步操作。
表格文本格式段
| 分段符号 | Parameter name | 参数(格式) | 示例(区段 → 输入值 → 结果) |
|---|---|---|---|
| "纯文本" | 纯文本段在所有生成值中保持不变。这种特殊文本段是通过在两个双引号之间包装文本来定义的。如果您的模式应包括破折号等分隔符号,则应使用"-"。 纯文本段还允许使用占位符文本。这意味着您可以指定纯文本段的部分内容为一组字符中的任意字符。目前有 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 * 分割。下表列出了可用格式以及它们的格式 使用的示例符号和使用它们的示例符号。
表:参数格式
Integer, greater than zero and less than system setting keyDataQualityMaxLimit Default: 500. | Parameter name | 描述 |
|---|---|---|
| 日期格式 | 这种格式直接基于 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实现中,主要有三个 决定容量的因素:
-
TextPattern中生成的段的容量
-
CURRENT _DATE段的存在
-
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的值 元数据:
-
生成和保留值(应用项目应为您完成此操作)
-
存储自定义值
首选方式是生成并保留所需的值( 生成和保留的值数量由应用处理)。那 表示您每次查看和存储值时, 由服务器生成并保留,并且将是有效的。
在特定情况下,另一种方法可能会有用。用户将提供 值本身,只要提供的值对 TextPattern,他们可以放置任何想要的东西。注意事项 这样,您可能会使用别人保留的值 如果您有一个SEQUENTIAL细分,则不会更新计数器。