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

分析工具

分析工具

要访问 DHIS2 中的分析汇总数据,您可以使用 *分析*资源。分析资源非常强大,因为它可以让您 查询和检索沿所有可用数据维度聚合的数据。 例如,您可以要求分析资源提供 一组数据元素、时间段和 组织单位。此外,您可以检索聚合数据 基于数据元素的任意数量维度的组合和 组织单位组集。

/api/analytics

请求查询参数

分析资源可让您指定一系列查询参数:

表格查询参数

查询参数 需要 描述 选项(默认为默认)
方面 是的 要检索的维度和维度项,每项重复。 任何尺寸
过滤 应用于查询的筛选器和筛选项,每个筛选器和筛选项重复。 任何尺寸
聚合类型 聚合过程中使用的聚合类型。 sum
衡量标准 数据/措施的过滤器。 eq
预聚合测量标准 数据/测量的筛选器,在进行汇总之前应用。 eq
开始日期 日期范围的起始日期。将作为筛选器使用。不能与周期维度或筛选器一起使用。 日期
结束日期 日期范围的结束日期。将作为筛选器使用。不能与周期维度或筛选器一起使用。 日期
skipMeta 排除响应中的元数据部分(提高性能)。
跳过数据 排除回复中的数据部分。
跳读 跳过数据值的四舍五入,即提供全精度。
层次结构 在元数据中包含组织单位祖先的名称和组织单位的层次路径。
忽略限制 忽略响应中最多 50 000 条记录的限制--谨慎使用。
表格布局 响应时使用普通数据源或表格布局。
隐藏空行 隐藏响应中的空行,适用于表格布局为 true 时。
隐藏空列 隐藏响应中的空列,适用于表格布局为 true 时。
显示层次 显示完整的组织单位层次路径和组织单位名称。
包括编号 在答复中包括计算数值所用的分子和分母。
includeMetadataDetails 在原始数据回复中包含元数据详情。
显示属性 显示元数据的属性。 姓名
输出标识主题 用于查询响应中元数据项的标识符方案。它可接受标识符、代码或属性。 uid
输出机构单位标识方案 查询响应中元数据项使用的标识符方案。该参数覆盖了专门用于机关单位的 "outputIdScheme"。它可接受标识符、代码或属性。 uuid
输出数据元素 IDScheme 查询响应中元数据项使用的标识符方案。该参数专门用于覆盖数据元素的 "outputIdScheme"。它可接受标识符、代码或属性。 uuid
inputIdScheme 查询请求中元数据项使用的标识符方案,可以是标识符、代码或属性。 uid
批准级别 包括至少已批准到给定批准级别的数据,指批准级别的标识符。 批准级别标识符
相对周期日期 作为相对时期基础的日期。 日期
用户机构单位 明确定义要使用的用户组织单位,覆盖与当前用户相关的组织单位,多个标识符可用分号分隔。 组织单位标识符。
用作表格布局列的尺寸。 任何维度(必须是查询维度)
行数 用作表格布局行的尺寸。 任何维度(必须是查询维度)
订单 根据值指定行的排序。 ASC
timeField 事件聚合所依据的时间字段。仅适用于事件数据项。可以是预定义选项,也可以是具有基于时间的值类型的属性或数据元素的 ID。 EVENT_DATE | ENROLLMENT_DATE | INCIDENT_DATE | DUE_DATE | COMPLETED_DATE | CREATED | LAST_UPDATED | <Attribute ID> | <Data element ID>
orgUnitField 事件汇总所依据的组织单位字段。仅适用于事件数据项。可以是具有组织单位值类型的属性或数据元素的 ID。默认选项为省略查询参数。 skipMeta
增强的条件 启用尺寸/筛选器的增强条件

dimension 查询参数定义了哪些维度应该是 包含在分析查询中。可以是任意数量的维度 指定的。每个维度都应该重复维度参数 包含在查询响应中。查询响应可能 包含指定的所有组合的聚合值 维度项。

filter 参数定义应将哪些维度用作 在分析查询中检索到的数据的过滤器。任意数量 可以指定过滤器。过滤器参数应该重复 要在查询中使用的每个过滤器。过滤器与维度的不同之处在于 过滤器维度不会成为查询响应的一部分 内容,并且响应中的聚合值将是 在过滤器尺寸上折叠。换句话说,数据在 响应将在过滤器维度上聚合,但过滤器 不会作为维度包含在实际响应中。作为 例如,查询按句点过滤的某些数据元素和 您可以使用以下 URL 的组织单位:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU&filter=pe:2014Q1;2014Q2
  &filter=ou:O6uvpzGd5pu;lc3eMKXaEfw

aggregationType 查询参数允许您定义哪个聚合 运算符应该用于查询。默认情况下,聚合 将使用为查询中包含的数据元素定义的运算符。 如果您的查询不包含任何数据元素但包含数据 元素组,第一个数据元素的聚合运算符 将使用第一组。组和数据元素的顺序是 不明确的。此查询参数允许您覆盖默认值和 指定特定的聚合运算符。例如,您可以设置 使用以下 URL 进行“计数”的聚合运算符:

/api/analytics?dimension=dx:fbfJHSPpUQD&dimension=pe:2014Q1&dimension=ou:O6uvpzGd5pu
  &aggregationType=COUNT

measureCriteria 查询参数可让您过滤掉数据范围 要返回的记录。您可以指示系统仅返回记录 其中聚合数据值等于、大于、大于或 等于、小于或小于或等于某些值。您可以指定任何 以下格式的标准数量,其中 criteriavalue 应替换为实际值:

/api/analytics?measureCriteria=criteria:value;criteria:value

例如,以下查询将仅返回以下记录 数据值大于或等于 6500 且小于 33000:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU&dimension=pe:2014
  &dimension=ou:O6uvpzGd5pu;lc3eMKXaEfw&measureCriteria=GE:6500;LT:33000

类似于 measureCriteriapreAggregationMeasureCriteria 查询 参数让你过滤掉数据,只有在聚合之前 执行。例如,以下查询仅聚合数据,其中 原始值在定义的标准内:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU&dimension=pe:2014
  &dimension=ou:O6uvpzGd5pu;lc3eMKXaEfw&preAggregationMeasureCriteria=GE:10;LT:100

startDateendDate 参数可用于指定自定义 要汇总的日期范围。指定日期范围时,您不能 将相对或固定期间指定为维度或过滤器。日期范围 将过滤分析响应。你可以这样使用它:

/api/analytics.json?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &dimension=ou:ImspTQPwCqd&startDate=2018-01-01&endDate=2018-06-01

为了让分析资源生成形状中的数据 一个现成的表格,你可以提供 tableLayout 参数 true 作为值。而不是生成一个普通的、规范化的数据源, 分析资源现在将生成表格布局中的数据。你 可以将 columnsrows 参数与维度标识符一起使用 用分号分隔作为值以指示使用哪些值 表格列和行。列和行维度必须存在 作为查询中的数据维度(不是过滤器)。这样的请求可以看 像这样:

/api/analytics.html?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU&dimension=pe:2014Q1;2014Q2
  &dimension=ou:O6uvpzGd5pu&tableLayout=true&columns=dx;ou&rows=pe

order 参数可用于分析资源生成 有序数据。数据将按升序(或降序)排序 值。以降序对值进行排序的示例请求 顺序是:

/api/analytics?dimension=dx:fbfJHSPpUQD&dimension=pe:LAST_12_MONTHS
  &dimension=ou:O6uvpzGd5pu&order=DESC

尺寸和项目

DHIS2 具有多维数据模型,具有多个固定和 动态数据维度。固定维度是数据元素, 期间(时间)和组织单位维度。您可以动态添加 通过类别、数据元素组集和组织的维度 单元组集。下表显示了可用的数据维度 在 DHIS2 中。每个数据维度都有一个对应的*维度 标识符*,每个维度可以有一组*维度项*:

表:维度和维度项目

尺寸 尺寸 ID 尺寸项目
数据元素、指标、数据集报告率指标、数据元素操作数、计划指标、计划数据元素、计划属性、验证规则 dx 数据元素、指标、数据集报告率指标、数据元素操作数、程序指标、程序属性标识符、关键字 DE_GROUP-<group-id>, IN_GROUP-<group-id>, 使用<dataelement-id>.<optioncombo-id> 表示数据元素操作数,<program-id>.<dataelement-id> 表示程序数据元素,<program-id>.<attribute-id> 表示程序属性,<validationrule-id> 表示验证结果。
周期(时间) 聚乙烯 ISO 期间和相对期间,请参阅 "日期和期间格式"。
组织单位层次结构 组织单位标识符,以及关键字 USER_ORGUNIT、USER_ORGUNIT_CHILDREN、USER_ORGUNIT_GRANDCHILDREN、LEVEL-<level> 和 OU_GROUP-<group-id>
类别选项组合 类别选项组合标识符(省略可获得所有项目)
属性选项组合 ao 类别选项组合标识符(省略可获得所有项目)
分类目录 <category id> 类别选项标识符(省略可获得所有项目)
数据元素组集 <group set id> 数据元素组标识符(省略可获得所有项目)
组织单位组套 <group set id> 组织单位组标识符(省略可获得所有项目)
类别选项组套 <group set id> 类别选项组标识符(省略可获得所有项目)

没有必要知道哪些对象用于 设计分析查询时的各种动态维度。你可以得到 通过访问 Web API 中的此 URL 获得动态维度的完整列表:

/api/dimensions

如果只想检索给定动态维度的维度项,可以使用下面的示例。 使用下面的示例。分页默认为禁用。可以通过在 URL 中添加 分页参数 paging=true 来启用。

/api/dimensions/J5jldMd8OHv/items?paging=true

Attribute option combinations

/api/33/dimensions/recommendations?fields=id&dimension=dx:fbfJHSPpUQD

在上面的示例中,客户端将收到所有被配置为 "数据维度 "并(通过数据集和类别组合)与数据元素 "fbfJHSPpUQD "相关联的*类别*。 此外,所有配置为 "数据维度 "的 "组织单位组集 "也将作为响应的一部分返回。

端点支持多个数据元素。如果希望发送多个数据元素,则应以;分隔。例如

/api/33/dimensions/recommendations?fields=id&dimension=dx:fbfJHSPpUQD;JuTpJ2Ywq5b

注意

该端点只返回当前登录用户可以读取的维度。它会检查当前用户是否可以读取相应推荐维度的数据或元数据。未授权的维度将从列表中删除。

分析资源的基本 URL 是/api/analytics。请求 您可以在其上使用查询字符串的特定维度和维度项目 以下格式,其中 dim-iddim-item 应替换为实际值:

/api/analytics?dimension=dim-id:dim-item;dim-item&dimension=dim-id:dim-item;dim-item

如上所示,维度标识符后跟一个冒号 而维度项之间用分号分隔。例如,一个 查询两个数据元素,两个期间和两个组织单位可以 使用以下 URL 完成:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &dimension=pe:2016Q1;2016Q2&dimension=ou:O6uvpzGd5pu;lc3eMKXaEfw

查询按类别选项组合细分的数据,而不是 您可以在查询中包含类别维度的数据元素总计 字符串,例如像这样:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &dimension=co&dimension=pe:201601&dimension=ou:O6uvpzGd5pu;lc3eMKXaEfw

Category option group sets

/api/analytics?dimension=dx:DE_GROUP-h9cuJOkOwY2
  &dimension=pe:201601&dimension=ou:O6uvpzGd5pu

选择数据集报告率时,语法包含数据 设置标识符后跟报告率指标:

/api/analytics?dimension=dx:BfMAe6Itzgt.REPORTING_RATE;BfMAe6Itzgt.ACTUAL_REPORTS
  &dimension=pe:201601&dimension=ou:O6uvpzGd5pu

/api/dimensions

/api/analytics.json?dimension=dx:eBAyeGv0exc.qrur9Dvnyt5;eBAyeGv0exc.GieVkTxp4HH
  &dimension=pe:LAST_12_MONTHS&filter=ou:ImspTQPwCqd

/api/dimensions/J5jldMd8OHv/items?paging=true

/api/analytics.json?dimension=dx:IpHINAT79UW.a3kGcGDCuk6;IpHINAT79UW.UXz7xuGCEhU
  &dimension=pe:LAST_4_QUARTERS&dimension=ou:ImspTQPwCqd

要查询可以使用的组织单位组集和数据元素 以下网址。请注意如何将组集标识符用作 维度标识符和作为维度项的组:

/api/analytics?dimension=Bpx0589u8y0:oRVt7g429ZO;MAs88nJc9nL
  &dimension=pe:2016&dimension=ou:ImspTQPwCqd

要查询数据元素和类别,您可以使用此 URL。使用 类别标识符作为维度标识符,类别选项作为 维度项目:

/api/analytics?dimension=dx:s46m5MS0hxu;fClA2Erf6IO&dimension=pe:2016
  &dimension=YNZyaJHiHYq:btOyqprQ9e8;GEqzEKCHoGA&filter=ou:ImspTQPwCqd

使用相关期间和组织单位进行查询 当前用户可以使用这样的 URL:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &dimension=pe:LAST_12_MONTHS&dimension=ou:USER_ORGUNIT

When selecting organisation units for a dimension you can select an entire level optionally constrained by any number of boundary organisation units with the LEVEL-<level> syntax. Boundary refers to a top node in a sub-hierarchy, meaning that all organisation units at the given level below the given boundary organisation unit in the hierarchy will be included in the response, and is provided as regular organisation unit dimension items. The level value can either be a numerical level or refer to the identifier of the organisation unit level entity. A simple query for all org units at level three:

/api/analytics?dimension=dx:fbfJHSPpUQD&dimension=pe:2016&dimension=ou:LEVEL-3

具有两个边界组织单位的三级和四级查询可以是 指定如下:

/api/analytics?dimension=dx:fbfJHSPpUQD&dimension=pe:2016
  &dimension=ou:LEVEL-3;LEVEL-4;O6uvpzGd5pu;lc3eMKXaEf

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &dimension=co&dimension=pe:201601&dimension=ou:O6uvpzGd5pu;lc3eMKXaEfw

