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

元数据

标识符方案

idScheme

列出了可用的全套标识符方案对象类型 下面,使用在查询中使用的属性名称:

  • 方案

  • 数据元素标识方案

  • programIdScheme

  • programStageIdScheme

  • 程序标识方案

  • 程序阶段标识方案

  • 跟踪实体 ID 方案

  • 所有参数的默认方案是 UID(稳定的 DHIS2 标识符)。支持的标识符方案如下表所示:

通用 idScheme 适用于所有类型的对象。有可能 被特定的对象类型覆盖。

所有参数的默认方案是 UID(稳定的 DHIS2 身份标识)。支持的标识符方案在 下表。

描述

ID, UID 描述
ID, UID 与 DHIS2 编码匹配,主要用于与外部系统交换数据。
NAME 在 DHIS2 名称上匹配,请注意这使用的是可用的 object.name,而不是翻译后的名称。还请注意,名称并不总是唯一的,在这种情况下,不能使用它们。
名称 根据元数据属性进行匹配,需要将此属性分配给要匹配的类型,同时将唯一属性设置为 true。它的主要用途是与外部系统交换数据,与 CODE 相比,它有一些优势,因为可以添加多个属性,所以可以用于与多个系统同步。
ATTRIBUTE:ID 例如,指定 CODE 作为通用 id 方案并覆盖
使用 UID 作为组织单位 ID 方案,您可以使用这些查询
参数:
?idScheme=CODE&orgUnitIdScheme=UID

例如,指定 CODE 作为通用 id 方案并覆盖 使用 UID 作为组织单位 ID 方案,您可以使用这些查询 参数:

?idScheme = CODE&orgUnitIdScheme = UID

再举一个例子,为组织单位 id 指定一个属性 方案,数据元素 id 方案的代码并使用默认 UID id 您可以使用这些参数的所有其他对象的方案:

?orgUnitIdScheme =属性:j38fk2dKFsG&dataElementIdScheme = CODE

浏览Web API

浏览 Web API 的入口点是 /api。这个资源 提供所有可用资源的链接。四种资源表示 格式始终适用于所有资源:HTML、XML、JSON、 和 JSONP。某些资源将具有其他可用格式,例如 MS Excel、PDF、CSV 和 PNG。要从 Web 浏览器探索 API,请导航 到 /api 入口点并按照链接到您想要的 资源,例如/api/dataElements。对于所有资源 返回元素列表,某些查询参数可用于修改 响应:

选项值

默认值 描述 paging 描述
true true | false 真正 数字
定义要返回的页码。 order 1 数字
定义每页返回的元素数量。 order 50 property:asc/iasc/desc/idesc
iasc 和 idesc 是不区分大小写的排序。如果需要对多个属性进行排序,请使用逗号将它们分开。 如何使用这些参数获取完整列表的示例
XML 响应格式的数据元素组: iasc 和 idesc 是不区分大小写的排序。

如何使用这些参数获取完整列表的示例 XML 响应格式的数据元素组是:

/api/dataElements?query=贫血

您可以在 name 属性上查询元素而不是返回 使用 query 查询变量的完整元素列表。在这个例子中 我们查询名称中带有“贫血”一词的所有数据元素:

/ api / dataElements?query =贫血

您可以像这样获取特定页面和对象的页面大小:

/api/indicatorGroups.json?paging=false

您可以像这样完全禁用分页:

/api/indicators.json?order=shortName:desc

要基于特定属性对结果进行排序:

/api/indicators.json?order=created:desc,name:asc

您可以通过以下方式在所有对象类型中根据对象的 ID 查找对象 identifiableObjects 资源:

/ api / identifiableObjects / <id>

翻译

DHIS2 支持数据库内容的翻译,如数据元素、指标和计划、 指标和项目。网络应用项目接口中的所有元数据对象都有 属性,这些属性包括 displayName, displayShortName, displayDescriptiondisplayFormName(用于数据元素和跟踪实体属性)。

价值观

默认值 描述
启用翻译。请注意,默认情况下这是关闭的(在其他端点,默认情况下是打开的)。 true | false 使用的本地语言
从用户本地语言更改为自定义本地语言。 翻译API { #webapi_translation_api } 对象的翻译呈现为对象本身的一部分
在* translation *数组中。请注意,
JSON / XML有效负载的*翻译*数组通常为您预先过滤,这意味着它们不能直接用于导入/导出翻译(因为那样会
通常会覆盖当前用户以外的语言环境)。

翻译API

对象的翻译呈现为对象本身的一部分 在* translation *数组中。请注意, JSON / XML有效负载的*翻译*数组通常为您预先过滤,这意味着它们不能直接用于导入/导出翻译(因为那样会 通常会覆盖当前用户以外的语言环境)。

在用户语言环境中过滤了转换数组的数据元素示例:

{
  "id": "FTRrcoaog83",
  "displayName": "Accute French",
  "translations": [
    {
      "property": "SHORT_NAME",
      "locale": "fr",
      "value": "Accute French"
    },
    {
      "property": "NAME",
      "locale": "fr",
      "value": "Accute French"
    }
  ]
}

转换关闭的数据元素示例:

{
  "id": "FTRrcoaog83",
  "displayName": "Accute Flaccid Paralysis (Deaths < 5 yrs)",
  "translations": [
    {
      "property": "FORM_NAME",
      "locale": "en_FK",
      "value": "aa"
    },
    {
      "property": "SHORT_NAME",
      "locale": "en_GB",
      "value": "Accute Flaccid Paral"
    },
    {
      "property": "SHORT_NAME",
      "locale": "fr",
      "value": "Accute French"
    },
    {
      "property": "NAME",
      "locale": "fr",
      "value": "Accute French"
    },
    {
      "property": "NAME",
      "locale": "en_FK",
      "value": "aa"
    },
    {
      "property": "DESCRIPTION",
      "locale": "en_FK",
      "value": "aa"
    }
  ]
}

请注意,即使您得到未过滤的结果,并且正在使用 适当的类型端点,即我们不允许的 /api/dataElements 更新,因为这样做很容易犯错误并覆盖 其他可用的语言环境。

要阅读和更新翻译,您可以使用特殊翻译 每个对象资源的端点。可以通过*GET*或访问 在适当的/ api / <object-type> / <object-id> / translations端点上* PUT *。

例如,对于标识符为 FTRrcoaog83 的数据元素,您可以使用 /api/dataElements/FTRrcoaog83/translations来获取和更新翻译。 翻译。可用的字段有:property (可选 NAMESHORT_NAMEFORM_NAMEDESCRIPTION)、locale(支持任何有效的 locale"(支持任何有效的 locale ID)和已翻译的属性 value

法语语言环境的NAME属性示例:

{
  "property": "NAME",
  "locale": "fr",
  "value": "Paralysie Flasque Aiguë (Décès <5 ans)"
}

然后将此有效负载添加到翻译数组中,并发回 到适当的端点:

{
  "translations": [
    {
      "property": "NAME",
      "locale": "fr",
      "value": "Paralysie Flasque Aiguë (Décès <5 ans)"
    }
  ]
}

对于ID为* FTRrcoaog83 的数据元素,您可以 PUT *此代码为 / api / dataElements / FTRrcoaog83 / translations。确保发送全部 特定对象的翻译,而不仅仅是单个语言环境的翻译 (否则,您可能会覆盖其他区域的现有语言环境 语言环境)。

如果数据值已成功保存或更新,则状态代码将为204 No Content,如果存在验证错误(例如,同一语言环境有多个SHORT_NAME),则状态代码将为404 Not Found

Web API版本

Web API的版本从DHIS 2.25开始。 API版本 遵循DHIS2主版本号。例如,API DHIS 2.33的版本是33

您可以通过包含版本号来访问特定的 API 版本 在/api 组件之后,作为这样的例子:

/ api / 33 / dataElements

如果省略 URL 的 version 部分,系统将使用当前的 API 版本。例如,对于 DHIS 2.25,在省略 API 部分时, 系统将使用 API 版本 25。在开发 API 客户端时,它是 建议使用显式 API 版本(而不是省略 API 版本),因为这将保护客户端免受不可预见的 API 更改。

将支持最后三个 API 版本。例如,DHIS 2.27 版本将支持 API 版本 27、26 和 25。

请注意,元数据模型没有版本控制,您可能 体验变化,例如在对象之间的关联中。这些变化 将记录在 DHIS2 主要版本发行说明中。

元数据对象过滤器

要过滤元数据,可以对返回的元数据列表应用多种过滤操作。 可应用于返回的元数据列表。过滤器的格式 本身的格式很简单,遵循以下模式 property:operator:value,其中 property 是要过滤的元数据的属性,operator 是要过滤的元数据的操作符。 是要过滤的元数据的属性,*operator 是要执行的比较运算符,*value 是要过滤的元数据的值。

表:可用操作符

操作符

类型

所需值 描述 eq 描述
true 不等于 真正 字符串、布尔值、整数、浮点、枚举、集合(检查大小)、日期
true 不等于 真正 字符串
true 不等于 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串、布尔值、整数、浮点、集合(检查大小)、日期
true 小于 真正 字符串、布尔值、整数、浮点、集合(检查大小)、日期
true 小于 真正 字符串、布尔值、整数、浮点、集合(检查大小)、日期
true 小于 真正 字符串、布尔值、整数、浮点、集合(检查大小)、日期
true 小于 真正 所有
false * 所有
false * 集合
false 集合为空 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串
true 不区分大小写的字符串结尾匹配 真正 字符串、布尔值、整数、浮点、日期
查找匹配 1 个或多个值的对象 真正 字符串、布尔值、整数、浮点、日期
true 查找匹配 1 个或多个值的对象 真正 获取ID属性为ID1或ID2的数据元素:

操作符将作为逻辑 and 查询应用。如果需要*或* 查询,可以查看 in 过滤器和下面的部分。 过滤机制允许递归。请参阅下面的示例。

获取ID属性为ID1或ID2的数据元素:

/ api / dataElements?filter = id:eq:ID1&filter = id:eq:ID2

获取所有使用聚合运算符 sum 和值类型为 int 的数据元素:

/api/dataElements.json?filter=aggregationOperator:eq:sum&filter=type:eq:int

您可以在集合内进行筛选,例如,要获取属于 ANC 数据元素组的数据元素, 可以使用相关数据元素组的 id 属性进行查询:

/api/dataElements.json?filter=dataElementGroups.id:eq:qfxEYY9xAl6

要获取元数据属性中具有特定属性值的数据元素, 可使用相同的集合查询语法指定属性 ID 和属性值的过滤器:

/api/dataElements.json?filter=attributeValues.attribute.id:eq:n2xYlNbsfko&filter=attributeValues.value:eq:AFP

获取已设置选项集的数据元素:

/api/dataElements?filter=optionSet:!null

由于默认情况下所有运算符都是 AND,因此您无法直接找到匹配 多个 id 的数据元素,为此您可以使用 in 操作符:

/api/dataElements.json?filter=id:in:[fbfJHSPpUQD,cYeuwXTCPkU]

由于默认情况下所有运算符都是 and,因此您无法找到数据 匹配多个 id 的元素,为此您可以使用 in 操作员。

如前一节所述,过滤器应用的默认逻辑运算符 是 AND,这意味着所有对象过滤器必须都 匹配。但是,在某些情况下,您希望匹配其中之一 几个过滤器(可能是 id 和 code 字段),在这些情况下,它是 可以将根逻辑运算符从 AND 切换为 OR 使用 rootJunction 参数。

逻辑运算符

如前一节所述,应用了默认逻辑运算符 过滤器是 AND 这意味着所有对象过滤器必须是 匹配。但是,在某些情况下,您希望匹配其中之一 几个过滤器(可能是 id 和 code 字段),在这些情况下,它是 可以将根逻辑运算符从 AND 切换为 OR 使用 rootJunction 参数。

示例:正常过滤,其中 id 和 code 必须匹配才能具有 结果返回

/api/dataElements.json?filter=id:in:[id1,id2]&filter=code:eq:code1&rootJunction=OR

示例:过滤逻辑运算符已切换为 OR 的位置 现在只有一个过滤器必须匹配才能产生结果 回

除了上述基于特定属性的过滤之外, 我们还通过* token 基于 AND 过滤了一组 属性:ID,代码和名称(如果可用,还包括shortName)。这些 属性通常称为*可识别。这个想法是为了 过滤ID,名称,代码或简称中包含某些内容的元数据。

可识别的令牌过滤器

除了上述基于特定属性的过滤之外, 我们还通过* token 基于 AND 过滤了一组 属性:ID,代码和名称(如果可用,还包括shortName)。这些 属性通常称为*可识别。这个想法是为了 过滤ID,名称,代码或简称中包含某些内容的元数据。

示例:过滤所有包含 2nd 的数据元素 如下: id,name,code,shortName

示例:获取在任何 identifiable 属性中找到 ANC visit 的所有数据元素。系统返回所有数据元素,其中在可识别属性中的任何地方都可以找到令牌(ANC 和访问)。

也可以指定多个过滤值。

示例:获取在任何 identifiable 属性中找到 ANC visit 的所有数据元素。系统返回所有数据元素,其中在可识别属性中的任何地方都可以找到令牌(ANC 和访问)。

/api/dataElements.json?filter=identifiable:token:ANC访问

也可以将可识别过滤器与基于属性的过滤器结合起来,并期望应用 rootJunction

/api/dataElements.json?filter=identifiable:token:ANC visit&filter = displayName:ilike:tt1

/api/dataElements.json?filter=identifiable:token:ANC访问
  &filter = displayName:ilike:tt1&rootJunction = OR

仅可索引跟踪实体属性的过滤器{ #indexable-only-filter-for-tracked-entity-attributes }

对于跟踪的实体属性,除了前面提到的过滤功能外,还有一个特殊的过滤器。 有些被跟踪的实体属性可以创建三叉索引,以提高查询性能。 使用设置为 true 的 indexableOnly 参数,可以筛选出只包含可建立三叉索引的属性的结果。

示例获取所有可索引的跟踪实体属性。

/api/trackedEntityAttributtes.json?indexableOnly=true

可指定附加过滤器和 indexableOnly 参数。

示例获取 NAME 属性中包含 ANC 的所有被跟踪实体属性。系统会返回名称与所提供关键字匹配的被跟踪实体属性,如果该属性是可索引的,也会返回。

/api/trackedEntityAttributtes.json?filter=name:like:ANC&indexableOnly=true

元数据字段过滤器

示例:在指标资源上获取idname:

include/exclude 的格式允许无限递归。要过滤可以在"根"级只使用字段的名称, 例如,?fields=id,name 只显示每个对象的idname字段。对于集合或复杂对象,可以使用以下格式 ?fields=id,name,dataSets[id,name],这将返回根对象的nameid字段。and the id and name of every data set on that object. 可以使用感叹号操作符进行否定操作,我们有一组字段选择预设。支持 XML 和 JSON 格式。

示例:在指标资源上获取idname

/ api / indicators?fields = id,名称

示例:从数据元素中获取 idname,并从相关数据集中获取 idname

/ api / dataElements?fields = id,name,dataSets [id,name]

然后,该属性将作为每个匹配对象的属性 DnrLSdo4hMl 包含在响应中。 属性。可以使用 rename 转换器进行重命名,如下一节所示。

要从输出中排除字段,可以使用感叹号!。 操作符。这是在查询中的任何地方都允许的,而根本不会 包括该属性,因为它可能已经插入了某些 预设。

一些预设(选定的字段组)可用并且可以应用 使用: 运算符。

要从输出中排除字段,可以使用感叹号!。 操作符。这是在查询中的任何地方都允许的,而根本不会 包括该属性,因为它可能已经插入了某些 预设。

一些预设(选定的字段组)可用并且可以应用 使用: 运算符。

描述

所需值 描述
<object>[<field-name>, ...] 包含一个集合中的字段(将应用于该集合中的每个对象),或只包含一个对象上的字段。
!<field-name>,<object>[!<field-name> 请勿包含此字段名称,它也适用于对象/集合内部。在使用预设包含字段时非常有用。
*,<object>[*] 包括某个对象上的所有字段,如果应用于某个集合,则会包括该集合中所有对象上的所有字段。
:<preset> 别名,用于选择多个字段。目前有三种预设,请参阅下表了解说明。
表格字段预设 预设

描述

一应俱全 描述
* 所有的别名
可识别 包括 id、名称、代码、创建、最后更新和最后更新由字段
可命名 包括 id、名称、代码、创建和最后更新字段
持续 返回对象的所有持久化属性,不考虑对象是否是关系的所有者。
所有者 返回对象上的所有持久化属性,其中该对象是所有属性的所有者,此有效负载可用于通过 API 进行更新。
示例:包括数据集中除组织单位以外的所有字段: / api / dataSets?fields =:all,!organizationUnits

示例:仅包含ID,名称和数据集中的组织单位集合,但不包含组织单位中的ID:

/ api / dataSets?fields =:all,!organizationUnits

示例:仅包含ID,名称和数据集中的组织单位集合,但不包含组织单位中的ID:

/ api / dataSets / BfMAe6Itzgt?fields = id,name,organisationUnits [:all,!id]

示例:包括所有指标的可命名属性:

字段转换器可用于转换属性。语法说明如下:

现场变压器

这会将 id 属性重命名为 i,将 name 属性重命名为 n

/api/dataElements/ID?fields=id~rename(i),name~rename(n)

这会将 id 属性重命名为 i,将 name 属性重命名为 n

下表列出了支持的转换器操作符。

/api/dataElementGroups.json?fields=id,displayName,dataElements~isNotEmpty~rename(haveDataElements)

名称

参数

名称 size 描述
isEmpty 字符串或集合是否为空
isNotEmpty 字符串或集合是否不为空
rename 参数 1:名称
重命名属性名称 paging 参数 1:页码,参数 2:页面大小
true pluck 可选参数 1:字段名
将对象数组转换为对象选定字段的数组。默认情况下,使用集合返回的第一个字段(通常是 ID)。 keyBy 可选参数 1:字段名
将对象数组转换为以字段名(默认 id)为键的对象。这对 JavaScript 中的快速查找非常有用。 keyBy 变压器使用示例如下。

例子

/api/dataElements?fields=dataSets~size

测试集合是否为空:

/api/dataElements?fields=dataSets~isEmpty

测试集合是否为空:

/api/dataElements?fields=dataSets~isNotEmpty

重命名属性

/api/dataElements/ID?fields=id~rename(i),name~rename(n)

对集合进行分页:

/api/dataElements/ID?fields=id~rename(i),name~rename(n)

获取包含组织单位 ID 的数组:

/api/categoryOptions.json?fields=id,organisationUnits~pluck

获取包含组织单位名称的数组:

/api/categoryOptions.json?fields=id,organisationUnits~pluck[name]。

通过d字段键入 dataElements 数组:

/api/dataElementGroups.json?fields=id,name,dataElements~keyBy[id,name,valueType]。

通过d字段键入 dataElements 数组:

/api/dataElementGroups.json?fields=id,name,dataElements~keyBy(valueType)[id,name,valueType]。

通过valueType字段键入 dataElements 数组,因为多次点击这将生成(数据元素的)数组:

DHIS2 中的所有元数据实体都有自己的 API 端点,支持 CRUD 操作(创建、读取、更新和删除)。端点 URL 遵循以下格式:

元数据创建,读取,更新,删除,验证

DHIS2 中的所有元数据实体都有自己的 API 端点,支持 CRUD 操作(创建、读取、更新和删除)。端点 URL 遵循以下格式:

/ api / <entityName>

entityName 使用驼峰命名法。例如,端点 对于_数据元素_是:

/ api / dataElements

创建/更新参数

以下请求查询参数可用于所有元数据端点。

类型

需要 类型 需要 选项(默认为默认) 描述
项目阶段 true | false 打开/关闭缓存映射预热。默认情况下是打开的,关闭此选项将大大缩短导入项目的初始加载时间(但会使导入本身变慢)。这主要用于要导入的 XML/JSON 文件较小,且不想等待缓存映射预热的情况。
Sets import strategy, CREATE_AND_UPDATE will try and match on identifier, if it doesn't exist, it will create the object. 创建_并_更新|创建|更新|删除 CREATE_AND_UPDATE | CREATE | UPDATE | DELETE 要创建新对象,您需要知道端点、类型
格式,并确保您拥有所需的权限。作为
例如,我们将创建和更新一个*常量*。为了弄清楚
格式,我们可以使用新的 schema 端点来获取格式
描述。因此,我们将从获取该信息开始:
合并模式 创建_并_更新|创建|更新|删除 替换、合并 更新时合并对象的策略。REPLACE 只会用提供的新值覆盖属性,而 MERGE 只会在属性不为空的情况下设置属性(仅在提供了属性的情况下)。

创建和更新对象

要创建新对象,您需要知道端点、类型 格式,并确保您拥有所需的权限。作为 例如,我们将创建和更新一个*常量*。为了弄清楚 格式,我们可以使用新的 schema 端点来获取格式 描述。因此,我们将从获取该信息开始:

http:// <server> /api/schemas/constant.json

从输出中,您可以看到创建所需的权限 是F_CONSTANT_ADD,重要的属性是:name价值。由此,我们可以创建一个 JSON 负载并将其保存为文件 称为constant.json:

{
  "name": "PI",
  "value": "3.14159265359"
}

与XML有效内容相同的内容:

<constant name="PI" xmlns="http://dhis2.org/schema/dxf/2.0">
  <value>3.14159265359</value>
</constant>

我们现在准备通过发送 POST 请求来创建新的*常量* 使用curl 的带有JSON 有效负载的constants端点:

curl -d @constant.json "http://server/api/constants" -X POST
  -H "Content-Type: application/json" -u user:password

将常量发布到演示中的具体示例 服务器:

curl -d @constant.json "https://play.dhis2.org/api/constants" -X POST
  -H "Content-Type: application/json" -u admin:district

如果一切顺利,您应该看到类似以下的输出:

{
  "status": "SUCCESS",
  "importCount": {
    "imported": 1,
    "updated": 0,
    "ignored": 0,
    "deleted": 0
  },
  "type": "Constant"
}

更新过程将完全相同,您进行更改 到 JSON/XML 负载,找出常量的 ID,然后 向端点发送包含 ID 的 PUT 请求:

curl -X PUT -d @pi.json -H "Content-Type: application/json"
  -u user:password "http://server/api/constants/ID"

删除物件

删除对象非常简单,您需要知道 ID 和你要删除的类型的端点,让我们继续我们的 上一节中的示例并使用*常量*。让我们假设 id 是 abc123,那么你需要做的就是发送 DELETE 对端点的请求 + id:

curl -X DELETE -u user:password "http://server/api/constants/ID"

成功删除应返回HTTP状态204(无内容)。

在集合中添加和删除对象

集合资源允许您修改集合 对象。

添加或删除单个对象

为了在对象集合中添加或删除对象,您 可以使用以下 图案:

/ api / {collection-object} / {collection-object-id} / {collection-name} / {object-id}

应该使用POST方法添加,使用DELETE方法删除 一个东西。当对象之间存在多对多关系时, 您必须首先确定哪个对象拥有该关系。如果不是 清除这是哪个对象,尝试两种方式调用以查看哪个有效。

模式的组成部分是:

  • 集合对象:拥有您的集合的对象类型 想修改。

  • 集合对象 id:拥有该对象的对象的标识符 要修改的集合。

  • 集合名称:您要修改的集合的名称。

  • object id:要添加或删除的对象的标识符 从集合。

例如,为了删除标识符为 IDB 的数据元素 从具有标识符 IDA 的数据元素组中,您可以执行 DELETE 要求:

删除/ api / dataElementGroups / IDA / dataElements / IDB

将带有标识符 IDB 的类别选项添加到带有 标识符 IDA 你可以做一个 POST 要求:

POST / api / categories / IDA / categoryOptions / IDB

添加或删除多个对象

您可以在一个请求中从集合中添加或删除多个对象 具有这样的有效载荷:

{
  "identifiableObjects": [{
      "id": "IDA"
    }, {
      "id": "IDB"
    }, {
      "id": "IDC"
    }
  ]
}

使用此有效负载,您可以添加,替换或删除项目:

添加项目:

POST / api / categories / IDA / categoryOptions

更换物品:

删除/ api / categories / IDA / categoryOptions

删除 项目:

删除/ api / categories / IDA / categoryOptions

在单个请求中添加和删除对象

您可以在单个 POST 中从集合中添加和删除对象 请求到以下 URL:

POST / api / categories / IDA / categoryOptions

有效负载格式为:

{
  "additions": [{
      "id": "IDA"
    }, {
      "id": "IDB"
    }, {
      "id": "IDC"
    }
  ],
  "deletions": [{
      "id": "IDD"
    }, {
      "id": "IDE"
    }, {
      "id": "IDF"
    }
  ]
}

验证有效载荷

DHIS2 支持全系统范围的元数据有效载荷验证,这意味着 API 端点上的创建和更新操作将被检查是否为有效的有效负载,然后才允许进行更改。 有效的有效负载,然后才允许进行更改。要了解特定端点 请查看 /api/schemas 端点。 端点,例如,要了解某个数据元素有哪些限制,可访问 /api/schemas 端点。 数据元素"。

您还可以手动验证您的有效负载,方法是将其发送到适当的 架构端点。如果您想从创建中验证常量 之前的部分,您可以这样发送:

POST / api / schemas / constant

一个简单的(非验证)示例为:

curl -X POST -d "{\"name\": \"some name\"}" -H "Content-Type: application/json"
  -u admin:district "https://play.dhis2.org/dev/api/schemas/dataElement"

部分更新 { #webapi_partial_updates }

[
   {
      "message" : "Required property missing.",
      "property" : "type"
   },
   {
      "property" : "aggregationOperator",
      "message" : "Required property missing."
   },
   {
      "property" : "domainType",
      "message" : "Required property missing."
   },
   {
      "property" : "shortName",
      "message" : "Required property missing."
   }
]

部分更新

对于处理元数据的 API 端点,我们支持使用 JSON 补丁 标准 进行部分更新 (PATCH)。有效负载基本上概述了您想要应用于现有元数据对象的一组操作。有关 JSON 补丁的详细信息和示例,请参阅 jsonpatch.com。支持三个运算符:添加删除替换

根据 JSON 补丁规范,发送补丁时必须始终使用 mimetype application/json-patch+json

JSON 补丁的默认 importReportMode(导入报告模式)是 ERRORS_NOT_OWNER,这意味着在更新任何不属于该特定对象的属性时(例如,试图将指标组直接添加到指标中),会出现错误。

更新数据元素的名称和值类型{ #update-name-and-value-type-of-data-element }

例子

```json

[ {"op": "add", "path": "/name", "value": "New Name"}, {"op": "add", "path": "/valueType", "value": "INTEGER"} ]

从 orgUnit 组中删除特定 orgUnit{ #remove-a-specific-orgunit-from-an-orgunit-group } 
PATCH /api/dataElementGroups/{id}
##### ```json
[
  {"op": "add", "path": "/dataElements/-", "value": {"id": "data-element-id"}}
]

更改数据元素的域和值类型{ #change-domain-and-value-type-of-a-data-element }

PATCH /api/dataElementGroups/{id}
```json

[ {"op": "remove", "path": "/dataElements"} ]

更改数据元素的域和值类型{ #change-domain-and-value-type-of-a-data-element } 
PATCH /api/dataElements/{id}
##### ```json
[
    {"op": "add", "path": "/domainType", "value": "TRACKER"},
    {"op": "add", "path": "/valueType", "value": "INTEGER"}
]

从 orgUnit 组中删除特定 orgUnit{ #remove-a-specific-orgunit-from-an-orgunit-group }

PATCH /api/organisationUnitGroups/{id}
```json

[ {"op": "remove", "path": "/organisationUnits/1"} ]

受阻 将 dataElementGroup 添加到 dataElement{ #blocked-add-dataelementgroup-to-dataelement } 
PATCH /api/dataElements/{id}?importReportMode=ERRORS_NOT_OWNER
#### ```json
[
    {"op": "add", "path": "/dataElementGroups/-", "value": {"id": "data-element-group-id"}}
]

按 id 删除收藏项{ #remove-collection-item-by-id }

PATCH /api/dataElements/{id}?importReportMode=ERRORS_NOT_OWNER

```json

[ {"op": "add", "path": "/dataElementGroups/0", "value": {"name": "new-name"}} ]

按 id 删除收藏项{ #remove-collection-item-by-id } 
补丁 /api/dataSets/{id}?importReportMode=ERRORS_NOT_OWNER
#### ```json
[
    {"op": "remove-by-id", "path": "/organisationUnits", "id": "u6CvKyF0Db5"}
]
补丁 /api/dataSets/{id}?importReportMode=ERRORS_NOT_OWNER
[
    {"op": "remove-by-id", "path": "/organisationUnits", "id": "u6CvKyF0Db5"}
]

```

补丁 /api/dataSets/{id}?importReportMode=ERRORS_NOT_OWNER

如果`path`属性无效或不存在,则修补服务将返回如下错误。
补丁 /api/dataSets/{id}?importReportMode=ERRORS_NOT_OWNER
```json
[
    {"op": "remove-by-id", "path": "/test", "id": "u6CvKyF0Db5"}
]
元数据 CSV 导出{ #webapi_metadata_csv_export }
{
    "httpStatus": "Bad Request",
    "httpStatusCode": 400,
    "status": "ERROR",
    "message": "Invalid path /test"
}

对于支持CSV的端点(如/api/dataElements /api/organisationUnits等我们的元数据端点),您可以使用Accept头部和值text/csv,或者您可以使用扩展名.csv。请注意,不支持复杂对象,我们仅支持id-object集合(因此将返回一个UID列表)。

CSV字段过滤与CSV(请注意,在/api/metadata端点上使用CSV不受支持)几乎相同,但字段转换尚不支持。

对于支持CSV的端点(如/api/dataElements /api/organisationUnits等我们的元数据端点),您可以使用Accept头部和值text/csv,或者您可以使用扩展名.csv。请注意,不支持复杂对象,我们仅支持id-object集合(因此将返回一个UID列表)。

名称 选项 描述
默认过滤器是id,displayName skipHeader 默认过滤器是id,displayName
标题(包含列名)是否应包括在内 下载 默认值: .
立柱分离器 数组分隔符 默认值:;
如果其中一个字段是一个 ID 对象集合,该分隔符将分隔所有 UID 例子 { #examples } 获取包括组关联在内的所有数据元素{ #get-all-data-elements-including-their-group-associations }

例子

获取所有组织单位,包括几何(将被忽略){ #get-all-org-units-including-geometry-which-will-get-ignored }

/api/organisationUnits.csv?fields=id,displayName,organisationUnitGroups,geometry

元数据导出

本节介绍了可在以下位置获得的元数据 API /api/元数据。支持 XML 和 JSON 资源表示。

元数据导出

本节介绍了可在以下位置获得的元数据 API /api/元数据。支持 XML 和 JSON 资源表示。

/ api /元数据

最常用的参数在下面的“导出参数”中描述 桌子。您还可以使用以下方法将其应用于所有可用类型 type:fields=<filter>type:filter=<filter>。你也可以 通过设置 type=true|false 启用/禁用某些类型的导出。

表:导出参数

名称 选项 描述
默认过滤器是id,displayName 过滤 与元数据对象过滤器相同
数据值 订单 适用于所有类型的默认对象过滤器,默认为
iasc 和 idesc 是不区分大小写的排序。如果需要对多个属性进行排序,请使用逗号将它们分开。 假/真
启用翻译。请注意,默认情况下这是关闭的(在其他端点,默认情况下是打开的)。 下载 <locale>
从用户本地语言更改为自定义本地语言。 默认 包括/排除
是否应在有效载荷中包含自动生成的类别对象。如果您要在两个非同步实例之间移动元数据,可能需要将其设置为 EXCLUDE,以方便处理这些生成的对象。 跳过共享 假/真
跳过共享属性,更新时不合并共享,创建新对象时不添加用户组访问权限。 下载 NON_NULL, ALWAYS, NON_EMPTY
启用此功能将添加 HTTP 标头 Content-Disposition,指定数据应作为附件处理,并由网络浏览器提供下载。 下载 导出所有元数据。小心,因为响应可能非常大,具体取决于
关于您的元数据配置:

元数据导出示例

导出所有元数据。小心,因为响应可能非常大,具体取决于 关于您的元数据配置:

/ api /元数据

导出由lastUpdated降序排列的所有元数据:

/ api / metadata?defaultOrder = lastUpdated:desc

导出仅包括指标和指标组的元数据:

/ api / metadata?indicators = true&indicatorGroups = true

导出所有数据元素的id和displayName,按displayName排序:

/ api / metadata?dataElements:fields = id,name&dataElements:order = displayName:desc

导出名称以“ ANC”开头的数据元素和指示符:

/api/metadata?filter=name:startsWith:ANC&dataElements=true&indicators=true

具有依赖项的元数据导出

当您想交换数据集、项目、类别组合、仪表盘、选项集或数据元素组的元数据时、 仪表板、选项集或数据元素组的元数据时 时,有六个专用端点可供使用:

这些端点还支持以下参数:

然后可以使用/ api / metadata导入这些导出。

这些端点还支持以下参数:

表:导出参数

名称 选项 描述
跳过共享属性,更新时不合并共享,创建新对象时不添加用户组访问权限。 下载 NON_NULL, ALWAYS, NON_EMPTY
启用此功能将添加 HTTP 标头 Content-Disposition,指定数据应作为附件处理,并由网络浏览器提供下载。 下载 导出所有元数据。小心,因为响应可能非常大,具体取决于
关于您的元数据配置:

元数据导入

本节介绍元数据导入 API。 XML 和 JSON 资源 支持表示。可以使用 POST 请求导入元数据。

/ api /元数据

导入器允许您导入元数据有效负载,其中可能包括许多 不同的实体和每个实体的任意数量的对象。元数据导出 元数据导出API生成的可以直接导入。

元数据导入端点支持多种参数,分别是 下面列出。

表:导入参数

名称 导入模式 描述
设置整体导入模式,决定是否仅 VALIDATE 或也 COMMIT 元数据,这与我们旧的 dryRun 标志具有相似的功能。 标识符 设置整体导入模式,决定是否仅 VALIDATE 或也 COMMIT 元数据,这与我们旧的 dryRun 标志具有相似的功能。
设置用于引用匹配的标识符方案。AUTO表示先尝试UID,再尝试 CODE 导入报告模式 设置用于引用匹配的标识符方案。AUTO表示先尝试UID,再尝试 CODE
设置 ImportReport 模式,控制导入完成后报告的内容。ERRORS只包含有错误的对象的 ObjectReport 报告。FULL返回所有已导入对象的 ObjectReport ,而 DEBUG则返回相同对象名称(如果有)。 预热模式 设置 ImportReport 模式,控制导入完成后报告的内容。ERRORS只包含有错误的对象的 ObjectReport 报告。FULL返回所有已导入对象的 ObjectReport ,而 DEBUG则返回相同对象名称(如果有)。
设置预热器模式,用于指示是否应该对 ALL 进行预热(就像以前使用 preheatCache=true 一样)或对对象进行更智能的扫描以查看要预热的内容(现在是默认设置),将其设置为不推荐使用 导入策略 设置预热器模式,用于指示是否应该对 ALL 进行预热(就像以前使用 preheatCache=true 一样)或对对象进行更智能的扫描以查看要预热的内容(现在是默认设置),将其设置为不推荐使用
Sets import strategy, CREATE_AND_UPDATE will try and match on identifier, if it doesn't exist, it will create the object. CREATE_AND_UPDATE, CREATE, UPDATE, DELETE 全部,无
设置原子模式,在旧的导入器中,我们总是进行*best effort*导入,这意味着即使某些引用不存在,我们仍然会导入(即数据元素组导入时缺少数据元素)。新进口商的默认设置是不允许这样做,并且类似地拒绝任何验证错误。设置 NONE 模式模拟了旧的行为. 冲洗模式 设置原子模式,在旧的导入器中,我们总是进行*best effort*导入,这意味着即使某些引用不存在,我们仍然会导入(即数据元素组导入时缺少数据元素)。新进口商的默认设置是不允许这样做,并且类似地拒绝任何验证错误。设置 NONE 模式模拟了旧的行为.
mergeMode ~~ 替换、合并~~ ~~ 设置合并模式,在更新时,我们有两种方式将旧对象与新对象合并,"MERGE "模式只会在新对象不为空时覆盖旧属性,而 "REPLACE "模式则覆盖所有属性,无论是否为空。
设置刷新模式,控制何时刷新内部缓存。*强烈*建议将其保留为AUTO(这是默认设置)。仅将 OBJECT 用于调试目的,您会看到休眠异常并想查明堆栈发生的确切位置(休眠只会在刷新时抛出,因此很难知道哪个对象有问题)。 跳过共享 设置刷新模式,控制何时刷新内部缓存。*强烈*建议_将其保留为AUTO(这是默认设置)。仅将 OBJECT 用于调试目的,您会看到休眠异常并想查明堆栈发生的确切位置(休眠只会在刷新时抛出,因此很难知道哪个对象有问题)。
跳过共享属性,更新时不合并共享,创建新对象时不添加用户组访问权限。 跳过验证 假,真
跳过导入的验证。不推荐 跳过验证 跳过导入的验证。不推荐
异步导入时,会立即返回一个 Location 标头,指向 importReport 的位置。有效载荷还包含一个已创建任务的 json 对象。 跳过验证 无、当前、选定
NON_NULL 包括非空属性,ALLWAYS 包括所有属性,NON_EMPTY 包括非空属性(不包括长度为 0 的字符串或空集合)。 下载 NON_NULL 包括非空属性,ALLWAYS 包括所有属性,NON_EMPTY 包括非空属性(不包括长度为 0 的字符串、大小为 0 的集合等)。
允许你覆盖正在导入的每个对象的用户属性,选项包括 NONE(不做任何操作)、CURRENT(使用导入用户)、SELECTED(使用 overrideUser=X 选择特定用户)。 覆盖用户 用户 ID
如果 userOverrideMode 为 SELECTED,则使用此参数选择要覆盖的用户。 > NOTE When updating objects, all property values will be overwritten even if the new values are null. Please use JSON Patch API in case you want do partial update to an object. 要导入的元数据负载的示例如下所示。注意如何
每个实体类型都有自己的属性和一个对象数组:

(*) 目前,导入服务的 mergeMode=MERGE 选项有其局限性,并不支持所有对象。它不适用于某些对象类型,如嵌入式对象或以 JSONB 格式保存在数据库中的对象(共享、attributeValues 等......)。修复这些问题非常复杂,而且只会引发新的问题。因此,"mergedMode=MERGE "已被弃用,目前不建议使用。更新模式应始终是 mergedMode=REPLACE。我们开发了一个新的 [JSON Patch API](#webapi_partial_updates),可作为替代方法使用。此功能在 2.37 版中引入。

要导入的元数据负载的示例如下所示。注意如何 每个实体类型都有自己的属性和一个对象数组:

{
  "dataElements": [
    {
      "name": "EPI - IPV 3 doses given",
      "shortName": "EPI - IPV 3 doses given",
      "aggregationType": "SUM",
      "domainType": "AGGREGATE",
      "valueType": "INTEGER_ZERO_OR_POSITIVE"
    },
    {
      "name": "EPI - IPV 4 doses given",
      "shortName": "EPI - IPV 4 doses given",
      "aggregationType": "SUM",
      "domainType": "AGGREGATE",
      "valueType": "INTEGER_ZERO_OR_POSITIVE"
    }
  ],
  "indicators": [
    {
      "name": "EPI - ADS stock used",
      "shortName": "ADS stock used",
      "numerator": "#{LTb8XeeqeqI}+#{Fs28ZQJET6V}-#{A3mHIZd2tPg}",
      "numeratorDescription": "ADS 0.05 ml used",
      "denominator": "1",
      "denominatorDescription": "1",
      "annualized": false,
      "indicatorType": {
        "id": "kHy61PbChXr"
      }
    }
  ]
}

将此有效负载发布到元数据端点时,响应将包含 有关导入过程中使用的参数的信息和每个摘要 实体类型,包括创建、更新、删除和 忽略:

{
  "importParams": {
    "userOverrideMode": "NONE",
    "importMode": "COMMIT",
    "identifier": "UID",
    "preheatMode": "REFERENCE",
    "importStrategy": "CREATE_AND_UPDATE",
    "atomicMode": "ALL",
    "mergeMode": "REPLACE",
    "flushMode": "AUTO",
    "skipSharing": false,
    "skipTranslation": false,
    "skipValidation": false,
    "metadataSyncImport": false,
    "firstRowIsHeader": true,
    "username": "UNICEF_admin"
  },
  "status": "OK",
  "typeReports": [
    {
      "klass": "org.hisp.dhis.dataelement.DataElement",
      "stats": {
        "created": 2,
        "updated": 0,
        "deleted": 0,
        "ignored": 0,
        "total": 2
      }
    },
    {
      "klass": "org.hisp.dhis.indicator.Indicator",
      "stats": {
        "created": 1,
        "updated": 0,
        "deleted": 0,
        "ignored": 0,
        "total": 1
      }
    }
  ],
  "stats": {
    "created": 3,
    "updated": 0,
    "deleted": 0,
    "ignored": 0,
    "total": 3
  }
}

GeoJSON 导入

默认情况下,文件中的几何图形存储为组织单位的几何图形属性。要存储额外的几何图形,可以创建GEOJSON类型的属性。当使用属性时,文件中的所有几何图形都存储为相同的属性,该属性提供了一个附加参数attributeId

GeoJSON 批量数据导入{ #webapi_geojson_bulk_import }

默认情况下,文件中的几何图形存储为组织单位的几何图形属性。要存储额外的几何图形,可以创建GEOJSON类型的属性。当使用属性时,文件中的所有几何图形都存储为相同的属性,该属性提供了一个附加参数attributeId

名称

类型

名称 类型 默认 描述
true boolean Tracker import { #webapi_tracker_import } true时,预期GeoJSON要素的id属性将保存组织单元标识符。
未定义 JSON格式 dryRun enum:[idcodename]
id GeoJSON 文件中使用的标识符所指向的组织单位属性 attributeId String
未定义 JSON格式 dryRun boolean
false boolean flushMode true时,将在不更新组织单位的情况下处理导入。
false boolean flushMode true时,同步处理导入

The post body is the GeoJSON file. Content type should be application/json or application/geo+json. The file may be .zip or .gzip compressed.

For example, a default file where id is used to refer to an organisation unit id has this structure:

{ 
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": "O6uvpzGd5pu",
      "geometry": { ... }
    },
    ...
  ]
}

一个使用特征属性来引用组织单位代码的文件 将采用这种结构:

{ 
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": { "code": "OU1_CODE" },
      "geometry": { ... }
    },
    ...
  ]
}

几何体中的 坐标可以是成对的,也可以是三维的。 如果存在第三个维度,则会在导入时去除。

几何图形也可以是,以有效清除或删除特定组织单位的几何图形。 删除。下一节将介绍一种特殊的批量删除 API。 将在下一节中介绍。 几何体中的 坐标可以是成对的,也可以是三维的。 如果存在第三个维度,则会在导入时去除。

几何图形也可以是,以有效清除或删除特定组织单位的几何图形。 删除。下一节将介绍一种特殊的批量删除 API。 将在下一节中介绍。

同步运行时,会直接返回导入报告。 HTTP 状态代码总是 OK,消息有效载荷中的 status表示是否所有记录都已成功导入。 表示是否成功导入了所有行。 报告中包含的导入计数统计信息可提供更多信息:

  • imported(导入的):成功更新了几何图形的组织单位数量,该组织单位在更新属性之前没有几何图形
  • deleted: number of organisation units that where successfully update with a empty geometry
  • When the import is run asynchronous the request returns immediately with status OK and job configuration response that contains a relative reference to the task endpoint that allows to track the status of the asynchronous import. For example:
  • /api/system/tasks/GEOJSON_IMPORT/{job-id}

同步执行时直接返回的摘要见

/api/system/taskSummaries/GEOJSON_IMPORT/{job-id}

一旦导入完成。

GeoJSON 批量数据删除{ #webapi_geojson_bulk_deletion }

要清除或取消设置所有组织单位的几何数据,请使用:

DELETE /api/organisationUnits/geometry

要清除或取消设置所有组织单位的几何数据,请使用:

DELETE /api/organisationUnits/geometry?attributeId={attr-id}

Clearing is always synchronous and returns a similar report as the bulk import. It does not support any other parameters. No dry-run can be performed. Bulk clearing requires the F_PERFORM_MAINTENANCE authority.

GeoJSON 单一数据导入{ #webapi_geojson_single_import }

单次导入可以更新单个组织单元的几何图形。

POST /api/organisationUnits/{id}/geometry

例如,帖子正文只包含 GeoJSON geometry 值:

{
  "type": "Polygon",
  "coordinates": [...]
}

单次导入只支持 attributeIddryRun 参数。 GeoJSON 单一数据删除{ #webapi_geojson_single_deletion } 要清除单个组织单位的 geometry GeoJSON 数据,请使用

DELETE /api/organisationUnits/{id}/geometry

同样,要清除单个组织的 GEOJSON 属性值 单位使用:

DELETE /api/organisationUnits/{id}/geometry?attributeId={attr-id}

Clearing is always synchronous returns a similar report as single import. The dry-run parameter is supported as well. The performing user requires authority to modify the target organisation unit.

架构图 { #webapi_schema }

可用于内省所有可用 DXF 2 对象的资源 可以在/api/schemas 上找到。对于特定资源,您可以拥有 查看/api/schemas/<type>

架构图

可用于内省所有可用 DXF 2 对象的资源 可以在/api/schemas 上找到。对于特定资源,您可以拥有 查看/api/schemas/<type>

要获取XML中所有可用的模式:

GET /api/schemas.json

要获取JSON中所有可用的模式,请执行以下操作:

GET /api/schemas/dataElement.json

要获取特定类的JSON模式:

DHIS2 包含一系列图标,可用于为元数据提供可视化语境。 元数据的上下文。有两种不同的图标:

图示

DHIS2 包括一组可用于提供视觉效果的图标 元数据的上下文。这些图标可以通过图标访问 资源。

{
  key: "mosquito_outline",
  description: "Mosquito outline",
  keywords: [
    "malaria",
    "mosquito",
    "dengue"
  ],
  "created": "2024-02-12T09:50:11.794",
  "lastUpdated": "2024-02-12T09:50:11.794",
  href: "<dhis server>/api/icons/mosquito_outline/icon.svg"
}

此端点返回有关可用图标的信息列表。 每个条目都包含有关图标的信息,以及对图标的引用 实际图标。

{
  key: "mosquito_outline",
  description: "Mosquito outline",
  keywords: [
    "malaria",
    "mosquito",
    "dengue"
  ],
  href: "<dhis server>/api/icons/mosquito_outline/icon.svg"
}

关键字可用于过滤要返回的图标。传递一个列表 带有请求的关键字将只返回与所有匹配的图标 关键词:

GET /api/icons?keywords=shape,small

可以在关键字资源中找到所有唯一关键字的列表:

GET /api/icons/keywords

渲染类型

某些元数据类型具有名为 renderType 的属性。渲染类型 属性是 devicerenderingType 之间的映射。应用 可以使用此信息作为有关如何呈现对象的提示 在特定设备上。例如,移动设备可能想要渲染 与台式计算机不同的数据元素。

当前有两种不同的renderingTypes可用:

  1. 值类型渲染

  2. 程序阶段部分渲染

还提供2种设备类型:

  1. 移动

  2. 桌面

下表列出了可用的元数据和呈现类型。 值类型呈现具有基于元数据的附加约束 配置,这将显示在第二个表中。

可用的渲染类型

项目阶段部分 * 列表(默认)
* 序列
* 矩阵
程序阶段部分 * DEFAULT
* DROPDOWN
* VERTICAL_RADIOBUTTONS
* HORIZONTAL_RADIOBUTTONS
* VERTICAL_CHECKBOXES
* HORIZONTAL_CHECKBOXES
* SHARED_HEADER_RADIOBUTTONS
* ICONS_AS_BUTTONS
* SPINNER
* ICON
* TOGGLE
* VALUE
* SLIDER
* LINEAR_SCALE
* AUTOCOMPLETE
* QR_CODE
* BAR_CODE
* GS1_DATAMATRIX
数据元素 * DEFAULT
* DROPDOWN
* VERTICAL_RADIOBUTTONS
* HORIZONTAL_RADIOBUTTONS
* VERTICAL_CHECKBOXES
* HORIZONTAL_CHECKBOXES
* SHARED_HEADER_RADIOBUTTONS
* ICONS_AS_BUTTONS
* SPINNER
* ICON
* TOGGLE
* VALUE
* SLIDER
* LINEAR_SCALE
* AUTOCOMPLETE
* QR_CODE
* BAR_CODE
* GS1_DATAMATRIX

由于处理数据元素和跟踪实体的默认呈现 属性取决于对象的值类型,还有 一个 DEFAULT 类型告诉客户端它应该被正常处理。 程序阶段部分默认为“列表”。

对象是一个选项集吗?

值类型 TRUE_ONLY
单个变更建议可通过以下方式查看
JSON object for ADD proposal, JSON array for UPDATE proposal, nothing for REMOVE proposal
-- 是的
验证基于此 regex ^[0-9+\(\)#\.\s\/ext-]{6,50}$.最大长度为 50。
例如+4733987937, (+47) 3398 7937, (47) 3398 7937.123
创建提案的日期时间
一般电子邮件格式 abc@email.com
true or false
数字
没有
没有
数值长度 = 1 并且是字母

上表的完整参考也可以使用 以下端点:

表:renderType 对象属性

值类型渲染也有一些额外的属性,可以 设置,通常在渲染某些特定类型时需要:

描述

指标组 描述 类型
枚举(参见元数据和渲染类型表中的列表) 对象的渲染类型(RenderingType),如第一个表格所示。该属性对于值类型和项目阶段部分都是相同的,但对于项目阶段部分是唯一可用的属性。 仅用于值类型渲染。表示该字段可以具有的最小值。
整数 最大 整数
最大 步骤 整数
整数 小数点 整数
整数 renderingType 可以在创建或更新第一个表中列出的元数据时设置。项目阶段部分的渲染类型的示例负载如下所示: 整数

renderingType 可以在创建或更新第一个表中列出的元数据时设置。程序阶段部分的渲染类型的示例负载如下所示:

{
  "renderingType": {
    "type": "MATRIX"
  }
}

对于数据元素和跟踪的实体属性:

{
  "renderingType": {
    "type": "SLIDER",
    "min": 0,
    "max": 1000,
    "step": 50,
    "decimalPoints": 0
  }
}

对象样式

大多数元数据都有一个属性名称“样式”。可以使用此属性 由客户以某种方式表示对象。属性 目前支持的样式如下:

描述

指标组 描述 类型
字符串 (#000000) 图标 图标,由图标名称表示。
目前,没有官方列表或对图标库的支持,所以
这目前由客户提供。下面的列表显示
所有支持样式的对象:

目前,没有官方列表或对图标库的支持,所以 这目前由客户提供。下面的列表显示 所有支持样式的对象:

  • 数据元素

  • 数据元素类别选项

  • 资料集

  • 指示符

  • 选项

  • 程序

  • 计划指标

  • 计划科

  • 程序阶段

  • 程序阶段部分

  • 关系(跟踪器)

  • 跟踪实体属性

  • 追踪实体类型

在创建或更新任何这些对象时,您可以包括 以下有效负载更改样式:

{
  "style": {
    "color": "#ffffff",
    "icon": "my-beautiful-icon"
  }
}

指标

本节介绍指标和指标表达式。

综合指标

要检索指标,您可以向指标发出 GET 请求 像这样的资源:

/ api /指标

指标表示可以计算和呈现的表达式 因此。指标表达式分为分子和 分母。分子和分母是数学的 可以包含对数据元素、其他指标、常量和 组织单位组。变量将替换为数据 使用时的值,例如在报告中。允许的变量 表达式在下表中描述。

目的

变量 目的 描述
指集合数据元素和类别选项组合的组合。类别和属性选项组合 id 都是可选的,可以使用通配符"*"来表示任何值。 数据元素操作数 类别 选项组
指一个综合数据元素和一个类别选项组,包含多个类别选项组合。 #{<data-element-id>} 汇总数据元素
指所有类别选项组合中的聚合数据元素的总值。 汇总数据元素 指所有类别选项组合中的聚合数据元素的总值。
引用项目中跟踪器数据元素的值。 程序数据元素 引用程序中跟踪器数据元素的值。
指项目中被跟踪实体属性的值。 程序跟踪的实体属性 指程序中被跟踪实体属性的值。
指项目指示器的值。 计划指标 指程序指示器的值。
指报告率指标。指标可以是REPORTING_RATE,REPORTING_RATE_ON_TIME,ACTUAL_REPORTS,ACTUAL_REPORTS_ON_TIME,EXPECTED_REPORTS。 报告率 指报告率指标。指标可以是REPORTING_RATE,REPORTING_RATE_ON_TIME,ACTUAL_REPORTS,ACTUAL_REPORTS_ON_TIME,EXPECTED_REPORTS。
指恒定值。 不变 指恒定值。
指现有指标。 指示符 组织单位组
指组织单位组内组织单位的数量。 组织单位组 指组织单位组内组织单位的数量。

项目 描述
数据元素组中的所有汇总数据元素 数据元素组中的所有汇总数据元素 deGroup:data-element-group-id
数据元素组中的所有汇总数据元素 类别-选项-组合-id 类别-选项-组合-id
类别选项组合 类别选项组合 co:category-option-id
类别选项组合 类别-选项-组合-id coGroup:category-option-group-id
类别选项组合 类别-选项-组合-id coGroup:co-group-id1&co-group-id2...
类别选项组合 语法看起来像
这: #{.} + C{} + OUG{}

语法看起来像 这:

相应的示例如下所示:

请注意,对于数据元素变量,类别选项组合 标识符可以省略。该变量将代表总数 对于数据元素,例如在所有类别选项组合中。例子:

数据元素操作数可以包括任何类别选项组合和 属性选项组合,并使用通配符表示任何 价值:

使用类别选项、数据元素组和类别选项组的示例:

#{P3jJH5Tu5VC.co:FbLZS3ueWbQ}+ #{deGroup:GBHN1a1Jddh.coGroup:OK2Nr4wdfrZ.j8vBiBqGf6O}

使用多个类别选项组的示例:

#{P3jJH5Tu5VC.coGroup:OK2Nr4wdfrZ&j3C417uW6J7&ddAo6zmIHOk}

使用项目数据元素和项目属性的示例:

(D {eBAyeGv0exc.vV9UWAZohSf} * A {IpHINAT79UW.cejWyOfXge6})/ D {eBAyeGv0exc.GieVkTxp4HH}

使用项目数据元素和项目属性的示例:

(D {eBAyeGv0exc.vV9UWAZohSf} * A {IpHINAT79UW.cejWyOfXge6})/ D {eBAyeGv0exc.GieVkTxp4HH}

以报告率为例:

I {EMOt6Fwhs1n} * 1000 /#{WUg3MYWQ7pt}

另一个使用实际数据集报告和预期报告的报告率示例:

R {BfMAe6Itzgt.REPORTING_RATE} *#{P3jJH5Tu5VC.S34ULMcHMca}

使用现有指标的示例

R {BfMAe6Itzgt.ACTUAL_REPORTS} / R {BfMAe6Itzgt.EXPECTED_REPORTS}

表达式可以是任何类型的有效数学表达式,作为 例子:

N {Rigf2d2Zbjp} *#{P3jJH5Tu5VC.S34ULMcHMca}

表达式可以是任何类型的有效数学表达式,作为 例子:

(2 *#{P3jJH5Tu5VC.S34ULMcHMca})/(#{FQ2o8UBlcrS.S34ULMcHMca}-200)* 25

计划指标

要检索程序指标,您可以向程序发出 GET 请求 像这样的指标资源:

/ api / programIndicators

程序指示器可以包含在程序中收集的信息。 指标有一个表达式,可以包含对数据的引用 元素、属性、常量和程序变量。变量 下表中描述了允许在表达式中使用。

表:项目指示变量

变量 描述
A{<attribute-id>} 指的是项目阶段和数据元素id的组合。
V{<variable-id>} 指项目变量。
C{<constant-id>} 指项目变量。
指恒定值。 #{.} + #{} + V{} + C{}

语法看起来像 这:

一个相应的例子看起来像 这:

表达方式

表达式是数学公式,可以包含对 数据元素、常量和组织单元组。验证和 获取表达式的文本描述,您可以发出 GET 请求 到表达式资源:

/ api / expressions / description?expression = <expression-string>

响应遵循标准的 JSON Web 消息格式。 状态 属性表示验证的结果,如果 成功和“错误”如果失败。 message 属性将为“有效” 如果成功并提供原因的文字描述 如果不是,则验证失败。 *描述*提供了文字说明 表达式的描述。

{
  "httpStatus": "OK",
  "httpStatusCode": 200,
  "status": "OK",
  "message": "Valid",
  "description": "Acute Flaccid Paralysis"
}

组织单位

organisationUnits 资源遵循标准约定,如 DHIS2 中的其他元数据资源。该资源支持一些 附加查询参数。

获取组织单位列表

要获取组织单位的列表,可以使用以下资源。

/ api / 33 / organisationUnits

选项

查询参数 选项 描述
仅 userDataView
数据视图组织单位只与当前用户相关。
userDataViewFallback
仅与当前用户相关联的数据视图组织单位,可退回到数据采集组织单位。 不区分大小写的字符串结尾匹配 字符串
查询名称、代码和 ID 属性。 整数 整数
层次结构中指定级别的组织单位。 整数 整数
在给定的最大级别或更高级别上的组织单位。
withinUserSearchHierarchy
不区分大小写的字符串结尾匹配 将搜索和检索限制在当前用户搜索范围内的组织单位。注意:"in withinUserHierarchy"(如果为 true)优先级更高。
会员收藏 用户标识 对于显示集合内成员的计数,指的是与组织单位相关联的集合名称。

成员对象

用户标识

/ api / 33 / organisationUnits / {id}

获取带有子层次结构的组织单位{ #webapi_organisation_units_with_sub_hierarchy }

查询参数 选项 描述
查询参数 描述
包括儿童
包括指定组织单位的直属子单位,即子层次结构中下一级的直属单位。
查询名称、代码和 ID 属性。 整数 包括祖先

专门用于检索类别选项与组织单位之间关联的端点。该端点是检索项目组织单位关联的首选方式。

包括指定组织单位的所有家长。

夷为平地

整数

包括子层次结构中指定级别的指定组织单位的子机构。这是相对于组织单位而言的,从 1 开始为紧接组织单位之下的层级。

按项目获取组织单位{ #webapi_organisation_units_by_programs }

专用端点,用于检索项目与组织单位之间的关联。该端点是检索项目与组织单位关联的首选方式。

/api/33/categoryOptions/orgUnits?categoryOptions={categoryOptionIdA} 、{categoryOptionIdB}

夷为平地

{
  "<categoryOptionIdA>": [
    "<orgUnitUid>",
    "<orgUnitUid>"
  ],
  "<categoryOptionIdB>": [
    "<orgUnitUid>",
    "<orgUnitUid>"
  ],
  "<categoryOptionIdC>": []
}

所有组织单位都能访问的项目将以组织单位的空数组([])返回。

按项目获取组织单位{ #webapi_organisation_units_by_programs }

专用端点,用于检索项目与组织单位之间的关联。该端点是检索项目与组织单位关联的首选方式。

/api/33/programs/orgUnits?programs={programIdA} 、{programIdB}

答复的格式如下

{
  "<programIdA>": [
    "<orgUnitUid>",
    "<orgUnitUid>"
  ],
  "<programIdB>": [
    "<orgUnitUid>",
    "<orgUnitUid>"
  ],
  "<programIdC>": []
}

下表描述了 JSON 属性。

分体式组织单位{ #webapi_organisation_unit_split }

领域

请求{ #request }

领域 需要
```json
{
"source": "rspjJHg4WY1",
"targets": [
"HT0w9YLMLyn",
"rEpnzuNpRKM"
],
"primaryTarget": "HT0w9YLMLyn",
"deleteSource": true
}
``` 是的 表格分割有效载荷字段
领域 是的
消息来源 要拆分的组织单位(源组织单位)的标识符。
目标 操作后是否删除源组织单位。默认为

主要目标

拆分操作将把源组织单位的所有元数据关联转移到目标组织单位。这包括数据集、项目、组织单位组、类别选项、用户、可视化、地图和事件报告。

要将与源相关的汇总数据、事件和跟踪实体转移到的组织单位的标识符。如果未指定,将使用第一个目标。

删除源

错误代码

描述

错误代码 描述
该操作将把源组织单位的所有数据记录转移到指定为主要目标的组织单位,如果没有指定,则转移到第一个指定的目标组织单位。这包括汇总数据值、数据批准记录、事件、跟踪实体等。 验证{ #validation }
适用以下限制条件和错误代码。 表:限制条件和错误代码
错误代码 描述
E1510 必须指定来源网络单位
E1511 必须指定至少两个目标组织单位
E1512 源组织单位不能是目标组织单位

E1513

必须指定主要目标

请求{ #request }

主要目标必须是目标组织单位

/api/33/programs/orgUnits?programs={programIdA} 、{programIdB}

目标组织单位不存在

合并组织单位 { #webapi_organisation_unit_merge}

下表描述了 JSON 属性。

授权{ #authorisation }

领域

需要

| The manual merge is suitable when there are resolvable conflicts or when not all the data needs to be moved during the merge. For example, if an attribute has different values in both tracked entities , the user can specify whether to keep the original value or move over the duplicate's value. Since the manual merge involves the user explicitly requesting to move data, there are some additional checks: | 检索和删除项目通知模板 | json { "object": { "publicAccess": "rw------", "externalAccess": false, "user": {}, "userAccesses": [], "userGroupAccesses": [ { "id": "hj0nnsVsPLU", "access": "rw------" }, { "id": "qMjBflJMOfB", "access": "r-------" } ] } } | | ------------------------- | -------- | ----- | | 要合并的类别选项(源类别选项)的标识符数组 | json { "name": "Case notification", "notificationTrigger": "ENROLLMENT", "subjectTemplate": "Case notification V{org_unit_name}", "displaySubjectTemplate": "Case notification V{org_unit_name}", "notifyUsersInHierarchyOnly": false, "sendRepeatable": false, "notificationRecipient": "ORGANISATION_UNIT_CONTACT", "notifyParentOrganisationUnitOnly": false, "displayMessageTemplate": "Case notification A{h5FuguPFF2j}", "messageTemplate": "Case notification A{h5FuguPFF2j}", "deliveryChannels": [ "EMAIL" ] } | 表格合并有效载荷字段 | | 将来源合并为指标(目标指标)的标识符 | json { "name": "Case notification", "notificationTrigger": "ENROLLMENT", "subjectTemplate": "Case notification V{org_unit_name}", "displaySubjectTemplate": "Case notification V{org_unit_name}", "notifyUsersInHierarchyOnly": false, "sendRepeatable": false, "notificationRecipient": "ORGANISATION_UNIT_CONTACT", "notifyParentOrganisationUnitOnly": false, "displayMessageTemplate": "Case notification A{h5FuguPFF2j}", "messageTemplate": "Case notification A{h5FuguPFF2j}", "deliveryChannels": [ "EMAIL" ] } | 值 | | 资源 | Program notification template | 要合并的组织单位(源组织单位)的标识符数组。 | | 目标 | Program notification template | 要将数据源合并到的组织单位(目标组织单位)的标识符。 | | 是否在操作后删除源类别选项。默认为假。 | Program notification template | Strategy for merging data values. Options: LAST_UPDATED (default), DISCARD. |

数据审批合并策略

Strategy for merging data approval records. Options: LAST_UPDATED (default), DISCARD.

删除源

错误代码

描述

json(应用项目/ json) Parameter name
指定的数据值合并策略定义了如何处理数据值。对于LAST_UPDATED策略,所有源组织单位的数据值都将转移到目标组织单位,并且在相同参数存在数据值的情况下,将使用最后更新或创建的数据值。这样做是为了避免数据重复。对于DISCARD策略,数据值不会转移到目标组织单位,而是简单地删除。指定的数据审批合并策略定义了数据审批记录的处理方式,并遵循与数据值相同的逻辑。 验证{ #validation }
适用以下限制条件和错误代码。 表:限制条件和错误代码
错误代码 描述
E1500 必须指定至少两个来源组织单位

E1501

必须指定目标组织单位

E1502

目标组织单位不能是源组织单位

E1503

源机构单位不存在

数据集 { #webapi_data_sets }

dataSets 资源遵循标准约定作为其他

DHIS2 中的元数据资源。此资源支持一些额外的 查询参数。

/ api / 33 / dataSets

要检索数据集的版本,您可以发出GET请求:

GET /api/33/dataSets/<uid>/version

要提高(增加一个)数据集的版本,您可以发出 POST 要求:

POST / api / 33 / dataSets / <uid> / version

数据集通知模板{ #webapi_dataset_notifications }

*数据集通知模板*资源遵循标准 DHIS2 中其他元数据资源的约定。

GET /api/33/dataSetNotficationTemplates

要检索数据集通知模板,您可以发出GET请求:

GET /api/33/dataSetNotficationTemplates/<uid>

要添加数据集通知模板,您可以发出POST请求: - POST / api / 33 / dataSetNotficationTemplates - 要删除数据集通知模板,您可以发出DELETE请求:

删除/ api / 33 / dataSetNotficationTemplates /

JSON有效负载示例如下:

{
  "name": "dataSetNotificationTemplate1",
  "dataSetNotificationTrigger": "DATA_SET_COMPLETION",
  "relativeScheduledDays": 0,
  "notificationRecipient": "ORGANISATION_UNIT_CONTACT",
  "dataSets": [{
    "id": "eZDhcZi6FLP"
  }],
  "deliveryChannels": ["SMS","EMAIL"],
  "subjectTemplate": "V{data_set_name}",
  "messageTemplate": "V{data_set_name}V{registration_period}",
  "sendStrategy": "SINGLE_NOTIFICATION"
}

notificationRecipient can be one of:

USER_GROUP for internal messages

ORGANISATION_UNIT_CONTACT for external messages

填充的组织单位级别 { #webapi_filled_organisation_unit_levels }

fillOrganisationUnitLevels 资源提供了一个有序的列表 组织单元级别,其中生成的级别被注入到 列表以填充不存在持久级别的位置。

GET /api/33/filledOrganisationUnitLevels

要设置组织单位级别,您可以发出一个 POST 请求,其中包含一个

内容类型为 application/json 的 POST 请求:

{
  "organisationUnitLevels": [{
    "name": "National",
    "level": 1,
    "offlineLevels": 3
  }, {
    "name": "District",
    "level": 2
  }, {
    "name": "Chiefdom",
    "level": 3
  }, {
    "name": "Facility",
    "level": 4
  }]
}

预测变量 { #webapi_predictors }

预测器允许您根据表达式生成数据值。 这可以用于例如生成目标、阈值、 或估计值。

要检索预测器,您可以向预测器发出 GET 请求 像这样的资源:

/ api / predictors

创建预测变量

您可以使用对预测器的 POST 请求创建预测器 资源:

POST / api / predictors
#{<programstage-id>.<dataelement-id>} UID \ Parameter name
预测表达式 { #webapi_predictor_expressions } D{<program-id>.<data-element-id>} 项目数据元素
变量 Syntax 描述
#{} IN_GROUP-<indicatorgroup-id> 指所有类别选项组合中的聚合数据元素的总值。
#{. I{<program-indicator-id>} 计划指标
D{.} <dataelement-id> 引用项目中跟踪器数据元素的值。
A{.} C{<constant-id>} 指项目中被跟踪实体属性的值。
I{} N{<indicator-id>} 指示符
R{.} Category combination 项目
C{} 不变 指恒定值。

OUG{}

组织单位组

指组织单位组内组织单位的数量。

[天]

天数

过滤

用于该类别选项的筛选器。过滤器的语法必须与项目中项目指示符的过滤器表达式相同。提示: 可以使用维护应用项目生成并验证该过滤器:将其构建为节目中新的或现有节目指示符的过滤器表达式,确保其有效,然后复制并粘贴到元数据中。(你不必保存带有该过滤器的计划指标)。

项目指示符可在其 categoryMappingIds 字段中选择要使用的项目映射。

新的项目指示符没有类别映射 id。 在 Web API 中,这看起来像

"categoryMappingIds": [],

You can replace this with the category mappings that you want the program indicator to use. For example, if the program indicator has selected a category combination that combines Gender and Outcome, this field could be edited to contain the mapping ids for these categories such as defined in the above categoryMappings example:

```json

"categoryMappingIds": [ "goor7Li4See", "ESesheeva1i" ],

计划规则 { #webapi_program_rules } 

本节是关于发送和读取项目规则,并解释
项目规则数据模型。项目规则赋予功能
在 DHIS2 项目中配置动态行为。

| displayColumnOrder | dataFilters | 表:项目规则操作 |
|---|---|---|
| `{ "periodFrom": -15, "periodTo": 15}` | 下表给出了项目规则的详细概述
模型。 | 表:项目规则操作 |
| displayColumnOrder | 描述 | 表:项目规则操作 |
| dataFilters | 执行项目规则的项目。 | 表:项目规则操作 |
| See an example payload below. | 项目规则显示给 dhis2 配置器的名称。项目最终用户看不到。 | 强制性 |
| 描述 | 项目规则的描述,配置器可用于描述规则。项目的最终用户看不到。| 表:项目规则操作 |
| 项目阶段 | 如果为项目规则设置了项目阶段(programStage),则该规则只能在指定的项目阶段内进行评估。 | 强制性 |

#### 健康)状况

为使项目规则触发其子操作,需要求值为 true 的表达式。表达式使用运算符、函数调用、硬编码值、常量和项目规则变量编写。`d2:hasValue('hemoglobin') && #{hemoglobin} <= 7 `.

强制性

| displayColumnOrder | dataFilters | 表:项目规则操作 |
|---|---|---|
| 计划规则操作模型详细信息 { #program-rule-action-model-details }  | 下表给出了对 programRuleAction 的详细概述
模型。 | 表:项目规则操作 |
| 名称 | 要执行的操作类型。 <br> * `DISPLAYTEXT` - 在给定小部件中显示文本。 <br> * `DISPLAYKEYVALUEPAIR` - 在给定的小部件中显示键和值对(如项目指示器)。 <br> * `HIDEFIELD` - 隐藏指定的 dataElement 或 trackedEntityAttribute。 <br> - *content* - 如果定义,*content* 中的文本将在先前在字段中输入值(现在约为)的情况下向最终用户显示被隐藏(因此被清空)。如果未定义*content*,则在此实例中将向用户显示标准消息。 <br> - *dataElement* - 如果已定义,则当规则有效时,HIDEFIELD 操作将隐藏此 dataElement。 <br> - *trackedEntityDataValue* - 如果定义,则当规则有效时,HIDEFIELD 操作将隐藏此 trackedEntityDataValue。 <br> * `HIDESECTION` - 隐藏指定部分。 <br> - *programStageSection* - 必须定义。这是在父规则有效的情况下将隐藏的programStageSection。 <br> * `ASSIGN` - 为 dataElement 分配一个值(帮助用户计算某些内容或在某处填写明显的值)<br> - *content* - 如果定义,*data* 中的值将分配给该变量。如果定义了内容 ID,并因此分配了一个变量以在其他规则中使用,则还必须分配 *programRule.priority* 以确保具有 ASSIGN 操作的规则在依次评估分配的变量的规则之前运行。 <br> - *data* - 必须定义,数据形成一个表达式,该表达式被计算并分配给变量(#{myVariable} )、数据元素或两者。 <br> - *dataElement* - 如果定义,*data* 中的值将分配给此数据元素。 <br> 必须定义 content 或 dataElement 才能使 ASSIGN 操作生效。 <br> * `SHOWWARNING` - 向用户显示警告,不阻止用户完成活动或注册。 <br> - *content* - 如果定义,内容是显示在错误消息末尾的静态部分。 <br> - *data* - 如果定义,数据会形成一个表达式,该表达式将被计算并添加到警告消息的末尾。 <br> - *dataElement* - 如果已定义,警告消息将显示在此数据元素旁边。 <br> - *trackedEntityAttribute* - 如果定义,警告消息将显示在此跟踪实体属性旁边。 <br> 必须指定 dataElement 或 trackedEntityAttribute。 <br> * `SHOWERROR` - 向用户显示错误,阻止用户完成活动或注册。 <br> - *content* - 如果定义,内容是显示在错误消息开头的静态部分。 <br> - *data* - 如果定义,数据会形成一个表达式,该表达式将被计算并添加到错误消息的末尾。 <br> - *dataElement* - 如果定义,错误消息将链接到此数据元素。 <br> - *trackedEntityAttribute* - 如果定义,错误消息将链接到此跟踪的实体属性。 <br> 必须指定 dataElement 或 trackedEntityAttribute。 <br> * `WARNINGONCOMPLETE` - 在“完成表单”对话框中向用户显示警告,但允许用户完成事件。 <br> - *content* - 如果定义,内容是显示在错误消息末尾的静态部分。 <br> - *data* - 如果定义,数据会形成一个表达式,该表达式将被计算并添加到警告消息的末尾。 <br> - *dataElement* - 如果已定义,则警告消息以数据元素的名称/formName 为前缀。 <br> * `ERRORONCOMPLETE` - 当用户尝试完成事件时,在模式窗口中向用户显示错误。用户被阻止完成该事件。 <br> - *content* - 如果定义,内容是显示在错误消息开头的静态部分。 <br> - *data* - 如果定义,数据会形成一个表达式,该表达式将被计算并添加到错误消息的末尾。 <br> - *dataElement* - 如果定义,错误消息将链接到此数据元素。 <br> * `CREATEEVENT` - 在同一注册中创建事件。 <br> - *内容* <br> - *data* - 如果已定义,则包含用于分配创建的事件的数据值。格式为 <uid\> : <data value\> 。如果指定了多个值,则这些值用逗号分隔。 <br> AcMrnleqHqc:100,AqK1IHqCkEE:'PolyHydramnios' - *programStage* - 必须定义,并指定规则应在其中创建事件的项目阶段。 <br> * `SETMANDATORYFIELD` - 将字段设置为必填。 <br> - *dataElement* - 如果定义,此数据元素将在数据输入表单中设置为强制。 <br> - *trackedEntityAttribute* - 如果定义,此跟踪实体属性将在注册表单或个人资料中设置为强制属性。 <br> * `SENDMESSAGE` - 在活动/注册完成或数据值更新时发送消息。 <br> - *messageTemplate* - 如果定义,此模板将以 SMS 或 EMAIL 形式传送,具体取决于消息模板中的 DeliveryChannel 值。 <br> * `SCHEDULEMESSAGE` - 在事件/注册完成或数据值更新时安排消息。 <br> - *messageTemplate* - 如果定义,此模板将以 SMS 或 EMAIL 形式传送,具体取决于消息模板中的 DeliveryChannel 值。 <br> - *发送消息的日期* - 将用于评估预定日期的表达式。该表达式的结果应该是日期,任何其他结果都将被丢弃,并且不会安排通知。 | 表:项目规则操作 |
| 项目规则 | 该操作的父项目规则。 | 强制性 |
| 项目规则--动作类型 | The type of action that is to be performed.<br>  * `DISPLAYTEXT` - Displays a text in a given widget.<br> * `DISPLAYKEYVALUEPAIR` - Displays a key and value pair(like a program indicator) in a given widget.<br> * `HIDEFIELD` - Hide a specified dataElement or trackedEntityAttribute.<br>    -         *content* - if defined, the text in *content* will be displayed to the end user in the instance where a value is previously entered into a field that is now about to be hidden (and therefore blanked). If *content* is not defined, a standard message will be shown to the user in this instance.<br>   -         *dataElement* - if defined, the HIDEFIELD action will hide this dataElement when the rule is effective.<br>   -         *trackedEntityDataValue* - if defined, the HIDEFIELD action will hide this trackedEntityDataValue when the rule is effective.<br>  * `HIDESECTION` - Hide a specified section.<br>    -         *programStageSection* - must be defined. This is the programStageSection that will be hidden in case the parent rule is effective.<br>  * `ASSIGN` - Assign a value to either a dataElement or trackedEntityAttribute or a ProgramRuleVariable. Intended to help the user calculate something or fill in an obvious value somewhere.<br>    -         *content* - if defined, the value in *data* is assigned to this variable. If content id defined, and thus a variable is assigned for use in other rules, it is important to also assign a *programRule.priority* to make sure the rule with an ASSIGN action runs before the rule that will in turn evaluate the assigned variable.<br>   -         *data* - must be defined, data forms an expression that is evaluated and assigned to either a variable(#{myVariable}), a dataElement, or both.<br>   -         *dataElement* - if defined, the value in *data* is assigned to this data element.<br>  Either the content or dataElement must be defined for the ASSIGN action to be effective.<br> * `SHOWWARNING` - Show a warning to the user, not blocking the user from completing the event or registration.<br>    -         *content* - if defined, content is a static part that is displayed at the end of the error message.<br>   -         *data* - if defined, data forms an expression that is evaluated and added to the end of the warning message.<br>   -         *dataElement* - if defined, the warning message is displayed next to this data element.<br>   -         *trackedEntityAttribute* - if defined, the warning message is displayed next to this tracked entity attribute.<br>  Either dataElement or trackedEntityAttribute must be specified.<br> * `SHOWERROR` - Show an error to the user, blocking the user from completing the event or registration.<br>    -         *content* - if defined, content is a static part that is displayed in the start of the error message.<br>   -         *data* - if defined, data forms an expression that is evaluated and added to the end of the error message.<br>   -         *dataElement* - if defined, the error message is linked to this data element.<br>   -         *trackedEntityAttribute* - if defined, the error message is linked to this tracked entity attribute.<br>  Either dataElement or trackedEntityAttribute must be specified.<br> * `WARNINGONCOMPLETE` - Show a warning to the user on the "Complete form" dialog, but allowing the user to complete the event.<br>    -         *content* - if defined, content is a static part that is displayed at the end of the error message.<br>   -         *data* - if defined, data forms an expression that is evaluated and added to the end of the warning message.<br>   -         *dataElement* - if defined, the warning message prefixed with the name/formName of the data element.<br>  * `ERRORONCOMPLETE` - Show an error to the user on in a modal window when the user tries to complete the event. The user is prevented from completing the event.<br>    -         *content* - if defined, content is a static part that is displayed in the start of the error message.<br>   -         *data* - if defined, data forms an expression that is evaluated and added to the end of the error message.<br>   -         *dataElement* - if defined, the error message is linked to this data element.<br>  * `CREATEEVENT` - Create an event within the same enrollment.<br>    -         *content*<br>   -         *data* - if defined, contains data values to assign the created event. The format is <uid\>:<data value\>. Where several values is specified, these are separated with comma.<br> AcMrnleqHqc:100,AqK1IHqCkEE:'Polyhydramnios'<br>   -         *programStage* - must be defined, and designates the program stage that the rule shall create an event of.<br>  * `SETMANDATORYFIELD` - Set a field to be mandatory.<br>    -         *dataElement* - if defined, this data element will be set to be mandatory in the data entry form.<br>   -         *trackedEntityAttribute* - if defined, this tracked entity attribute will be set to mandatory in the registration form or profile.<br>  * `SENDMESSAGE` - To send message at completion of event/enrollment or at data value update.<br>    -         *messageTemplate* - if defined, this template will be delivered either as SMS or EMAIL depending upon DeliveryChannel value in message template.<br>  * `SCHEDULEMESSAGE` - To schedule message at completion of event/enrollment or at data value update.<br>    -         *messageTemplate* - if defined, this template will be delivered either as SMS or EMAIL depending upon DeliveryChannel value in message template.<br>   -         *Date to send message* - Expression which is going to be used for evaluation of scheduled date. This expression should result in Date, any other resultant will be discarded and notification will not get scheduled. <br>  * `HIDEPROGRAMSTAGE` - Prevent adding new events to stage. <br>  * `HIDEOPTION` - Hide option (from an optionSet). <br>  * `HIDEOPTIONGROUP` - Hide option group (hide the options that belong to that option group). <br>  * `SHOWOPTIONGROUP` - Show option group (show the options that belong to that option group). | 强制性 |
| 地点 | 用于动作类型 DISPLAYKEYVALUEPAIR 和 DISPLAYTEXT,以指定在哪个部件中显示文本或按键对。必须用于 DISPLAYKEYVALUEPAIR 和 DISPLAYTEXT。 | 强制性 |
| 最小最大数据元素 | 用于不同操作中的用户信息。有关在每种操作类型中如何使用的详细说明,请参阅操作类型概述。SHOWWARNING、SHOWERROR、WARNINGONCOMPLETE、ERRORONCOMPLETE、DISPLAYTEXT 和 DISPLAYKEYVALUEPAIR 必须使用。HIDEFIELD 和 ASSIGN 可选。 | 强制性 |
| 数据 | 用于不同操作中的表达式。有关各操作类型中如何使用该表达式的详细说明,请参阅操作类型概述。ASSIGN 必须使用。SHOWWARNING、SHOWERROR、WARNINGONCOMPLETE、ERRORONCOMPLETE、DISPLAYTEXT、CREATEEVENT 和 DISPLAYKEYVALUEPAIR 可选。 | 强制性 |
| 数据元素 | 用于将规则操作链接到数据元素。有关在每种操作类型中如何使用的详细说明,请参阅操作类型概述。SHOWWARNING、SHOWERROR、WARNINGONCOMPLETE、ERRORONCOMPLETE、ASSIGN 和 HIDEFIELD 的可选项。 | 强制性 |
| 跟踪属性 | 用于将规则操作链接到跟踪实体属性(trackedEntityAttributes)。有关在每种操作类型中如何使用的详细说明,请参阅操作类型概述。SHOWWARNING、SHOWERROR 和 HIDEFIELD 的可选项。 | 强制性 |
| See an example payload below. | 用于将规则操作链接到选项。有关在每种操作类型中如何使用的详细说明,请参阅操作类型概述。HIDEOPTION 的可选项 | 强制性 |
| 选项组 | 用于将规则操作链接到选项组。有关在每种操作类型中如何使用的详细说明,请参阅操作类型概述。SHOWOPTIONGROUP 和 HIDEOPTIONGROUP 必须使用。 | 强制性 |

##### 项目阶段
仅用于 CREATEEVENT 规则操作。必须用于 CREATEEEVENT。

参见说明

| displayColumnOrder | 仅用于 HIDESECTION 规则操作。必须用于 HIDESECTION |
|---|---|
|参见说明| 项目规则行动验证{ #programruleaction-validation }  |
|2.37 中为 ProgramRuleAction 模型添加了一些验证。主要目的是防止用户创建错误的项目规则,以保持数据库的一致性。这些验证取决于项目规则动作类型。每种操作类型都有各自的验证。 | 项目规则行动验证{ #programruleaction-validation }  |
|名称| 验证检查 ID 是否存在 |
|短信| 通知模板 ID |
|日程消息| 选项 id |
|隐藏| ProgramStage 段落 ID |
|隐藏计划阶段| 数据元素或跟踪实体属性 id |
|希德菲尔德| 数据元素或跟踪实体属性 id |
|隐藏选项| 选项 id |
|隐藏选项组| 选项组 ID |
|显示选项组| 选项组 ID |
|设置必填字段| 选项 id |
|淋浴器||
|始终有效| 选项 id |
|始终有效| 选项 id |
|数据元素或跟踪实体属性 id| 选项 id |

分配

数据元素或跟踪实体属性 id


完成警告

#### 数据元素或跟踪实体属性 id

erroroncomplete

数据元素或跟踪实体属性 id

| displayColumnOrder | dataFilters | 表:项目规则操作 |
|---|---|---|
| displayColumnOrder | 下表详细概述了
项目规则变量模型。 | 表:项目规则操作 |
| 名称 | 定义如何使用来自注册和事件的数据填充此变量。 <br> * DATAELMENT_NEWEST_EVENT_PROGRAM_STAGE - 在跟踪器捕获中,获取当前注册中给定计划阶段的事件中数据元素存在的最新值。在事件捕获中,获取组织单元上最新的 10 个事件中的最新值。 <br> * DATAELMENT_NEWEST_EVENT_PROGRAM - 在跟踪器捕获中,获取整个注册过程中数据元素存在的最新值。在事件捕获中,获取组织单元上最新的 10 个事件中的最新值。 <br> * DATAELEMENT_CURRENT_EVENT - 仅获取当前事件中给定数据元素的值。 <br> * DATAELMENT_PREVIOUS_EVENT - 在跟踪器捕获中,获取当前事件之前的项目中的事件中存在的最新值。在事件捕获中,获取组织单位上注册的 10 个先前事件中的最新值。 <br> * CALCULATED_VALUE - 用于保留将由 ASSIGN 项目规则操作分配的变量名称 <br> * TEI_ATTRIBUTE - 获取给定跟踪实体属性的值 | 表:项目规则操作 |
| 名称 | programRuleVariable 的名称 - 该名称用于表达式中。#{myVariable} \> 5| 表:项目规则操作
| 最小最大数据元素 | Defines how this variable is populated with data from the enrollment and events.<br> *DATAELEMENT_NEWEST_EVENT_PROGRAM_STAGE - This source type works the same way as DATAELEMENT_NEWEST_EVENT_PROGRAM, except that it only evaluates values from one program stage. This source type can be useful in program rules where the same data element is used in several program stages, and a rule needs to evaluate the newest data value from within one specific stage. In order to know what event is the newest, the report date (event date) is used. If you have many events with the same report date, the system choose the one with the latest `createdAt` property of the event. <br>*DATAELEMENT_NEWEST_EVENT_PROGRAM - This source type is used when a program rule variable needs to reflect the newest known value of a data element, regardless of what event the user currently has open.<br>**NB** Future dates are "newer" than current or past dates.<br>In order to know what event is the newest, the report date (event date) is used. If you have many events with the same report date, the system choose the one with the latest `createdAt` property of the event.<br>*DATAELEMENT_CURRENT_EVENT - Program rule variables with this source type will contain the data value from the same event that the user currently has open. This is the most commonly used source type, especially for skip logic (hide actions) and warning/error rules.<br>*DATAELEMENT_PREVIOUS_EVENT - Program rule variables with this source type will contain the value from a specified data element from a previous event. Only older events is evaluated, not including the event that the user currently has open. This source type is commonly used when a data element only should be collected once during an enrollment, and should be hidden in subsequent events. Another use case is making rules for validating input where there is an expected progression from one event to the next - a rule can evaluate whether the previous value is higher/lower and give a warning if an unexpected value is entered.<br>*CALCULATED_VALUE - Program rule variable with this source type is not connected directly to any form data - but will be populated as a result of some other program rules **ASSIGN** action. This variable will be used for making preliminary calculations, having a **ASSIGN** program rule action and assigning a value, this value can be used by other program rules - potentially making the expressions simpler and more maintainable. These variables will not be persisted and will stay in memory only during the execution of the set of program rules. Any program rule that assigns a data value to a preliminary calculated value would normally also have a **priority** assigned - to make sure that the preliminary caculation is done before the rule that consumes the calculated value.<br>*TEI_ATTRIBUTE - Populates the program rule variable with a specified tracked entity attribute for the current enrollment. Use this is the source type to create program rules that evaluate data values entered during registration. This source type is also useful when you create program rules that compare data in events to data entered during registration. This source type is only used for tracker programs (programs with registration). | 强制性 |
| 数据 | valueType 参数定义此 ProgramRuleVariable 可包含的值的类型。其值取决于 sourceType 参数。如果源是 DataElement 或 TrackedEntityAttribute<br> ,那么 valueType 将从源的 valueType 派生。当 sourceType 为 CALCULATED_VALUE 时,valueType 应由用户提供,否则<br> 将默认为 ValueType.TEXT | 强制性 |
| 数据元素 | 用于将项目规则变量链接到数据元素。必须用于所有以 DATAELEMENT_ 开头的源类型。 ||
| See an example payload below. | 跟踪属性 | 强制性 |

### 参见说明

- useCodeFor- 选项集

如果选中,变量将使用任何链接选项集的代码(而不是名称)。默认值为未选中,即输入选项名称。

项目阶段

用于指定从哪个特定项目阶段获取 programRuleVariable 值。DATAELEMENT_NEWEST_EVENT_PROGRAM_STAGE 必须使用。

    / api / programRules / <program_rule_uid>

创建项目规则 { #webapi_creating_program_rules } 

    / api / programRules / <program_rule_uid>

要检索programRules的列表,您可以执行GET请求,如下所示:

    / api / programRules / <program_rule_uid>

要检索单个programRule,您可以执行GET请求,如下所示:

    / api / programRules

要保存/添加单个programRule,您可以执行POST请求,如下所示:

    / api / programRules / <program_rule_uid>

## 要更新单个programRule,您可以执行如下PUT请求:

    / api / programRules / <program_rule_uid>

要删除单个programRule,您可以执行以下DELETE请求:

| 默认值 | Validation rule | Parameter name |
|---|---|---|
| E7228 | To retrieve information about a form (which corresponds to a data set
and its sections) you can interact with the `form` resource. The form
response is accessible as XML and JSON and will provide information
about each section (group) in the form as well as each field in the
sections, including labels and identifiers. By supplying period and
organisation unit identifiers the form response will be populated with
data values. | 表格表单查询参数 |
| Filter on whether the current user can manage the returned users through the managed user group relationships. | 串 | 描述 |
| 聚乙烯 | 假 | 填入表格数据值的时间段。 |

欧

用户标识

用于填充表单数据值的组织单位。

元数据

假

真

是否包含表格各部分每个数据元素的元数据。

要检索数据集的表单,您可以执行GET请求,如下所示:

    / api / dataSets / <dataset-id> /form.json

检索具有标识符“BfMAe6Itzgt”的数据集的表单
XML:

##     / api / dataSets / BfMAe6Itzgt / form

要检索包含JSON中的元数据的表单,请执行以下操作:



    /api/dataSets/BfMAe6Itzgt/form.json?metaData=true

| 检索填充了特定时期数据值的表单,并
XML 中的组织单位: | Parameter name |
|---|---|
| displayColumnOrder | ```bash
curl -d @form.html "localhost/api/dataSets/BfMAe6Itzgt/form"
  -H "Content-Type:text/html" -u admin:district -X PUT
``` |
| 文件资料 { #webapi_documents }  | 对文件的引用可以与文档资源一起存储。 |
| 表格文件字段 | 字段名称 |

描述

名称

文件唯一名称

外部

标识文件位置的标志。外部文件为 TRUE,内部文件为 FALSE

网址

文件的位置。外部文件的 URL。内部文件的文件资源 ID(请参阅 [文件资源](metadata.md#webapi_file_resources))。

对文档端点的GET请求将返回所有文档:

    / api / documents

## 对文档端点的POST请求将创建一个新文档:

```bash
curl -X POST -d @document.json -H "Content-type: application/json"
  "http://dhis.domain/api/documents"
{
  "name": "dhis home",
  "external": true,
  "url": "https://www.dhis2.org"
}

带有附加文档 ID 的 GET 请求将返回信息 关于文件。对同一端点的 PUT 请求将更新 文档的字段:

/ api / documents / <documentId>

/data 附加到 GET 请求将返回实际文件内容 文件的:

/ api / documents / <documentId> / data
CSV元数据导入 { #webapi_csv_metadata_import } DHIS2支持以CSV格式导入元数据,例如数据元素,组织单位和验证规则。根据列顺序/列索引来标识各种元数据对象的属性(有关详细信息,请参见下文)。您可以省略不需要的对象属性/列,但是由于列顺序很重要,因此必须包括一个空列。换句话说,如果您要指定在列顺序中排在后面的属性/列,但不指定在列顺序中排在较早的位置的某些列,则可以为它们添加空白/空白列。
startDateendDate 参数允许获取链接的数据
到这些日期之间的任何时间段。这避免了定义所有
期间明确在
要求: 要上传CSV格式的元数据,您可以向元数据端点发出POST请求:
POST / api / metadata?classKey = CLASS-KEY 支持以下对象类型。 classKey 查询参数是强制性的,可以在下表中的每个对象类型旁边找到。
表格对象类型和关键字 对象类型
类键 资料元素
E7229 Use fornat HH:mm
DATA_ELEMENT_GROUP 类别选项
CATEGORY_OPTION 类别选项组
CATEGORY_OPTION_GROUP 组织单位
ORGANISATION_UNIT 组织单位组

ORGANISATION_UNIT_GROUP

验证规则

VALIDATION_RULE

选项集

OPTION_SET

翻译

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 类型 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 索引
2 用户标识 Program notification template OptionSetUid
3 zscore Program notification template 是的
4 稳定的标识符。最多 11 个字符。如果未指定,将由系统生成。 Program notification template 指标{ #webapi_csv_indicators } 稳定的标识符。正好 11 个字母数字字符,以字母开头。如果未指定,将由系统生成。
5 Parameter name Program notification template
6 简称 Program notification template 名称
7 如果未指定,将返回姓名的前 50 个字符。最多 50 个字符。唯一。 Program notification template 自由文本描述。
8 false | true Program notification template 最大 230 字符。 域名类型
9 Program notification template 数据元素的域类型,可以是聚合或跟踪。最多 16 个字符。 值类型
10 Program notification template 聚集类型
11 Program notification template 聚合类型,表示如何按不同维度聚合数据。最多 16 个字符。
12 类别组合 Program notification template 类别组合的 UID。如果未指定,将默认为默认类别组合。
13 网址 Program notification template 零具有重要意义
14 Program notification template 表示该数据元素是否存储零值。

选项集

用户标识

要用于数据的选项集的 UID。

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 类型 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 表格:组织单位 CSV 格式
2 用户标识 Program notification template 需要
3 zscore Program notification template 是的
4 姓名。最多 230 个字符。唯一。 Program notification template 用户标识
5 稳定的标识符。最多 11 个字符。如果未指定,将由系统生成。 Program notification template 指标{ #webapi_csv_indicators } 稳定代码。最多 50 个字符。
6 Parameter name Program notification template
7 上级组织单位的 UID。 Program notification template 50 名字的第一个字符
8 如果未指定,将返回姓名的前 50 个字符。最多 50 个字符。唯一。 Program notification template
9 async Program notification template
10 1970-01-01 Program notification template 关闭日期
11 组织单位的关闭日期,格式为 YYYY-MM-DD,如果当前开放,则跳过。 Program notification template
12 Text. Program notification template
13 NONE | MULTI_POLYGON | POLYGON | POINT | SYMBOL Program notification template 坐标
14 Program notification template 网址
15 ```
/ api / userLookup
``` Program notification template 联系人
16 Program notification template 地址

组织单位地址。最多 255 个字符。

电子邮件

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 类型 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 表格:组织单位 CSV 格式
2 用户标识 Program notification template 需要
3 zscore Program notification template 是的
4 Parameter name Program notification template
5 用户标识 Program notification template
6 Program notification template 描述
7 自由文本描述。 Program notification template 自由文本教学。
8 所需值 Program notification template
9 Retrieve the id property of the returned file resource. Program notification template 规则类型(忽略)
10 验证 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 操作员
11 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 左侧表达
12 期间类型 Program notification template 月刊 日刊
13 周刊 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 操作员
14 年刊 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 左侧表达
15 是的 Program notification template 月刊 是的

自由文本。

左侧缺失值策略

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 右侧表达 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 基于数据元素和选项组合 UID 的数学公式。
2 右侧表达描述 Program notification template 右侧缺失值策略
3 Program notification template 是的
4 never_skip ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 选项集 { #webapi_csv_option_sets }
5 表:选项集 CSV 格式 Program notification template 需要
6 描述 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 是的

是的

姓名。最多 230 个字符。唯一。每个选项都应重复。

选项设置 UID

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 选项名称 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 基于数据元素和选项组合 UID 的数学公式。
2 选项 UID Program notification template 右侧缺失值策略
3 稳定的标识符。最多 11 个字符。如果未指定,将由系统生成。 Program notification template 是的
4 稳定代码。最多 50 个字符。 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
||csv
optionsetname,optionsetuid,optionsetcode,optionname,optionuid,optioncode
“颜色”,“颜色”,“蓝色”,“蓝色”
“颜色”,“颜色”,“绿色”,“绿色”
“颜色”,“颜色”,“黄色”,“黄色”
“性别”,“男”,“男”
“性别”,“女性”,“女性”
“性别”,“未知”,“未知”
“结果”,“高”,“高”
“结果”,“中”,“中”
“结果”,“低”,“低”
“ Impact”,“ cJ82jd8sd32”,“ IMPACT”,“ Great”,“ GREAT”
“影响”,“ cJ82jd8sd32”,“影响”,“中等”,“中等”
“影响”,“ cJ82jd8sd32”,“影响”,“不良”,“不良”
```
5 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 索引
6 Program notification template 值(默认为第一位)
7 描述 Program notification template 是的

姓名。最多 230 个字符。唯一。每个选项都应重复。

OptionGroupUid

稳定的标识符。最多 11 个字符。如果未指定,将由系统生成。每个选项都应重复。

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 简称。最多 50 个字符。唯一。每个选项都应重复。 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 基于数据元素和选项组合 UID 的数学公式。
2 稳定的标识符。最多 11 个字符。每个选项都应重复。 Program notification template 右侧缺失值策略
3 稳定的标识符。最多 11 个字符。 Program notification template 是的
4 稳定代码。最多 50 个字符。 Program notification template ```csv
optionGroupName,optionGroupUid,optionGroupCode,optionGroupShortName,optionSetUid,optionUid,optionCode
optionGroupA,groupA,xmRubJIhmaK,OptionA
optionGroupA,groupgroup,xmRubJIhmaK,OptionB
optionGroupB 、、 groupB,QYDAByFgTr1,OptionC
```
5 选项组集 { #option-group-set } Program notification template 索引
6 Program notification template 值(默认为第一位)

描述

选项组设置名称 是的

姓名。最多 230 个字符。唯一。每个选项都应重复。

OptionGroupSetUid

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 类型 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 索引
2 用户标识 Program notification template OptionSetUid
3 zscore Program notification template 是的
4 稳定的标识符。最多 11 个字符。如果未指定,将由系统生成。 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 指标{ #webapi_csv_indicators } 稳定的标识符。正好 11 个字母数字字符,以字母开头。如果未指定,将由系统生成。
5 最小最大数据元素 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 用户标识
6 值(默认为第一位) Program notification template 名称
5 指示符 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 用户标识
6 Program notification template 名称
6 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 索引
6 简称 Program notification template 50 名字的第一个字符
6 如果未指定,将返回姓名的前 50 个字符。最多 50 个字符。唯一。 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 指标表达。

分母描述

最大 230 字符。

分子

  • 是的

  • 指标表达。

  • 分子描述

最大 230 字符。

年化

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 用户标识 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 用户标识 指标类型的 UID。
2 用户标识 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 除了导入对象,您还可以选择只导入对象
对象和组之间的组成员关系。目前,该
支持以下组和对象对

需要

表格数据元素组、类别选项、类别选项组、组织单位组 CSV 格式

是的 Specific id schemes such as dataElementIdScheme or 检索和删除项目通知模板 姓名。最多 230 个字符。唯一。 Parameter name
1 类型 ```json
{
"name": "Case notification",
"notificationTrigger": "ENROLLMENT",
"subjectTemplate": "Case notification V{org_unit_name}",
"displaySubjectTemplate": "Case notification V{org_unit_name}",
"notifyUsersInHierarchyOnly": false,
"sendRepeatable": false,
"notificationRecipient": "ORGANISATION_UNIT_CONTACT",
"notifyParentOrganisationUnitOnly": false,
"displayMessageTemplate": "Case notification A{h5FuguPFF2j}",
"messageTemplate": "Case notification A{h5FuguPFF2j}",
"deliveryChannels": [
"EMAIL"
]
}
``` 表格:组织单位 CSV 格式
2 用户标识 Program notification template 是的
3 zscore Program notification template 是的
4 稳定的标识符。最多 11 个字符。如果未指定,将由系统生成。 Program notification template 要添加到集合中的对象的 UID

表格数据元素组、类别选项、组织单位组 CSV 格式

索引

需要

值(默认为第一位)

描述

名称

是的

姓名。最多 230 个字符。唯一。

用户标识

用户标识

稳定标识符。最多 11 个字符。如果未指定,将由系统生成。

稳定代码。最多 50 个字符。

简称

简称。最多 50 个字符。

类别选项的示例如下所示:

名称,uid,代码,简称
“男”,“男”
“女性”,“女性”

删除的对象 { #webapi_deleted_objects }

GET /api/deletedObjects.json?klass=DataElement

/ api / deletedObjects

每当删除元数据类型的对象时,都会保留日志 uid、代码、类型和删除时间。这个 API 是 在/api/deletedObjects 字段过滤和对象过滤中可用 与其他元数据资源类似。

获取类型为数据元素的已删除对象:

GET /api/deletedObjects.json?klass=DataElement

获取在 2015 年删除的指标类型的已删除对象和 向前:

GET /api/deletedObjects.json?klass=Indicator&deletedAt=2015-01-01

收藏夹 { #webapi_favorites }

某些类型的元数据对象可以标记为收藏夹

当前登录的用户。这目前适用于仪表板。

/ api / dashboards / <uid> /收藏

要使仪表板成为收藏夹,您可以发出 POST 请求(无内容 type required) 到这样的 URL:

/ api /仪表板/ iMnYyBfSxmM /收藏

要将仪表板删除为收藏夹,您可以发出 DELETE 请求 使用与上面相同的 URL。

收藏夹状态将显示为布尔值 收藏夹 字段 元数据响应中的对象(例如仪表板)。 订阅内容 { #webapi_subscription } 已登录的用户可以订阅某些类型的对象。目前 可订阅的对象类型包括 EventChart、EventReport.Map、Visualization 和 EventVisualization、 地图、可视化和事件可视化类型的对象。

事件图表(EventChart)和事件报告(EventReport)对象已被弃用。请使用 EventVisualization 代替。

要获取对象的订阅者(返回用户 ID 数组),您 可以发出 GET 请求:

/ api / <object-type> / <object-id> /订阅者

请参见以下示例:

/api/visualizations/DkPKc1EUmC2/subscribers

检查当前用户是否订阅了一个对象(返回一个 boolean) 您可以执行 GET 调用:

/ api / <object-type> / <object-id> /已订阅

请参见以下示例:

/api/visualizations/DkPKc1EUmC2/subscribed

要订阅/取消订阅对象,请执行 POST/DELETE 请求(不需要内容类型):

/ api / / / subscriber

  • 文件资源 { #webapi_file_resources } 文件资源*是用于表示和存储二进制内容的对象。 *FileResource 对象本身包含文件元数据(名称、 内容类型、大小等)以及允许检索 来自数据库外部文件存储的内容。 FileResource 对象 与其他数据库一样存储在数据库中,但内容(文件)是 存储在别处并可使用包含的引用检索 (存储密钥)。 / api / fileResources 文件资源的内容不能直接访问,但可以 从其他对象(如数据值)引用来存储二进制 几乎无限大小的内容。 创建不需要相应数据值的文件资源、 向端点 /api/fileResources 发送多部分上传: bash curl "https://server/api/fileResources" -X POST -F "file=@/path/to/file/name-of-file.png"
      - 文件资源的` uid `可以在创建时提供,例如:
        ```bash
    curl "https://server/api/fileResources?uid=0123456789x" -X POST
      -F "file=@/path/to/file/name-of-file.png"
    
    创建文件资源和引用文件的数据值、 在 DHIS 2.36 或更高版本中,POST 到 `/api/dataValues/file` 端点:
    bash curl "https://server/api/dataValues/file?de=xPTAT98T2Jd &pe=201301&ou=DiszpKrYNg8&co=Prlt0C1RF0s" -X POST -F "file=@/path/to/file/name-of-file.png"
        For the `api/fileResources` endpoint, the only form parameter required is
    *file*, which is the file to upload. For the `api/dataValues/file`
    endpoint, the parameters required are the same as for a post to
    `api/dataValues`, with the addition of *file*.
        文件名和内容类型也应包含在请求中,但
    如果没有提供,将用默认值代替。
    
      - 成功创建文件资源后,返回的数据将包含
    一个 `response` 字段,它又包含这样的 `fileResource`:
        ```json
    {
      "httpStatus": "Accepted",
      "httpStatusCode": 202,
      "status": "OK",
      "response": {
        "responseType": "FileResource",
        "fileResource": {
          "name": "name-of-file.png",
          "created": "2015-10-16T16:34:20.654+0000",
          "lastUpdated": "2015-10-16T16:34:20.667+0000",
          "externalAccess": false,
          "publicAccess": "--------",
          "user": { ... },
          "displayName": "name-of-file.png",
          "contentType": "image/png",
          "contentLength": 512571,
          "contentMd5": "4e1fc1c3f999e5aa3228d531e4adde58",
          "storageStatus": "PENDING",
          "id": "xm4JwRwke0i"
        }
      }
    }
    

注意响应是*202 Accepted*,表示返回的

资源已提交后台处理(持续到 在这种情况下是外部文件存储)。另外,请注意 storageStatus 字段 指示内容是否已存储。在这 点,到外部存储的持久化还没有完成(它是 可能会上传到某个地方的基于云的商店) PENDING 状态。

即使内容尚未完全存储,文件资源 现在可以使用,例如作为数据值中的引用内容(参见 使用文件数据值)。如果我们需要检查 更新的 storageStatus 或以其他方式检索 文件,可以查询fileResources端点。

curl "https://server/api/fileResources/xm4JwRwke0i" -H "Accept: application/json"

| 此请求将返回 FileResource 对象,如 上面例子的反应。 | 此请求将返回 FileResource 对象,如 上面例子的反应。 | | ------------------------------------- | ---- | | 文件资源*必须*从另一个对象引用(分配) | 以便长期坚持。一个文件资源是 | | 创建但未被其他对象(例如数据值)引用 | 被认为处于*分期*。此中的任何文件资源 | | 状态并且超过*两个小时*将被标记为删除 | 并将最终从系统中清除。 | | 文件资源初始创建返回的ID不是 | 可从任何其他位置检索,除非文件资源具有 | | 已被引用(其中 ID 将被存储为引用), | 所以丢失它需要重复 POST 请求和一个新的 | | 要创建的对象。 孤立*文件资源将被清理 | 自动起来。 | | 文件资源对象是*不可变的,意味着修改不是 | 允许并需要创建一个全新的资源。 | | 文件资源阻止列表 { #file-resource-blocklist } | |

出于安全原因,某些类型的文件被阻止上传。

文件扩展名 以下内容类型被阻止。 以下内容类型被阻止。
文字/ HTML 应用项目/ x-ms-dos-可执行 文字/ css
application / vnd.microsoft.portable-executable 文字/ javascript application / vnd.apple.installer + xml
字体/ otf application / vnd.mozilla.xul + xml 应用项目/ x-shockwave-flash
应用项目/ x-httpd-php application / vnd.debian.binary-package 应用项目/ x-sh
应用/ x-rpm 应用项目/ x-csh 应用项目/ Java归档
以下文件扩展名被阻止。 文件扩展名 文件扩展名
文件扩展名 网页

黛比

ul

  • htm 转数

名称

类型 检索和删除项目通知模板 Parameter name
js subjectTemplate SH

微信

可执行项目

/api/metadata/version/create:这个端点将创建元数据

OTF

响应:

蝙蝠

瑞士法郎

/api/metadata/version/create:这个端点将创建元数据

元数据版本控制 { #webapi_metadata_versioning }

响应:

/api/metadata/version:这个端点将返回当前的元数据

  • 调用它的系统的版本。 表格查询参数

名称

类型 检索和删除项目通知模板 Parameter name
subjectTemplate 获取元数据版本示例 { #webapi_metadata_versioning_examples }

**示例:**获取此系统的当前元数据版本

请求:

/api/metadata/version/create:这个端点将创建元数据

响应:

响应:

**示例:**获取名称为“ Version_2”的版本的详细信息

请求:

/api/metadata/version/create:这个端点将创建元数据

响应:

响应:

/api/metadata/version/history:这个端点将返回所有

  • 调用它的系统的元数据版本。 表格查询参数

名称

类型 检索和删除项目通知模板 Parameter name
枚举(参见元数据和渲染类型表中的列表) Tracked Entity UIDS 获取所有元数据版本的列表 { #webapi_get_list_of_metadata_versions }

**示例:**获取此系统中所有版本的列表

  • 请求: ``` / api /元数据/版本/历史记录
        响应:
    
      - ```json
    {
      "metadataversions": [{
        "name": "Version_1",
        "type": "BEST_EFFORT",
        "created": "2016-06-30T05:54:41.139+0000",
        "id": "SjnhUp6r4hG",
        "hashCode": "fd1398ff7ec9fcfd5b59d523c8680798"
      }, {
        "name": "Version_2",
        "type": "BEST_EFFORT",
        "created": "2016-06-30T05:59:33.238+0000",
        "id": "SaNyhusVxBG",
        "hashCode": "8050fb1a604e29d5566675c86d02d10b"
      }, {
        "name": "Version_3",
        "type": "BEST_EFFORT",
        "created": "2016-06-30T06:01:23.680+0000",
        "id": "FVkGzSjAAYg",
        "hashCode": "70b779ea448b0da23d8ae0bd59af6333"
      }]
    }
    
    **示例:**获取此系统在“ Version_2”之后创建的所有版本的列表 请求:
/ api / metadata / version / history?baseline = Version_2

响应:

{
  "metadataversions": [{
    "name": "Version_3",
    "type": "BEST_EFFORT",
    "created": "2016-06-30T06:01:23.680+0000",
    "id": "FVkGzSjAAYg",
    "hashCode": "70b779ea448b0da23d8ae0bd59af6333"
  }, {
    "name": "Version_4",
    "type": "BEST_EFFORT",
    "created": "2016-06-30T06:01:28.684+0000",
    "id": "Ayz2AEMB6ry",
    "hashCode": "848bf6edbaf4faeb7d1a1169445357b0"
  }]
 }

/api/metadata/version/create:这个端点将创建元数据

version 参数中指定的版本类型。

响应:

名称

  • 需要 描述 类型

  • 真正 描述 用户可以选择需要创建的元数据类型。 元数据版本类型决定了进口商应该如何对待给定的 版本。导入元数据时将使用此类型。有 两种类型的元数据。

BEST_EFFORT:这种类型表明丢失的引用可以

类型 检索和删除项目通知模板 Parameter name
js Tracked Entity UIDS > 注意
>
> 建议有一个 ATOMIC 类型的版本,以确保所有
> 系统(中央和本地)具有相同的元数据。任何遗漏
> 引用在验证阶段本身被捕获。请参阅
> 进口商详细信息的完整解释。

创建元数据版本

示例: 创建类型为 BEST_EFFORT 的元数据版本

/api/metadata/version/create:这个端点将创建元数据

curl -X POST -u admin:district "https://play.dhis2.org/dev/api/metadata/version/create?type=BEST_EFFORT"

响应:

{
  "name": "Version_1",
  "created": "2016-06-30T05:54:41.139+0000",
  "lastUpdated": "2016-06-30T05:54:41.333+0000",
  "externalAccess": false,
  "publicAccess": "--------",
  "user": {
    "name": "John Traore",
    "created": "2013-04-18T17:15:08.407+0000",
    "lastUpdated": "2016-04-06T00:06:06.571+0000",
    "externalAccess": false,
    "displayName": "John Traore",
    "id": "xE7jOejl9FI"
  },
  "displayName": "Version_1",
  "type": "BEST_EFFORT",
  "hashCode": "fd1398ff7ec9fcfd5b59d523c8680798",
  "id": "SjnhUp6r4hG"
}

/api/metadata/version/{versionName}/data:这个端点将下载

特定于作为路径传递的版本名称的实际元数据

  • 范围。 /api/metadata/version/{versionName}/data.gz:这个端点将下载 特定于作为路径传递的版本名称的实际元数据 压缩格式(gzipped)的参数。

选项值

类型 检索和删除项目通知模板 Parameter name
js Tracked Entity UIDS 格式为 "Version_<id>"的路径参数,以便 API 下载特定版本
  • 下载版本元数据 { #webapi_download_version_metadata } **示例:**获取“版本5”的实际元数据 请求: ``bash curl -u admin:district "https://play.dhis2.org/dev/api/metadata/version/Version_5/data"

        响应:
    
      - ```json
    {
      "date": "2016-06-30T06:10:23.120+0000",
      "dataElements": [
        {
          "code": "ANC 5th Visit",
          "created": "2016-06-30T06:10:09.870+0000",
          "lastUpdated": "2016-06-30T06:10:09.870+0000",
          "name": "ANC 5th Visit",
          "id": "sCuZKDsix7Y",
          "shortName": "ANC 5th Visit ",
          "aggregationType": "SUM",
          "domainType": "AGGREGATE",
          "zeroIsSignificant": false,
          "valueType": "NUMBER",
          "categoryCombo": {
            "id": "p0KPaWEg3cf"
          },
          "user": {
            "id": "xE7jOejl9FI"
          }
        }
      ]
    }
    
    元数据同步{ #webapi_metadata_synchronization } 本节介绍了可用的元数据同步 API 2.24 开始/api/metadata/sync`:此端点执行元数据同步 通过下载和在查询参数中传递的版本名称 从远程服务器导入指定的版本,如定义 设置应用项目。

  • 表格查询参数 名称 需要 描述 版本名称 真正

versionName 查询参数的形式为 "Version_<id>" 。api 会从远程服务器下载该版本,并将其导入本地系统。

使用此 API 时应格外小心。请注意,有

/api/metadata/version/create:这个端点将创建元数据

利用“数据管理”中的元数据同步任务

应用项目。详见用户手册第 22 章 22.17 节

关于元数据同步任务。

此同步 API 也可用于同步元数据

从元数据同步调度项目失败的版本。由于

它依赖于给定的元数据版本号,应该注意

为调用 this 的顺序而采用。例如。如果这个api是

用于从中央实例同步一些更高版本,然后

同步可能会失败,因为元数据依赖项不存在于

本地实例。

假设本地实例在 Version_12 并且如果使用这个端点

Version_12Version_15 之间的版本。你需要手动

仅使用这些端点同步丢失的版本。

同步元数据版本 { #webapi_metadata_synchronization_version }

**示例:**将Version_6从中央系统同步到该系统

请求:

```bash

curl -u admin:district "https://play.dhis2.org/dev/api/metadata/sync?versionName=Version_6"

元数据存储库 { #webapi_metadata_repository } 

DHIS2 提供了一个包含元数据包的元数据存储库
各种内容。元数据包是符合 DHIS2 的 JSON 文档
它描述了一组元数据对象。

### 要检索可用元数据包的索引,您可以发出
对 *metadataRepo* 资源的 GET 请求:

    GET /api/synchronization/metadataRepo

元数据包条目包含有关包的信息和
相关包的 URL。索引可能如下所示:

```json
{
  "packages": [
    {
      "id": "sierre-leone-demo",
      "name": "Sierra Leone demo",
      "description": "Sierra Leone demo database",
      "version": "0.1",
      "href": "https://dhis2.org/metadata-repo/221/sierra-leone-demo/metadata.json"
    },
    {
      "id": "trainingland-org-units",
      "name": "Trainingland organisation units",
      "description": "Trainingland organisation units with four levels",
      "version": "0.1",
      "href": "https://dhis2.org/metadata-repo/221/trainingland-org-units/metadata.json"
    }
  ]
}
  • 客户端可以通过 URL 安装元数据包 带有元数据包的内容类型 text/plain 的 POST 请求 URL 作为 metadataPull 资源的有效负载:
  • POST / api / synchronization / metadataPull
  • curl命令示例如下所示:
curl "localhost:8080/api/synchronization/metadataPull" -X POST
  -d "https://dhis2.org/metadata-repo/221/trainingland-org-units/metadata.json"
  -H "Content-Type:text/plain" -u admin:district

提供的 URL 将根据 dhis.conf 文件中的配置属性 metadata.sync.remote_servers_allowed 进行检查。 如果基本 URL 不在允许的配置服务器之列,则不允许执行操作。请看下面的失败示例。
配置集为 metadata.sync.remote_servers_allowed=https://server1.org/,https://server2.org/ 的一些示例 - 提供 https://server1.org/path/to/resource -> 这将被接受 - 提供 https://server2.org/resource/path -> 这将被接受 - 提供 https://oldserver.org/resource/path -> 这将被拒绝 JSON 格式的故障响应示例。

 {
  "httpStatus": "Conflict",
  "httpStatusCode": 409,
  "status": "ERROR",
  "message": "Provided URL is not in the remote servers allowed list",
  "errorCode": "E1004"
}

参考用户创建的{ #reference-to-created-by-user } Each object created in DHIS2 will have a property named user which is linked to User who created the object.

From version 2.36 we have changed the name of this property to createdBy to avoid confusion.

不过,为了保持向后兼容性,传统的 user 属性仍包含在有效载荷中,并像以前一样正常工作。

{
  "createdBy": {
      "displayName": "John Kamara",
      "name": "John Kamara",
      "id": "N3PZBUlN8vq",
      "username": "district"
  },
  "user": {
      "displayName": "John Kamara",
      "name": "John Kamara",
      "id": "N3PZBUlN8vq",
      "username": "district"
  }
}

元数据提案工作流程{ #webapi_metadata_proposal_workflow }

元数据提议工作流程端点可实现提议和接受元数据更改的工作流程。

/api/metadata/proposals

提议更改元数据{ #webapi_metadata_proposal_propose }

一个提案总是针对一个元数据对象,使用

POST /api/metadata/proposals

根据有效载荷的不同,该提案可以

添加一个新的元数据对象。

按 ID 更新现有元数据对象引用。

删除 ID 引用的现有元数据对象。

要提议添加新的元数据对象,请发送类似下面的 JSON 有效载荷:

```json

{ "type": "ADD", "target": "ORGANISATION_UNIT", "change": {"name":"My Unit", "shortName":"MyOU", "openingDate": "2020-01-01"} }

`change` 属性包含相同的 JSON 对象,可直接发布到相应的端点以创建对象。

要提议更新现有元数据对象,请发送一个 JSON 有效载荷,如下例所示:

```json
{
  "type": "UPDATE",
  "target": "ORGANISATION_UNIT",
  "targetId": "<id>",
  "change": [
    {"op": "replace", "path": "/name", "value": "New name"}
  ]
}

The targetId refers to the object by its ID which should be updated. The change property here contains a JSON patch payload. This is the same patch payload that could be posted to the corresponding endpoint to directly apply the update. 要提议删除现有对象,请发送一个有效载荷,如上一个示例:

```json

{ "type": "REMOVE", "target": "ORGANISATION_UNIT", "targetId": "" } `` ThetargetIdrefers to the object by its ID which should be removed. A free textcomment` can be added to any type of comment.

Only target type ORGANISATION_UNIT is supported currently.

接受元数据更改建议{ #webapi_metadata_proposal_accept }

要接受一个开放的提案,请在提案资源上使用POST

POST /api/metadata/proposals/<uid>

成功后,提案的状态变为接受状态。一旦被接受,提案就不能再被拒绝。

Should a proposal fail to apply it changes to status NEEDS_UPDATE. The reason field contains a summary of the failures when this information is available.

反对元数据变更提案{ #webapi_metadata_proposal_oppose }

如果提案不太正确并且需要调整,可以通过发送提案资源的PATCH来反对提案

PATCH /api/metadata/proposals/<uid>

可选地,可以在其中添加纯文本正文,以给出提案遭到反对的原因

反对的提案必须处于PROPOSED状态,并将更改为NEEDS_UPDATE状态。

| The manual merge is suitable when there are resolvable conflicts or when not all the data needs to be moved during the merge. For example, if an attribute has different values in both tracked entities , the user can specify whether to keep the original value or move over the duplicate's value. Since the manual merge involves the user explicitly requesting to move data, there are some additional checks: | Parameter name | | ----------- | -------------------------------------------------------------- | | Two mappings for the Referrals Age category. A program indicator can choose which mapping | 这种调整既可以不带正文,也可以使用 JSON 正文,其中包含一个对象,该对象包含更新后的 changetargetId 内容。 调整: | | 枚举(参见元数据和渲染类型表中的列表) | The JSON type of the change value depends on the proposal type analogous to when a proposal is initially made. | | 用户友好型消息,说明操作是否成功。 | 要拒绝打开的提案,请在提案资源上使用DELETE | | 将来源合并为指标(目标指标)的标识符 | 这最终将提案的状态更改为拒绝。不能对此提案进行进一步的更改。它作为事件的文档保存。 | | 元数据变更建议清单{ #webapi_metadata_proposal_list } | 所有提案均可列入清单: | | GET /api/metadata/proposals/ | 可以使用filter参数过滤结果列表。 例如,要只列出已接受的提案,请使用 | | GET /api/metadata/proposals?filter=status:eq:ACCEPTED | 同样,只显示公开提案的使用情况: | | GET /api/metadata/proposals?filter=status:eq:PROPOSED | 过滤器也可应用于除 change 以外的任何字段。支持的过滤器操作符是 Gist Metadata API 中描述的操作符。这也包括 Gist API 中描述的属性转换器。 | | 可用字段列表如下 | 领域 | | 描述 | 本我 | | 提案的唯一标识符 | 类型 | | ADD a new object, UPDATE an existing object, REMOVE an existing object | 地位 |

PROPOSED (open proposal), ACCEPTED (successful), NEEDS_UPDATE (accepting caused error or opposed), REJECTED

目标

type of metadata object to add/update/remove; currently only ORGANISATION_UNIT

targetId

更新或删除对象的 UID,未为添加定义

创建人

Potential duplicate status 创建
创建提案的日期时间 没有
接受或拒绝建议的用户 时间
提案转为接受或拒绝的决定性状态的日期时间 评论
为初步建议提供可选的纯文本注释 理由
可选的纯文本,在提案被反对或接受提案失败时出现的错误时给出 改变
JSON object for ADD proposal, JSON array for UPDATE proposal, nothing for REMOVE proposal order
单个变更建议可通过以下方式查看 GET /api/metadata/proposals/
参数 fields 可用来缩小显示对象所包含字段的范围。例如 GET /api/metadata/proposals/?fields=id,type,status,change
元数据 属性值 类型和验证{ #metadata-attribute-value-type-and-validations } 类型
验证 文本
没有 LONG_TEXT
没有
数值长度 = 1 并且是字母 PHONE_NUMBER
验证基于此 regex ^[0-9+\(\)#\.\s\/ext-]{6,50}$.最大长度为 50。
例如+4733987937, (+47) 3398 7937, (47) 3398 7937.123
电子邮件
一般电子邮件格式 abc@email.com BOOLEAN
true or false TRUE_ONLY
数字 日期
联系人 时间
Use format yyyy-MM-dd 日期
使用格式yyyy-MM-dd HH:mm:ssZyyyy-MM-dd'T'HH:mm:ss 时间
Use fornat HH:mm 数字
数值必须是数字,最大长度 = 250 时间
数值为数字,包含 0 和 1 之间的值 百分比
Text. 整数
值为整数 INTEGER_NEGATIVE
值为正整数 INTEGER_NEGATIVE
值为负整数 INTEGER_ZERO_OR_POSITIVE
数值为正整数或零整数 时间