/api/analytics?dimension=dx:fbfJHSPpUQD&dimension=pe:2016
  &dimension=ou:OU_GROUP-w0gFTTmsUcF;OU_GROUP-EYbopBOJWsW;O6uvpzGd5pu;lc3eMKXaEf

您可以将标识符方案用于元数据部分 具有 outputIdScheme 属性的分析响应,如下所示。你可以 使用 ID、代码和属性作为标识符方案:

/api/analytics?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &dimension=pe:2017Q1;2017Q2&dimension=ou:O6uvpzGd5pu&outputIdScheme=CODE

列出了使用分析资源时需要注意的一些事项 以下。

  • 数据元素、指标、数据集报告率、计划数据 要素和计划指标是共同数据维度的一部分, 标识为“dx”。这意味着您可以使用任何数据 元素、指标和数据集标识符以及“dx” 查询中的维度标识符。

  • 对于类别、数据元素组集和组织单元组 设置维度,如果没有,将在查询中使用所有维度项 维度项目被指定。

  • 对于期间维度,维度项为 ISO 期间 标识符和/或相对周期。请参阅部分 上面称为“日期和期间格式”的期间格式和 可用的相对时期。

  • 对于组织单位维度,您可以指定要处理的项目 组织单位或组织单位的子单位 与当前针对请求进行身份验证的用户相关联 使用键 USER_ORGUNITUSER_ORGUNIT_CHILDREN 作为项目, 分别。您还可以指定组织单位标识符 直接,或两者结合。

  • 对于组织单位维度,您可以指定组织 层次结构级别和用于请求的边界单元 格式LEVEL-<level>-<boundary-id>;举个例子 LEVEL-3-ImspTQPwCqd意味着低于给定的所有组织单位 层次结构中第 3 级的边界单元。

  • 对于组织单位维度,维度项是 组织单位及其子层次结构 - 数据将被聚合 对于指定组织单位下的所有组织单位 等级制度。

  • 您不能为类别选项指定维度项目 组合维度。相反,响应将包含项目 链接到数据值。

dx尺寸

dx 维度是一个特殊的维度,它可以包含所有的 以下数据类型。

表:数据 dx 维度类型

类型 语法 描述 数据源
指示符 <indicator-id> 指标标识符。 汇总数据
指示灯 IN_GROUP-<indicatorgroup-id> 关键词后跟一个指标组标识符。将在回复中包含该组中的所有指标。 汇总数据
数据元素 <dataelement-id> 数据元素标识符。 汇总数据
数据元素组 DE_GROUP-<dataelementgroup-id> 关键词后跟数据元素组标识符。将在回复中包含该组中的所有数据元素。 汇总数据
数据元素操作数 <dataelement-id><categoryoptcombo-id>.<attributeoptcombo-id> 数据元素标识符,后跟类别选项组合和属性选项组合标识符中的一个或两个。通配符"*"可用于表示任何选项组合值。属性选项组合标识符可以完全省略。 汇总数据
资料集 <dataset-id>.<reporting-rate-metric> 数据集标识符,后跟报告率指标。可以是 REPORTING_RATE REPORTING_RATE_ON_TIME
程序数据元素 <program-id>.<dataelement-id> 程序标识符,后跟数据元素标识符。读取指定程序内的事件。 给定程序中的事件
计划指标 <programindicator-id> 程序指示器标识符。从与程序标识符相关的程序中读取事件。 计划指标的计划事件
验证结果 <validationrule-id> 验证规则标识符。将包括违反验证规则的验证规则,要求生成并持久保存验证结果。 验证结果

Items from all of the various dx types can be combined in an analytics request. An example looks like this:

/api/analytics.json
  dimension=dx:Uvn6LCg7dVU;BfMAe6Itzgt.REPORTING_RATE;IpHINAT79UW.a3kGcGDCuk6
  &dimension=pe:LAST_12_MONTHS&filter=ou:ImspTQPwCqd

组语法也可以与任何其他项目一起使用。一个 示例如下所示:

/api/analytics.json
  dimension=dx:DE_GROUP-qfxEYY9xAl6;IN_GROUP-oehv9EO3vP7;BfMAe6Itzgt.REPORTING_RATE
  &dimension=pe:LAST_12_MONTHS&filter=ou:ImspTQPwCqd

数据元素操作数可以选择性地指定属性选项 组合并使用通配符,例如指定所有类别选项 组合值:

/api/analytics.json
  dimension=dx:Uvn6LCg7dVU.*.j8vBiBqGf6O;Uvn6LCg7dVU.Z4oQs46iTeR
  &dimension=pe:LAST_12_MONTHS&filter=ou:ImspTQPwCqd

Data set completeness registrations

回应格式

包含聚合数据的分析响应可以在 各种表现形式。像往常一样,您可以表示对某个项目感兴趣 通过将文件扩展名附加到 URL,通过 Accept HTTP 标头或通过 format 查询参数。这 默认格式为 JSON。可用的格式和内容类型是 下面列出。

  • json(应用程序/ json)

  • jsonp(应用程序/ javascript)

  • xml(应用程序/ xml)

  • csv(应用程序/ csv)

  • html(text / html)

  • html + css(text / html)

  • xls(application / vnd.ms-excel)

例如,要请求 XML 格式的分析响应,您可以 使用以下网址:

/api/analytics.xml?dimension=dx:fbfJHSPpUQD
  &dimension=pe:2016&dimension=ou:O6uvpzGd5pu;lc3eMKXaEfw

JSON响应如下所示:

{
  "headers": [
    {
      "name": "dx",
      "column": "Data",
      "meta": true,
      "type": "java.lang.String"
    },
    {
      "name": "pe",
      "column": "Period",
      "meta": true,
      "type": "java.lang.String"
    },
    {
      "name": "value",
      "column": "Value",
      "meta": false,
      "type": "java.lang.Double"
    }
  ],
  "height": 4,
  "metaData": {
    "pe": [
      "2016Q1",
      "2016Q2"
    ],
    "ou": [
      "ImspTQPwCqd"
    ],
    "names": {
      "2016Q1": "Jan to Mar 2016",
      "2016Q2": "Apr to Jun 2016",
      "FbKK4ofIv5R": "Measles Coverage <1 y",
      "ImspTQPwCqd": "Sierra Leone",
      "eTDtyyaSA7f": "Fully Immunized Coverage"
    }
  },
  "rows": [
    [
      "eTDtyyaSA7f",
      "2016Q2",
      "81.1"
    ],
    [
      "eTDtyyaSA7f",
      "2016Q1",
      "74.7"
    ],
    [
      "FbKK4ofIv5R",
      "2016Q2",
      "88.9"
    ],
    [
      "FbKK4ofIv5R",
      "2016Q1",
      "84.0"
    ]
  ],
  "width": 3
}

响应表示维度数据表。 headers 数组 概述了表中包含哪些列以及哪些列 列包含。 column 属性显示列维度 标识符,或者如果列包含度量,则为“值”一词。这 meta 属性为 true 如果列包含维度项或 false 如果列包含度量(聚合数据值)。这 name 属性类似于 column 属性,不同之处在于它显示 如果列包含度量,则为“值”。 type 属性 表示列值的 Java 类类型。

heightwidth 属性表示有多少数据列和 行分别包含在响应中。

metaData period 属性包含一个唯一的有序数组 响应中包含的时间段。 metaData ou 属性包含一个 响应中包含的组织单位标识符数组。 metaData names 属性包含标识符之间的映射 用于数据响应和它们代表的对象的名称。 客户端可以使用它来替换数据中的标识符 响应名称以提供更有意义的数据视图 桌子。

rows 数组包含维度数据表。它包含 具有维度项(对象或期间标识符)和一列的列 具有聚合数据值。上面的示例响应有一个 数据/指标列、期间列和值列。首先 列包含指标标识符,第二列包含 ISO 句点 标识符,第三个包含聚合数据值。

约束与验证

您可以提供给 分析资源。如果违反任何约束,API 将 返回一个 409 Conflict 响应和一个类似于下面的响应消息:

{
  "httpStatus": "Conflict",
  "httpStatusCode": 409,
  "status": "ERROR",
  "message": "Only a single indicator can be specified as filter",
  "errorCode": "E7108"
}

httpStatushttpStatusCode 字段表示 HTTP 状态和 根据 HTTP 规范的状态代码。 message 字段提供了一个 验证错误的人类可读描述。 errorCode 字段 提供一个机器可读的代码,客户端可以使用它来处理 验证错误。聚合分析的可能验证错误 API 如下表所述。

错误代码 信息
E7100 查询参数不能为空
E7101 必须至少指定一个尺寸
E7102 必须至少指定一个数据维项目或数据元素组集合维项目
E7103 尺寸不能同时指定为尺寸和过滤器
E7104 必须至少指定一个期间作为维度或过滤器,或者开始和日期
E7105 不能同时指定期间,开始日期和结束日期
E7106 开始日期不能晚于结束日期
E7107 无法为报告费率指定开始日期和结束日期
E7108 只能将一个指标指定为过滤器
E7109 只能将单个报告率指定为过滤器
E7110 类别选项组合不能指定为过滤器
E7111 尺寸不能多次指定
E7112 只能与类型的尺寸一起指定报告率
E7113 未指定数据元素时无法指定分配的类别
E7114 指定的类别只能与数据元素一起指定,不能与指标或报告率一起指定
E7115 数据元素必须具有允许聚合的值和聚合类型
E7116 指标表达式不能包含循环引用
E7117 当输出格式为DATA_VALUE_SET时,必须指定数据尺寸“ dx”
E7118 当输出格式为DATA_VALUE_SET时,必须指定期间尺寸“ pe”
E7119 当输出格式为DATA_VALUE_SET时,必须指定组织单位维度“ ou”
E7120 不允许用户查看组织单位
E7121 不允许用户读取对象的数据
E7122 数据批准级别不存在
E7123 当前用户受维度限制,但无权访问任何维度项目
E7124 维度存在于查询中,没有任何有效的维度选项
E7125 维度标识符未引用任何维度
E7126 列必须作为查询中的维存在
E7127 行必须作为查询中的维存在
E7128 查询结果集超出最大限制
E7129 程序已指定但不存在
E7130 已指定程序阶段,但不存在
E7131 查询失败,可能是因为查询超时

数据值设定格式

分析 dataValueSet 资源允许返回聚合 数据值集格式的数据。这种格式代表原始数据 值,而不是按照各种方式汇总的数据 方面。将聚合数据导出为常规数据值很有用 当目标系统包含数据时,用于系统之间的数据交换 与目标系统存储的内容相比具有更精细的粒度。

例如,可以在目标系统中指定一个指标来 汇总多个数据元素的数据并将此数据导入 目标系统中的单个数据元素。再举一个例子,一个 可以汇总在目标的组织单位级别 4 收集的数据 系统级别 2 并将该数据导入目标系统。

您可以从原始数据值集格式中检索数据 数据值集资源:

/api/analytics/dataValueSet

支持以下资源表示形式:

  • json(应用程序/ json)

  • xml(应用程序/ xml)

使用数据值集格式时,必须正好三个维度 指定为分析维度,每个维度至少有一个维度项目:

  • 资料(dx)

  • 周期(pe)

  • 组织单位(ou)

任何其他维度都将被忽略。过滤器将被应用 定期分析请求。请注意,任何数据维度类型都可以 指定,包括指示符、数据元素、数据元素操作数、 数据集和计划指标。

汇总特定指标数据的示例请求, 期间和组织单位并将其作为常规数据值返回 XML 看起来像这样:

api / analytics / dataValueSet.xml?dimension = dx:Uvn6LCg7dVU; OdiHJayrsKo
  &dimension = pe:LAST_4_QUARTERS&dimension = ou:lc3eMKXaEfw; PMa2VCrupOd

聚合数据元素操作数的数据并使用 CODE 的请求 因为输出标识符方案如下所示。当定义 输出标识符方案,响应的所有元数据对象部分都是 做作的:

api / analytics / dataValueSet.json?dimension = dx:fbfJHSPpUQD.pq2XI5kz2BY; fbfJHSPpUQD.PT59n8BQbqM
  &dimension = pe:LAST_12_MONTHS&dimension = ou:ImspTQPwCqd&outputIdScheme = CODE

使用基于属性的标识符方案进行导出时存在风险 产生重复的数据值。布尔查询参数 duplicatesOnly 可用于调试目的仅返回 重复数据值。此响应可用于清理 重复:

api / analytics / dataValueSet.xml?dimension = dx:Uvn6LCg7dVU; OdiHJayrsKo
  &dimension = pe:LAST_4_QUARTERS&dimension = ou:lc3eMKXaEfw&duplicatesOnly = true

原始数据格式

分析 rawData 资源允许返回存储在 未执行任何聚合的分析数据表。这 对于想要执行聚合和的客户很有用 自行过滤,而无需对数据进行非规范化 可用的数据维度本身。

/ api / analytics / rawData

支持以下资源表示形式:

  • json(应用程序/ json)

  • csv(应用程序/ csv)

此资源遵循常规分析资源的语法。仅有的 支持查询参数的子集。此外,一个 startDateendDate 参数可用。支持的 参数如下表所示。

表格查询参数

查询参数 要求/备注
方面 是的
开始日期 否 / 年-月-日
结束日期 否 / 年-月-日
skipMeta
跳过数据
层次结构
显示层次
显示属性
输出标识主题
输出机构单位标识方案
输出数据元素 IDScheme
inputIdScheme
用户机构单位

dimension 查询参数定义了哪些维度(表列) 应包含在响应中。它可以选择性地受到约束 与项目。 filter 查询参数定义了哪些项目和 维度(表格列)应用作响应的过滤器。

对于组织单位维度,响应将包含数据 与组织单位和该组织中的所有组织单位相关联 子层次结构(树中的孩子)。这与 常规分析资源,其中只有明确选择的 包括组织单位。

要检索具有特定数据元素、特定时间段的响应, 两个自定义维度的特定组织单位和所有数据 可以发出这样的请求:

/api/analytics/rawData.json?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU;Jtf34kNZhzP
  &dimension = J5jldMd8OHv&dimension = Bpx0589u8y0
  &dimension = pe:LAST_12_MONTHS
  &dimension = ou:O6uvpzGd5pu; fdc6uOvgoji

startDateendDate 参数允许获取链接的数据 到这些日期之间的任何时间段。这避免了定义所有 期间明确在 要求:

/api/analytics/rawData.json?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU;Jtf34kNZhzP
  &dimension = J5jldMd8OHv&dimension = Bpx0589u8y0
  &startDate = 2015-01-01&endDate = 2015-12-31
  &dimension = ou:O6uvpzGd5pu; fdc6uOvgoji

filter 参数可用于过滤响应,而无需 包括该维度作为响应的一部分,这次是在 CSV 中 格式:

/api/analytics/rawData.csv?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU;Jtf34kNZhzP
  &filter = J5jldMd8OHv:uYxK4wmcPqA; tDZVQ1WtwpA
  &startDate = 2015-01-01&endDate = 2015-12-31
  &dimension = ou:O6uvpzGd5pu

如果您想要人类可读的数据,outputIdScheme 参数很有用 响应,因为它可以像这样设置为 NAME

/api/analytics/rawData.csv?dimension=dx:fbfJHSPpUQD;cYeuwXTCPkU
  &filter = J5jldMd8OHv:uYxK4wmcPqA; tDZVQ1WtwpA
  &startDate = 2017-01-01&endDate = 2017-12-31
  &dimension = ou:O6uvpzGd5pu
  &outputIdScheme = NAME

来自 rawData 资源的响应看起来与 定期分析资源;不同之处在于响应包含 原始的、非聚合的数据,适合进一步聚合 第三方系统。

调试

在调试分析请求时,检查数据会很有用 聚合分析响应的价值来源。这 analytics/debug/sql 资源将提供一个 SQL 语句 返回数据值表的相关内容。你可以生产 通过执行内容类型为“text/html”的 GET 请求或 如下所示的“文本/纯文本”。维度和过滤器语法与 常规分析查询:

/ api / analytics / debug / sql?dimension = dx:fbfJHSPpUQD; cYeuwXTCPkU
  &filter = pe:2016Q1; 2016Q2&filter = ou:O6uvpzGd5pu

事件分析

事件分析 API 允许您访问聚合的事件数据和查询 *事件*在 DHIS2 中捕获。此资源可让您检索基于事件的 在程序和可选的程序阶段,并让您检索和 在任何事件维度上过滤事件。

/api/analytics/events

尺寸和项目

事件维度包括数据元素、属性、组织单位 和时期。聚合的事件分析资源将返回 聚合信息,例如计数或平均值。查询分析 资源将简单地返回匹配一组条件的事件,并且不会 不执行任何聚合。您可以在表单中指定维度项 来自选项集的选项和来自数据图例集的图例 与此相关的元素和属性。事件 尺寸如下表所示。

表格活动尺寸

尺寸 尺寸 ID 描述
资料元素 <id> 数据元素标识符
属性 <id> 属性标识符
句号 聚乙烯 ISO 期间和相对期间,请参阅 "日期和期间格式"。
组织单位 组织单位标识符和关键词 USER_ORGUNIT、USER_ORGUNIT_CHILDREN、USER_ORGUNIT_GRANDCHILDREN、LEVEL-<level> 和 OU_GROUP-<group-id>
组织单位组套 <org unit group set id> 组织单位组集合标识符
分类目录 <category id> 类别标识符(仅限程序属性类别)

请求查询参数

Analytics事件API可让您指定一系列查询参数。

表格事件查询和汇总分析的查询参数

查询参数 需要 描述 选项(默认为默认)
程序 是的 计划标识符。 任何程序标识符
阶段 计划阶段标识符。 任何程序阶段标识符
开始日期 是的 活动开始日期。 日期(yyyy-MM-dd 格式
结束日期 是的 活动结束日期。 日期(yyyy-MM-dd 格式
方面 是的 维度标识符包括数据元素、属性、程序指标、期间、组织单元和组织单元组集。参数可以重复任意次数。项目过滤器可以应用于维度的格式<item-id>:<operator>:<filter>。过滤器值不区分大小写。 操作符可以是 EQ
过滤 维度标识符包括数据元素、属性、期间、组织单位和组织单位组集。参数可以重复任意次数。项目过滤器可以应用于维度,格式为<item-id>:<operator>:<filter>。过滤器值不区分大小写。
层次结构 在元数据中包含组织单位祖先的名称和组织单位的层次路径。
事件状态 指定要包含的事件状态。 活动
程序状态 指定要包含的事件的注册状态。 活动
相对周期日期 字符串 日期标识符,例如:"2016-01-01"。覆盖相对时间段的开始日期
用作表格布局列的尺寸。 任何维度(必须是查询维度)
行数 用作表格布局行的尺寸。 任何维度(必须是查询维度)
timeField 事件汇总/查询中使用的时间字段。仅适用于事件数据项。可以是预定义选项,也可以是具有基于时间的值类型的属性或数据元素的 ID。对于"/analytics/events/"端点,默认 "timeField "为 EVENT_DATE。 event_date

表格:仅用于事件查询分析的查询参数

查询参数 需要 描述 选项
ouMode 选择组织单位的模式。默认值为 DESCENDANTS,指层次结构中的所有子单位。CHILDREN 指层次结构中的直接子单位;SELECTED 仅指选定的组织单位。更多详情[此处]。(https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-master/tracker.html#webapi_nti_ou_scope) 后裔、子女、选定
尺寸以升序排序,可参考事件日期、组织单位名称和代码以及任何项目标识符。
描述 以降序排序的维度,可参考事件日期、组织单位名称和代码以及任何项目标识符。
仅坐标 是否只返回有坐标的事件。
坐标回调 只要缺少组织单元几何图形,就会应用程序实例几何图形。
dataIdScheme 用于数据的 id 方案,更具体地说是用于有选项集或图例集的数据元素和属性的 id 方案,例如,在数据响应中返回选项名称而不是代码,或返回图例名称而不是图例 ID。 名称
标头 作为响应的一部分返回的标头的名称。 用逗号分隔的一个或多个标头名称
页码 页码。默认页码为 1。 数字正值
页面大小 页面大小。默认大小为每页 50 个项目。 数字零值或正值
事件日期 没有 (仅限事件'资源)事件日期'上的自定义周期(请参阅 "自定义日期周期 "部分) 参见 "日期和句号格式 "部分
注册日期 没有 注册日期 "上的自定义期限(请参阅 "自定义日期期限 "部分) 参见 "日期和句号格式 "部分
预定日期 没有 (仅限于 events 资源) scheduledDate 上的自定义期限(请参阅 "自定义日期期限 "部分) 参见 "日期和句号格式 "部分
事件日期 没有 事件日期 "上的自定义期限(请参阅 "自定义日期期限 "部分) 参见 "日期和句号格式 "部分
最后更新 没有 最后更新 "的自定义期限(请参阅 "自定义日期期限 "部分) 参见 "日期和句号格式 "部分

表格仅用于汇总事件分析的查询参数

查询参数 需要 描述 选项
价值 值维度标识符。可以是数据元素或属性,必须是数值类型。 数据元素或属性标识符
聚合类型 值维度的聚合类型。默认为平均值。 sum
显示层次 显示完整的组织单位层次路径和组织单位名称。
显示属性 显示元数据的属性。 姓名
排序顺序 按升序或降序对值列上的记录进行排序。 ASC
限额 要返回的最大记录数。不能大于 10 000。 数字正值
输出类型 指定分析数据的输出类型,可以是事件、注册人数或跟踪实体实例。最后两个选项仅适用于注册计划。 showHierarchy
collapseDataDimensions 在响应中将所有数据维度(数据元素和属性)合并为一个维度。
skipMeta 排除响应中的元数据部分(提高性能)。
跳过数据 排除回复中的数据部分。
跳读 跳过汇总数据值的四舍五入。
聚合数据 生成数据维度的汇总值(而不是维度项)。
orgUnitField 事件汇总所依据的组织单位字段。仅适用于事件数据项。可以是具有组织单位值类型的属性或数据元素的 ID。默认选项为省略查询参数。 skipMeta

表格仅用于群集事件分析的查询参数

查询参数 需要 描述 选项
集群大小 是的 集群的大小,以米为单位。 数字正值
coordinateField 地理空间事件分析所依据的字段。默认为事件。可设置为属性标识符和坐标值类型的数据元素。 EVENT
是的 以 "最小经度、最小纬度、最大经度、最大纬度 "为格式的事件边界框/区域。
包括群集点 包括每个群组的基本点信息,如果群组代表的点数非常多,则要小心。

事件查询分析

analytics/events/query 资源可让您查询捕获的 事件。此资源不执行任何聚合,而是让 您查询和过滤有关事件的信息。

/api/analytics/events/query

您可以指定任意数量的维度和任意数量的过滤器 询问。维度项标识符可以引用任何数据元素, 人员属性、人员标识符、固定和相对时间段以及 组织单位。维度可以选择有一个查询运算符和 一个过滤器。事件查询应采用所描述的格式 以下。

/api/analytics/events/query/<program-id>?startDate=yyyy-MM-dd&endDate=yyyy-MM-dd
  &dimension=ou:<ou-id>;<ou-id>&dimension=<item-id>&dimension=<item-id>:<operator> :<filter>

例如,要从“住院发病率和 2016 年 1 月至 10 月期间的死亡率”计划,其中“性别” 和“年龄”数据元素被包括在内并且“年龄”维度被过滤 在“18”上,您可以使用以下内容 询问:

/api/analytics/events/query/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
  &dimension=ou:O6uvpzGd5pu;fdc6uOvgoji&dimension=oZg33kd9taw&dimension=qrur9Dvnyt5:EQ:18

检索“Child”的“Birth”程序阶段的事件 2016 年 3 月至 12 月期间的“计划”计划,其中“重量” 数据元素,过滤大于 2000年:

/api/analytics/events/query/IpHINAT79UW?stage=A03MvHHogjR&startDate=2016-03-01
  &endDate=2016-12-31&dimension=ou:O6uvpzGd5pu&dimension=UXz7xuGCEhU:GT:2000

排序可以应用于查询事件的事件日期和 任何尺寸。按事件日期降序和升序排序 您可以使用的“年龄”数据元素维度 用:

/api/analytics/events/query/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
  &dimension=ou:O6uvpzGd5pu&dimension=qrur9Dvnyt5&desc=EVENTDATE&asc=qrur9Dvnyt5

分页可以通过指定页码和 页面大小参数。如果指定了页码但未指定页面大小, 将使用 50 的页面大小。如果指定了页面大小但页面 number 不是,将使用页码 1。获取第三页 页面大小为 20 的响应,您可以使用类似的查询 这:

/api/analytics/events/query/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
  &dimension=ou:O6uvpzGd5pu&dimension=qrur9Dvnyt5&page=3&pageSize=20

筛选

过滤器可以应用于数据元素,人员属性和人员标识符。过滤是通过以下格式的查询参数值完成的:

&dimension = <item-id>:<operator>:<filter-value>

例如,您可以过滤“ Weight”数据元素以获取大于2000且小于4000的值,如下所示:

&dimension = UXz7xuGCEhU:GT:2000&dimension = UXz7xuGCEhU:LT:4000

您可以使用以下方法过滤多个特定年龄的“年龄”数据元素 像这样的 IN 运算符:

&dimension = qrur9Dvnyt5:IN:18; 19; 20

您可以通过重复运算符和过滤器组件为给定项目指定多个过滤器,所有组件均用分号分隔:

&dimension = qrur9Dvnyt5:GT:5:LT:15

下面列出了可用的运算符。

表格筛选操作符

操作员 描述
EQ 等于
!EQ 不等于
IEQ 等于,忽略情况
!IEQ 不等于,忽略情况
GT 大于
通用电器 大于或等于
LT 小于
LE 小于或等于
NE 不等于
喜欢 喜欢(自由文本匹配)
喜欢 不喜欢(自由文本匹配)
喜欢 比如,忽略大小写(自由文本匹配)
我喜欢 不喜欢,忽略情况(自由文本匹配)
IN 等于用"; "分隔的多个值之一

时间字段过滤{ #time-field-filtering }

GE

&timeField=LAST_UPDATED
&timeField=SCHEDULED_DATE

强化条件{ #enhanced-conditions }

Less than

dimension=a:GT:20:LT:40&imension=b:GT:1:LT:5

转化为以下逻辑条件

a>20 和 a<40 and b>1 和 b<5

不过,在某些情况下,可能需要对条件进行更多控制,这可以通过将查询参数 enhancedConditions 设置为 true来启用。 这样,客户端就可以使用特殊的 _OR_ 分隔符,使用 OR 逻辑运算符连接条件。

例:

dimension=a:GT:20:LT:40_OR_b:GT:1:LT:5&dimension=c:EQ:test

转化为以下逻辑条件

(a>20,a<40) or (b>1,b<5)),c = "测试"

回应格式

默认的响应表示格式是 JSON。请求必须使用 HTTP GET 方法。支持以下响应格式。

  • json(应用程序/ json)

  • jsonp(应用程序/ javascript)

  • xls(application / vnd.ms-excel)

例如,要获得Excel格式的响应,可以在请求URL中使用文件扩展名,如下所示:

/api/analytics/events/query/eBAyeGv0exc.xls?startDate=2016-01-01&endDate=2016-10-31
  &dimension=ou:O6uvpzGd5pu&dimension=oZg33kd9taw&dimension=qrur9Dvnyt5

您可以将hierarchyMeta 查询参数设置为true,以便 在元部分中包括所有祖先组织单位的名称 响应:

/api/analytics/events/query/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
  &dimension=ou:YuQRtpLP10I&dimension=qrur9Dvnyt5:EQ:50&hierarchyMeta=true

默认响应JSON格式将类似于以下内容:

``json { "headers":[ { "name":"psi"、 "列":"事件"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "name":"ps"、 "列":"计划阶段"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "名称":"eventdate"、 "列":"事件日期"、 "类型":"java.lang.String":"java.lang.String"、 "hidden": false、 元": false }, { "名称":"storedby"、 "列":"存储方式"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"lastupdated"、 "列":"最后更新"、 "valueType":"DATE"、 "类型":"java.time.LocalDate"、 "hidden": false、 "meta": true }, { "名称":"createdbydisplayname"、 "列":"创建者(显示名)"、 "valueType"(值类型):"TEXT"(文本"TEXT"、 类型": "java.lang.String"java.lang.String"、 "hidden": false、 元": true }, { "名称":"lastupdatedbydisplayname"、 "列":"最后更新人(显示名)"、 "valueType":"TEXT"、 类型": "java.lang.String"java.lang.String"、 "hidden": false、 元": true }, { "名称":"坐标"、 "列":"坐标"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "name":"ouname"、 "列":"组织单位名称"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "name":"oucode"、 "列":"组织单位代码"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "name":"ou"、 "列":"组织单位"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "name":"oZg33kd9taw"、 "列":"性别"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false }, { "name":"qrur9Dvnyt5"、 "列":"年龄"、 "类型":"java.lang.String"、 "hidden": false、 "meta": false } ], "元数据":{ "名称":{ "qrur9Dvnyt5":"年龄": "eBAyeGv0exc":"住院病人发病率和死亡率"、 "ImspTQPwCqd":"塞拉利昂"、 "O6uvpzGd5pu":"塞拉利昂", "O6uvpzGd5pu":"博"、 "YuQRtpLP10I"巴德佳"、 "oZg33kd9taw":"性别" }, "ouHierarchy":{ "YuQRtpLP10I":"/ImspTQPwCqd/O6uvpzGd5pu" } }, "宽度":8, "height":4, "行":[ [ "yx9IDINf82o"、 "Zj7UnCAulEk"、 "2016-08-05", "系统"、 "2018-08-07", "[5.12, 1.23]", "Ngelehun"、 "OU_559"、 "YuQRtpLP10I"、 "女"、 "50" ], [ "IPNa7AsCyFt", "Zj7UnCAulEk", "2016-06-12", "系统"、 "2018-08-07", "[5.22, 1.43]", "Ngelehun"、 "OU_559"、 "YuQRtpLP10I"、 "女"、 "50" ], [ "ZY9JL9dkhD2", "Zj7UnCAulEk"、 "2016-06-15", "系统"、 "2018-08-07", "[5.42, 1.33]", "Ngelehun"、 "OU_559"、 "YuQRtpLP10I"、 "女"、 "50" ], [ "MYvh4WAUdWt", "Zj7UnCAulEk", "2016-06-16", "系统"、 "2018-08-07", "[5.32, 1.53]", "Ngelehun"、 "OU_559"、 "YuQRtpLP10I"、 "女"、 "50" ] ] }

响应的 *headers* 部分描述了查询的内容
结果。事件唯一标识符、节目阶段标识符、
事件日期、组织单位名称、组织单位代码和
组织单位标识符显示为前六个维度
响应并将始终存在。接下来是数据元素,
指定为的人员属性和人员标识符
请求中的维度,在本例中为“性别”和“年龄”数据
元素尺寸。标题部分包含的标识符
“名称”属性中的维度项和可读维度
“列”属性中的描述。

*metaData* 部分,*ou* 对象包含映射到表示层次结构的字符串的响应中存在的所有组织单位的标识符。此层次结构字符串从根开始列出组织单位的祖先(父)的标识符。 *names* 对象包含响应中映射到其名称的所有项目的标识符。

*rows* 部分包含查询产生的事件。每一行
正好代表一个事件。

为了让事件分析资源在
一个现成的表格的形状,你可以提供*行*和*列*
具有请求的维度标识符的参数以分号分隔
作为值来指示哪些用作表列和行。
事件不是生成一个普通的、规范化的数据源
分析资源现在将生成表格布局中的数据。这
列和行维度必须作为数据维度出现在
查询(不是过滤器)。这样的请求可能如下所示:

    /api/analytics.html+css?dimension=dx:cYeuwXTCPkU;fbfJHSPpUQD&dimension=pe:WEEKS_THIS_YEAR
      &filter=ou:ImspTQPwCqd&displayProperty=SHORTNAME&columns=dx&rows=pe

### 事件汇总分析 { #webapi_event_aggregate_analytics } 

`/analytics/events/aggregate` 资源可让您检索 *aggregated
DHIS2 中捕获的事件数量*。此资源可让您检索
基于程序和可选的程序阶段聚合数据,以及
允许您过滤任何事件维度。

    /api/analytics/events/aggregate

事件聚合资源不返回事件信息
本身,而不是与请求匹配的事件总数
询问。事件维度包括数据元素、人员属性、人员
标识符、期间和组织单位。聚合事件查询
应该是下面描述的格式。

    /api/analytics/events/aggregate/<program-id>?startDate=yyyy-MM-dd&endDate=yyyy-MM-dd
      &dimension=ou:<ou-id>;<ou-id>&dimension=<item-id>&dimension=<item-id>:<operator> :<filter>

例如,要从
1 月至 10 月期间的“住院发病率和死亡率”计划
2016 年,其中包含“性别”和“年龄”数据元素,“年龄”
维度项目在“18”上过滤,“性别”项目在过滤上
“女性”,您可以使用以下查询:

    /api/analytics/events/aggregate/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
      &dimension=ou:O6uvpzGd5pu&dimension=oZg33kd9taw:EQ:Female&dimension=qrur9Dvnyt5:GT:50

检索固定和相对时期的数据,而不是开始和结束
日期,在本例中为 2016 年 5 月和过去 12 个月,以及组织
与当前用户关联的单位,可以使用以下查询:

    /api/analytics/events/aggregate/eBAyeGv0exc?dimension=pe:201605;LAST_12_MONTHS
      &dimension=ou:USER_ORGUNIT;fdc6uOvgo7ji&dimension=oZg33kd9taw

为了将“女性”指定为数据的“性别”过滤器
响应,意思是“性别”不会是响应的一部分,但会
过滤其中的聚合数字,您可以使用以下语法:

    /api/analytics/events/aggregate/eBAyeGv0exc?dimension=pe:2016;
      &dimension=ou:O6uvpzGd5pu&filter=oZg33kd9taw:EQ:Female

要将“Bo”组织单位和期间“2016”指定为过滤器,
和“放电方式”和“性别”作为维度,其中“性别”是
在“男性”项目上过滤,您可以使用这样的查询:

    /api/analytics/events/aggregate/eBAyeGv0exc?filter=pe:2016&filter=ou:O6uvpzGd5pu
      &dimension=fWIAEtYVEGk&dimension=oZg33kd9taw:EQ:Male

要为_出院模式_创建“前 3 名报告”,您可以使用限制
和 sortOrder 查询参数类似:

    /api/analytics/events/aggregate/eBAyeGv0exc?filter=pe:2016&filter=ou:O6uvpzGd5pu
      &dimension=fWIAEtYVEGk&limit=3&sortOrder=DESC

要指定具有相应聚合类型的值维度,您
可以使用 value 和aggregationType 查询参数。指定一个
值维度将使分析引擎返回聚合值
对于响应中该维度的值,而不是计数
事件。

    /api/analytics/events/aggregate/eBAyeGv0exc.json?stage=Zj7UnCAulEk
      &dimension=ou:ImspTQPwCqd&dimension=pe:LAST_12_MONTHS&dimension=fWIAEtYVEGk
      &value=qrur9Dvnyt5&aggregationType=AVERAGE

基于特定数据元素或属性的事件分析聚合
对于值类型日期或日期时间,您可以使用 `timeField` 参数:

    /api/analytics/events/aggregate/IpHINAT79UW.json?dimension=ou:ImspTQPwCqd
      &dimension=pe:LAST_12_MONTHS&dimension=cejWyOfXge6&stage=A03MvHHogjR
      &timeField=ENROLLMENT_DATE

基于特定数据元素或属性的事件分析聚合
对于值类型的组织单元,您可以使用 `orgUnitField` 参数:

    /api/analytics/events/aggregate/eBAyeGv0exc.json?dimension=ou:ImspTQPwCqd
      &dimension=pe:THIS_YEAR&dimension=oZg33kd9taw&stage=Zj7UnCAulEk
      &orgUnitField=S33cRBsnXPo

    /api/analytics/events/aggregate

| orgUnitField | 描述 |
| --- | --- |
| <Attribute ID\> | 组织单位值类型属性的 ID |
| <Data element ID\> | 组织单位值类型数据元素的 ID |
| 注册 | 被跟踪实体实例注册(创建)的组织单位 |
| 注册 | 被跟踪实体实例参加计划的组织单位 |
| OWNER_AT_START | 报告期开始时被跟踪实体实例的所有组织单位 |
| OWNER_AT_END | 报告期末被跟踪实体实例的所有组织单位 |

#### 范围/图例集 { #ranges-legend-sets } 

对于聚合查询,您可以为数值指定范围/图例集
数据元素和属性维度。目的是将
数值范围内。举个例子,而不是生成数据
对于不同年份的“年龄”数据元素,您可以将
年龄组的信息。为了实现这一点,数据元素或
属性必须与图例集相关联。格式是
如下面所描述的:

    ?dimension = <item-id>-<legend-set-id>

一个示例如下所示:

    /api/analytics/events/aggregate/eBAyeGv0exc.json?stage=Zj7UnCAulEk
      &dimension=qrur9Dvnyt5-Yf6UHoPkdS6&dimension=ou:ImspTQPwCqd&dimension=pe:LAST_MONTH

#### 回应格式 { #response-formats } 

默认的响应表示格式是 JSON。请求必须是
使用 HTTP *GET* 方法。响应将类似于以下内容:

```json
{
  "headers": [
    {
      "name": "oZg33kd9taw",
      "column": "Gender",
      "type": "java.lang.String",
      "meta": false
    },
    {
      "name": "qrur9Dvnyt5",
      "column": "Age",
      "type": "java.lang.String",
      "meta": false
    },
    {
      "name": "pe",
      "column": "Period",
      "type": "java.lang.String",
      "meta": false
    },
    {
      "name": "ou",
      "column": "Organisation unit",
      "type": "java.lang.String",
      "meta": false
    },
    {
      "name": "value",
      "column": "Value",
      "type": "java.lang.String",
      "meta": false
    }
  ],
  "metaData": {
    "names": {
      "eBAyeGv0exc": "Inpatient morbidity and mortality"
    }
  },
  "width": 5,
  "height": 39,
  "rows": [
    [
      "Female",
      "95",
      "201605",
      "O6uvpzGd5pu",
      "2"
    ],
    [
      "Female",
      "63",
      "201605",
      "O6uvpzGd5pu",
      "2"
    ],
    [
      "Female",
      "67",
      "201605",
      "O6uvpzGd5pu",
      "1"
    ],
    [
      "Female",
      "71",
      "201605",
      "O6uvpzGd5pu",
      "1"
    ],
    [
      "Female",
      "75",
      "201605",
      "O6uvpzGd5pu",
      "14"
    ],
    [
      "Female",
      "73",
      "201605",
      "O6uvpzGd5pu",
      "5"
    ]
  ]
}

请注意,单个响应中返回的行的最大限制为 10 000。 如果查询产生超过最大限制,409 Conflict 状态代码 将被退回。

事件聚类分析

analytics/events/cluster 资源提供集群地理空间 事件数据。请求如下所示:

/api/analytics/events/cluster/eBAyeGv0exc?startDate=2016-01-01&endDate=2016-10-31
  &dimension=ou:LEVEL-2&clusterSize=100000
  &bbox=-13.2682125,7.3721619,-10.4261178,9.904012&includeClusterPoints=false

集群响应提供基础点的计数,中心 每个集群的点和范围。如果 includeClusterPoints 查询 参数设置为 true,以逗号分隔的字符串与标识符 包括基础事件。示例响应如下所示:

{
  "headers": [
    {
      "name": "count",
      "column": "Count",
      "type": "java.lang.Long",
      "meta": false
    },
    {
      "name": "center",
      "column": "Center",
      "type": "java.lang.String",
      "meta": false
    },
    {
      "name": "extent",
      "column": "Extent",
      "type": "java.lang.String",
      "meta": false
    },
    {
      "name": "points",
      "column": "Points",
      "type": "java.lang.String",
      "meta": false
    }
  ],
  "width": 3,
  "height": 4,
  "rows": [
    [
      "3",
      "POINT(-13.15818 8.47567)",
      "BOX(-13.26821 8.4St7215,-13.08711 8.47807)",
      ""
    ],
    [
      "9",
      "POINT(-13.11184 8.66424)",
      "BOX(-13.24982 8.51961,-13.05816 8.87696)",
      ""
    ],
    [
      "1",
      "POINT(-12.46144 7.50597)",
      "BOX(-12.46144 7.50597,-12.46144 7.50597)",
      ""
    ],
    [
      "7",
      "POINT(-12.47964 8.21533)",
      "BOX(-12.91769 7.66775,-12.21011 8.49713)",
      ""
    ]
  ]
}

事件计数和范围分析

analytics/events/count 资源适用于与几何相关的请求,用于检索事件计数和范围(边界框)。 请求,用于检索特定查询的事件计数和范围(边界框 的次数和范围(边界框)。查询语法等同于 events/query 资源。 资源。请求如下

/api/analytics/events/count/eBAyeGv0exc?startDate=2016-01-01
  &endDate=2016-10-31&dimension=ou:O6uvpzGd5pu

响应将以JSON格式提供计数和范围:

{
  extent: "BOX(-13.2682125910096 7.38679562779441,-10.4261178860988 9.90401290212795)",
  count: 59
}

约束与验证

您可以提供给 事件分析资源。如果违反任何约束,API 将 返回一个 409 Conflict 响应和一个类似于下面的响应消息:

{
  "httpStatus": "Conflict",
  "httpStatusCode": 409,
  "status": "ERROR",
  "message": "At least one organisation unit must be specified",
  "errorCode": "E7200"
}

描述了事件分析 API 的可能验证错误 在下表中。

错误代码 信息
E7200 必须至少指定一个组织单位
E7201 尺寸不能多次指定
E7202 不能多次指定查询项
E7203 值维也不能指定为项目或项目过滤器
E7204 指定聚合类型时,必须指定值维或聚合数据
E7205 必须指定开始和结束日期或至少一个期间
E7206 开始日期晚于结束日期
E7207 页码必须为正数
E7208 页面大小必须为零或正数
E7209 限制大于最大限制
E7210 时间字段无效
E7211 组织单位字段无效
E7212 群集大小必须为正数
E7213 Bbox无效,必须采用以下格式:'min-lng,min-lat,max-lng,max-lat'
E7214 当指定bbox或集群大小时,必须指定集群字段
E7215 查询项目不能同时指定图例集和选项集
E7216 在汇总查询中使用时,查询项必须是可汇总的
E7217 不允许用户查看事件分析数据
E7218 未启用空间数据库支持
E7219 数据元素必须是值类型坐标才能用作坐标字段
E7220 属性必须是坐标值类型,才能用作坐标域
E7221 座标栏位无效
E7222 查询项目或过滤器无效
E7223 值不引用数字元素或程序一部分的数据元素或属性
E7224 项目标识符未引用程序的任何数据元素,属性或指标部分
E7225 计划阶段对于注册分析查询中的数据元素维度是必需的
E7226 维度不是有效的查询项目
E7227 不支持关系实体类型
E7228 回退坐标字段无效
E7229 操作符不允许缺失值

入学分析

注册分析 API 允许您访问聚合事件数据并查询*注册及其在 DHIS2 中捕获的事件数据*。除了跟踪的实体属性之外,此资源还允许您根据程序阶段和数据元素检索程序的数据。在每个注册中查询特定程序阶段的事件数据时,每个程序阶段的数据元素值将作为来自 api 的响应中的一行返回。如果在可重复的程序阶段查询数据元素,则最新的数据元素值将用于 api 响应中的该数据元素。

尺寸和项目

注册维度包括数据元素,属性,组织单位和期间。查询分析资源将仅返回符合一组条件的注册,并且不执行任何汇总。

表:招生规模

尺寸 尺寸 ID 描述
计划阶段的数据要素 <program stage id>.<data element id> 在查询注册数据时,数据元素标识符必须包括计划阶段。 dimension=edqlbukwRfQ.vANAXwtLwcT
属性 <id> 属性标识符
句号 聚乙烯 ISO 期间和相对期间,请参阅 "日期和期间格式"。
组织单位 组织单位标识符和关键词 USER_ORGUNIT、USER_ORGUNIT_CHILDREN、USER_ORGUNIT_GRANDCHILDREN、LEVEL-<level> 和 OU_GROUP-<group-id>

可重复阶段{ #repeatable-stages }

数据元素标识符必须包括计划阶段。程序阶段可以重复。例如,维度 edqlbukwRfQ.vANAXwtLwcT 可指可重复的程序阶段。可通过索引参数(用 [ ]括起来)访问该阶段的数据元素。

表:可重复阶段的可能索引

尺寸 索引参数 数据元素值是指
edqlbukwRfQ.vANAXwtLwcT 不适用 最后执行日期
edqlbukwRfQ[0].vANAXwtLwcT 0 最后执行日期
dqlbukwRfQ[-2].vANAXwtLwcT -2 从最后执行日算起的第二年
dqlbukwRfQ[1].vANAXwtLwcT 1 首次执行日期
dqlbukwRfQ[3].vANAXwtLwcT 3 第三个执行日
edqlbukwRfQ[*].vANAXwtLwcT * 所有重复
edqlbukwRfQ[-1~3].vANAXwtLwcT -1, 3 从 -1 开始重复 3 次(最后执行日期后的第一次)
edqlbukwRfQ[05LAST_3_MONTHS ].vANAXwtLwcT 0, 5, last_3_months 从最后一次执行日期开始,到最近 3 个月内的第五次执行日期,重复 5 次
edqlbukwRfQ[-132021-01-01~2022-05-31].vANAXwtLwcT -1, 3, 2021-01-01,2022-05-31 在指定日期内以 -1 开始的 3 次重复(最后一次执行日期后的第一次)。

警告:对不可重复的程序阶段进行索引会导致参数验证错误。

注册查询分析

通过 analytics/enrollments/query 资源,您可以查询捕获的注册信息。该资源不执行任何聚合,而是让您查询和筛选注册信息。

/api/analytics/enrollments/query

您可以在查询中指定任意数量的维度和任意数量的过滤器。维项目标识符可以引用程序阶段,已跟踪实体属性,固定和相对期间以及组织单位中的任何数据元素。维度可以选择具有查询运算符和过滤器。注册查询应采用以下所述的格式。

/api/analytics/enrollments/query/<program-id>?startDate=yyyy-MM-dd&endDate=yyyy-MM-dd
  &dimension=ou:<ou-id>;<ou-id>&dimension=<item-id>&dimension=<item-id>:<operator> :<filter>

例如,要从2019年1月起从“产前护理”计划中检索入学申请,该计划从属性中提取“名字”,则在第一个计划阶段包括“慢性病”和“吸烟”数据元素,并且来自以下程序阶段的“血红蛋白值”,并且仅包括具有“疯子病”的女性,您可以使用以下查询:

/api/analytics/enrollments/query/WSGAb5XwJ3Y.json?dimension=ou:ImspTQPwCqd
  &dimension=w75KJ2mc4zz&dimension=WZbXY0S00lP.de0FEHSIoxh:eq:1&dimension=w75KJ2mc4zz
  &dimension=WZbXY0S00lP.sWoqcoByYmD&dimension=edqlbukwRfQ.vANAXwtLwcT
  &startDate=2019-01-01&endDate=2019-01-31

要从上个月(相对于执行查询的时间点)的“产前护理”程序中检索入学登记,其中“慢性病”和“吸烟”数据元素包含在第一程序阶段,而“后续计划阶段的“血红蛋白价值”,仅包括吸烟的血红蛋白少于20岁的女性:

/api/analytics/enrollments/query/WSGAb5XwJ3Y.json?dimension=ou:ImspTQPwCqd
  &dimension=WZbXY0S00lP.de0FEHSIoxh&dimension=w75KJ2mc4zz
  &dimension=WZbXY0S00lP.sWoqcoByYmD:eq:1&dimension=edqlbukwRfQ.vANAXwtLwcT:lt:20
  &dimension=pe:LAST_MONTH

可以将排序应用于注册的查询和注册的事件日期:

/api/analytics/enrollments/query/WSGAb5XwJ3Y.xls?dimension=ou:ImspTQPwCqd
  &columns=w75KJ2mc4zz&dimension=WZbXY0S00lP.sWoqcoByYmD&dimension=pe:LAST_MONTH
  &stage=WZbXY0S00lP&pageSize=10&page=1&asc=ENROLLMENTDATE&ouMode=DESCENDANTS

通过指定页码和页面大小参数,可以将分页应用于查询。如果指定了页码,但未指定页码,则将使用50页码。如果指定了页面大小,但未指定页面号,则将使用页面号1。要获得页面大小为10的响应的第二页,可以使用如下查询:

/api/analytics/enrollments/query/WSGAb5XwJ3Y.json?dimension=ou:ImspTQPwCqd
  &dimension=WZbXY0S00lP.de0FEHSIoxh&dimension=w75KJ2mc4zz&dimension=pe:LAST_MONTH
  &dimension=WZbXY0S00lP.sWoqcoByYmD&pageSize=10&page=2

筛选

过滤器可以应用于数据元素,人员属性和人员标识符。过滤是通过以下格式的查询参数值完成的:

&dimension = <item-id>:<operator>:<filter-value>

例如,您可以过滤“ Weight”数据元素以获取大于2000且小于4000的值,如下所示:

&dimension = WZbXY0S00lP.UXz7xuGCEhU:GT:2000&dimension = WZbXY0S00lP.UXz7xuGCEhU:LT:4000

您可以使用IN运算符过滤多个特定年龄的“年龄”属性,如下所示:

&dimension = qrur9Dvnyt5:IN:18; 19; 20

您可以通过重复运算符和过滤器组件为给定项目指定多个过滤器,所有组件均用分号分隔:

&dimension = qrur9Dvnyt5:GT:5:LT:15

时间字段过滤{ #time-field-filtering }

/api/analytics/enrollments/query/<program-id>?startDate=yyyy-MM-dd&endDate=yyyy-MM-dd
  &dimension=ou:<ou-id>;<ou-id>&dimension=<item-id>&dimension=<item-id>:<operator>:<filter>

&timeField=LAST_UPDATED
NV 关键字{ #nv-keyword }

可以使用特殊关键字 NV 来过滤 null

按年龄筛选为空

&dimension=qrur9Dvnyt5:EQ:NV

筛选条件:年龄不为空

&dimension=qrur9Dvnyt5:NE:NV

按年龄筛选 18、19 岁或为空

&dimension=qrur9Dvnyt5:IN:18;19;NV

过滤器可以应用于数据元素,人员属性和人员标识符。过滤是通过以下格式的查询参数值完成的:

操作员{ #operators }

下面列出了可用的运算符。

表格筛选操作符

操作员 描述
EQ 等于
GT 大于
通用电器 大于或等于
LT 小于
LE 小于或等于
NE 不等于
喜欢 喜欢(自由文本匹配)
IN 等于用"; "分隔的多个值之一

请求查询参数

借助Analytics(分析)注册查询API,您可以指定一系列查询参数。

表格注册查询终端的查询参数

查询参数 需要 描述 选项(默认为默认)
程序 是的 计划标识符。 任何程序标识符
开始日期 注册开始日期。 日期(yyyy-MM-dd 格式
结束日期 注册结束日期。 日期(yyyy-MM-dd 格式
方面 是的 维度标识符包括数据元素、属性、程序指标、期间、组织单元和组织单元组集。参数可以重复任意次数。项目过滤器可以应用于维度的格式<item-id>:<operator>:<filter>。过滤器值不区分大小写。 操作符可以是 EQ
过滤 维度标识符包括数据元素、属性、期间、组织单位和组织单位组集。参数可以重复任意次数。项目过滤器可以应用于维度,格式为<item-id>:<operator>:<filter>。过滤器值不区分大小写。
程序状态 指定要包括的注册状态。 激活
相对周期日期 字符串 日期标识符,例如:"2016-01-01"。覆盖相对时间段的开始日期
ouMode 选择组织单位的模式。默认值为 DESCENDANTS,指层次结构中的所有子单位。CHILDREN 指层次结构中的直接子单位;SELECTED 仅指选定的组织单位。更多详情[此处]。(https://docs.dhis2.org/en/develop/using-the-api/dhis-core-version-master/tracker.html#webapi_nti_ou_scope) 后裔、子女、选定
尺寸以升序排序,可参考注册日期、事件日期、组织单位名称和代码。
描述 以降序排序的维度,可参考注册日期、事件发生日期、组织单位名称和代码。
仅坐标 是否只返回有坐标的注册信息。
标头 作为响应的一部分返回的标头的名称。 用逗号分隔的一个或多个标头名称
页码 页码。默认页码为 1。 数字正值
页面大小 页面大小。默认大小为每页 50 个项目。 数字零值或正值
timeField 时间字段,用于对注册数据进行汇总/查询。仅适用于注册数据项。可以是预定义选项,也可以是具有基于时间的值类型的属性或数据元素的 ID。对于"/analytics/enrollments/"端点,默认 "timeField "为 ENROLLMENT_DATE。 enrollment_date

回应格式

默认的响应表示格式是 JSON。请求必须使用 HTTP GET 方法。支持以下响应格式。

  • json(应用程序/ json)
  • xml(应用程序/ xml)
  • xls(application / vnd.ms-excel)
  • csv(应用程序/ csv)
  • html(text / html)
  • html + css(text / html)

例如,要获得Excel格式的响应,可以在请求URL中使用文件扩展名,如下所示:

/api/analytics/enrollments/query/WSGAb5XwJ3Y.xls?dimension=ou:ImspTQPwCqd
  &dimension=WZbXY0S00lP.de0FEHSIoxh&columns=w75KJ2mc4zz
  &dimension=WZbXY0S00lP.sWoqcoByYmD&dimension=pe:LAST_MONTH&stage=WZbXY0S00lP
  &pageSize=10&page=1&asc=ENROLLMENTDATE&ouMode=DESCENDANTS

默认响应JSON格式将类似于以下内容:

``json { "headers":[ { "name":"pi"、 "列":"注册"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"tei"、 "列":"跟踪实体实例"、 "valueType"(值类型):"TEXT"(文本"TEXT"、 "类型":"java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"enrollmentdate"、 "列":"注册日期"、 "valueType":"DATE"、 "类型":"java.util.Date"、 "hidden": false、 "meta": true }, { "名称":"incidentdate"、 "列":"事件日期"、 "valueType":"DATE"、 "类型":"java.util.Date"、 "hidden": false、 "meta": true }, { "名称":"storedby"、 "列":"存储方式"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"lastupdated"、 "列":"最后更新"、 "valueType":"DATE"、 "类型":"java.time.LocalDate"、 "hidden": false、 "meta": true }, { "名称":"storedby"、 "列":"存储方式"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"createdbydisplayname"、 "列":"创建者(显示名)"、 "valueType"(值类型):"TEXT"(文本"TEXT"、 类型": "java.lang.String"java.lang.String"、 "hidden": false、 元": true }, { "名称":"lastupdatedbydisplayname"、 "列":"最后更新人(显示名)"、 "valueType":"TEXT"、 类型": "java.lang.String"java.lang.String"、 "hidden": false、 元": true }, { "名称":"geometry"、 "列":"几何"、 "valueType":"TEXT"、 "类型":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"longitude"、 "列":"经度"、 "valueType"(值类型):"数值"、 "类型": "java.lang.Double":"java.lang.Double"、 "hidden": false、 元": true }, { "名称":"latitude"、 "列":"纬度"、 "valueType"(值类型):"数值"、 "类型": "java.lang.Double":"java.lang.Double"、 "hidden": false、 元": true }, { "名称":"ouname"、 "列":"组织单位名称"、 "valueType":"TEXT"、 类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "name":"oucode"、 "列":"组织单位代码"、 "valueType":"TEXT"、 类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "name":"ou"、 "列":"组织单位"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "name":"de0FEHSIoxh"、 "列":"WHOMCH 慢性病"、 "valueType":"BOOLEAN"、 "类型": "java.lang.Boolean"java.lang.Boolean"、 "hidden": false、 元": true }, { "name":"sWoqcoByYmD"、 "column":"WHOMCH Smoking"、 "valueType":"BOOLEAN"、 类型": "java.lang.Boolean":"java.lang.Boolean"、 "hidden": false、 元": true } ], "元数据":{ "pager":{ "page":2, "total": 163、 "pageSize":4, "页数": 4141 }, "项目":{ "ImspTQPwCqd":{ "name":"塞拉利昂" }, "PFDfvmGpsR3":{ "name":"出生护理" }, "bbKtnxRZKEP":{ "名称":"产后护理访问" }, "ou":{ "名称":"组织单位" }, "PUZaKR0Jh2k":{ "名称":"以前的交付" }, "edqlbukwRfQ":{ "名称":"产前检查" }, "WZbXY0S00lP":{ "名称":"第一次产前检查" }, "sWoqcoByYmD":{ "名称":"吸烟" }, "WSGAb5XwJ3Y":{ "name":"世卫组织 RMNCH 追踪器" }, "de0FEHSIoxh":{ "name":"世卫组织慢性病" } }, "维度":{ "pe":[], "ou":[ "ImspTQPwCqd" ], "sWoqcoBymD":[], "de0FEHSIoxh":[] } }, 宽度12, "行":[ [ "A0cP533hIQv"、 "to8G9jAprnx"、 "2019-02-02 12:05:00.0", "2019-02-02 12:05:00.0", "系统"、 "2020-08-06 21:20:52.0", "", "0.0", "0.0", "Tonkomba MCHP"、 "OU_193264"、 "xIMxph4NMP1"、 "0", "1" ], [ "ZqiUn2uXmBi"、 "SJtv0WzoYki"、 "2019-02-02 12:05:00.0", "2019-02-02 12:05:00.0", "系统"、 "2020-08-06 21:20:52.0", "", "0.0", "0.0", "Mawoma MCHP"、 "OU_254973"、 "Srnpwq8jKbp"、 "0", "0" ], [ "lE747mUAtbz"、 "PGzTv2A1xzn"、 "2019-02-02 12:05:00.0", "2019-02-02 12:05:00.0", "系统"、 "2020-08-06 21:20:52.0", "", "0.0", "0.0", "Kunsho CHP"、 "OU_193254"、 "tdhB1JXYBx2"、 "", "0" ], [ "nmcqu9QF8ow"、 "pav3tGLjYuq"、 "2019-02-03 12:05:00.0", "2019-02-03 12:05:00.0", "系统"、 "2020-08-06 21:20:52.0", "", "0.0", "0.0", "Korbu MCHP"、 "OU_678893"、 "m73lWmo5BDG"、 "", "1" ] ], "高度":4 }

响应的 *headers* 部分描述了查询结果的内容。注册唯一标识符、被跟踪实体实例标识符、注册日期、事件日期、几何形状、纬度、经度、组织单位名称和组织单位代码作为响应中的第一个维度出现并且将始终存在。接下来是数据元素和在请求中指定为维度的跟踪实体属性,在本例中为“WHOMCH 慢性条件”和“WHOMCH 吸烟”数据元素维度。标题部分在“名称”属性中包含维度项的标识符,在“列”属性中包含可读的维度描述。

*metaData* 部分,*ou* 对象包含映射到表示层次结构的字符串的响应中存在的所有组织单位的标识符。此层次结构字符串从根开始列出组织单位的祖先(父)的标识符。 *names* 对象包含响应中映射到其名称的所有项目的标识符。

*rows* 部分包含查询生成的注册。每一行正好代表一个注册。

### 使用计划指标{ #analytics-across-tei-relationships-with-program-indicators }进行TEI关系分析 { #analytics-across-tei-relationships-with-program-indicators } 

非汇总注册分析API还支持将程序指示器链接到关系类型,以显示应用于所列出的跟踪实体实例的相关实体的特定程序指示器的计算结果。

![](resources/images/enrollments/enrollments-pi-relationship.jpg)

要使计划指标/关系类型链接正常工作,`/api/analytics/enrollments/query` API 需要一个附加维度,其中必须包括所选关系类型 UID 和所选计划指标 UID:

    /api/analytics/enrollments/query/ ?dimension=  .<program-id>
      dimension=<relationshiptype-id>.<programindicator-id>

例如,要从“ WHO RMNCH Tracker”程序中检索2019年1月的注册列表,并按“与人相关的疟疾病例”类型的关系显示与该注册相关的疟疾病例数,则可以使用以下查询

    /api/analytics/enrollments/query/WSGAb5XwJ3Y.json?dimension=mxZDvSZYxlw.nFICjJluo74
      &startDate=2019-01-01&endDate=2019-01-31    

API 支持使用与“主”程序(即在`/query/` 之后指定的程序 ID)无关的程序指示符。

## 尺寸{ #webapi_dimensions }

五种资源可轻松检索数据维度:

- [事件查询数据维度](analytics.md#webapi_event_query_analytics_dimension)`/analytics/events/query/dimensions`) 
- skipRounding
- 不
- [注册汇总数据维度](analytics.md#webapi_enrollment_aggregate_analytics_dimension) `/analytics/enrollments/aggregate/dimensions`)
- [跟踪实体查询数据维度](analytics.md#webapi_teis_query_analytics_dimensions)) `/analytics/teis/query/dimensions`

上述资源共用以下请求参数:

| 查询参数 | 所需                                         | 描述                                                                                       | 选项                                                                                                                                              |
|-----------------|--------------------------------------------------|---------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
| 过滤          | 没有                                               | false &#124; true | 请参阅 [维度筛选器部分](analytics.md#webapi_analytics_dimension_filters)。                                                                                |
| 领域          | 没有                                               | 允许过滤字段                                                  |
| 页码            | 没有 | 页码                                                                                       | 默认为 1(第一页)                                                                                                                           |
| 页面大小        | 没有 | 页面大小                                                                                         | 默认为每页 50 个元素                                                                                                                     |
| 分页          | 没有 | 描述                                                                  | 选项                                                                                                                |
| 订单           | 没有 | Allows field value filtering on the format: <br/> `filter=field:OP:value&filter=field:OP:value&...`                                                                   | See [dimension filters section].(#webapi_analytics_dimension_filters) |

#### 尺寸过滤器{ #webapi_analytics_dimension_filters }

维度端点支持过滤输出,以便将响应范围缩小到所需元素。
过滤器的格式为`filter=field:op:value&filter=field:op:value&...&filter=field:op:value`。

Allows field filtering

- **id**/**uid** - 维度 ID
- **代码** - 尺寸代码
- **valueType** - 尺寸值类型
- **名称** -标度的名称
- **维度类型** - 维度的类型 
    - no
    - Page size
    - Defaults to 50 elements per page
    - paging
    - no
- **显示名称** -标注的显示名称
- **显示短名** - 标注的显示短名

order

- `startsWith` - 字段开始于
- Allows sorting on the format: `order=field:direction`
- `endsWith` - 字段结束于
- `!endsWith` - 字段不以- 结尾。 
- `eq` - 等于
- `ieq` - 忽略等号情况
- `ne` - 不等于
- `like` - 包含
- **valueType** - dimension value type
- **name** - the name of the dimension
- `!ilike` - 不包含忽略情况

### 事件分析维度{ #event-analytics-dimensions } 
#### 事件查询分析维度{ #webapi_event_query_analytics_dimension }

/analytics/events/query/dimensions?programStageId=... "资源接受一个强制性跟踪程序阶段,并返回以下数据维度:

- 与计划相关的**计划指标**(源自计划阶段 ID)
- `eq` - equals
- `ieq` - equals ignoring case
- 与程序相关联的类别组合中的**类别**(源自程序阶段 ID)
- `like` - contains

除了 `IMAGE`、`FILE_RESOURCE` 和 `TRACKER_ASSOCIATE`,所有数据元素和跟踪实体属性的值类型都被视为*支持的类型*。

#### 事件汇总维度{ #webapi_event_aggregate_analytics_dimension }

`!ilike` - does not contain ignoring case

- `eq` - equals
- `ieq` - equals ignoring case
- 与程序相关联的类别组合中的**类别**(源自程序阶段 ID)
- 与节目相关联的 `ATTRIBUTE` 类型的**类别选项组集**(源自 programStageId)

如果数据元素和跟踪实体属性的值类型是以下类型之一,则视为*支持类型*:

- both `program` and `programStage`
- `INTEGER`
- If only `program` is specified, the resource returns data dimensions for each program stage in the provided program
- If only `programStage` is specified, the resource returns data dimensions for the provided `programStage`
- If both `program` and `programStage` are specified, the resource returns data dimensions for the provided `programStage` if it belongs to the provided `program`. Returns an error otherwise.
- the returned data dimensions are:
- **Program indicators** associated with the program (derived from programStageId)
- Enrollment analytics dimensions
- **Tracked entity attributes** of *supported types* associated with the program (derived from programStageId)

### 招生分析维度{ #enrollment-analytics-dimensions } 

#### 入学查询分析维度{ #webapi_enrollment_query_analytics_dimension }

All value types for data elements and tracked entity attributes are considered *supported types*, except `IMAGE` and `FILE_RESOURCE`.

- 与程序连接的**程序指示器**
- Data elements and tracked entity attributes are considered *supported types* if their value type is one of the following:
- **Data elements** of *supported types* in the program stage

除了 `IMAGE`、`FILE_RESOURCE` 和 `TRACKER_ASSOCIATE`,所有数据元素和跟踪实体属性的值类型都被视为*支持的类型*。

#### 入学总人数{ #webapi_enrollment_aggregate_analytics_dimension }

**Category option group sets** of type `ATTRIBUTE` associated with program (derived from programStageId)

- Data elements and tracked entity attributes are considered *supported types* if their value type is one of the following:
- **Data elements** of *supported types* in the program stage

如果数据元素和跟踪实体属性的值类型是以下类型之一,则视为*支持类型*:

- both `program` and `programStage`
- `INTEGER`
- If only `program` is specified, the resource returns data dimensions for each program stage in the provided program
- If only `programStage` is specified, the resource returns data dimensions for the provided `programStage`
- If both `program` and `programStage` are specified, the resource returns data dimensions for the provided `programStage` if it belongs to the provided `program`. Returns an error otherwise.
- the returned data dimensions are:
- **Program indicators** associated with the program (derived from programStageId)
- Enrollment analytics dimensions
- **Tracked entity attributes** of *supported types* associated with the program (derived from programStageId)

### 跟踪实体分析维度{ #tracked-entities-analytics-dimensions } 

#### 跟踪实体查询分析维度{ #webapi_teis_query_analytics_dimensions }

**Data elements** of *supported types* in the program, with program stage for each data element

**Tracked entity attributes** of *supported types* associated with the program that are not confidential
- All value types for data elements and tracked entity attributes are considered *supported types*, except `IMAGE` and `FILE_RESOURCE`.
- Enrollment aggregate dimensions { #webapi_enrollment_aggregate_analytics_dimension }
- **Data elements** of *supported types* in the program stage
- **Data elements** of *supported types* in the program, with program stage for each data element

除了 `IMAGE`、`FILE_RESOURCE` 和 `TRACKER_ASSOCIATE`,所有数据元素和跟踪实体属性的值类型都被视为*支持的类型*。

### 请求和答复样本{ #sample-request-and-response } 

    GET /api/analytics/events/query/dimensions?programStageId=A03MvHHogjR&order=code&filter=name:ilike:weight

``json
{
   "page":1、
   "total":5、
   "pageSize":50、
   "尺寸":[
      {
         "dimensionType": "PROGRAM_INDICATOR"、
         "created":"2015-08-06T22:49:20.128",
         "lastUpdated":"2015-08-06T22:51:19.787",
         "名称":"麻疹+黄热病剂量婴儿体重不足"、
         "displayName":"麻疹+黄热病剂量低婴儿体重"、
         "id": "tt54DiKuQ9c"、
         "uid": "tt54DiKuQ9c"、
         "displayShortName":"麻疹+黄热病剂量低婴儿体重"
      },
      {
         "dimensionType": "PROGRAM_INDICATOR"、
         "created":"2017-01-20T10:32:26.388",
         "lastUpdated":"2017-01-20T10:32:26.388",
         "名称":"出生至最后一次产后体重增加(克)"、
         "displayName": "出生至最后一次产后体重增加(单位:克)"、
         "id": "qhTkqwAJLMv"、
         "uid": "qhTkqwAJLMv"、
         "displayShortName":"体重增加(克)"。
      },
      {
         "dimensionType": "PROGRAM_INDICATOR"、
         "created":"2015-09-14T20:25:55.543",
         "lastUpdated":"2018-08-28T12:22:47.857",
         "名称":"平均体重(克)"、
         "displayName": "平均重量(克)"、
         "id": "GxdhnY5wmHq"、
         "uid": "GxdhnY5wmHq"、
         "displayShortName":"平均体重(克)"。
      },
      {
         "dimensionType": "PROGRAM_INDICATOR"、
         "created":"2015-08-06T22:35:40.391",
         "lastUpdated":"2015-08-06T22:35:40.391",
         "名称":"卡介苗剂量低出生体重"、
         "displayName":"卡介苗剂量低出生体重"、
         "id": "hCYU0G5Ti2T"、
         "uid": "hCYU0G5Ti2T"、
         "displayShortName":"卡介苗剂量低出生体重"
      },
      {
         "valueType": "NUMBER"、
         "dimensionType": "DATA_ELEMENT"、
         "created":"2012-09-20T17:37:45.474",
         "lastUpdated":"2014-11-11T21:56:05.418",
         "名称":"MCH 重量(克)"、
         "displayName":"MCH 重量(克)"、
         "id": "A03MvHHogjR.UXz7xuGCEhU"、
         "uid": "UXz7xuGCEhU"、
         "代码": "DE_2005736"、
         "displayShortName":"重量(克)"。
      }
   ]
}

组织单位分析

组织单位分析API提供有关按组织单位组集分类的组织单位的统计信息,即组织单位组集中每个组织单位组的组织单位计数。

GET /api/orgUnitAnalytics?ou=<org-unit-id>&ougs=<org-unit-group-set-id>

该API需要至少一个组织单位和至少一个组织单位组集。可以提供多个组织单位和组集,以分号分隔。

请求查询参数

组织单位分析资源使您可以指定一系列查询参数:

表格:机关单位分析查询参数

财产 描述 需要
Org 单位标识符,可能用分号分隔。 是的
奥格斯 机关单位组集标识符,可能用分号分隔。 是的
组织单位组集标识符,可能用分号分隔。定义哪些组集在表格布局中显示为列。

响应将包含用于父组织单位的列,用于请求的每个组织单位组集部分的列以及用于计数的列。统计信息包括组织单位的数量,该组织单位是请求中指定的组织单位的子层次结构的一部分。该响应包含一个元数据部分,该元数据部分指定由其标识符引用的响应的每个组织单位和组织单位组部分的名称。

默认响应使用单个 count 列进行标准化。通过使用 columns 查询参数指定至少一个组织单位组集,可以在表格布局中呈现响应。

回应格式

组织单位分析端点支持以下表示格式:

  • json(应用程序/ json)
  • csv(应用程序/ csv)
  • xls(application / vnd.ms-excel)
  • pdf(应用程序/ pdf)

例子

要获取组织单位和组织单位组集的组织单位分析,请执行以下操作:

GET /api/orgUnitAnalytics?ou=lc3eMKXaEfw&ougs=J5jldMd8OHv

要获取两个组织单位和两个组织单位组集合的组织单位分析数据:

GET /api/orgUnitAnalytics?ou=lc3eMKXaEfw;PMa2VCrupOd&ougs=J5jldMd8OHv;Bpx0589u8y0

要以表格模式获取组织单位分析数据,并将一组设置为列:

GET / api / orgUnitAnalytics?ou = fdc6uOvgoji; jUb8gELQApl; lc3eMKXaEfw; PMa2VCrupOd
  &ougs = J5jldMd8OHv&列= J5jldMd8OHv

约束与验证

下表描述了专门针对组织单位分析API的可能的验证错误。为汇总分析API指定的某些错误也相关。

错误代码 信息
E7300 必须至少指定一个组织单位
E7301 必须至少指定一个组织单位组集

数据集报告

可以使用 web api 生成数据集报告 /dataSetReport 资源。此资源生成有关数据集的报告 并以 HTML 表格的形式返回结果。

/api/dataSetReport

请求查询参数

该请求支持以下参数:

表:数据集报告查询参数

参数 描述 类型 需要
ds 创建报告的数据集。 数据集 UID 是的
聚乙烯 创建报告的时期。可以是逗号分隔的列表。 ISO 字符串 是的
创建报告的组织单位。 组织单位 UID 是的
过滤 用作报告筛选器的筛选器。可重复任意次数。遵循分析 API 语法。 一个或多个 UID
仅选定单位 是只使用捕获的数据,还是使用汇总数据。 Boolean

The data set report resource accepts GET requests only. The response content type is application/json and returns data in a grid. This endpoint works for all types of data sets, including default, section and custom forms.

检索 2018 年 10 月月度数据集和组织单位报告的请求示例如下:

GET /api/dataSetReport?ds=BfMAe6Itzgt&pe=201810&ou=ImspTQPwCqd&selectedUnitOnly=false

检索 2018 年 10 月、11 月和 12 月的月度数据集和组织单位报告的请求示例如下:

GET /api/dataSetReport?ds=BfMAe6Itzgt&pe=201810,201811,201812&ou=ImspTQPwCqd&selectedUnitOnly=false

要获得带有过滤器的数据集报告,可以使用filter参数。在这种情况下,过滤器基于一个组织单位组集和两个组织单位组:

GET /api/dataSetReport?ds=BfMAe6Itzgt&pe=201810&ou=ImspTQPwCqd
  &filter=J5jldMd8OHv:RXL3lPSK8oG;tDZVQ1WtwpA

回应格式

数据集报告端点支持以下格式的输出。您可以使用文件扩展名或 Accept HTTP 标头检索特定端点。

  • json(应用程序/ json)
  • pdf(应用程序/ pdf)
  • xls(application / vnd.ms-excel)

自订表格

A dedicated endpoint is available for data sets with custom HTML forms. This endpoint returns the HTML form content with content type text/html with data inserted into it. Note that you can use the general data set report endpoint also for data sets with custom forms; however, that will return the report in JSON format as a grid. This endpoint only works for data sets with custom HTML forms.

GET /api/dataSetReport/custom

否则,此端点的语法等于常规数据集报告端点。要检索自定义HTML数据集报告,您可以发出如下请求:

GET /api/dataSetReport/custom?ds=lyLU2wR22tC&pe=201810&ou=ImspTQPwCqd

推送分析

推送分析 API 包括用于预览推送分析的端点 报告登录用户并手动触发系统 生成和发送推送分析报告,除了正常的 CRUD 操作。使用创建和更新端点进行推送时 分析,推送分析将根据 推分析的性质。删除或更新一个 禁用推送分析,作业也将停止运行 将来。

要获得现有推送分析的 HTML 预览,您可以执行 GET 请求到以下端点:

/api/pushAnalysis/<id>/render

要手动触发推送分析作业,您可以执行 POST 请求以 这个端点:

/api/pushAnalysis/<id>/run

推送分析包含以下属性,其中一些是 自动运行推送分析作业所需:

表格推力分析特性

财产 描述 类型 需要
仪表盘 报告所依据的仪表板 仪表板 UID 是的
信息 出现在报告标题之后
收件人用户组 一组应接收报告的用户组 一个或多个用户组 UID 没有收件人的预定任务将被跳过。
启用 表示是否应安排此推送分析。默认为假。 Boolean 是的。必须是真实的,才能安排。
调度频率 应安排报告的频率。 "每日"、"每周"、"每月" 不安排无频率的推送分析
调度日频率 应安排工作的频率日。 整数。频率为 "每天 "时为任意值。频率为 "周 "时为 0-7。频率为 "月 "时为 1-31 没有频率集有效频率日的推送分析将不会被安排。

数据使用情况分析

使用情况分析 API 可让您访问有关人们使用情况的信息 使用基于数据分析的 DHIS2。当用户访问收藏夹时, 事件被记录。事件由用户名、UID 组成 最喜欢的、事件发生的时间以及事件的类型。这 表中列出了不同类型的事件。

/api/dataStatistics

使用情况分析 API 可让您检索使用情况的汇总快照 基于时间间隔的分析。 API 捕获用户视图(对于 例如,图表或数据透视表被用户查看的次数 用户)和保存的分析收藏夹(例如收藏夹图表和 数据透视表)。 DHIS2 将捕获夜间快照,然后 应要求汇总。

请求查询参数

使用情况分析(数据统计)API支持两种操作:

  • POST: 创建一个视图事件

  • GET: 检索汇总统计信息

创建视图事件(POST)

使用情况分析 API 可让您创建事件视图。这 dataStatisticsEventType 参数描述了项目的类型 看过。最喜欢的参数表示相关的标识符 最喜欢的。

创建新事件视图的 URL 图表:

POST /api/dataStatistics?eventType=CHART_VIEW&favorite=LW0O27b7TdD

成功的保存操作会返回 HTTP 状态代码 201。表 下面显示了支持的事件类型。

表:支持的事件类型

描述
The day in the frequency the job should be scheduled. 可视化视图
No. Push analysis without a valid day of frequency for the frequency set will not be scheduled. 地图视图 (GIS)
使用情况分析 API 可让您访问有关人们使用情况的信息
使用基于数据分析的 DHIS2。当用户访问收藏夹时,
事件被记录。事件由用户名、UID 组成
最喜欢的、事件发生的时间以及事件的类型。这
表中列出了不同类型的事件。 事件报告视图
使用情况分析 API 可让您检索使用情况的汇总快照
基于时间间隔的分析。 API 捕获用户视图(对于
例如,图表或数据透视表被用户查看的次数
用户)和保存的分析收藏夹(例如收藏夹图表和
数据透视表)。 DHIS2 将捕获夜间快照,然后
应要求汇总。 事件图表视图
使用情况分析(数据统计)API支持两种操作: 事件可视化视图
GET: 检索汇总统计信息 仪表板视图
使用情况分析 API 可让您创建事件视图。这
dataStatisticsEventType 参数描述了项目的类型
看过。最喜欢的参数表示相关的标识符
最喜欢的。 仪表盘视图(未明确选择仪表盘时)
data_set_report_view 数据集报告视图

检索汇总的使用情况分析报告(GET)

使用情况分析(数据统计)API 允许您指定特定查询 请求汇总报告时的参数。

表:综合使用分析(数据统计)的查询参数

查询参数 需要 描述 选项
开始日期 是的 期间开始日期 日期(yyyy-MM-dd 格式
结束日期 是的 期间结束日期 日期(yyyy-MM-dd 格式
间隙 是的 要汇总的区间类型 日、周、月、年

startDate 和 endDate 参数指定期间 将在聚合中使用快照。您必须格式化日期 如上图所示。如果在指定时间段内没有保存快照,则 空列表被送回。称为间隔的参数指定了什么 将进行聚合类型。

用于创建每月查询的 API 查询 聚合:

GET /api/dataStatistics?startDate=2014-01-02&endDate=2016-01-01&interval=MONTH

检索热门收藏夹

使用情况分析 API 可让您检索最常用的 DHIS2,并由用户。

表格收藏夹查询参数

查询参数 需要 描述 选项
事件类型 是的 数据统计事件类型 见上表
页面大小 返回列表的大小 例如 5、10、25。默认值为 25
排序顺序 下降或上升 ASC 或 DESC。默认为 DESC。
用户名 如果指定,响应将只包含该用户的收藏。 例如 "admin

API 查询可以不用用户名,然后会找到顶部 系统的最爱。

/api/dataStatistics/favorites?eventType=CHART_VIEW&pageSize=25&sortOrder=ASC

如果指定了用户名,则响应将仅包含该用户的最爱。

/api/dataStatistics/favorites?eventType=CHART_VIEW&pageSize=25
  &sortOrder=ASC&username=admin

回应格式

您可以在使用情况分析响应中返回聚合数据 几种表示格式。默认格式为 JSON。这 可用的格式和内容类型有:

  • json(应用程序/ json)

  • xml(应用程序/ xml)

  • html(text / html)

请求 XML 格式的使用情况分析响应的 API 查询 格式:

/api/dataStatistics.xml?startDate=2014-01-01&endDate=2016-01-01&interval=WEEK

要以 JSON 格式获取使用情况分析响应:

/api/dataStatistics?startDate=2016-02-01&endDate=2016-02-14&interval=WEEK

JSON响应如下所示:

ASC or DESC. Default is DESC.

检索收藏的统计信息

您可以使用 收藏夹 资源,其中 {favorite-id} 应替换为 感兴趣的收藏夹的标识符:

/api/dataStatistics/favorites/{favorite-id}.json

响应将包含给定收藏的观看次数和 看起来像这样:

{
  "views": 3
}

地理空间特征

geoFeatures 资源可让您从中检索地理空间信息 DHIS2。地理空间特征与组织单位一起存储。 检索特征的语法与用于检索特征的语法相同 分析资源的组织单位维度。这是 建议在继续之前阅读分析 api 资源 阅读本节。您必须使用 GET 请求类型,并且只能使用 JSON 支持响应格式。

例如,在以下位置检索所有组织单位的地理特征 组织单位层次结构中的第 3 级,您可以使用 GET 请求 使用以下网址:

/api/geoFeatures.json?ou=ou:LEVEL-3

检索组织单位内某个级别的地理特征 组织单位的边界(例如在第 2 级),您可以使用以下 URL:

/api/geoFeatures.json?ou=ou:LEVEL-4;O6uvpzGd5pu

响应坐标值可从两个属性中读取,这两个属性由参数 坐标字段 决定。 - 请求 XML 格式的使用情况分析响应的 API 查询 格式: - 值类型为 GeoJSON 的 OrgansationUnit 属性:API 将使用提供的 coordinateField={attributeId} 从该属性值中获取 GeoJSON 坐标。

例如,要检索第 3 级所有组织单位的地理特征,方法同上,但要从组织单位属性 tJqtSV4quLb 获取坐标

/api/geoFeatures.json?ou=ou:LEVEL-3&coordinateField=tJqtSV4quLb

响应属性的语义描述如下 桌子。

表:地理特征响应

财产 描述
本我 组织单位/地理特征标识符
na 组织单位/地理特征名称
hcd 向下有坐标,表示是否存在一个或多个有坐标的子组织单位(在层次结构中位于下方)。
hcu 向上有坐标,表示上级组织单位是否有坐标(在层次结构中位于上层)。
该组织单位/地理特征的级别。
页码 父级图,父级组织单位标识符图,直至层次结构中的根节点
pi 父标识符,该组织单位的父标识符
pn 父单位名称,该组织单位的父单位名称
类型 地理特征类型,1 = 点,2 = 多边形或多多边形
该地理特征的坐标

GeoJSON{ #geojson }

要导出 GeoJSON,您只需添加 .geosjon 作为扩展名 端点 /api/organisationUnits,或者您可以使用 Accept 标头 应用程序/json+geojson

支持两个参数:level(默认为 1)和 parent(默认为根组织单位)。两者都可以多次包含。一些例子:

获得第2级和第4级的所有功能:

/api/organisationUnits.geojson?level=2&level=4

使用边界组织单位获取级别3的所有功能:

/api/organisationUnits.geojson?parent=fdc6uOvgoji&level=3

分析表挂钩

Analytics 表挂钩提供了一种调用 SQL 脚本的机制 在分析表生成过程的不同阶段。这 对于自定义资源和分析表中的数据很有用,例如在 以实现计算和聚合的特定逻辑。 可以在以下 API 端点操作分析表挂钩:

/ api / analyticsTableHooks

分析表钩子 API 支持标准的 HTTP CRUD 操作 用于创建(POST)、更新(PUT)、检索(GET)和删除 (删除)实体。

钩场

Analytics表挂钩具有以下字段:

表格分析表钩子字段

领域 选项 描述
名称 文本 钩子的名称。
相位 resource_table_populated, analytics_table_populated 调用 SQL 脚本的阶段。
resourceTableType 参见下表 "阶段、表格类型和临时表格 "中的 "表格类型 "栏 调用 SQL 脚本的资源表类型。仅适用于使用 RESOURCE_TABLE_POPULATED 阶段定义的钩子。
分析表类型 参见下表 "阶段、表格类型和临时表格 "中的 "表格类型 "栏 要调用 SQL 脚本的分析表类型。仅适用于使用 ANALYTICS_TABLE_POPULATED 阶段定义的钩子。
sql 文本 要调用的 SQL 脚本。

Table: Analytics table hook fields

这也适用于 RESOURCE_TABLE_POPULATED 阶段,它需要 放置在资源表被填充之后,索引之前 已创建并且临时表已与主表交换 桌子。因此,SQL 脚本应参考资源临时 表,例如*_orgunitstructure_temp*,_categorystructure_temp

您应该只定义 resourceTableTypeanalyticsTableType 字段,取决于定义的 phase

可以参考匹配的临时数据库表 仅指定挂钩表类型(其他临时表不会 可用的)。例如,如果您指定 ORG_UNIT_STRUCTURE 作为 资源表类型,可以参考*_orgunitstructure_temp* 仅临时数据库表。

下表显示了阶段、表格类型的有效组合 和临时表。

表格阶段、表格类型和临时表格

表格类型 临时表格
The phase for when the SQL script should be invoked. resourceTableType See column "Table type" in table "Phases, table types and temporary tables" below
data_set_org_unit_category analyticsTableType
See column "Table type" in table "Phases, table types and temporary tables" below The type of analytics table for which to invoke the SQL script. Applies only for hooks defined with the ANALYTICS_TABLE_POPULATED phase.
data_element_group_set_structure 文本
The SQL script to invoke. The ANALYTICS_TABLE_POPULATED phase takes place after the analytics
table has been populated, but before indexes have been created and the
temp table has been swapped with the main table. As a result, the SQL
script should refer to the analytics temp table, e.g. analytics_temp,
analytics_completeness_temp, analytics_event_temp_ebayegv0exc.
org_unit_group_set_structure 您应该只定义 resourceTableType
analyticsTableType 字段,取决于定义的 phase
可以参考匹配的临时数据库表
仅指定挂钩表类型(其他临时表不会
可用的)。例如,如果您指定 ORG_UNIT_STRUCTURE 作为
资源表类型,可以参考*_orgunitstructure_temp*
仅临时数据库表。 下表显示了阶段、表格类型的有效组合
和临时表。
Table: Phases, table types and temporary tables
Table type Temporary table
DATE_PERIOD_STRUCTURE ORG_UNIT_STRUCTURE
data_element_category_option_combo DATA_SET_ORG_UNIT_CATEGORY
_datasetorgunitcategory_temp CATEGORY_OPTION_COMBO_NAME
_categoryoptioncomboname_temp DATA_ELEMENT_GROUP_SET_STRUCTURE analytics_temp
完整性 analytics_completeness_temp
ORG_UNIT_GROUP_SET_STRUCTURE _organisationunitgroupsetstructure_temp
org_unit_target analytics_orgunittargetget_temp
活动 analytics_event_temp_{program-uid}
注册 analytics_enrollment_temp_{program-uid}
DATE_PERIOD_STRUCTURE analytics_validationresult_temp

创建钩子

要创建一个在资源表填充完成后运行的钩子,可以使用 JSON 作为内容类型,像这样发送一个 POST 请求:

POST /api/analyticsTableHooks
{
  "name": "Update 'Area' in org unit group set resource table",
  "phase": "RESOURCE_TABLE_POPULATED",
  "resourceTableType": "ORG_UNIT_GROUP_SET_STRUCTURE",
  "sql": "update _organisationunitgroupsetstructure_temp set \"uIuxlbV1vRT\" = 'b0EsAxm8Nge'"
}

要创建一个在数据值分析表填充完成后运行的钩子,可以使用 JSON 格式像这样发送一个 POST 请求:

analytics_temp

要创建一个在事件分析表填充后运行的钩子,可以使用 JSON 格式像这样发送一个 POST 请求:

analytics_completeness_temp

SVG转换

Web API 提供了可用于转换 SVG 内容的资源 转换为更广泛使用的格式,例如 PNG 和 PDF。理想情况下这个 转换应该发生在客户端,但不是所有的客户端 技术能够完成这项任务。目前为 PNG 和 PDF 支持输出格式。 SVG 内容本身应该通过 一个 svg 查询参数和一个可选的查询参数 filename 可以 用于指定响应附件文件的文件名。笔记 应该省略文件扩展名。对于 PNG,您可以发送 POST 使用 Content-type 请求以下 URL application/x-www-form-urlencoded,与常规 HTML 表单相同 提交。

api / svg.png

对于 PDF,您可以将 POST 请求发送到以下 URL 内容类型application/x-www-form-urlencoded

api / svg.pdf

表格查询参数

查询参数 需要 描述
svg 是的 SVG 内容
文件名 返回附件的文件名,不带文件扩展名

分析查询执行计划和成本,包括执行时间估算{ #analytics-query-execution-plan-and-costs-including-execution-time-estimation }

分析 API 提供了用于调查查询性能问题的端点。它是所有分析端点的一部分:

  • 分析/解释
  • 分析/事件/解释
  • 分析/注册/解释

GET /api/analytics/explain?displayProperty=NAME
  &dimension=dx:Uvn6LCg7dVU;sB79w2hiLp8,ou:USER_ORGUNIT
  &filter=pe:THIS_YEAR&includeNumDen=false&skipMeta=false
  &skipData=true&includeMetadataDetails=true

答复是这样的

``json { "headers":[ { "name":"dx"、 "列":"数据"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "name":"ou"、 "列":"组织单位"、 "valueType":"TEXT"、 "类型": "java.lang.String":"java.lang.String"、 "hidden": false、 元": true }, { "名称":"value"、 "列":值"、 "valueType":"数值"、 "类型":"java.lang.Double"、 "hidden": false、 "meta": false } ], "元数据":{ "items":{ "ImspTQPwCqd":{ "uid":"ImspTQPwCqd"、 "代码":"OU_525"、 "名称":"塞拉利昂"、 "dimensionItemType":"组织单位"、 "valueType":"数值"、 "totalAggregationType":"SUM"(总和 }, "sB79w2hiLp8":{ "uid":"sB79w2hiLp8"、 "name":"ANC 3 覆盖范围"、 "description":"按预期孕妇人数分列的第三次产前检查总次数(固定和外展)"、 "legendSet":"fqs276KXCXi"、 "dimensionItemType":"INDICATOR"、 "valueType":"数值"、 "totalAggregationType":"平均值"、 "指标类型":{ "名称":"百分比"、 "displayName"(显示名称):"百分比"、 "系数":100, "数字": false } }, "dx":{ "uid":"dx"、 "name":"数据"、 "dimensionType":"DATA_X }, "pe":{ "uid":"pe"、 "名称":"Period"、 "维度类型":"周期" }, "ou":{ "uid":"ou"、 "名称":"组织单位"、 "dimensionType":"组织单位" }, "Uvn6LCg7dVU":{ "uid":"Uvn6LCg7dVU"、 "代码":"IN_52486"、 "名称":"ANC 1 覆盖范围"、 "描述":"按预期孕妇人数分列的第一次产前检查总次数(固定和外展)"、 "legendSet":"fqs276KXCXi"、 "dimensionItemType":"INDICATOR"、 "valueType":"数值"、 "totalAggregationType":"平均值"、 "指标类型":{ "名称":"百分比"、 "displayName"(显示名称):"百分比"、 "系数":100, "数字": false } }, "THIS_YEAR":{ "名称":"今年" }, "2022":{ "uid":"2022", "code":"2022", "名称":"2022", "dimensionItemType":"PERIOD"、 "valueType":"数值"、 "totalAggregationType":"SUM"、 "startDate"(开始日期): "2022-01-01t00:00:00.000"2022-01-01T00:00:00.000", "endDate":"2022-12-31t00:00:00.000"2022-12-31T00:00:00.000" } }, "维度":{ "dx":[ "Uvn6LCg7dVU"、 "sB79w2hiLp8" ], "pe":[ "2022" ], "ou":[ "ImspTQPwCqd" ], "co":[] } }, "performanceMetrics":{ "totalTimeInMillis":90.894, "executionPlans":[ { "timeInMillis":12.314, "planningTime":6.801, "执行时间5.513, "query":"select ax.\"dx\",ax.\"uidlevel1\", sum(daysxvalue) / 365 as value from analytics_2022 as ax where ax.\"dx\" in ('h0xKKjijTdI') and ax.\uidlevel1\" in ('ImspTQPwCqd') and ( ax.\"yearly\" in ('2022') ) and ax.\"year\" in (2022) group by ax.\"dx\",ax.\"uidlevel1\""、 "plan":{ "Node Type":"Aggregate"、 "策略":"排序"、 "部分模式":"简单"、 "Parallel Aware(并行感知)": false、 "Async Capable": false、 "启动成本20.21, "总成本5602.98, "计划行数":260, "平面宽度":32, "实际启动时间5.448, "实际总时间5.449, "实际行数1, "实际循环": 11, "组键":[ "dx"、 "uidlevel1" ], "计划":[ { "节点类型"位图堆扫描"、 "父节点关系"外部"、 "并行感知":false "Async Capable": false、 "关系名称": false"analytics_2022"、 "别名":"ax"、 "启动成本":20.21, "总成本":5588.33, "计划行数":1520, "平面宽度":32, "实际启动时间":0.446, "实际总时间":5.003, "实际行数1032, "实际循环": 11, "重新检查条件"(dx = 'h0xKKjijTdI'::bpchar)"、 "通过索引重新检查删除的行":0, "过滤器": 0"((uidlevel1 = 'ImspTQPwCqd'::bpchar) AND (yearly = '2022'::text) AND (year = 2022))"、 "过滤器删除的行数":0, "精确堆块":46, "有损堆块":0, "计划":[ { "节点类型"位图索引扫描"、 "父节点关系"外部"、 "并行感知":false "Async Capable": false、 "索引名称"in_dx_ao_ax_2022_MClNI", "启动成本0.0, "总成本": 19.8319.83, "计划行数":1520, "平面宽度":0, "实际启动时间":0.406, "实际总时间":0.407, "实际行数1032, "实际循环": 11, "索引条件":"(dx = 'h0xKKjijTdI'::bpchar)"。 } ] } ] } }, { "timeInMillis":38.35, "planningTime":0.627, "执行时间":37.723, "query":"select ax.\"dx\",ax.\"uidlevel1\", sum(value) as value from analytics_2022 as ax where ax.\"dx\" in ('Jtf34kNZhzP') and ax.\uidlevel1\" in ('ImspTQPwCqd') and ( ax.\"yearly\" in ('2022') ) and ax.\"year\" in (2022) group by ax.\"dx\",ax.\"uidlevel1\""、 "plan":{ "Node Type":"Aggregate"、 "策略":"排序"、 "部分模式":"简单"、 "Parallel Aware(并行感知)": false、 "Async Capable": false、 "启动成本193.57, "总成本47322.83, "计划行数":261, "平面宽度":32, "实际启动时间":37.685, "实际总时间":37.685, "实际行数1, "实际循环": 11, "组键":[ "dx"、 "uidlevel1" ], "计划":[ { "节点类型"位图堆扫描"、 "父节点关系"外部"、 "并行感知":false "Async Capable": false、 "关系名称": false"analytics_2022"、 "别名":"ax"、 "启动成本":193.57, "总成本":47191.38, "计划行数":17179, "平面宽度":32, "实际启动时间":1.981, "实际总时间":32.332, "实际行数17462, "实际循环":1, "重新检查条件"(dx = 'Jtf34kNZhzP'::bpchar)"、 "通过索引重新检查删除的行":0, "过滤器": 0"((uidlevel1 = 'ImspTQPwCqd'::bpchar) AND (yearly = '2022'::text) AND (year = 2022))"、 "过滤器删除的行数":0, "精确堆块":1165, "有损堆块":0, "计划":[ { "节点类型"位图索引扫描"、 "父节点关系"外部"、 "并行感知":false "Async Capable": false、 "索引名称"in_dx_ax_2022_Eb64F", "启动成本0.0, "总成本": 189.27189.27, "计划行数":17179, "平面宽度":0, "实际启动时间":1.765, "实际总时间":1.765, "实际行数17462, "实际循环":1, "索引条件":"(dx = 'Jtf34kNZhzP'::bpchar)"。 } ] } ] } } ] }, "宽度":0, "行":[], "高度":0, "页眉宽度":2 } ```

此响应显示 PostgreSQL 计划程序为所提供语句生成的执行计划。

执行计划显示了语句引用表的扫描方式:普通顺序扫描、索引扫描,以及如果引用了多个表,将使用哪些连接来汇集每个输入表中所需的记录。

显示中最关键的部分是语句执行成本估算,即查询规划器对运行语句所需时间的估算。

E2213

分析解释{ #webapi_analytics_explain }

/api/analytics/explain

事件分析说明{ #webapi_event_analytics_explain }

/api/analytics/event/aggregate/{program}/explain

/api/analytics/event/query/{program}/explain

入学分析说明{ #webapi_enrollment_analytics_explain }

/api/analytics/enrollment/query/{program}/explain